<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2081858546631815588</id><updated>2011-11-01T20:11:12.170-07:00</updated><category term='clipboard'/><category term='Cygwin'/><title type='text'>Possibly Worth Mentioning</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://williammitchell.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2081858546631815588/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://williammitchell.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>William H. Mitchell</name><uri>http://www.blogger.com/profile/03450675866725329687</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2081858546631815588.post-1736857770411555614</id><published>2011-01-28T11:16:00.000-08:00</published><updated>2011-01-28T11:30:27.371-08:00</updated><title type='text'>Please consider the environment before printing this email!</title><content type='html'>Today's irony: Some people have an email signature that includes an image of a recycling symbol and the line "Please consider the environment before printing this email! Thank you"  In a case at hand, that image added 3,297 bytes to the message, which had 118 bytes of true content.&lt;br /&gt;&lt;br /&gt;I wonder what the worldwide daily total carbon footprint of all those little recycling images is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2081858546631815588-1736857770411555614?l=williammitchell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://williammitchell.blogspot.com/feeds/1736857770411555614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2081858546631815588&amp;postID=1736857770411555614' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2081858546631815588/posts/default/1736857770411555614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2081858546631815588/posts/default/1736857770411555614'/><link rel='alternate' type='text/html' href='http://williammitchell.blogspot.com/2011/01/please-consider-environment-before.html' title='Please consider the environment before printing this email!'/><author><name>William H. Mitchell</name><uri>http://www.blogger.com/profile/03450675866725329687</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2081858546631815588.post-1653330241295629889</id><published>2008-10-08T22:21:00.000-07:00</published><updated>2008-10-19T02:21:18.222-07:00</updated><title type='text'>Old book clarifies Cairngorm</title><content type='html'>I have to admit that while I'd read a few things about &lt;a href="http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm"&gt;Cairngorm&lt;/a&gt;, it still seemed murky to me.  The fog cleared when I read chapter 20 in &lt;a href="http://www.amazon.com/Developing-Rich-Clients-Macromedia-Flex/dp/0321255666/"&gt;Developing Rich Clients with Macromedia Flex&lt;/a&gt;.  It's interesting that although the book predates Cairngorm, its description of techniques that Cairngorm later embodied made things click for me.&lt;br /&gt;&lt;br /&gt;This book has cleared some other Flex fogbanks for me, too.  I think it's truly a gem that's slipping into the sands of time.&lt;br /&gt;&lt;br /&gt;Caveat emptor: the book is based on Flex 1.0/1.5, with ActionScript 2.0 -- you'll need do some translation as you read it, and some things simply no longer apply.  But I think it's still well worth the money.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2081858546631815588-1653330241295629889?l=williammitchell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://williammitchell.blogspot.com/feeds/1653330241295629889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2081858546631815588&amp;postID=1653330241295629889' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2081858546631815588/posts/default/1653330241295629889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2081858546631815588/posts/default/1653330241295629889'/><link rel='alternate' type='text/html' href='http://williammitchell.blogspot.com/2008/10/old-book-clarifies-cairngorm.html' title='Old book clarifies Cairngorm'/><author><name>William H. Mitchell</name><uri>http://www.blogger.com/profile/03450675866725329687</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2081858546631815588.post-5285796909213575885</id><published>2008-10-08T20:53:00.000-07:00</published><updated>2008-10-08T20:59:42.575-07:00</updated><title type='text'>Getting Started with Adobe Flex</title><content type='html'>I hope to make it more presentable when time permits but FWIW, &lt;a href="http://www.mitchellsoftwareengineering.com/flex-resources.txt"&gt;here are some rough notes&lt;/a&gt; on some resources to help people get started with Adobe Flex.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2081858546631815588-5285796909213575885?l=williammitchell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://williammitchell.blogspot.com/feeds/5285796909213575885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2081858546631815588&amp;postID=5285796909213575885' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2081858546631815588/posts/default/5285796909213575885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2081858546631815588/posts/default/5285796909213575885'/><link rel='alternate' type='text/html' href='http://williammitchell.blogspot.com/2008/10/getting-started-with-adobe-flex.html' title='Getting Started with Adobe Flex'/><author><name>William H. Mitchell</name><uri>http://www.blogger.com/profile/03450675866725329687</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2081858546631815588.post-5539400384214374863</id><published>2008-10-04T14:48:00.000-07:00</published><updated>2008-10-04T14:53:30.803-07:00</updated><title type='text'>Chick Magnet</title><content type='html'>While waiting in line at Subway yesterday, an attractive woman noticed the book I was reading and struck up a conversation with me.  The book?  "&lt;a href="http://www.amazon.com/Official-Playing-Rules-NFL-2008/dp/1600781438/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1223156998&amp;sr=8-1"&gt;Official Rules of the NFL&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;I've never gotten that sort of attention with "Java Persistence with Hibernate" or "JUnit in Action", to name two of many.&lt;br /&gt;&lt;br /&gt;p.s.&lt;br /&gt;Among many other things I learned that the ball must a Wilson.  Period.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2081858546631815588-5539400384214374863?l=williammitchell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://williammitchell.blogspot.com/feeds/5539400384214374863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2081858546631815588&amp;postID=5539400384214374863' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2081858546631815588/posts/default/5539400384214374863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2081858546631815588/posts/default/5539400384214374863'/><link rel='alternate' type='text/html' href='http://williammitchell.blogspot.com/2008/10/chick-magnet.html' title='Chick Magnet'/><author><name>William H. Mitchell</name><uri>http://www.blogger.com/profile/03450675866725329687</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2081858546631815588.post-5101680749543454321</id><published>2008-03-30T14:52:00.000-07:00</published><updated>2008-03-30T17:16:10.572-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cygwin'/><category scheme='http://www.blogger.com/atom/ns#' term='clipboard'/><title type='text'>Fun with Cygwin's /dev/clipboard</title><content type='html'>I'd say that /dev/clipboard is surely among one of the least known handy things on Cygwin.  The idea is simple -- the Windows clipboard is accessible as a file, /dev/clipboard.&lt;br /&gt;&lt;br /&gt;I often use /dev/clipboard to bridge the gap between GUI tools and line-oriented tools.  For example, if you're wondering how many words are in a section of text in a document you're looking at, you can put that text on the clipboard and then do this:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;wc -w /dev/clipboard&lt;/blockquote&gt;If you want to insert the output of ls into a document you're editing, send it to the clipboard,&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;ls *.java &gt; /dev/clipboard&lt;/blockquote&gt;and then paste it in.  (Yes, this task is simpler with Emacs, vi, et al.!)&lt;br /&gt;&lt;br /&gt;You can save some typing by symlinking /cb to /dev/clipboard:&lt;blockquote style="font-family: courier new;"&gt;ln -s /dev/clipboard /cb&lt;/blockquote&gt;Some non-Cygwin programs don't interact well with /dev/clipboard.  For example, directing the output of javap to the clipboard leaves it unchanged:&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;% date &gt; /cb&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;% javap Hello &gt;/cb&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;% cat /cb&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Sun Mar 30 15:23:24 USMST 2008&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;To compensate, I wrote a trivial script, tocb:&lt;blockquote style="font-family: courier new;"&gt;% cat tocb&lt;br /&gt;cat &gt;/dev/clipboard&lt;/blockquote&gt;Instead of redirecting output to /cb, I pipe into tocb:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;% javap Hello | tocb&lt;br /&gt;% cat /cb&lt;br /&gt;Compiled from "Hello.java"&lt;br /&gt;public class Hello extends java.lang.Object{&lt;br /&gt;public Hello();&lt;br /&gt;}&lt;/blockquote&gt;I also wrote a trivial counterpart for tocb named fromcb:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;% cat fromcb&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;cat /dev/clipboard&lt;/span&gt;&lt;/blockquote&gt;Incidentally, Mac OS X has similar commands named pbcopy and pbpaste.&lt;br /&gt;&lt;br /&gt;I got to wondering if a single script, call it "cb", could act like fromcb when on the left end of a pipeline, and act like tocb on the right end of a pipeline.   Like this:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;% cal | cb       # &lt;span style="font-family: times new roman; font-style: italic;"&gt;puts output of cal onto the clipboard&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;% cb | wc         # &lt;span style="font-family: times new roman; font-style: italic;"&gt;puts the clipboard contents onto standard output&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Cygwin supports the isatty(file_descriptor) library function, which queries whether the specified file descriptor is connected to a terminal.  (Some programs, ls to name one, change their behavior depending on whether they're writing to a terminal.)  Linux has  isatty(1), which simply wraps isatty(3) in a program.  My Cygwin installation doesn't have isatty(1), and I was too lazy to see if it's in some package I haven't installed, but it's trivial to write:&lt;br /&gt;&lt;pre style="font-family: courier new;"&gt;% cat isatty.c&lt;br /&gt;main(int argc, char **argv)&lt;br /&gt;{&lt;br /&gt;  exit(!isatty(atoi(argv[1])));&lt;br /&gt;}&lt;/pre&gt;With that in hand it's easy to write a cb that that reads or writes the clipboard depending on which end of a pipeline it's on.  Here it is:&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:courier new;"&gt;% cat cb&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if isatty 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   cat /dev/clipboard&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   cat &gt;/dev/clipboard&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;fi&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Usage:&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:courier new;"&gt;% cal | cb&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;% cb | cat -n&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     1       March 2008&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     2  Su Mo Tu We Th Fr Sa&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     3                     1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     4   2  3  4  5  6  7  8&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     5   9 10 11 12 13 14 15&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     6  16 17 18 19 20 21 22&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     7  23 24 25 26 27 28 29&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;     8  30 31&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;You can put cb on both ends of a pipeline to transform the clipboard contents:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;% date | cb&lt;br /&gt;% cb | tr a-z A-Z | cb&lt;br /&gt;% cb&lt;br /&gt;SUN MAR 30 16:03:17 USMST 2008&lt;/blockquote&gt;p.s.&lt;br /&gt;Maybe there is nothing new under the sun -- I just now noticed that &lt;a href="http://www.vergenet.net/~conrad/software/xsel/"&gt;xsel&lt;/a&gt; (c. 2001) apparently uses isatty to determine whether it should fetch or set clipboard contents. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2081858546631815588-5101680749543454321?l=williammitchell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://williammitchell.blogspot.com/feeds/5101680749543454321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2081858546631815588&amp;postID=5101680749543454321' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2081858546631815588/posts/default/5101680749543454321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2081858546631815588/posts/default/5101680749543454321'/><link rel='alternate' type='text/html' href='http://williammitchell.blogspot.com/2008/03/fun-with-cygwins-devclipboard.html' title='Fun with Cygwin&apos;s /dev/clipboard'/><author><name>William H. Mitchell</name><uri>http://www.blogger.com/profile/03450675866725329687</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2081858546631815588.post-5703791784785999895</id><published>2007-03-18T15:03:00.000-07:00</published><updated>2007-03-18T18:52:32.095-07:00</updated><title type='text'>Thoughts from a presentation on Domain Specific Languages</title><content type='html'>At the March meeting of the &lt;a href="http://www.tucson-jug.org/"&gt;Tucson JUG&lt;/a&gt;, &lt;a href="http://warneronstine.com/"&gt;Warner Onstine&lt;/a&gt; gave a presentation on Domain Specific Languages (DSLs).  I have to say that it was the most thought-provoking professional meeting that I've attended in a while.&lt;br /&gt;&lt;br /&gt;Prior to the talk I was thinking that DSL was just a new name for an old idea.  Jon Bentley wrote a CACM column on "Little Languages" in 1986 and that's what I'd   pictured a DSL to be.  At Warner's talk I learned that what I've thought of as a "little language" is known as an "external DSL".  My understanding of the defining characteristic of an external DSL is that the syntax of the language is arbitrary   and therefore a necessary component of an external DSL is a parser of some sort.  Code written in an external DSL may be compiled, directly interpreted, translated to another language, etc.&lt;br /&gt;&lt;br /&gt;I found the more interesting notion that Warner talked about to be that of an "internal DSL" (IDSL) .  An IDSL has a "host language"; programs written in the internal DSL syntactically valid in the host language.&lt;br /&gt;&lt;br /&gt;Warner put forth a "coffee example" in Java:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;new Coffee("grande").type("latte").milk("soy").whip(false);&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;I understand that an API providing this sort of expressibility  is said to be a "fluent interface".  jMock uses this approach, too:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;ms.expects(once()).method("receive").with(eq(message));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                                            --jmock.org&lt;/span&gt;&lt;span style="font-style: italic;font-family:times new roman;" &gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;Ruby's grammar allows more flexibility than Java.  Here's an example using ActiveRecord:&lt;br /&gt;&lt;pre style="font-family: courier new; color: #0"&gt;  create_table :products { |t|&lt;br /&gt;    t.column :pn, :string&lt;br /&gt;    t.column :descrip, :text&lt;br /&gt;    t.column :picture, :string&lt;br /&gt;    t.column :price, :decimal, :prec =&gt; 10, :scale =&gt; 2, :default =&gt; 0&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;It resembles DDL but it's just Ruby code.&lt;br /&gt;&lt;br /&gt;rake, the Ruby-based build tool, takes the idea quite a bit further.&lt;br /&gt;&lt;br /&gt;It's interesting to consider what attributes of a language facilitate internal DSLs.  For example, being able to write method calls without parentheses in Ruby eliminates a lot of clutter.  Ruby's notion of symbols allows for things like :decimal instead of "decimal", also reducing clutter.  Ruby's blocks are considerable facilitators, too.&lt;br /&gt;&lt;br /&gt;I believe that somebody at the meeting conjectured that it would be difficult have a very expressive IDSL in a language with static typing.  Just now I found some interesting &lt;a href="http://www.cs.uu.nl/wiki/Afp/DomainSpecificLanguages"&gt;examples&lt;/a&gt; of IDSLs in statically typed functional languages, like Haskell.  Perhaps the most interesting is &lt;a href="http://en.wikipedia.org/wiki/Haskore"&gt;Haskore&lt;/a&gt;, a Haskell IDSL for describing music.&lt;br /&gt;&lt;br /&gt;It seems that ever since XML emerged there's a been growing phobia about using EDSLs.  I've been dismayed by that because I hate clutter and it's hard to imagine anything more cluttered than XML.  There have been tools like yacc for decades but Warner mentioned the idea of "language workbenches", which I'd describe as a next-generation tool for building EDSLs.  One example is &lt;a href="http://www.jetbrains.com/mps/"&gt;JetBrains MPS&lt;/a&gt;.  Perhaps language workbenches will turn the tide of the industry's march toward XML-for-everything.&lt;br /&gt;&lt;br /&gt;p.s.&lt;br /&gt;Regarding XML, I love this &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;quote from &lt;a href="http://www.parr.us/terence/"&gt;Terence Parr&lt;/a&gt;, the creator of &lt;a href="http://www.antlr.org/"&gt;ANTLR&lt;/a&gt;: "Being an expert in XML is like being an expert in comma-separated values."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2081858546631815588-5703791784785999895?l=williammitchell.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://williammitchell.blogspot.com/feeds/5703791784785999895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2081858546631815588&amp;postID=5703791784785999895' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2081858546631815588/posts/default/5703791784785999895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2081858546631815588/posts/default/5703791784785999895'/><link rel='alternate' type='text/html' href='http://williammitchell.blogspot.com/2007/03/thoughts-from-presentation-on-domain.html' title='Thoughts from a presentation on Domain Specific Languages'/><author><name>William H. Mitchell</name><uri>http://www.blogger.com/profile/03450675866725329687</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
