<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>BlackBox : Category writing</title>
    <link>http://www.warneronstine.com/blog/articles/category/writing</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Where technology and art disappear</description>
    <item>
      <title>Thinking about picking the Groovy DSL book up again</title>
      <description>&lt;p&gt;But before I do I thought I&amp;#8217;d ask everyone out there (who are interested in such a book), what would you like to see in it?&lt;/p&gt;

&lt;p&gt;One possibility I&amp;#8217;ve been tossing around is to turn it into a techniques or cookbook-style book. I&amp;#8217;ve been reading through &lt;a href="http://www.amazon.com/gp/product/0596008031?ie=UTF8&amp;amp;tag=warneronstinecom&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0596008031"&gt;&amp;#8220;Designing Interfaces&amp;#8221;&lt;/a&gt; by Jennifer Tidwell. In this book she organizes the interface solutions into different sections and goes through each one with an example and what it solves and when to use it. I really like this idea (but others might not). Originally my book was a &amp;#8220;How do I get started designing DSLs?&amp;#8221; and &amp;#8220;What in the world are they and why should I care?&amp;#8221;.&lt;/p&gt;

&lt;p&gt;Another thing I&amp;#8217;ve been thinking about is ditching the Java part and making it Groovy only. This appeals to me because I feel that Groovy is much cleaner to implement an Internal DSL than Java is. Can you do DSLs in Java? Of course you can, but I&amp;#8217;m not sure that I can give it the best treatment because it isn&amp;#8217;t what I&amp;#8217;m passionate about.&lt;/p&gt;

&lt;p&gt;So, sound off in the comments, let me know what topics you&amp;#8217;d like to see covered, what challenges have you faced in writing a DSL (or API/Framework) that you would have liked someone to trailblaze for you to show the dead-ends first?&lt;/p&gt;</description>
      <pubDate>Wed, 26 Mar 2008 10:30:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:9d272a61-3965-49b2-98a1-2001a11f0102</guid>
      <author>Warner Onstine</author>
      <link>http://www.warneronstine.com/blog/articles/2008/03/26/thinking-about-picking-the-dsl-book-up-again</link>
      <category>programming</category>
      <category>writing</category>
      <category>groovy</category>
      <category>dsl</category>
      <trackback:ping>http://www.warneronstine.com/blog/articles/trackback/311</trackback:ping>
    </item>
    <item>
      <title>DSL book on hold...unfortunately</title>
      <description>&lt;p&gt;Well we got the first round of reviews back from the technical reviewers and there&amp;#8217;s a lot of work to be done. So much so that we&amp;#8217;ve decided to put the book on hold while we regroup and figure out if/how we are going to address the issues that the reviewers found with the book. In a lot of cases it is going to require a complete rewrite of the example (and hence the chapter itself). Personally I feel the core is there, but maybe the examples weren&amp;#8217;t as fleshed out as they could have been.&lt;/p&gt;

&lt;p&gt;Now of course I&amp;#8217;m a little embarrassed that I announced the book before it was done, but that&amp;#8217;s what happens sometimes. Not sure at this point whether or not the book will continue, taking some time to regroup/rethink things and see if it is something that I want to push forward with.&lt;/p&gt;

&lt;p&gt;I will keep everyone up to date here on the progress of things once I&amp;#8217;ve decided what to do. In the meantime I am going to get back to some of my back-burner projects (a few of which have some DSLs in them ;-).&lt;/p&gt;</description>
      <pubDate>Tue, 30 Oct 2007 10:20:44 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:d4ecd040-55d5-4524-9606-af4c0b8c2588</guid>
      <author>Warner Onstine</author>
      <link>http://www.warneronstine.com/blog/articles/2007/10/30/dsl-book-on-hold-unfortunately</link>
      <category>programming</category>
      <category>writing</category>
      <category>groovy</category>
      <category>java</category>
      <category>dsl</category>
      <category>writings</category>
      <trackback:ping>http://www.warneronstine.com/blog/articles/trackback/304</trackback:ping>
    </item>
    <item>
      <title>DSL book in progress</title>
      <description>&lt;p&gt;Now that things feel a little bit more final to me I thought I would take this opportunity to announce the book that&amp;#8217;s been keeping me from blogging. The tentative title is Creating DSLs using Java and Groovy and it will be published by &lt;a href="http://www.pragprog.com/"&gt;Pragmatic Programmers&lt;/a&gt;. I started working on this idea after last years &lt;a href="http://nofluffjuststuff.com"&gt;No Fluff Just Stuff&lt;/a&gt; where I saw &lt;a href="http://www.nealford.com/"&gt;Neal Ford&lt;/a&gt; speak on DSLs and I talked to him briefly about a project I was working on. His talk inspired me to push forward with using DSLs for code generation specifically using Groovy.&lt;/p&gt;

&lt;p&gt;The book will cover both Java and Groovy techniques for writing DSLs, as well as have some general guidelines for writing DSLs. We also have a chapter on &lt;a href="http://antlr.org"&gt;ANTLR&lt;/a&gt; and &lt;a href="https://javacc.dev.java.net/"&gt;JavaCC&lt;/a&gt; for writing external DSLs using Java. I tried to cover as much as I could of Groovy meta-programming and some of the additional capabilities of Groovy that make it a good language to write an internal DSL on top of, but there&amp;#8217;s only so much space ;-).&lt;/p&gt;

&lt;p&gt;We just sent off the book for peer review, which means its about half-way finished, maybe a little more. We are currently shooting for a release date sometime early next year, which looks very doable at this point, but I expect a ton of edits to come back from this first review. &lt;/p&gt;

&lt;p&gt;On a final note I just want to say what a pleasure it has been working with the PragProg crew. I love, love, love their &lt;a href="http://www.pragprog.com/write-for-us"&gt;book build system&lt;/a&gt; and my editor Susannah rocks. I have had a blast working with them so far on this book and am looking forward to finishing this up and getting it published.&lt;/p&gt;</description>
      <pubDate>Wed, 10 Oct 2007 09:44:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:0fafb693-2a37-4d0f-9238-18cdea59d12e</guid>
      <author>Warner Onstine</author>
      <link>http://www.warneronstine.com/blog/articles/2007/10/10/dsl-book-in-progress</link>
      <category>programming</category>
      <category>writing</category>
      <category>groovy</category>
      <category>java</category>
      <category>dsl</category>
      <category>writings</category>
      <trackback:ping>http://www.warneronstine.com/blog/articles/trackback/303</trackback:ping>
    </item>
    <item>
      <title>Writing Tips #3: Code first, write later</title>
      <description>&lt;p&gt;I&amp;#8217;m going to share one of the tips that I got from fellow writer &lt;a href="http://raibledesigns.com/"&gt;Matt Raible&lt;/a&gt;. I&amp;#8217;m drastically paraphrasing of course as I can&amp;#8217;t remember if he gave me this advice in e-mail or chat.&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;I recommend that you do a project first and then use that project as the basis for the work. It&amp;#8217;s much easier. This is what I did with &lt;a href="http://appfuse.org/"&gt;AppFuse&lt;/a&gt; and &lt;a href="http://www.sourcebeat.com/books/springlive.html"&gt;Spring Live/Primer&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I liked this approach and decided to take it with &lt;a href="http://www.sourcebeat.com/books/tapestrylive.html"&gt;Tapestry 101&lt;/a&gt; with (I feel) good success. I think it was successful on two fronts; first in learning a framework, second in teaching that framework to others. &lt;/p&gt;

&lt;p&gt;This is contrasted to deciding what you are going to write about and designing a code example around that. From my perspective this is problematic for several reasons.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What you&amp;#8217;re showing isn&amp;#8217;t necessarily a &amp;#8220;real-world&amp;#8221; scenario that a developer would find in their day-to-day activities.&lt;/li&gt;
&lt;li&gt;You will discover tips, tricks, and problems that you wouldn&amp;#8217;t have run into in a pre-defined task.&lt;/li&gt;
&lt;li&gt;Using a project (especially just one or two) throughout a book helps the reader through the &lt;a href="http://pragdave.pragprog.com/pragdave/2007/03/sywtwab_3_the_h.html"&gt;Hero&amp;#8217;s Journey&lt;/a&gt; showing them the way through the tangled forest by building on the knowledge they&amp;#8217;ve just used.&lt;/li&gt;
&lt;li&gt;Clearly defined problems are easy for reader&amp;#8217;s to understand rather than just &amp;#8220;Here&amp;#8217;s something cool that you could use to do X&amp;#8221;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Currently I do a mix between using a pre-built project and writing on the fly. I know the project I want to build and generally what I want to show with it and then I start coding with a clear (non-book-related) goal in mind. But I don&amp;#8217;t generally code all of it at once (as Matt suggested), instead I code the part just before I write the chapter. This helps solidify the ideas that I want to present in the chapter and helps me in my coding as well.&lt;/p&gt;

&lt;p&gt;When coding I rely heavily on TDD now and it helps me immensely when I need to go back and try and explain something, I always start with the test. This is something relatively new that I will take with me on future projects (programming and writing). &lt;/p&gt;

&lt;p&gt;Writing overall has definitely made me a better programmer as it has allowed me to dig deeper into a language than perhaps I would have if I weren&amp;#8217;t writing about it. This in turn has made me a better writer because I am exposed to new ideas that I can share with the reader.&lt;/p&gt;</description>
      <pubDate>Tue, 19 Jun 2007 19:48:47 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:b61b224f-1faa-4480-8e2c-dcbef31ee930</guid>
      <author>Warner Onstine</author>
      <link>http://www.warneronstine.com/blog/articles/2007/06/19/writing-tips-3-code-first-write-later</link>
      <category>writing</category>
      <category>writing_tips</category>
      <trackback:ping>http://www.warneronstine.com/blog/articles/trackback/302</trackback:ping>
    </item>
    <item>
      <title>Writing Tips #2: Read Dave's series on writing</title>
      <description>&lt;p&gt;I can&amp;#8217;t recommend enough reading &lt;a href="http://pragdave.pragprog.com/pragdave"&gt;Dave Thomas&amp;#8217;&lt;/a&gt; series on &lt;a href="http://pragdave.pragprog.com/pragdave/writing_a_book/index.html"&gt;technical writing&lt;/a&gt; (plus a &lt;a href="http://rails.tumblecast.com/episodes/10"&gt;podcast&lt;/a&gt;). Here&amp;#8217;s a short synopsis of each, but I recommend you check them out for yourself.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="http://pragdave.pragprog.com/pragdave/2007/03/sywtwab_1_so_yo.html"&gt;So You Want to Write a Book?&lt;/a&gt; - Why do you want to write a book? Am I passionate about what I want to teach people? What&amp;#8217;s in store for me once I decide that I really do want to write a book?&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragdave.pragprog.com/pragdave/2007/03/sywtwab_2_the_h.html"&gt;The Hero&amp;#8217;s Journey&lt;/a&gt; - What is the reader&amp;#8217;s journey through your book? How do you pace it? How do you make sure they get where they need to go?&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragdave.pragprog.com/pragdave/2007/03/sywtwab_3_the_h.html"&gt;The Hero&amp;#8217;s Journey: Are You Experienced&lt;/a&gt; - How to guid the user through successive learning in your book.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragdave.pragprog.com/pragdave/2007/03/sywtwab_4_reade.html"&gt;Readers on Your Shoulders&lt;/a&gt; - How to think about the different types of readers as you&amp;#8217;re writing your book, who are they and how do you communicate with each with the same material?&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragdave.pragprog.com/pragdave/2007/03/sywtwab_5_findi.html"&gt;Finding Your Voice&lt;/a&gt; - How do you sound like you while writing? This can be tricky and this will help.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragdave.pragprog.com/pragdave/2007/03/sywtwab_6_wrand.html"&gt;Wrandom Writing Wrules&lt;/a&gt; - Talks about what a good writing environment is for people (it varies), just writing and not worrying about layout issues, scheduling a time to write like going to the gym, not starting at the beginning of your book, cut and paste, interacting with others while writing, saving and archiving often, cross referencing and outlining. All good stuff to read for first time or veteran authors.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragdave.pragprog.com/pragdave/2007/03/sywtwab_7_revie.html"&gt;Reviewers, And How Not to Kill Them&lt;/a&gt; - Talks about the process of reviewing and how not to let it affect you (too much, believe me reviewers can be tough).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I&amp;#8217;ll try not to rehash these particular topics (although I will touch on a few these from my own perspective throughout this series).&lt;/p&gt;</description>
      <pubDate>Sat, 16 Jun 2007 19:12:18 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:89960af0-ab35-43f4-a5a5-f7164d45430c</guid>
      <author>Warner Onstine</author>
      <link>http://www.warneronstine.com/blog/articles/2007/06/16/writing-tips-2-read-daves-series-on-writing</link>
      <category>writing</category>
      <category>writing_tips</category>
      <trackback:ping>http://www.warneronstine.com/blog/articles/trackback/300</trackback:ping>
    </item>
    <item>
      <title>Writing Tips #1: Never let the well run dry</title>
      <description>&lt;p&gt;I decided to start a new tag (&lt;a href="http://www.warneronstine.com/blog/articles/tag/writing_tips"&gt;Writing Tips&lt;/a&gt;) for those of you who are interested in writing tech books or articles. I hope that you enjoy this and find some value in my tips. Some of this will be a little regurgitation, but it will be from the perspective of things that have worked for me, your mileage may vary ;-).&lt;/p&gt;

&lt;p&gt;While working on my last book I ran into a writer&amp;#8217;s block, things became difficult to get past and I was writing sporadically, so I reached out to the world-wide Web to see if others had come across this and found any solutions. One of the sites that I really enjoy reading for productivity is &lt;a href="http://43folders.com"&gt;Merlin Mann&amp;#8217;s 43 Folders&lt;/a&gt; and while reading it one day came across this excellent post on &lt;a href="http://www.43folders.com/2004/11/18/hack-your-way-out-of-writers-block/"&gt;writer&amp;#8217;s block&lt;/a&gt;. While these suggestions were really good it was actually one of the &lt;a href="http://www.43folders.com/2004/11/18/hack-your-way-out-of-writers-block/#comment-1087"&gt;comments&lt;/a&gt; that led me to my final solution I will talk about here.&lt;/p&gt;

&lt;p&gt;So, the actual quote from &lt;a href="http://www.brainyquote.com/quotes/quotes/e/ernesthemi115157.html"&gt;Hemingway&lt;/a&gt; is:&lt;/p&gt;

&lt;blockquote&gt;
    &lt;p&gt;I learned never to empty the well of my writing, but always to stop when there was still something there in the deep part of the well, and let it refill at night from the springs that fed it. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While this is a great quote, how exactly should you apply it?&lt;/p&gt;

&lt;p&gt;My solution was to pick up a little Moleskine notebook to keep just my writing notes. The other part comes in my &amp;#8220;writing ritual&amp;#8221; (sorry can&amp;#8217;t find a link to it, it&amp;#8217;s probably buried in 43 Folders somewhere). Here then is  &lt;em&gt;my&lt;/em&gt;  ritual (again, you should come up with your own depending on what you&amp;#8217;re writing or what you think you need to help you get in the frame of mind).&lt;/p&gt;

&lt;h3&gt;My Ritual&lt;/h3&gt;

&lt;p&gt;First, make sure you have a good 30 minutes or an hour to write, 30 minutes is good if you&amp;#8217;re pressed for time or feeling stressed, an hour or more is what generally happens to me once the flow starts coming.&lt;/p&gt;

&lt;p&gt;Then, I shut off my TV (I tend to write at home because I have an external monitor that makes it much easier to write). The other step to getting rid of external distractions is to open iTunes or my Shuffle and put on some music (it helps to drown out the silence and helps me focus, this may be different for you).&lt;/p&gt;

&lt;p&gt;Next, I pull out my writing journal, a pencil and my eraser and set those aside. &lt;/p&gt;

&lt;p&gt;The following step varies from time to time. Sometimes I will turn off any programs I don&amp;#8217;t absolutely need (like Mail, Safari, etc.), but most of the times I just ignore them. If you do keep Safari (or IE, or FireFox) open I recommend closing all tabs except ones that you will absolutely need to keep down on the possibility of Web distractions. You&amp;#8217;re here to write, not surf! ;-)&lt;/p&gt;

&lt;p&gt;Then I open my writing tool (right now it&amp;#8217;s &lt;a href="http://macromates.com"&gt;TextMate&lt;/a&gt;, but I&amp;#8217;ve used Word and other XML tools in the past).&lt;/p&gt;

&lt;p&gt;Finally I open up my journal to the last entry and review my notes from the previous session. Once I&amp;#8217;ve reviewed the previous entry I&amp;#8217;ve written I will make a new entry with today&amp;#8217;s date and write down the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What are my specific tasks for this session - in other words what do I want to write about or cover this session?&lt;/li&gt;
&lt;li&gt;Start page count for what I&amp;#8217;m working on - if it&amp;#8217;s multiple chapters write those out separately, I do this as a heading&lt;/li&gt;
&lt;li&gt;Write down the heading for the End page count&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that I have my specific tasks laid out I pull up TextMate and start at the section I need to work on and start writing. Once I&amp;#8217;ve covered most of what I wanted to write about or I&amp;#8217;ve run out of time I go ahead and stop. It&amp;#8217;s key here that you don&amp;#8217;t do everything that you wanted to write about, you need to leave a little something in the &amp;#8220;well&amp;#8221; for next time. &lt;/p&gt;

&lt;p&gt;Once I&amp;#8217;m finished I go ahead and do the end page count and write that in (it really helps as a motivator!). Then I go over and write down stuff that I want to write or do next writing session which I will review the next time.&lt;/p&gt;

&lt;h3&gt;What should I write?&lt;/h3&gt;

&lt;p&gt;But how do you actually start this system? What if I don&amp;#8217;t know how to even start on my topic?&lt;/p&gt;

&lt;p&gt;A good first step is to see if others have covered something similar before (even if it&amp;#8217;s a different technology, look at the techniques). Do you agree with their approach/disagree? Write these down in your notebook. &lt;/p&gt;

&lt;p&gt;Why did this topic interest you in the first place? If you did it just to make money that&amp;#8217;s ok, but there probably was at least something you liked about it to even accept the challenge. Write these down in your notebook. &lt;/p&gt;

&lt;p&gt;Talk to your friends, co-workers, etc. Explain the problem to them, what you&amp;#8217;re trying to address in the simplest terms possible. What interests them? What troubles them about the approach to the problem? Write these down in your notebook. &lt;/p&gt;

&lt;p&gt;Write an outline. It doesn&amp;#8217;t have to be super-detailed it should just cover the major points you want to hit in each section. Once you start on the section though you shouldn&amp;#8217;t need it anymore it will change anyways. I&amp;#8217;ve never had an outline I&amp;#8217;ve stuck with 100%, but it always helped me get started and heading in the right direction. Once I got started though I pulled out my &amp;#8220;compass&amp;#8221; and found my own path to the end of the chapter.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ll have some more on getting started in my next &lt;a href="http://www.warneronstine.com/blog/articles/tag/writing_tips"&gt;Writing Tips&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Sat, 16 Jun 2007 14:42:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:6d289055-6621-4ea8-8ae9-49373e4d7ebe</guid>
      <author>Warner Onstine</author>
      <link>http://www.warneronstine.com/blog/articles/2007/06/16/writing-tips-1-never-let-the-well-run-dry</link>
      <category>writing</category>
      <category>writing_tips</category>
      <trackback:ping>http://www.warneronstine.com/blog/articles/trackback/299</trackback:ping>
    </item>
  </channel>
</rss>
