<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: dave-thomas</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/dave-thomas.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2007-12-26T12:09:42+00:00</updated><author><name>Simon Willison</name></author><entry><title>Ruby 1.9 - Right for You?</title><link href="https://simonwillison.net/2007/Dec/26/pragdave/#atom-tag" rel="alternate"/><published>2007-12-26T12:09:42+00:00</published><updated>2007-12-26T12:09:42+00:00</updated><id>https://simonwillison.net/2007/Dec/26/pragdave/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://pragdave.blogs.pragprog.com/pragdave/2007/12/ruby-19right-fo.html"&gt;Ruby 1.9 - Right for You?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Dave Thomas on the just-released Ruby 1.9. It’s a development release that breaks backwards compatibility in a few minor ways, but new features include the YARV virtual machine (hence significant speed improvements) and unicode support via associating encodings with bytestrings.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/bytestrings"&gt;bytestrings&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/dave-thomas"&gt;dave-thomas&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/performance"&gt;performance&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rubi19"&gt;rubi19&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ruby"&gt;ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unicode"&gt;unicode&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/yarv"&gt;yarv&lt;/a&gt;&lt;/p&gt;



</summary><category term="bytestrings"/><category term="dave-thomas"/><category term="performance"/><category term="rubi19"/><category term="ruby"/><category term="unicode"/><category term="yarv"/></entry><entry><title>The RADAR Architecture: RESTful Application, Dumb-Ass Recipient</title><link href="https://simonwillison.net/2007/Apr/2/pragdave/#atom-tag" rel="alternate"/><published>2007-04-02T10:42:10+00:00</published><updated>2007-04-02T10:42:10+00:00</updated><id>https://simonwillison.net/2007/Apr/2/pragdave/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://pragdave.pragprog.com/pragdave/2007/03/the_radar_archi.html"&gt;The RADAR Architecture: RESTful Application, Dumb-Ass Recipient&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Dave Thomas points out that REST expects smart clients, but browsers are dumb (only really support POST and GET). His suggested fix is to build a pure REST service and then drop in a server-side application proxy that sits between the browser and the REST backend.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://www.bofh.org.uk/articles/2007/03/29/pragdave-nails-it-again"&gt;Piers Cawley&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/dave-thomas"&gt;dave-thomas&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/http"&gt;http&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rest"&gt;rest&lt;/a&gt;&lt;/p&gt;



</summary><category term="dave-thomas"/><category term="http"/><category term="rest"/></entry><entry><title>Quoting Dave Thomas</title><link href="https://simonwillison.net/2007/Mar/24/sywtwab/#atom-tag" rel="alternate"/><published>2007-03-24T15:05:51+00:00</published><updated>2007-03-24T15:05:51+00:00</updated><id>https://simonwillison.net/2007/Mar/24/sywtwab/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://pragdave.pragprog.com/pragdave/2007/03/sywtwab_5_findi.html"&gt;&lt;p&gt;When I write a new book [...] I plan to throw away something like the first 30 or so pages. And, because I know I'm going to do it, it doesn't worry me. I no longer have writer's block.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://pragdave.pragprog.com/pragdave/2007/03/sywtwab_5_findi.html"&gt;Dave Thomas&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/dave-thomas"&gt;dave-thomas&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;



</summary><category term="dave-thomas"/><category term="writing"/></entry><entry><title>Dave Thomas on Writing a Book</title><link href="https://simonwillison.net/2007/Mar/24/pragdave/#atom-tag" rel="alternate"/><published>2007-03-24T14:53:31+00:00</published><updated>2007-03-24T14:53:31+00:00</updated><id>https://simonwillison.net/2007/Mar/24/pragdave/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://pragdave.pragprog.com/pragdave/writing_a_book/index.html"&gt;Dave Thomas on Writing a Book&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
A series of articles on writing a technical book, from Pragmatic Programmer Dave Thomas.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/dave-thomas"&gt;dave-thomas&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&lt;/a&gt;&lt;/p&gt;



</summary><category term="dave-thomas"/><category term="writing"/></entry><entry><title>Code generation vs data driven programming</title><link href="https://simonwillison.net/2004/Feb/11/codeGeneration/#atom-tag" rel="alternate"/><published>2004-02-11T05:39:05+00:00</published><updated>2004-02-11T05:39:05+00:00</updated><id>https://simonwillison.net/2004/Feb/11/codeGeneration/#atom-tag</id><summary type="html">
    &lt;p&gt;Via &lt;a href="http://www.nedbatchelder.com/blog/200402.html#e20040210T222100" title="Code generation with Cog"&gt;Ned Batchelder&lt;/a&gt;, this &lt;a href="http://www.codegeneration.net/tiki-read_article.php?articleId=9"&gt;interview with pragmatic Dave Thomas&lt;/a&gt; on code generation closely reflects my own nascent thoughts on the issue:&lt;/p&gt;

&lt;blockquote cite="http://www.codegeneration.net/tiki-read_article.php?articleId=9"&gt;&lt;p&gt;&lt;strong&gt;CGN:&lt;/strong&gt; What do think the future is for code generation?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dave:&lt;/strong&gt; I think that in the long term the larger code generation efforts, the "application generators," will become a thing of the past. They are there because the underlying technologies and architectures don't yet support programming at a high level.  But I'm betting that languages such as Java and C++ will in the long term be seen as a curious branch in the evolution of computing. I'm hoping that somewhere out there some bright spark is coming up with a way of letting us write applications expressively and dynamically. Once this happens, the need for these kinds of code generators will diminish.&lt;/p&gt;

&lt;p&gt;For example, I rarely (if ever) write a code generator that generates Ruby code: there's just no need, as Ruby is dynamic enough to let be do what I want without leaving the language.&lt;/p&gt;

&lt;p&gt;In the shorter term, though, I think code generators of all kinds will continue to contribute significantly to the industry. Java and C# are both such stifling languages that you need to be able to use code generators to make them effective.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We considered using code generators for our current major project at work, and picked up Jack Herrington's &lt;a href="http://www.codegeneration.net/cgia/" title="Code Generation in Action"&gt;book&lt;/a&gt; on the subject. Reading through it, it became clear that many of the problems that code generators solve can be tackled instead using &lt;a href="/2003/Dec/05/dataDriven/" title="How not to use OOP"&gt;data driven programming techniques&lt;/a&gt; made possible by dynamic languages. Since we had already settled on Python as our implementation language the need for code generation became far less apparent, and we ended up avoiding it entirely with the exception of a command line tool for passively generating basic templates for our admin interface.&lt;/p&gt;

&lt;p&gt;If I ever have to work with a less expressive language I'll certainly consider using a code generator (probably written in Python) to abstract away some some of the tedious repetition. As it is, Python's rich data structures and clean support for introspection provide an excellent alternative.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/dave-thomas"&gt;dave-thomas&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ned-batchelder"&gt;ned-batchelder&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-thomas"/><category term="django"/><category term="ned-batchelder"/><category term="programming"/><category term="python"/></entry></feed>