<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-AU" xmlns:media="http://search.yahoo.com/mrss/">
  <id>https://david.gardiner.net.au/tags/Books.xml</id>
  <title type="html">David Gardiner - Books</title>
  <updated>2026-04-15T00:26:29.098Z</updated>
  <subtitle>Blog posts tagged with &apos;Books&apos; - A blog of software development, .NET and other interesting things</subtitle>
  <rights>Copyright 2026 David Gardiner</rights>
  <icon>https://www.gravatar.com/avatar/37edf2567185071646d62ba28b868fab?s=64</icon>
  <logo>https://www.gravatar.com/avatar/37edf2567185071646d62ba28b868fab?s=256</logo>
  <generator uri="https://github.com/flcdrg/astrojs-atom" version="3">astrojs-atom</generator>
  <author>
    <name>David Gardiner</name>
  </author>
  <link href="https://david.gardiner.net.au/tags/Books.xml" rel="self" type="application/atom+xml"/>
  <link href="https://david.gardiner.net.au/tags/Books" rel="alternate" type="text/html" hreflang="en-AU"/>
  <category term="Books"/>
  <category term="Software Development"/>
  <entry>
    <id>https://david.gardiner.net.au/2021/12/summer-holiday-reading</id>
    <updated>2021-12-28T15:00:00.000+10:30</updated>
    <title>Summer holiday reading</title>
    <link href="https://david.gardiner.net.au/2021/12/summer-holiday-reading" rel="alternate" type="text/html" title="Summer holiday reading"/>
    <category term="Books"/>
    <published>2021-12-28T15:00:00.000+10:30</published>
    <summary type="html">It&apos;s Summer holidays, Christmas was a few days ago, there&apos;s sunny, warm weather on the forecast. Perfect days for lazing around home and reading a good book or two. I happen to be passing Blackwood Books recently (we were actually visiting an adjacent shop but I thought I&apos;d have a quick look). I asked to see their &apos;local history&apos; section and was taken along some winding corridors to a couple of bookcases full of books. I didn&apos;t have that long to browse, but two books looked interesting. …</summary>
    <content type="html">
&lt;p&gt;It&apos;s Summer holidays, Christmas was a few days ago, there&apos;s sunny, warm weather on the forecast. Perfect days for lazing around home and reading a good book or two.&lt;/p&gt;
&lt;p&gt;I happen to be passing &lt;a href=&quot;https://web.archive.org/web/20241207225611/https://www.blackwoodbooks.com.au&quot;&gt;Blackwood Books&lt;/a&gt; recently (we were actually visiting an adjacent shop but I thought I&apos;d have a quick look). I asked to see their &apos;local history&apos; section and was taken along some winding corridors to a couple of bookcases full of books. I didn&apos;t have that long to browse, but two books looked interesting.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://www.amazon.com.au/Not-Only-Stone-Phyllis-Somerville/dp/0949268046?&amp;amp;linkCode=ll1&amp;amp;tag=flcdrg07-22&amp;amp;linkId=b4f71e346f627e7108d564a126977f92&amp;amp;language=en_AU&amp;amp;ref_=as_li_ss_tl&quot;&gt;Not Only in Stone&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://www.amazon.com.au/Not-Only-Stone-Phyllis-Somerville/dp/0949268046?&amp;amp;linkCode=ll1&amp;amp;tag=flcdrg07-22&amp;amp;linkId=b4f71e346f627e7108d564a126977f92&amp;amp;language=en_AU&amp;amp;ref_=as_li_ss_tl&quot; alt=&quot;Book cover - Not only in stone&quot; /&gt; (Affiliate link)&lt;/p&gt;
&lt;p&gt;Not Only In Stone by Phyliss Somerville was first published way back in 1942. It tells the story of Mary (Polly) Thomas and her family, who emigrated to South Australia from Cornwall, England in 1865. It caught my attention as parts of the story are based in &lt;a href=&quot;https://en.wikipedia.org/wiki/Wallaroo,_South_Australia&quot;&gt;Wallaroo&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Moonta,_South_Australia&quot;&gt;Moonta&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Kadina,_South_Australia&quot;&gt;Kadina&lt;/a&gt; - towns on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Yorke_Peninsula&quot;&gt;Yorke Peninsula&lt;/a&gt; that I have some family connections of my own. It is a fascinating snapshot of early colonial life.&lt;/p&gt;
&lt;p&gt;I&apos;m two thirds through the book as I write this. So far Polly has endured numerous hardships, but is not deterred in providing for and making a home for her family. I&apos;ll be interested to see how it ends.&lt;/p&gt;
&lt;h2&gt;&lt;a href=&quot;https://catalogue.nla.gov.au/catalog/745190&quot;&gt;A Sacred Trust: The Uniting Churches in the Mitcham Hills&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/a-sacred-trust.C0tjthue_Z2gyzlz.webp&quot; alt=&quot;Book cover - A Sacred Trust&quot; /&gt;&lt;/p&gt;
&lt;p&gt;At first glance a possibly unusual pick. I grew up in the Mitcham Hills area, and have been involved in the Methodist and then Uniting Church my entire life. This book, written by Rosemary Mitchell and published back in 2000, traces the history of the many Uniting Churches that were and continue to be in the Mitcham Hills area. I have a vague recollection of being aware of the book, possibly around the time it was launched, but I didn&apos;t have a copy and a few people I&apos;ve talked to since also had either forgotten or didn&apos;t know about it.&lt;/p&gt;
&lt;p&gt;The old history is fascinating, and just the effort (especially in the early days) that people put into ensuring that they had worship services was inspiring. Take this quote from page 6 (discussing the travelling preachers did in the 1850s)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Later Mr Illman who lived at Unley would walk to Cherry Gardens in the morning, walk on to Clarendon for the evening service and walk back to Unley&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That&apos;s a decent drive in a car today, let alone walking on foot. Google Maps suggests that&apos;s around 50kms! Possibly in the 1850s you might have been able to take a more direct shortcut across the hills from Cherry Gardens to Clarendon, but that&apos;s still astounding.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/unley-cherry-gardens-clarendon.TJlHDA6R_jEXHU.webp&quot; alt=&quot;Map showing trip from Unley to Cherry Gardens and Clarendon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In the latter sections, there are lots of familiar names. Families and people I knew when I was growing up (and some I&apos;m still connected to). Fun fact, I&apos;m actually mentioned in the book too! (via my volunteering with the Blackwood Youth Project back in the 1990s). That was a pleasant surprise.&lt;/p&gt;
&lt;p&gt;There&apos;s a few passing mentions of indigenous people living in the area in the early days. It would be interesting to find out more about that - might need to see if there&apos;s any other books that cover Aboriginal history of the area in more detail.&lt;/p&gt;
&lt;p&gt;I don&apos;t know if the book is still available anywhere. I&apos;ll make some enquiries to see if it&apos;s still for sale, otherwise I might have to lend my copy out to friends and family that found it interesting.&lt;/p&gt;
</content>
    <media:thumbnail url="https://david.gardiner.net.au/_astro/not-only-in-stone.B2BnZbT3.jpg" width="251" height="400"/>
    <media:content medium="image" url="https://david.gardiner.net.au/_astro/not-only-in-stone.B2BnZbT3.jpg" width="251" height="400"/>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2018/06/get-programming-in-f</id>
    <updated>2018-06-11T20:35:00.000+09:30</updated>
    <title>Get programming in F#</title>
    <link href="https://david.gardiner.net.au/2018/06/get-programming-in-f" rel="alternate" type="text/html" title="Get programming in F#"/>
    <category term=".NET"/>
    <category term="Books"/>
    <category term="Software Engineering"/>
    <published>2018-06-11T20:35:00.000+09:30</published>
    <summary type="html">I’m really interested in learning more about functional programming. It isn’t something I knew much about, but the benefits of reducing mutability (and shared state) promoted by functional languages and functional style are enticing. To that end, I recently bought a copy of Isaac Abraham’s new book “Get programming in F#. A guide for .NET Developers”.</summary>
    <content type="html">

&lt;p&gt;I’m really interested in learning more about functional programming. It isn’t something I knew much about, but the benefits of reducing mutability (and shared state) promoted by functional languages and functional style are enticing.&lt;/p&gt;
&lt;p&gt;To that end, I recently bought a copy of Isaac Abraham’s new book “&lt;a href=&quot;https://www.amazon.com/Get-Programming-guide-NET-developers/dp/1617293997/ref=as_li_ss_tl?ref_=nav_signin&amp;amp;&amp;amp;linkCode=sl1&amp;amp;tag=davesdayd-20&amp;amp;linkId=fe849543709cb584510d3222fe58a8c2&quot;&gt;Get programming in F#. A guide for .NET Developers&lt;/a&gt;”.&lt;/p&gt;
&lt;p&gt;I have no background in functional languages at all, so I was looking for a “gentle” introduction to the F# language, without getting hung up on a lot of the functional terminology that seems to make learning this stuff a bit impenetrable for the newcomer. This book delivers.&lt;/p&gt;
&lt;p&gt;The structure of the book is in 10 “units”, which in turn are broken down into separate “lessons” (each lesson is a separate chapter).&lt;/p&gt;
&lt;p&gt;Here&apos;s my notes from each unit:&lt;/p&gt;
&lt;h2&gt;Unit 1 – F# and Visual Studio&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Introduces using the Visual Studio IDE for F# development, and recommended extensions. Surprisingly for a book published in 2018, most of the book is based on using Visual Studio 2015. I can only presume this is an artifact of the time it takes to write a book. I understand the initial release of 2017 did have some tooling regressions for F# but I am under the impression those are now resolved, seeing at my time of writing the 7th update for 2017 has just been released, including specific enhancements for F#.&lt;/li&gt;
&lt;li&gt;Throughout the book, comparisons are made to equivalent C# language constructs, and here too, the text is already a bit dated. An unfortunate downside of a printed book I guess.&lt;/li&gt;
&lt;li&gt;One thing to note that is different from many other languages – the file order in F# projects is significant. You can’t reference something before the compiler has seen it, and the compiler processes files in project order.&lt;/li&gt;
&lt;li&gt;The REPL is also a big part of F# development.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Unit 2 – Hello F#&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The ‘let’ keyword is introduced. It’s more like C#’s const than var, seeing as F# defaults to things being immutable rather than mutable.&lt;/li&gt;
&lt;li&gt;Scoping is based on whitespace indentation rather than curly braces.&lt;/li&gt;
&lt;li&gt;Diving into how the F# compiler is much stricter because of the way the F# type system works, and how that can be a good thing.&lt;/li&gt;
&lt;li&gt;A closer look at working with immutable data, and how you can opt in to mutable data when absolutely necessary, and how to handle state.&lt;/li&gt;
&lt;li&gt;C# is statement based, whereas F# likes to be expression based.&lt;/li&gt;
&lt;li&gt;The ‘unit’ type is introduced. It’s kind of like void, but is a way for expressions to always return a value (and means the use of those expressions is always consistent).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Unit 3 – Types and functions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Tuples, records&lt;/li&gt;
&lt;li&gt;Composing functions, partial functions, pipelines,&lt;/li&gt;
&lt;li&gt;How do you organise all these types and functions if you’re not using classes? Organising code through namespaces and modules&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Unit 4 – Collections in F#&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Looking at the F#-specific collection types – List, Array and Seq, the functions you can use with those collections. Immutable dictionaries, Map and Sets. Aggregation and fold.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Unit 5 – The pit of success with the F# type system&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Conditional logic in F#, pattern matching&lt;/li&gt;
&lt;li&gt;Discriminated unions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Unit 6 – Living on the .NET platform&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;How to use C# libraries from F#. Using Paket for NuGet package management&lt;/li&gt;
&lt;li&gt;How to use F# libraries from C#&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Unit 7 – Working with data&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Introducing Type Providers. Specific use cases with JSON, SQL and CSV.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Unit 8 – Web programming&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Asynchronous language support&lt;/li&gt;
&lt;li&gt;Working with ASP.NET WebAPI 2&lt;/li&gt;
&lt;li&gt;Suave – F#-focussed web library&lt;/li&gt;
&lt;li&gt;Consuming HTTP data&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Unit 9 – Unit testing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The role of unit testing in F# applications&lt;/li&gt;
&lt;li&gt;Using common .NET unit testing libraries with F#&lt;/li&gt;
&lt;li&gt;Property-based testing and FsCheck&lt;/li&gt;
&lt;li&gt;Web testing&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Unit 10 – Where next?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Further reading and resources to take your next steps.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2016/02/book-review-why</id>
    <updated>2016-02-14T23:06:00.001+10:30</updated>
    <title>Book review: Why</title>
    <link href="https://david.gardiner.net.au/2016/02/book-review-why" rel="alternate" type="text/html" title="Book review: Why"/>
    <category term="Books"/>
    <published>2016-02-14T23:06:00.001+10:30</published>
    <summary type="html">As part of their support for user groups, O’Reilly sent me a free copy of “Why: A Guide to Finding and Using Causes” by Samantha Kleinberg to review. Kleinberg is an Assistant Professor of Computer Science, so I was interested to see what she had to say about finding “causes”. It probably wouldn’t be the first book I chose if I was browsing, but I’m always interested in learning new things.</summary>
    <content type="html">&lt;p&gt;As part of their support for user groups, O’Reilly sent me a free copy of “&lt;a href=&quot;https://www.amazon.com/Why-Guide-Finding-Using-Causes/dp/1491949643?&amp;amp;linkCode=li3&amp;amp;tag=flcdrg0e-20&amp;amp;linkId=854d7c631497a667ef07258cd26837e8&amp;amp;language=en_US&amp;amp;ref_=as_li_ss_il&quot;&gt;Why: A Guide to Finding and Using Causes&lt;/a&gt;” by Samantha Kleinberg to review.&lt;/p&gt;
&lt;p&gt;Kleinberg is an Assistant Professor of Computer Science, so I was interested to see what she had to say about finding “causes”. It probably wouldn’t be the first book I chose if I was browsing, but I’m always interested in learning new things.&lt;/p&gt;
&lt;p&gt;What I liked about this book was the use of written examples and illustrations. The first chapter opens with the story of &lt;a href=&quot;https://en.wikipedia.org/wiki/Sally_Clark&quot;&gt;Sally Clark&lt;/a&gt;. A tragic miscarriage of justice that resulted in Clark serving 3 years in prison for the murder of her babies. One of the significant pieces of evidence that was used to convict Clark was the suggestion that the probability of two babies dying of SIDS was 1 in 73 million. This is wrong, because the witness (a medical expert) didn’t understand statistics and probability. The expert witness believed Clark was the cause of death the two babies.&lt;/p&gt;
&lt;p&gt;The Clark story isn’t the only one told. I’m glad for the generous sprinkling of those examples – without which it would be pretty dry going. It is very helpful to bring things back to something you can relate to.&lt;/p&gt;
&lt;p&gt;A warning, this is a pretty in-depth book. I can’t say I found it an easy read, but there’s plenty of detail there.&lt;/p&gt;
&lt;p&gt;Before reading this book I guess I assumed that finding the cause for something was a pretty straight forward. Turns out the correct method is “it depends”.&lt;/p&gt;
&lt;p&gt;Trying to identify the real cause of an event is not always easy. Kleinberg takes us on a journey to better understand ways (and there are more than one) of finding causes – Beginnings (concepts), Psychology (how do we learn about causes), Correlation (correlation and causation aren’t the same thing), Time, Observation (watching to learn), Computation (automating the process), Experimentation (experiments and research), Explanation (this caused that), Action (making decisions).&lt;/p&gt;
&lt;p&gt;The writer comes from the Computer Science field but she writes in a generally accessible (if a little bit academic) way. There are plenty of references (the notes and bibliography take up a not insignificant amount of the book). I noticed a lot of examples were medically-related, so if you work in the medical field, then I think you would get a lot out of it too.&lt;/p&gt;
&lt;p&gt;Finally, a suggestion for the title of the sequel – “Just Because” 😀&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2014/02/extending-winforms-controls</id>
    <updated>2014-02-02T15:58:00.001+10:30</updated>
    <title>Extending WinForms controls</title>
    <link href="https://david.gardiner.net.au/2014/02/extending-winforms-controls" rel="alternate" type="text/html" title="Extending WinForms controls"/>
    <category term=".NET"/>
    <category term="Books"/>
    <published>2014-02-02T15:58:00.001+10:30</published>
    <summary type="html">I&apos;ve been looking at ways to extend and enhance .NET WinForms controls recently and thought I&apos;d summarise what I&apos;ve found/learned so far. The most obvious way to extend a control is to create a new class that inherits from the existing class. You then have full access to add new properties and methods and access any protected methods from the base class.</summary>
    <content type="html">&lt;p&gt;I&apos;ve been looking at ways to extend and enhance .NET WinForms controls recently and thought I&apos;d summarise what I&apos;ve found/learned so far.&lt;/p&gt;
&lt;h2&gt;Inheritance&lt;/h2&gt;
&lt;p&gt;The most obvious way to extend a control is to create a new class that inherits from the existing class. You then have full access to add new properties and methods and access any protected methods from the base class.&lt;/p&gt;
&lt;p&gt;It does mean that if you&apos;ve already used the control in your application, you&apos;re going to have to replace references to the base class with your new class – not always easy.&lt;/p&gt;
&lt;h2&gt;IExtenderProvider&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/2014/02/image%5b8%5d.png&quot; alt=&quot;Properties window showing Tooltip property&quot; /&gt;Another option is to create a class that implements the &lt;a href=&quot;https://learn.microsoft.com/dotnet/api/system.componentmodel.iextenderprovider?view=net-10.0&quot;&gt;IExtenderProvider&lt;/a&gt; interface. You can then create a component that can be added to a form or user control that extends specific types. An example of this that ships in the framework is the &lt;a href=&quot;https://learn.microsoft.com/dotnet/api/system.windows.forms.tooltip?view=windowsdesktop-10.0&quot;&gt;ToolTip class&lt;/a&gt;. When you drag this control onto a form it doesn&apos;t add a visible control to the design surface. Instead it adds a new ToolTip property to appropriate controls on the same form.&lt;/p&gt;
&lt;h2&gt;Custom ComponentResourceManager&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../assets/2014/02/image%5b7%5d.png&quot; alt=&quot;Visual Studio designer showing properties window with Localizable set to true&quot; /&gt;A more specific area of WinForms controls that you might want to customise is the localisation support. Localisation for controls on a form is enabled by setting the Localizable property of the form to true. This also alters the designer-generated InitializeComponent method to add a new resources variable of type &lt;a href=&quot;https://learn.microsoft.com/dotnet/api/system.componentmodel.componentresourcemanager?view=net-10.0&quot;&gt;System.ComponentModel.ComponentResourceManager&lt;/a&gt;. This allows you to use .resx resource files to load locale-specific values for properties. This is the standard way that you would provide alternate language translations for your application.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://web.archive.org/web/20240918213621/https://stackoverflow.com/questions/15222528/net-winforms-localization-replacing-componentresourcemanager&quot;&gt;A question on Stack Overflow&lt;/a&gt; asked about replacing this implementation with another that could load resources from an alternate location (such as an XML file or a database). The accepted answer pointed to some samples from Guy Smith-Ferrier&apos;s book, &lt;a href=&quot;https://www.amazon.com/gp/product/0321341384/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321341384&amp;amp;linkCode=as2&amp;amp;tag=davesdayd-20&quot;&gt;.NET Internationalization: The Developer&apos;s Guide to Building Global Windows and Web Applications&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Impressively, even though the book was published in 2006 Guy has been releasing regular updates to the code samples at &lt;a href=&quot;https://web.archive.org/web/20230727035806/http://www.dotneti18n.com/Downloads.aspx&quot;&gt;http://www.dotneti18n.com/Downloads.aspx&lt;/a&gt;. His sample for a custom ComponentResourceManager includes a ResourceManagerSetter class that has the DesignerSeralizer attribute. This was new to me, but it turns out this is the mechanism that generates the code that appears in a forms&apos;s .Designer.cs file. This uses the CodeDom to generate code that inserts the replacement ComponentResourceManager instance.&lt;/p&gt;
&lt;p&gt;private void InitializeComponent()
{
    System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UserControl1));
    this.resourceManagerSetter1 = new Internationalization.Resources.ResourceManagerSetter();
    this.label1 = new System.Windows.Forms.Label();
    this.SuspendLayout();
    Internationalization.Resources.ResourceManagerProvider.GetResourceManager(typeof(UserControl1), out resources);
    //
    // label1
    //
    resources.ApplyResources(this.label1, &quot;label1&quot;);
    this.label1.Name = &quot;label1&quot;;
    //&lt;/p&gt;
&lt;p&gt;Using CodeDom means that the code is generated for the appropriate language automatically. The only requirement is that this component must be the first one added to the form. If you&apos;re adding this to an existing form with controls, just go to the Designer.cs file and move the line calls the constructor to the top of the InitializeComponent method. (The order of the calls to the constructors seems to determine the order in which the serialized code generators are called)&lt;/p&gt;
&lt;p&gt;You can see from the code sample above that the original instantiation is still there, but is effectively replaced by the call to the GetResmourceManager method.&lt;/p&gt;
&lt;p&gt;MSDN has more info on &lt;a href=&quot;https://learn.microsoft.com/dotnet/desktop/winforms/advanced/globalizing-windows-forms?view=netframeworkdesktop-4.8&quot;&gt;Globalizing Windows Forms&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2013/05/lean-from-trenches-by-henrik-kniberg</id>
    <updated>2013-05-23T22:55:00.001+09:30</updated>
    <title>Lean from the Trenches by Henrik Kniberg</title>
    <link href="https://david.gardiner.net.au/2013/05/lean-from-trenches-by-henrik-kniberg" rel="alternate" type="text/html" title="Lean from the Trenches by Henrik Kniberg"/>
    <category term="Books"/>
    <published>2013-05-23T22:55:00.001+09:30</published>
    <summary type="html">I was introduced to &quot;Lean Thinking&quot; by my friend Jane, who&apos;s been involved in applying the &quot;Toyota Production System&quot; principles in a major public hospital setting (not the first place you&apos;d think of finding something that was created by a car manufacturer). After learning about Lean and considering that it seemed to have some overlap with the Agile software development processes that have become more popular in the last 10 years, I then discovered the work of Tom and Mary Poppendieck who had published Lean Software Development: An Agile Toolkit, the first of 3 books on the subject. …</summary>
    <content type="html">
&lt;p&gt;&lt;img src=&quot;https://www.amazon.com/gp/product/1934356859?ie=UTF8&amp;amp;linkCode=li2&amp;amp;tag=flcdrg0e-20&amp;amp;linkId=5a63f07f2ffd4514ae8182cebd463dda&amp;amp;language=en_US&amp;amp;ref_=as_li_ss_il&quot; alt=&quot;Lean from the Trenches: Managing Large-Scale Projects with Kanban&quot; /&gt;&lt;img src=&quot;https://ir-na.amazon-adsystem.com/e/ir?t=flcdrg0e-20&amp;amp;language=en_US&amp;amp;l=li2&amp;amp;o=1&amp;amp;a=1934356859&quot; alt=&quot;Lean from the Trenches: Managing Large-Scale Projects with Kanban&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I was introduced to &quot;Lean Thinking&quot; by my friend Jane, who&apos;s been involved in applying the &quot;Toyota Production System&quot; principles in a major public hospital setting (not the first place you&apos;d think of finding something that was created by a car manufacturer). After learning about Lean and considering that it seemed to have some overlap with the Agile software development processes that have become more popular in the last 10 years, I then discovered the work of Tom and Mary Poppendieck who had published &lt;a href=&quot;https://www.amazon.com/gp/product/0321150783/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321150783&amp;amp;linkCode=as2&amp;amp;tag=davesdayd-20&quot;&gt;Lean Software Development: An Agile Toolkit&lt;/a&gt;, the first of 3 books on the subject.&lt;/p&gt;
&lt;p&gt;Reading their work is still on my &apos;to do&apos; list, but it was while I was reviewing their &lt;a href=&quot;https://www.leanessays.com/&quot;&gt;recommended reading list&lt;/a&gt; that I decided to purchase Kniberg&apos;s book.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/1934356859/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1934356859&amp;amp;linkCode=as2&amp;amp;tag=davesdayd-20&quot;&gt;Lean from the Trenches&lt;/a&gt;&lt;img src=&quot;https://web.archive.org/web/20161021035828/http://www.assoc-amazon.com/e/ir?t=davesdayd-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=1934356859&quot; alt=&quot;Lean from the Trenches&quot; /&gt;is an fascinating case study in applying Lean and Kanban to the development of a software application for the Swedish Police. Kniberg worked as a coach part-time on the project for about 7 months before publishing this book. As I understand it, this was a &apos;greenfield&apos; application (which might explain how they could do the 30 bug limit).&lt;/p&gt;
&lt;p&gt;I found this book very interesting. In particular, the following stood out for me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the regular Process Improvement Workshops – initially a weekly cross-team meeting to look at implementing change quickly&lt;/li&gt;
&lt;li&gt;the way they used Kanban and the changes made over time to the board to make it work better.&lt;/li&gt;
&lt;li&gt;Identifying recurrent bugs with root-cause analysis&lt;/li&gt;
&lt;li&gt;Having limits for work in progress (which doesn&apos;t include bugs)&lt;/li&gt;
&lt;li&gt;Not using story points (though features are estimated with Small/Medium/Large T-shirt sizes)&lt;/li&gt;
&lt;li&gt;The &quot;Next 10 features&quot;&lt;/li&gt;
&lt;li&gt;Balancing features and &apos;tech stories&apos; (technical debt)&lt;/li&gt;
&lt;li&gt;Limit list of bugs to be fixed at 30!&lt;/li&gt;
&lt;li&gt;Testers working in development teams&lt;/li&gt;
&lt;li&gt;Many bugs get fixed immediately if possible&lt;/li&gt;
&lt;li&gt;Importance of visualisation and communication&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&apos;m most familiar with Scrum, so there was a reasonable amount of familiarity with some of their practises. The focus on the Kanban board was interesting. I do like the fact that it is so visible. Kniberg feels having a physical board is important, though I wonder how that would work if he had to manage distributed teams.&lt;/p&gt;
&lt;p&gt;In summary, a great read with some thought-provoking ideas.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2010/09/book-ordering-from-borders</id>
    <updated>2010-09-14T11:40:00.001+09:30</updated>
    <title>Book ordering from Borders</title>
    <link href="https://david.gardiner.net.au/2010/09/book-ordering-from-borders" rel="alternate" type="text/html" title="Book ordering from Borders"/>
    <category term="Excel"/>
    <category term="Books"/>
    <published>2010-09-14T11:40:00.001+09:30</published>
    <summary type="html">I was looking for a book on learning about Excel pivot tables to give as a gift recently (makes a change from chocolates or a gift voucher – I know!) I found Pivot Table Data Crunching For Microsoft Office Excel 2007 on Amazon for $AU37.14 (25.93 + 11.21P&amp;amp;P). Figuring it would be quicker to get it from a real bookshop, I dropped into the Adelaide Borders bookshop, but they didn&apos;t have it on the shelf 😢</summary>
    <content type="html">&lt;p&gt;I was looking for a book on learning about Excel pivot tables to give as a gift recently (makes a change from chocolates or a gift voucher – I know!) I found &lt;a href=&quot;https://www.amazon.com/Pivot-Table-Crunching-Microsoft-Office/dp/0789736012?ie=UTF8&amp;amp;tag=davesdayd-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot;&gt;Pivot Table Data Crunching For Microsoft Office Excel 2007&lt;/a&gt; on Amazon for $AU37.14 (25.93 + 11.21P&amp;amp;P).&lt;/p&gt;
&lt;p&gt;Figuring it would be quicker to get it from a real bookshop, I dropped into the Adelaide Borders bookshop, but they didn&apos;t have it on the shelf 😢&lt;/p&gt;
&lt;p&gt;I then tried the &lt;a href=&quot;http://www.borders.com.au/book/pivot-table-data-crunching-for-microsoft-office-excel-2007/731296/&quot;&gt;Borders website&lt;/a&gt; - their online price for the same book is just $AU35.95, and they also happen to have an online price guarantee that they&apos;ll beat Amazon&apos;s standard price + shipping (not required in this case).&lt;/p&gt;
&lt;p&gt;It would have been interesting to compare Borders online price to in-store price to see if they were the same. In any case, I ordered from them so we&apos;ll see how quickly they deliver.&lt;/p&gt;
&lt;p&gt;This all does make me wonder with the advent of &lt;a href=&quot;https://www.amazon.com/Kindle-Wireless-Reader-3G-Wifi-Graphite/dp/B002FQJT3Q?ie=UTF8&amp;amp;tag=davesdayd-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot;&gt;Kindle&lt;/a&gt; eBook readers and downloadable movies what the future is for traditional book shops and video rental stores. Not particularly bright I suspect.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update 3pm&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;BenMc suggested I have a look at &lt;a href=&quot;https://web.archive.org/web/20140408025307/https://www.bookdepository.co.uk/&quot;&gt;The Book Depository&lt;/a&gt;. They have the &lt;a href=&quot;http://www.bookdepository.co.uk/book/9780789736017/Pivot-Table-Data-Crunching-for-Microsoft-Office-Excel-2007&quot;&gt;same book&lt;/a&gt; for $AU25.33 with free shipping. Might try them next time!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2009/07/art-of-unit-testing-with-examples-in</id>
    <updated>2009-07-14T22:49:00.001+09:30</updated>
    <title>The art of Unit Testing with Examples in .NET</title>
    <link href="https://david.gardiner.net.au/2009/07/art-of-unit-testing-with-examples-in" rel="alternate" type="text/html" title="The art of Unit Testing with Examples in .NET"/>
    <category term=".NET"/>
    <category term="Unit Testing"/>
    <category term="Books"/>
    <published>2009-07-14T22:49:00.001+09:30</published>
    <summary type="html">The Art of Unit Testing: with Examples in .NET by Roy Osherove I recently bought a copy of The Art of Unit Testing: with Examples in .NET by Roy Osherove, taking advantage of a discount being offered by Manning.</summary>
    <content type="html">&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Art-Unit-Testing-Examples-NET/dp/1933988274%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Ddavesdayd-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1933988274&quot;&gt;The Art of Unit Testing: with Examples in .NET&lt;/a&gt; by Roy Osherove&lt;/p&gt;
&lt;p&gt;I recently bought a copy of &lt;a href=&quot;https://www.amazon.com/Art-Unit-Testing-Examples-NET/dp/1933988274%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Ddavesdayd-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1933988274&quot;&gt;The Art of Unit Testing: with Examples in .NET&lt;/a&gt; by Roy Osherove, taking advantage of a discount being offered by Manning.&lt;/p&gt;
&lt;p&gt;Already owning &lt;a href=&quot;https://www.amazon.com/xUnit-Test-Patterns-Refactoring-Addison-Wesley/dp/0131495054%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Ddavesdayd-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0131495054&quot;&gt;xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series)&lt;/a&gt; by Gerard Meszaros and &lt;a href=&quot;https://www.amazon.com/Working-Effectively-Legacy-Robert-Martin/dp/0131177052%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Ddavesdayd-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0131177052&quot;&gt;Working Effectively with Legacy Code (Robert C. Martin Series)&lt;/a&gt; by Michael Feathers, I was interested to see what new insights Osherove would bring, especially as he would be focussing purely on the .NET platform (code samples are in C#).&lt;/p&gt;
&lt;p&gt;The book is divided into 4 sections.&lt;/p&gt;
&lt;p&gt;Part 1 (which I skimmed through) was an introduction to unit testing. Osherove uses &lt;a href=&quot;http://www.nunit.org&quot;&gt;NUnit&lt;/a&gt; for his examples which is reasonable considering it is probably the most popular unit testing framework for .NET at the moment.&lt;/p&gt;
&lt;p&gt;His preferred naming convention for test methods is interesting – &quot;[MethodUnderTest]_[Scenario]_[ExpectedBehaviour]&quot;. It contrasts with the &quot;natural sentence&quot; style I currently favour (which I&apos;d trace back to &lt;a href=&quot;https://web.archive.org/web/20240327132504/http://blog.jpboodhoo.com/&quot;&gt;Jean-Paul Boodhoo&lt;/a&gt;&apos;s unit testing episodes on &lt;a href=&quot;https://www.dnrtv.com/&quot;&gt;dnrTV&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;He also recommends naming test classes with a &quot;Tests&quot; suffix. I&apos;ve always used the singular &quot;Test&quot;, but I take his point that each test class does contain multiple tests so plural may be more accurate.&lt;/p&gt;
&lt;p&gt;Part 2 introduces stubs, mock objects and isolation frameworks (aka mock object frameworks). Following a &lt;a href=&quot;https://web.archive.org/web/20130531154133/http://weblogs.asp.net/rosherove/archive/2007/04/26/choosing-a-mock-object-framework.aspx&quot;&gt;poll held on Osherove&apos;s blog&lt;/a&gt;, &lt;a href=&quot;https://ayende.com/blog/&quot;&gt;Rhino Mocks&lt;/a&gt; was chosen to demonstrate how a framework can simplify creating mock objects. I could be wrong, but you almost get a sense that this was done somewhat grudgingly considering Osherove himself works for &lt;a href=&quot;https://www.typemock.com/&quot;&gt;TypeMock&lt;/a&gt; (who sell a commercial mocking framework). Curiously whilst including a link to the Rhino Mocks download site, he doesn&apos;t even mention Ayende&apos;s name at all.&lt;/p&gt;
&lt;p&gt;Osherove makes the following recommendations about stubs and mocks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use nonstrict mocks when you can&lt;/li&gt;
&lt;li&gt;Use stubs instead of mocks when you can&lt;/li&gt;
&lt;li&gt;Avoid using stubs as mocks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I found this interesting, as we&apos;ve been writing a lot of unit tests lately, and one of the things we&apos;re coming to realise is that brittle tests can be annoying. Tests that still test your code, but are more flexible about exactly how the code under test works (rather than setting strict expectations for each and every method call) are going to be more useful and less effort to maintain.&lt;/p&gt;
&lt;p&gt;Part 3 looks at various strategies for organising tests and a number of patterns and anti-patterns to follow when creating tests.&lt;/p&gt;
&lt;p&gt;Part 4 covers how to make unit testing the norm in an organisation, and how to work with legacy code.&lt;/p&gt;
&lt;p&gt;Having some experience writing unit tests, I did find this book a bit light on. Osherove references Meszaros and Feather&apos;s books regularly. I would also consider both of these works cover the topic in a more detailed and thorough manner. However they are probably not necessarily as good a starting point for someone new to unit testing, especially someone who&apos;s main experience lies in developing for the .NET platform.&lt;/p&gt;
&lt;p&gt;I finished the book surprisingly quickly – pleased that I&apos;d learned a few new things, but left feeling that it would have been nice to learn a few more.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2009/06/42-discount-from-manning</id>
    <updated>2009-06-20T20:20:00.001+09:30</updated>
    <title>42% discount from Manning</title>
    <link href="https://david.gardiner.net.au/2009/06/42-discount-from-manning" rel="alternate" type="text/html" title="42% discount from Manning"/>
    <category term="Books"/>
    <published>2009-06-20T20:20:00.001+09:30</published>
    <summary type="html">I saw today on Jeffery Palermo&apos;s blog that Manning are offering a limited time discount on &quot;Alt.Net&quot; books if you use the discount code &quot;alt42&quot; before June 25th. I&apos;ve taken up the offer and ordered the following: Some good reading, and just in time to claim for a tax deduction too.</summary>
    <content type="html">&lt;p&gt;I saw &lt;a href=&quot;https://jeffreypalermo.com/2009/06/manning-offers-alt-net-book-series-and-42-discount-on-them-all/&quot;&gt;today on Jeffery Palermo&apos;s blog&lt;/a&gt; that Manning are offering a limited time discount on &quot;Alt.Net&quot; books if you use the discount code &quot;alt42&quot; before June 25th. I&apos;ve taken up the offer and ordered the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Building-Domain-Specific-Languages-Boo/dp/1933988606%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Ddavesdayd-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1933988606&quot;&gt;Building Domain Specific Languages in Boo&lt;/a&gt; by Ayende Rahien&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.com/Art-Unit-Testing-Examples-NET/dp/1933988274%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Ddavesdayd-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1933988274&quot;&gt;The Art of Unit Testing: with Examples in .NET&lt;/a&gt; by Roy Osherove&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.amazon.com/ASP-NET-MVC-Action-Jeffrey-Palermo/dp/1933988622%3FSubscriptionId%3D0JTCV5ZMHMF7ZYTXGFR2%26tag%3Ddavesdayd-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D1933988622&quot;&gt;ASP.NET MVC in Action&lt;/a&gt; by Jeffrey Palermo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some good reading, and just in time to claim for a tax deduction too.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2009/03/dr-dobbs-journal-1976-2009</id>
    <updated>2009-03-08T23:54:00.001+10:30</updated>
    <title>Dr Dobb&apos;s Journal, 1976 - 2009</title>
    <link href="https://david.gardiner.net.au/2009/03/dr-dobbs-journal-1976-2009" rel="alternate" type="text/html" title="Dr Dobb&apos;s Journal, 1976 - 2009"/>
    <category term="Software Engineering"/>
    <category term="Books"/>
    <published>2009-03-08T23:54:00.001+10:30</published>
    <summary type="html">Back in the golden days of computer magazines (I’m talking the mid-80’s to mid-90’s), I could spend ages in the newsagent browsing all the different available issues. You remember – when the US PC Magazine was as big as a phone book, and it seemed like every brand of computer had their own magazines – BBC Micro, Commodore 64 and Amiga, Sinclair ZX Spectrum, MicroBee and the rest. One particular periodical that caught my eye was Dr Dobb’s Journal (DDJ for short) – probably because it wasn’t so much aligned with a particular brand, but that it was about computer programming in general. …</summary>
    <content type="html">&lt;p&gt;Back in the golden days of computer magazines (I’m talking the mid-80’s to mid-90’s), I could spend ages in the newsagent browsing all the different available issues. You remember – when the US &lt;a href=&quot;https://en.wikipedia.org/wiki/PC_Magazine&quot;&gt;PC Magazine&lt;/a&gt; was as big as a phone book, and it seemed like every brand of computer had their own magazines – &lt;a href=&quot;https://en.wikipedia.org/wiki/BBC_Micro&quot;&gt;BBC Micro&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Commodore_64&quot;&gt;Commodore 64&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Amiga&quot;&gt;Amiga&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Sinclair_ZX_Spectrum&quot;&gt;Sinclair ZX Spectrum&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/MicroBee&quot;&gt;MicroBee&lt;/a&gt; and the rest. One particular periodical that caught my eye was Dr Dobb’s Journal (DDJ for short) – probably because it wasn’t so much aligned with a particular brand, but that it was about computer programming in general.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/2_p3080003.TXJ-CzO2_2a74cs.webp&quot; alt=&quot;Photo of the cover of Dr Dobbs Journal issue #162 March 1990&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The first issue I bought was March 1990, which had an assembly language theme. For old times sake, let’s take a trip down memory lane and see what those 160 pages included. Descriptions are as printed on the contents page.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The following feature articles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Assembly language lives&lt;/strong&gt; (Michael Abrash) – Assembly language isn’t the be-all and end-all of PC programming, but as Michael states, it’s sometimes the only game in town when performance program size are important&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Assembly language tricks of the trade&lt;/strong&gt; (Tim Paterson) – Every programmer collects a personal bag of programming tricks. Tim’s been 13 years in the making, and he shares some of his favourites with you.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;68040 programming&lt;/strong&gt; (Stephen Satchell) – The newest member of the 680x0 family provides some challenges for programmers at all levels, particularly when it comes to caching.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Homegrown Debugging – 386 style!&lt;/strong&gt; (Al Williams) – Use the 80386’s hardware to debug your programs by including Al’s assembly language code to establish breakpoints.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Managing multiple data segments under Microsoft Windows: Part II&lt;/strong&gt; (Tim Paterson and Steve Flenniken) – Last month, Tim and Steve presented a method for managing multiple data segments under MS Windows using the segment table. This month, the provide a sample Windows program that puts the segtable library to work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Object-oriented programming with assembly language&lt;/strong&gt; (Randall Hyde) – Randy makes a case that the object-oriented paradigm isn’t completely the domain of high-level programming languages. He believes that OOP techniques can be applied, and are worth considering for ASM programs too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inside Watcom C 7.0/386&lt;/strong&gt; (Andrew Schulman) – Andrew suspects that Watcom’s C 7.0/386 has launched the opening salvos in a 32-bit 386 development tool ware. he also looks at how Novell has implemented the compiler for its C Network Compiler/386.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mixed-language programming with ASM&lt;/strong&gt; (Karl Write and Rick Schell) – As Karl and Rick point out, it’s not only practical but often advisable to mix languages and memory models in order to achieve the best results. Assembly language is a vital part of this mix.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;the following columns:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Programming paradigms&lt;/strong&gt; (Michael Swaine) – List has been codified, gentrified, and now objectified. Michael looks at how the Common Lisp data-type system underlies the object system, and how Lisp functions have been extended in the object world.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C Programming&lt;/strong&gt; (Al Stevens) – TEXTSRCH, Al’s text retrieval project, continues to grow. Now you can select and view one of the files from within the TEXTSRCH program itself. he then uses this feature to explore the CURSES function library.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Structured programming&lt;/strong&gt; (Jeff Duntemann) – There really were some neat ideas at last fall’s Comdex, you just had to search them out. Jeff describes the jewels he discovered, then delves into sets in Modula-2.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;plus the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Editorial&lt;/strong&gt; (Jonathan Erickson)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Letters&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Swaine’s Flames&lt;/strong&gt; (Michael Swaine)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Of Interest&lt;/strong&gt; (compiled by Janna Custer)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Wow! A bit of a blast from the past! At $AU5.95 it wasn’t the cheapest thing on the shelf, but you certainly got your money’s worth. And yes folks, that’s &lt;a href=&quot;https://en.wikipedia.org/wiki/Tim_Paterson&quot;&gt;THE Tim Paterson&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A few years later I started to subscribe and began my collection. What I’ve really enjoyed was the variety of articles. Whilst there was almost always something of direct relevance, it was the exposure to other languages, hardware platforms and specialty areas that I really liked. And you never know when sometimes something might actually be useful in your own field too.&lt;/p&gt;
&lt;p&gt;Here’s almost all of my collection that I’ve accumulated over the years. Funny how other magazines and journals dated quickly and weren’t that hard to throw out, but I always felt that inside most issues there’d be something, if not timeless then at least worth keeping around for a while yet.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/p3080002.DSSzSDJ-_2gMuE6.webp&quot; alt=&quot;Photo of lots of magazines on a shelf&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So the years passed, some things changed, but DDJ continued on. I did notice some differences – the page count slowly dropped, some of the columnists changed or finished, but Jonathan continued to be the editor and Michael’s “Swaine’s Flames” continued to be on the last page. Actually now that I look more closely, it does look like Jonathan and Michael ended up carrying most of the work towards the end.&lt;/p&gt;
&lt;p&gt;I’d previously seen the same happen to &lt;a href=&quot;https://en.wikipedia.org/wiki/Byte_magazine&quot;&gt;BYTE magazine&lt;/a&gt; (to which I’d also subscribed to until its demise just over 10 years ago), and I suspected DDJ was heading in the same direction. February 2009 and my fears were confirmed by &lt;a href=&quot;https://web.archive.org/web/20090512173046/http://www.ddj.com:80/linux-open-source/212700891&quot;&gt;Jonathan Erickson’s editorial&lt;/a&gt; – DDJ’s time had finished, it was to become a monthly insert to Information Week. Ironically I received the early-January edition of &lt;a href=&quot;https://www.informationweek.com/&quot;&gt;Information Week&lt;/a&gt; in late February (not that handy for a weekly publication to arrive that late!) and the DDJ inclusion turned out to be nothing more than a column written by Jonathan. Information Week is aimed at “IT professionals and business managers”. Somehow I don’t think they’re going to be running to many assembly language articles anymore.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://david.gardiner.net.au/_astro/ddj-2009-02-cover.CC8F8s6n_Z1TQGSx.webp&quot; alt=&quot;Dr Dobbs magazine cover, issue #416&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So let’s compare the final issue. From 160pages down to just 48. You can tell when a magazine or journal is getting smaller when they no longer print the title on the spine of the publication, because there isn’t a spine anymore (just staples). I’d guess the art budget must have also been slashed, as instead of clever/thought-provoking covers, for the last few issues we’ve been greeted with with photos of one of the subjects of the “Developer Diaries” page.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It contains the following feature articles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.ddj.com/architect/213000642&quot;&gt;Computing in the Clouds&lt;/a&gt;&lt;/strong&gt; (Dana Moore and John Hebeler) - Cloud computing offers virtually unlimited, on-demand computing resources. Our authors examine how you can you can create cloud applications through Amazon Web Services and the Google Application Engine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.ddj.com/dept/architect/212900736&quot;&gt;Software Development in the Cloud&lt;/a&gt;&lt;/strong&gt; (Nick Gulrajani and Darryl Bowler) - Software development in the cloud brings adaptability and flexibility to any size project team.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.ddj.com/dept/database/212800145&quot;&gt;Videos and Oracle Forms 10g&lt;/a&gt;&lt;/strong&gt; (Greg Williams) - Greg shows how you can take advantage of unstructured data in the database - video, in this case - and access this data from Oracle Forms.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.ddj.com/dept/windows/212700663&quot;&gt;Parallel LINQ&lt;/a&gt;&lt;/strong&gt; (Paul Kimmel) - Parallel LINQ, which is part of the Parallel FX extensions for .NET, lets you use basic LINQ keywords to tap into the extra power that multicore systems provide.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decoupling C Header Files&lt;/strong&gt; (R. Samuel Klatchko) - One issue with the common C compilation model is that it can easily lead to unnecessary coupling between files. But decoupling those files isn&apos;t necessarily easy either.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;the following columns:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.ddj.com/dept/architect/212701484&quot;&gt;Effective Concurrency&lt;/a&gt;&lt;/strong&gt; (Herb Sutter) - When it comes to lock-free programming, volatile is a volatile subject - no matter what name it goes by.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.ddj.com/dept/architect/212701603&quot;&gt;Disciplined Agility&lt;/a&gt;&lt;/strong&gt; (Scott W. Ambler) - Package implementations look great from a business point of view but can easily run into trouble if the bureaucracy gets out of hand.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;plus the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Friday Night Fish Fry&lt;/strong&gt; (Jonathan Erickson) - Change happens as Dr. Dobb&apos;s steps up to the next level.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alia Vox&lt;/strong&gt; (Tieren Zhou) - Specification Driven Development is an agile development methodology with two deliverables: working software and product design.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Developer Diaries&lt;/strong&gt; (edited by Michael Swaine) - Profiles of programmers, descriptions of developers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conversations&lt;/strong&gt; (Jonathan Erickson) - According to Lori McVittie, cloud computing is a deployment model leveraging on-demand computing to scale and serve applications through a shared resource model.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Swaine’s Flames&lt;/strong&gt; (Michael Swaine) - Michael wonders why if Twitter is so great, why do they have to promote it by e-mail?&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Still some interesting stuff, but a shadow of its former self. Most of these articles are only one or two pages, contrasting with the detailed content from 1990. I see we also lost the “Letters” section at some stage. I reckon I finished reading the whole thing in 30 minutes.&lt;/p&gt;
&lt;p&gt;I don’t know why it died, but you would have to guess that online media has a big part to play. There’s so much information online (a lot of rubbish, but some good quality too) that it’s probably hard for a paper-based medium that you’re charging customers for to compete against anything free. DDJ have been pushing their online content for a while, but&lt;/p&gt;
&lt;p&gt;Farewell DDJ. Thanks for helping me be a better informed programmer. You’ll be missed.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2008/11/death-march-by-edward-yourdon</id>
    <updated>2008-11-12T08:30:00.002+10:30</updated>
    <title>Death March by Edward Yourdon</title>
    <link href="https://david.gardiner.net.au/2008/11/death-march-by-edward-yourdon" rel="alternate" type="text/html" title="Death March by Edward Yourdon"/>
    <category term="Books"/>
    <published>2008-11-12T08:30:00.002+10:30</published>
    <summary type="html">Death March (2nd Edition) (Yourdon Press Series - published by Prentice Hall, 1997 When I first began reading this book, I thought it would be all about the team that came before us… the one that spent a lot of time delivering something that didn’t work. But the more I read, the more I found myself identifying our current team with the descriptions in each chapter. Curious as the title doesn’t sound that positive! As Wikipedia defines it, a death march project is one that is destined to fail. …</summary>
    <content type="html">&lt;p&gt;&lt;a href=&quot;https://www.amazon.com.au/dp/013143635X?showmri=&amp;amp;linkCode=ll1&amp;amp;tag=flcdrg07-22&amp;amp;linkId=3435791dbcbeac5678cec8ba4aa73d36&amp;amp;language=en_AU&amp;amp;ref_=as_li_ss_tl&quot;&gt;Death March (2nd Edition) (Yourdon Press Series&lt;/a&gt; - published by Prentice Hall, 1997&lt;/p&gt;
&lt;p&gt;When I first began reading this book, I thought it would be all about the team that came before us… the one that spent a lot of time delivering something that didn’t work. But the more I read, the more I found myself identifying our current team with the descriptions in each chapter. Curious as the title doesn’t sound that positive! &lt;a href=&quot;https://en.wikipedia.org/wiki/Death_march_%28software_development%29&quot;&gt;As Wikipedia defines it&lt;/a&gt;, a death march project is one that is destined to fail.&lt;/p&gt;
&lt;p&gt;One point that comes out repeatedly is that while in some ways “Death March” projects are not intended to be the norm, more often than not they end up being the de facto way that many IT projects are run.&lt;/p&gt;
&lt;p&gt;In Ch. 1, characteristics of a “Death March” project are listed as including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tight schedules&lt;/li&gt;
&lt;li&gt;Small team&lt;/li&gt;
&lt;li&gt;Limited budget&lt;/li&gt;
&lt;li&gt;More features&lt;/li&gt;
&lt;li&gt;Smaller scale&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hmm.. that sounds familiar!&lt;/p&gt;
&lt;p&gt;In subsequent chapters he goes on to cover topics such as Politics, Negotiations, People, Processes, Tools &amp;amp; Technologies and finally the idea of “Death March” projects as a way of life.&lt;/p&gt;
&lt;p&gt;In Ch. 3, the topic of Estimation is examined, and the value of having an experienced project manager who can estimate slightly better than just “gut feeling”, and that there are software estimation tools that can improve forecasting accuracy. I reckon Steve McConnell’s &lt;a href=&quot;https://www.amazon.com.au/Software-Estimation-Demystifying-Black-Art/dp/0735605351?&amp;amp;linkCode=ll1&amp;amp;tag=flcdrg07-22&amp;amp;linkId=9e556ec6a2328db708ff94776374a5f4&amp;amp;language=en_AU&amp;amp;ref_=as_li_ss_tl&quot;&gt;Software Estimation: Demystifying the Black Art (Best Practices (Microsoft))&lt;/a&gt; could be worth a read to learn a bit more about this topic. I’ll add that to my wish list!&lt;/p&gt;
&lt;p&gt;People can make all the difference, and our team certainly bears this out. I can’t agree with the comment that 80 hours a week is ok though.&lt;/p&gt;
&lt;p&gt;Yourdon also espouses the importance of good workplace conditions – in particular quietness and privacy (eg. separate offices). There’s certainly empirical evidence to reinforce the productivity benefits, which flies in the face of the current trend of “open” office space, cramming as many people into tiny cubicles as possible.&lt;/p&gt;
&lt;p&gt;Triaging tasks/bugs are critical, and allows you to prioritise what is important.&lt;/p&gt;
&lt;p&gt;When this book was first published, there wasn’t much in the way of “Agile” development practises, but I think Yourdon is alluding to this when he makes mention of using RAD tools (refactoring), mini-milestones (iterations) and daily builds (continuous integration).&lt;/p&gt;
&lt;p&gt;One thing I did find annoying was Yourdon’s use of a monospace font when listing the emails in each chapter’s list of references. This made them very hard to read and I mostly ended up skipping over them as a result.&lt;/p&gt;
&lt;p&gt;Overall I came away inspired by this book. Yourdon highlighted the many pitfalls that await a team who are engaged in a “Death March” project, but does offer hope that under the right conditions, you can achieve success.&lt;/p&gt;
</content>
  </entry>
</feed>
