<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>synapseanalytics | Synesthesia</title><link>https://www.synesthesia.co.uk/tag/synapseanalytics/</link><atom:link href="https://www.synesthesia.co.uk/tag/synapseanalytics/index.xml" rel="self" type="application/rss+xml"/><description>synapseanalytics</description><generator>Hugo (https://gohugo.io)</generator><language>en-us</language><copyright>© Julian Elve 2001 - 2026</copyright><lastBuildDate>Fri, 05 May 2023 07:47:42 +0100</lastBuildDate><image><url>https://www.synesthesia.co.uk/media/icon_hufc1c15e6a498a5ebe0f850a433bf3a96_788300_512x512_fill_lanczos_center_3.png</url><title>synapseanalytics</title><link>https://www.synesthesia.co.uk/tag/synapseanalytics/</link></image><item><title>Transcribing meeting recordings with OpenAI</title><link>https://www.synesthesia.co.uk/note/2024/10/09/transcribing-meeting-recordings-with-openai/</link><pubDate>Wed, 09 Oct 2024 14:23:23 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2024/10/09/transcribing-meeting-recordings-with-openai/</guid><description>&lt;p>The other day I was sent an audio recording of a meeting I had been part of, but no textual transcript was available.&lt;/p>
&lt;p>With a relatively small amount of hacking it is now very easy to use the &lt;a href="https://openai.com/index/whisper/" target="_blank" rel="noopener">OpenAI Whisper&lt;/a> model via the &lt;a href="https://platform.openai.com/docs/guides/speech-to-text" target="_blank" rel="noopener">transcriptions endpoint&lt;/a> to generate high quality text from such a file.&lt;/p>
&lt;p>This example uses Python, it&amp;rsquo;s a great language for these sort of ad-hoc tools.&lt;/p>
&lt;h2 id="process">Process&lt;/h2>
&lt;p>The process breaks down into three logical parts:&lt;/p>
&lt;ul>
&lt;li>install all dependencies&lt;/li>
&lt;li>prepare the audio file (in this case, splitting it to ensure we kept within the 25MB filesize limits of whisper)&lt;/li>
&lt;li>run the prepared files via OpenAI and reassemble a single text file&lt;/li>
&lt;/ul>
&lt;h3 id="environment-and-dependencies">Environment and Dependencies&lt;/h3>
&lt;p>Because the source was in m4a format, it was necessary to install FFMPEG on my machine.&lt;/p>
&lt;p>The suggested methods are:&lt;/p>
&lt;ul>
&lt;li>Windows &lt;code>winget install ffmpeg&lt;/code>&lt;/li>
&lt;li>MacOS &lt;code>brew install ffmpeg&lt;/code>&lt;/li>
&lt;li>Linux &lt;code>sudo apt-get install ffmpeg&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>I then needed a Python environment with the key dependencies added.&lt;/p>
&lt;p>I mainly use conda to manage environments, so I set up a new environment like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">conda create -n myenv &lt;span class="nv">python&lt;/span>&lt;span class="o">=&lt;/span>3.12
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">conda install -n myenv openai
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">conda install -n myenv -c conda-forge pydub
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">conda activate myenv
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>last preparation step was to create an API key in my OpenAI account, and add that into the environment variables for my new conda environment:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">conda env config vars &lt;span class="nb">set&lt;/span> &lt;span class="nv">OPENAI_API_KEY&lt;/span>&lt;span class="o">=&lt;/span>VALUE_OF_MY_KEY
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="splitting-the-audio">Splitting the audio&lt;/h3>
&lt;p>The meeting was over an hour long, so to split the audio into smaller chunks I used &lt;a href="https://gist.github.com/synesthesia/fe6bf9a3d3e758981f6c9410a709e265#file-split-py" target="_blank" rel="noopener">this script&lt;/a>, making use of the &lt;a href="https://github.com/jiaaro/pydub" target="_blank" rel="noopener">pydub&lt;/a> library:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">This module splits an audio file into multiple segments based on maximum segment length
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">The default maximum segment length is 15 minutes.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">Output format is m4a
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">Usage: `python split.py &amp;lt;path_to_audio_file&amp;gt;`
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">Your environment must meet the following requirements:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> - pydub Python package installed
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> - FFMPEG installed on your platform in the path
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> - Windows `winget install ffmpeg`
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> - MacOS `brew install ffmpeg`
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> - Linux `sudo apt-get install ffmpeg`
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">sys&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">os&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">pydub&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">AudioSegment&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">math&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">split_audio&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">file_path&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">segment_length&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">15&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mi">60&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="mi">1000&lt;/span>&lt;span class="p">):&lt;/span> &lt;span class="c1"># 15 minutes in milliseconds&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Load the audio file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">audio&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">AudioSegment&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">from_file&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">file_path&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Get the total length of the audio file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">total_length&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">audio&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Calculate the number of segments needed&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">num_segments&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">math&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ceil&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">total_length&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">segment_length&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Loop through and create each segment&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">num_segments&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">start_time&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">segment_length&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">end_time&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">min&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">segment_length&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">total_length&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># Ensure the last segment does not exceed total length&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">segment&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">audio&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">start_time&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">end_time&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Generate the output file name&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">output_file&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">file_path&lt;/span>&lt;span class="p">[:&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">_part&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">.m4a&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Export the segment as an m4a file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">segment&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">export&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">output_file&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">format&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;ipod&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># see https://github.com/jiaaro/pydub/issues/755&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Exported: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">output_file&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">source_path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">abspath&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sys&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">argv&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">split_audio&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">source_path&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="speech-to-text">Speech to text&lt;/h3>
&lt;p>The &lt;a href="https://gist.github.com/synesthesia/fe6bf9a3d3e758981f6c9410a709e265#file-transcribe-py" target="_blank" rel="noopener">second script&lt;/a> takes a wildcard list of audio files and runs them through the OpenAI transcribe endpoint using the &lt;a href="https://pypi.org/project/openai/" target="_blank" rel="noopener">official Python library for the openai API&lt;/a>.&lt;/p>
&lt;p>The results are saved to text files, then all the text files concatenated into one output.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">This module reads audio files and transcribes them using OpenAI&amp;#39;s API.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">Usage: python transcribe &amp;lt;input_wildcard&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">Where input_wildcard is a wildcard pattern that matches the audio files to be transcribed.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">For example if the audio files are named &amp;#34;test/audio1.m4a&amp;#34;, &amp;#34;test/audio2.m4a&amp;#34;, etc.,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> you can use the wildcard &amp;#34;test/audio*.m4a&amp;#34; to transcribe all the files.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">Each transcription is saved to a text file with the same name as the audio file, but
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">with a .txt extension.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">All the text files are then combined into a single output file named &amp;#34;output_file.txt&amp;#34;.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">Your environment must meet the following requirements:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> - OpenAI Python package installed
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2"> - set OPENAI_API_KEY environment variable to your OpenAI API key
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">os&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">sys&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">glob&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">shutil&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">openai&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">OpenAI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">OpenAI&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">input_wildcard&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">sys&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">argv&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">input_files&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">glob&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">glob&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">input_wildcard&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Transcribing from&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">input_files&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">output_files&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">x&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">input_files&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">audio_file&lt;/span>&lt;span class="o">=&lt;/span> &lt;span class="nb">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;rb&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Transcribing file &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">transcription&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">audio&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">transcriptions&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">create&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;whisper-1&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">file&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">audio_file&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">response_format&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;text&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">language&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;en&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">output_file&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">[:&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">.txt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">output_files&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">output_file&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">with&lt;/span> &lt;span class="nb">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">output_file&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;a&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">encoding&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;utf-8&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">transcription&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">file&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">f&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Transcription written to: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">output_file&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Outputs are &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">output_files&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">concat_file&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">path&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dirname&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">output_files&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">])&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s2">&amp;#34;/output_file.txt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">with&lt;/span> &lt;span class="nb">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">concat_file&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s1">&amp;#39;wb&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">wfd&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">f&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">output_files&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">with&lt;/span> &lt;span class="nb">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">f&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="s1">&amp;#39;rb&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">fd&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">shutil&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">copyfileobj&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fd&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">wfd&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="results">Results&lt;/h2>
&lt;p>Because we are generating the text from a simple audio file, the transcription has no way of associating speech with different speakers - if you can get an AI transcription generated by the online meeting platform from the meeting organisers then that is always going to be better.&lt;/p>
&lt;p>On the first trial, one of the output files started with several paragraphs of English speech transcribed as Welsh. On investigation, the relevant audio file started with a long contribution from two people who were sharing a laptop mic in a &amp;ldquo;boomy&amp;rdquo; office - my guess is that having this poor audio at the start of the clip confused the algorithm.&lt;/p>
&lt;p>Changing the split boundaries to avoid this seemed to cure the problem.&lt;/p></description></item><item><title>Goodbye Z80</title><link>https://www.synesthesia.co.uk/2024/04/22/goodbye-z80/</link><pubDate>Mon, 22 Apr 2024 11:55:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/2024/04/22/goodbye-z80/</guid><description>&lt;p>Zilog have announced the &lt;a href="https://www.mouser.com/PCN/Littelfuse_PCN_Z84C00.pdf" target="_blank" rel="noopener">impending end of supply for Z80&lt;/a> 8-bit microprocessor chips, 48 years after they were first introduced.&lt;/p>
&lt;p>As a teenager in the late 70&amp;rsquo;s who started an electronic engineering degree in 1979, amongst my nerd contemporaries there was a clear division between the Z80 fans and the 6502-ers, and obviously each camp thought the processor they preferred was better.&lt;/p>
&lt;p>The course at University of Bristol based its microprocessor syllabus around the Z80, with programmes created in assembly language and blown into PROMS for execution. I also remember one test rig designed for the true hardcore user where you could input octal machine language one word at a time using rotary switches and a &amp;ldquo;write&amp;rdquo; button.&lt;/p>
&lt;p>My final year project included a chunk of Z80 assembler to manage capturing digitised microphone inputs and displaying them on a computer screen.&lt;/p>
&lt;p>I find it astonishing that such a humble (by today&amp;rsquo;s standards) chip should have remained on the market for so long.&lt;/p></description></item><item><title>Weeknote 2024 W11-12</title><link>https://www.synesthesia.co.uk/note/2024/03/22/weeknote-2024-w11-12/</link><pubDate>Fri, 22 Mar 2024 06:32:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2024/03/22/weeknote-2024-w11-12/</guid><description>&lt;p>No note last week - lots of things overrunning due to an unexpected issue, and by Friday afternoon I just needed to get away from my keyboard!&lt;/p>
&lt;p>So this is a combination of two weeks.&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;ul>
&lt;li>after many months of missing it, dropped into the monthly Zoom call for Harold Jarche&amp;rsquo;s &lt;a href="https://jarche.com/perpetual-beta-coffee-club/" target="_blank" rel="noopener">Perpetual Beta Coffee Club (PBCC)&lt;/a>. PBCC means interesting people, and I need to remind myself that the fact it is not directly connected to my day to day work is the reason I need to make the effort to drop in.&lt;/li>
&lt;li>doing some work with Microsoft Customer Voice (aka Forms Pro) found some anomalies in how context variables are presented in the output data, with differences between survey responses and survey invitations. This was the issue that mashed up my schedule last week, as we are running a custom survey service with some clients and doing a chunk of analysis in PySpark on the resulting data - cleanly extracting these variables is critical.&lt;/li>
&lt;li>started seeing some forward motion on the project I mentioned in the last note where we are replacing a legacy bespoke website that supports one of our services with a combination of SharePoint 365 for applications and a management app in Power Platform. Somewhat re-assured that my gut instinct (that the process we are supporting is a little complex) was validated when analysis showed that the key record (an application) has 16 possible states&amp;hellip; 🫤&lt;/li>
&lt;li>spoke with pioneer of distributed work &lt;a href="https://mastodon.social/@elsua" target="_blank" rel="noopener">Luis Suarez&lt;/a>, hearing more about his new venture &lt;a href="https://asynco.org/" target="_blank" rel="noopener">Asynco&lt;/a>&lt;/li>
&lt;li>some good socialising!&lt;/li>
&lt;/ul>
&lt;h2 id="learning">Learning&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.youtube.com/watch?v=ty9d7wEVTwc" target="_blank" rel="noopener">The Code Quality Advantage: How Empirical Data Shatters the Speed vs Quality Myth by Adam Tornhill&lt;/a> — some clearly made points about the economic value of taking the time to make sure features are well-written and well-tested - &lt;a href="https://garden.synesthesia.co.uk/references/tornhill-code-quality-advantage/" target="_blank" rel="noopener">my brief notes are here&lt;/a>&lt;/li>
&lt;li>skating around the maths I need to revise to continue with &lt;a href="https://theoreticalminimum.com/" target="_blank" rel="noopener">The Theoretical Minimum&lt;/a> - a series of lectures by Stanford professor &lt;a href="https://theoreticalminimum.com/biography" target="_blank" rel="noopener">Leonard Susskind&lt;/a> (see week 9).&lt;/li>
&lt;/ul>
&lt;h2 id="watching">Watching&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/American_Fiction_%28film%29" target="_blank" rel="noopener">American Fiction&lt;/a> — this film richly deserves the awards it has received, a deeply humorous poke at the stupidities and blinkers of the publishing industry, that at the same time manages to touch serious pathos without becoming sentimental.&lt;/li>
&lt;/ul>
&lt;h2 id="reading">Reading&lt;/h2>
&lt;ul>
&lt;li>thoroughly enjoying Cal Newport&amp;rsquo;s latest, &lt;a href="https://amzn.eu/d/ey2UvhW" target="_blank" rel="noopener">Slow Productivity: The Lost Art of Accomplishment Without Burnout&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="listening">Listening&lt;/h2>
&lt;ul>
&lt;li>via BBC Sounds stumbled upon &lt;a href="https://www.bbc.co.uk/programmes/m001xd83" target="_blank" rel="noopener">How to Win an Information War&lt;/a>, the story of German-born Englishman Sefton Delmer who ran a deep fake German radio station from England during WW2. Based on listening to this abridged version I&amp;rsquo;ve just added the book to my Kindle.&lt;/li>
&lt;/ul>
&lt;h2 id="and-finally">And finally&lt;/h2>
&lt;p>How about &lt;a href="https://www.synesthesia.co.uk/2005/03/10/shopping-around-for-dvd-rental-by-post/">this&lt;/a> for a blast from the past?&lt;/p></description></item><item><title>Weeknote 2024 W10</title><link>https://www.synesthesia.co.uk/note/2024/03/07/weeknote-2024-w10/</link><pubDate>Thu, 07 Mar 2024 08:11:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2024/03/07/weeknote-2024-w10/</guid><description>&lt;h2 id="working">Working&lt;/h2>
&lt;p>Main work focus has been kicking off the implementation phase of a project that replaces the system support for a process that manages a professional accreditation we run.&lt;/p>
&lt;p>The legacy system is a very old website — we are replacing the functionality with a combination of a SharePoint site (running with external guest users) to manage all the portfolio submissions and assessment documents, controlled from a project administration application implemented as a model-driven power app in the same environment as our Dynamics CRM, the two integrated mainly with Power Automate.&lt;/p>
&lt;h2 id="living">Living&lt;/h2>
&lt;p>One of those rare but uplifting occasions when modern medicine gives an instant improvement in quality of life&amp;hellip;&lt;/p>
&lt;h2 id="what-caught-my-eye">What caught my eye&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.zylstra.org/blog/2024/03/linkedin-now-values-acting-like-a-human-at-40e-per-month/" target="_blank" rel="noopener">LinkedIn Now Values Acting Like A Human At 40€ Per Month&lt;/a> (Ton)&lt;/li>
&lt;li>&lt;a href="https://www.facultyfocus.com/articles/effective-classroom-management/teaching-information-literacy-in-an-age-of-misinformation" target="_blank" rel="noopener">Teaching Information Literacy in an Age of Misinformation &lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.youtube.com/watch?v=mOzxhcc1I8A" target="_blank" rel="noopener">The Zen of Python, Unix, and LLMs&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://c2pa.org/" target="_blank" rel="noopener">C2PA&lt;/a> - this looks very valuable as part of assuring the provenance of media, but transparent signing of every edit will need progress from tool vendors.&lt;/li>
&lt;/ul>
&lt;h2 id="listening">Listening&lt;/h2>
&lt;ul>
&lt;li>(irony?) a podcast on &lt;a href="https://learninghack.libsyn.com/lh-77-podcasts-for-learning-with-adam-lacey" target="_blank" rel="noopener">using podcasts for learning&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Weeknote 2024 W09</title><link>https://www.synesthesia.co.uk/note/2024/03/01/weeknote-2024-w09/</link><pubDate>Fri, 01 Mar 2024 16:29:17 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2024/03/01/weeknote-2024-w09/</guid><description>&lt;p>A rare face-to-face meeting with colleagues this week to talk product strategy.&lt;/p>
&lt;p>Although I’m a big fan of not shuffling back and forth to an office each day (we’ve been fully-distributed since the pandemic), it was noticeable that conversation flowed better, and it was clearly easier for the meeting chair to push people to make decisions.&lt;/p>
&lt;p>Other highlights:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>a chunk of fiddling with the nuances of Power Automate controlling SharePoint access for external guest users&lt;/p>
&lt;/li>
&lt;li>
&lt;p>revisiting some critical data resilience plans&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="things-that-caught-my-eye">Things that caught my eye&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://theoreticalminimum.com/" target="_blank" rel="noopener">The Theoretical Minimum&lt;/a> - a series of lectures by Stanford professor &lt;a href="https://theoreticalminimum.com/biography" target="_blank" rel="noopener">Leonard Susskind&lt;/a> that cover physics from classical mechanics to quantum field theory&lt;/p>
&lt;blockquote>
&lt;p>specifically aimed at people who know, or once knew, a bit of algebra and calculus, but are more or less beginners&lt;/p>
&lt;/blockquote>
&lt;p>I used to know a fair bit of calculus (engineering degrees are like that), but I’ve forgotten a lot. I’ve watched two of the 10 lectures in the first module (Classical Mechanics), and so far although I’ve had to concentrate, nothing too hard. Let’s see how far it holds my interest!&lt;/p>
&lt;p>&lt;strong>Update&lt;/strong> - I&amp;rsquo;ve stuck my raw notes for video 1 &lt;a href="https://garden.synesthesia.co.uk/references/susskind-classical-mechanics-lecture-1/" target="_blank" rel="noopener">here&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://jenniferplusplus.com/losing-the-imitation-game/" target="_blank" rel="noopener">Losing the imitation game&lt;/a> — an insightful post from Jennifer++ in which she expresses a clear view that the limits of LLMs in writing code are around the truly skilled parts of software engineering:&lt;/p>
&lt;blockquote>
&lt;p>The fundamental task of software development [&amp;hellip;] is to &lt;a href="https://pablo.rauzy.name/dev/naur1985programming.pdf" target="_blank" rel="noopener">build a mental model of that complex system&lt;/a>, make sense of it, and manage that over time&lt;/p>
&lt;/blockquote>
&lt;p>and those are not things a Large Language Model is a fit for. Where she does agree LLMs can be useful is the concept of “LLM as code intern” that many have advocated.&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>WeekNote 2024 W08</title><link>https://www.synesthesia.co.uk/note/2024/02/23/weeknote-2024-w08/</link><pubDate>Fri, 23 Feb 2024 14:36:04 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2024/02/23/weeknote-2024-w08/</guid><description>&lt;p>This week started like they usually do after a few days off — definitely a need to catch up with where I had left off, workwise, and definite feeling of &lt;em>grudging acceptance&lt;/em> at the 5am alarm clock &amp;#x1f61b;&lt;/p>
&lt;p>Colleagues escalated a fault to me that related to our web site no longer pulling customer access rights through (ultimately from our CRM). A mundane enough expired Client Secret (yes, &lt;em>&amp;ldquo;nul points&amp;rdquo;&lt;/em> for our ops routines), but to see how the intermediate API got its credentials required opening up the project. This application was written, mostly by me, in ASP.Net about 10 years ago. &lt;strong>Ouch!&lt;/strong> Yes the frameworks and tools have got so much better since then, but more to the point, so has my code engineering. This thing is a tangled, bloated pig of an application (no surprise that we don&amp;rsquo;t like how much resource it uses relative to the traffic).&lt;/p>
&lt;p>As our needs have changed and many of the endpoints are now irrelevant, obviously my mind turned to how much work it would take to pay off this chunk of technical debt. No time in the schedule right now to just start replacing it, but managed to squeeze out a couple of days to put together a single vertical slice from on endpoint all the way through to a dev instance of Dynamics, with authentication via Azure AD at both ends and a reasonable sprinkling of unit and integration tests. Just running locally so far, so no CI or deployment bits touched yet, but those are a fairly known art, my goal was to see how much easier (or not) it would be to put something together in ASP.Net Core v8 and using modern dependencies like AutoMapper.&lt;/p>
&lt;p>So far the answer is &amp;ldquo;very much easier&amp;rdquo;, to the point where I&amp;rsquo;m now looking for how to drop this into our longer term roadmap for this year. The other lesson I&amp;rsquo;ve learned from last time is bring the team along with me, so they don&amp;rsquo;t have to bounce issues to me&amp;hellip;&lt;/p>
&lt;h2 id="things-that-caught-my-eye">Things that caught my eye&lt;/h2>
&lt;p>Doug Belshaw continues to document his progress with an MSc in &lt;a href="https://dougbelshaw.com/blog/category/msc-systems-thinking/" target="_blank" rel="noopener">Systems Thinking&lt;/a>. Recent notes that look interesting are:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://dougbelshaw.com/blog/2024/02/23/tb872-vickers-and-appreciative-systems/" target="_blank" rel="noopener">Vickers and appreciative systems&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://dougbelshaw.com/blog/2024/02/23/tb872-mcb-and-being-what-we-are-willing-to-learn/" target="_blank" rel="noopener">MCB and &amp;lsquo;being what we are willing to learn&amp;rsquo;&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://dougbelshaw.com/blog/2024/02/25/tb872-bawden-and-living-as-a-constant-process-of-learning/" target="_blank" rel="noopener">Bawden and living as a constant process of learning&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://dougbelshaw.com/blog/2024/01/31/tb872-four-pervasive-institutional-settings-inimical-to-the-flourishing-of-systems-practice/" target="_blank" rel="noopener">Four pervasive institutional settings inimical to the flourishing of systems practice&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>From the many other bookmarks I collected this week, the one I want to highlight is &lt;a href="https://www.workingoutloud.com/blog/unsafe-at-any-level" target="_blank" rel="noopener">Unsafe at any level&lt;/a> from &lt;a href="https://www.workingoutloud.com/about" target="_blank" rel="noopener">John Stepper&lt;/a>. Stepper relates the challenges when trying to encourage new graduates in a company training programme to share visibly their work.&lt;/p>
&lt;blockquote>
&lt;p>They had the same mental resistance almost all employees have. :&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;ul>
&lt;li>&lt;em>I don’t have anything valuable to contribute&amp;hellip;&lt;/em>&lt;/li>
&lt;li>&lt;em>What if I say something wrong or stupid?&lt;/em>&lt;/li>
&lt;li>&lt;em>What if I get in trouble?&lt;/em>&lt;/li>
&lt;li>&lt;em>Who am I to share my work?&lt;/em>&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>He further observes that their managers are even more reluctant, and the higher you go up the hierarchy, the greater the perceived risks of working differently.&lt;/p>
&lt;p>His suggestion:&lt;/p>
&lt;blockquote>
&lt;p>A peer coaching approach that enables new joiners to&lt;/p>
&lt;ol>
&lt;li>Observe role models.&lt;/li>
&lt;li>Share their work.&lt;/li>
&lt;li>Connect&lt;/li>
&lt;/ol>
&lt;p>Without an intervention like this, new employees won’t just be oriented into their new company, they’ll be assimilated. And our ways of working won’t get better.&lt;/p>
&lt;/blockquote>
&lt;h2 id="tool-of-the-week">Tool of the week&lt;/h2>
&lt;p>&lt;a href="https://github.com/danielmiessler/fabric" target="_blank" rel="noopener">danielmiessler/fabric&lt;/a> is a toolset that combines a set of tested prompts (“Patterns”) and a CLI that lets you easily route text to ChatGPT via one of the prompts.&lt;/p>
&lt;p>I’ve only done some basic testing so far, enough to make it interesting, especially for the extension possibilities. I’ve written up how I got it &lt;a href="https://garden.synesthesia.co.uk/fabric-ai-prompter/" target="_blank" rel="noopener">working on WSL2&lt;/a>.&lt;/p>
&lt;p>As a quick test of the included patterns I asked for a summary of &lt;a href="https://ico.org.uk/for-organisations/direct-marketing-and-privacy-and-electronic-communications/guide-to-pecr/guidance-on-the-use-of-cookies-and-similar-technologies/how-do-we-comply-with-the-cookie-rules/" target="_blank" rel="noopener">How do we comply with the cookie rules? &lt;/a> from the Information Commissioner&amp;rsquo;s Office. I&amp;rsquo;ve posted the result in &lt;a href="https://garden.synesthesia.co.uk/references/how-do-we-comply-with-the-cookie-rules/" target="_blank" rel="noopener">this media note&lt;/a> and on first inspection it&amp;rsquo;s not a bad initial summary - I&amp;rsquo;d probably want to fine tune it though.&lt;/p></description></item><item><title>Expanding Digger to work with Hypothes.is</title><link>https://www.synesthesia.co.uk/2024/01/05/expanding-digger-to-work-with-hypothesis/</link><pubDate>Fri, 05 Jan 2024 07:48:14 +0000</pubDate><guid>https://www.synesthesia.co.uk/2024/01/05/expanding-digger-to-work-with-hypothesis/</guid><description>&lt;p>This note is mostly for myself - Digger is built for a userbase of 1 - you are welcome to fork and copy it, but I am not proposing to support it.&lt;/p>
&lt;p>About eighteen months ago I released &lt;a href="https://www.synesthesia.co.uk/2022/07/15/digging-out-diigo-notes/">a small tool to pull annotations from
Diigo&lt;/a> into local Markdown notes.&lt;/p>
&lt;p>With version 0.5.0 (released yesterday) there is now also a basic capability to pull annotations from Hypothes.is.&lt;/p>
&lt;p>To upgrade:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://hypothes.is/account/developer" target="_blank" rel="noopener">get an API key&lt;/a> for your Hypothes.is account&lt;/li>
&lt;li>create an environment variable &lt;code>HYPOTHESIS__APITOKEN&lt;/code> on your machine to hold this value&lt;/li>
&lt;li>update the tool
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="k">tool&lt;/span> &lt;span class="n">update&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">g&lt;/span> &lt;span class="n">digger&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;p>To pull annotations for a specific page, use the command:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">digger hypothesis -o &amp;lt;relative path to desired output directory&amp;gt; -u &amp;lt;url of source page&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Blogging review 2023</title><link>https://www.synesthesia.co.uk/2024/01/02/blogging-review-2023/</link><pubDate>Tue, 02 Jan 2024 11:41:21 +0000</pubDate><guid>https://www.synesthesia.co.uk/2024/01/02/blogging-review-2023/</guid><description>&lt;p>It&amp;rsquo;s traditional at this time of year to look back over the last 12 months, so here a few thoughts about what happened with blogging (and other public writing), indeed PKM generally, and what went astray.&lt;/p>
&lt;p>The year started quite well with a reasonable flow of posts, helped somewhat by retaking &lt;a href="http://127.0.0.1:1313/2023/03/20/next-steps-for-personal-knowledge-mastery/" target="_blank" rel="noopener">Harold Jarche&amp;rsquo;s Personal Knowledge Mastery course&lt;/a>.&lt;/p>
&lt;p>However from mid-year onwards there was a complete slump in public posting. In hindsight the key things that have impacted this have been:&lt;/p>
&lt;ul>
&lt;li>Reductions in available time at key points of the year due the mechanics of how we juggle our jobs in this household. These in turn led to hiatuses in not just blogging but overall PKM activity which have been hard to recover from&lt;/li>
&lt;li>General busyness at work, with the balance of activity moving to more tactical projects and a lot of context-switching, reducing the time available for all forms of knowledge nurture&lt;/li>
&lt;li>A reduction in willpower to carve out time for learning and writing from mid-year onwards, or to use bits of downtime for those tasks. I&amp;rsquo;m pretty clear where that is coming from, and some of it I can address, whereas other factors I need to get better at accepting so they lose their power to sap my energy.&lt;/li>
&lt;li>the PKM work I have done has tended to focus on sense-making and learning around internal work challenges. This is coherent with the goal I set myself, but the missing bit is finding the ways to extract the share-able knowledge and to share that online.&lt;/li>
&lt;/ul>
&lt;h2 id="some-pointers-for-myself">Some pointers for myself:&lt;/h2>
&lt;ul>
&lt;li>be more observant of my mental energy level, and build in breaks before willpower is completely drained&lt;/li>
&lt;li>observe that standing to-do item in my daily note template to do some exercise, however modest&lt;/li>
&lt;li>look for ways to make rolling notes that can be publicly shared even if the learning is around work-related issues - waiting to the end to create a shareable version means it never gets done&lt;/li>
&lt;li>use that regular diary slot for Seek-Sense-Share to do just that instead of using it to do more work tasks&lt;/li>
&lt;li>stop comparing my online note-making with others&lt;/li>
&lt;/ul></description></item><item><title>Linear Regression basics - course note</title><link>https://www.synesthesia.co.uk/note/2023/11/07/linear-regression/</link><pubDate>Tue, 07 Nov 2023 00:00:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2023/11/07/linear-regression/</guid><description>&lt;p>This notebook is based on the exercises in the Anaconda training &lt;a href="https://learning.anaconda.cloud/getting-started-with-ai-ml" target="_blank" rel="noopener">Getting started with AI and ML&lt;/a>.&lt;/p>
&lt;p>I&amp;rsquo;m copying my notes here as a more in-depth test of the ability to publish directly from Jupyter notebooks, and also to put my notes somewhere I can access them later!&lt;/p>
&lt;h2 id="linear-regression">Linear Regression&lt;/h2>
&lt;p>The most commonly used supervised machine learning algorithm.&lt;/p>
&lt;p>This module covered:&lt;/p>
&lt;ul>
&lt;li>Fit a line to data&lt;/li>
&lt;li>Measure loss with residuals and sum of squares&lt;/li>
&lt;li>Use `scikit-learn`` to fit a linear regression&lt;/li>
&lt;li>Evaluate a linear regression using R2 and train-test splits&lt;/li>
&lt;/ul>
&lt;h3 id="advantages">Advantages&lt;/h3>
&lt;ul>
&lt;li>simple to understand and interpret&lt;/li>
&lt;li>doesn&amp;rsquo;t over-fit&lt;/li>
&lt;/ul>
&lt;h3 id="when-is-linear-regression-suitable">When is Linear Regression suitable?&lt;/h3>
&lt;ol>
&lt;li>variables are continuous, not binary or categorical (use logistic regression for the latter)&lt;/li>
&lt;li>input variables follow a Gaussian (bell curve) distribution&lt;/li>
&lt;li>input variables are relevant to the output variables and &lt;em>not&lt;/em> highly correlated with each other (collinearity)&lt;/li>
&lt;/ol>
&lt;h3 id="simple-linear-regression">Simple Linear Regression&lt;/h3>
&lt;p>ML often splits into two tasks - &lt;strong>regression&lt;/strong> (predict quantity) and &lt;strong>classification&lt;/strong> (predict a category)&lt;/p>
&lt;p>E.g
$y = mx+b$&lt;/p>
&lt;p>Challenge is to define &lt;code>m&lt;/code> and &lt;code>b&lt;/code> for &amp;ldquo;best fit&amp;rdquo;&lt;/p>
&lt;h3 id="multiple-linear-regression">Multiple linear regression&lt;/h3>
&lt;p>With multiple independent variables&lt;/p>
&lt;p>e.g.
$y = \beta_0 + \beta_1x_1 + \beta_2x_2 + \epsilon$&lt;/p>
&lt;p>
$\epsilon $ is error due to noise&lt;/p>
&lt;p>Multiple variables can get complex, important to use tools to help select only input variables correlated with the output variables.&lt;/p>
&lt;p>e.g.:&lt;/p>
&lt;ul>
&lt;li>Pearson correlation and $R^2$&lt;/li>
&lt;li>adjusted $R^2$&lt;/li>
&lt;li>Akakike Information Criterion&lt;/li>
&lt;li>Ridge and lasso regression&lt;/li>
&lt;/ul>
&lt;p>#furtherlearning&lt;/p>
&lt;h3 id="residuals">Residuals&lt;/h3>
&lt;p>&lt;strong>Residuals&lt;/strong> are the difference between the data points and the equivalent regression. Linear Regression models aim to minimise the regressions by optimising a &lt;strong>loss function&lt;/strong> such as Sum of Squares.&lt;/p>
&lt;h3 id="overfitting">Overfitting&lt;/h3>
&lt;p>When ML model works well with training data but fails to predict correctly with new data. Linear regression tends to show low variance and high bias, so less likely to be overfitted. &lt;em>(define terms variance and bias)&lt;/em>&lt;/p>
&lt;h3 id="traintest-splits">Train/Test Splits&lt;/h3>
&lt;p>Common technique to mitigate overfitting is the use of train/test splits. Training data is used to fit the model, then test data is used to test it with previously-unseen data, if necessary the model can then be tweaked.&lt;/p>
&lt;h3 id="evaluating-the-model-with-hahahugoshortcode98s3hbhb">Evaluating the model with
$R^2$&lt;/h3>
&lt;p>
$R^2$ (the &lt;strong>coefficient of determination&lt;/strong>) ratios the average y-value to the average of the residuals.&lt;/p>
&lt;p>It measures how well the independent variables explain a dependent variable, with &lt;strong>0.0&lt;/strong> meaning no connection and &lt;strong>1.0&lt;/strong> meaning a perfect explanation.&lt;/p>
&lt;h2 id="example-using-scikit-learn">Example using &lt;code>scikit-learn&lt;/code>&lt;/h2>
&lt;p>The package &lt;code>scikit-learn&lt;/code> contains many tools to support Machine LEarning techniquies such as Linear Regression.&lt;/p>
&lt;p>This worked example demonstrates some of them.&lt;/p>
&lt;p>First we import the packages we are going to use, making use of two key utilities from &lt;code>scikit-learn&lt;/code>:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html" target="_blank" rel="noopener">&lt;code>train_test_split&lt;/code>&lt;/a> makes it easy to split a set of data into training and test subsets.&lt;/li>
&lt;li>&lt;a href="https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html#sklearn.linear_model.LinearRegression" target="_blank" rel="noopener">&lt;code>LinearRegression&lt;/code>&lt;/a> fits a linear model with coefficients w = (w1, …, wp) to minimize the residual sum of squares between the observed targets in the dataset, and the targets predicted by the linear approximation.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">pandas&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">pd&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">sklearn.linear_model&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">LinearRegression&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">sklearn.model_selection&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">train_test_split&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>We need to import our data into a pandas DataFrame. For convenience I am using one of the &lt;a href="https://github.com/thomasnield/machine-learning-demo-data/" target="_blank" rel="noopener">datasets provided by the course author&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Load the data&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">df&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">pd&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read_csv&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;https://bit.ly/3pBKSuN&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">delimiter&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;,&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">df&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div>
&lt;style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
&lt;pre>&lt;code>.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
&lt;/code>&lt;/pre>
&lt;p>&lt;/style>&lt;/p>
&lt;table border="1" class="dataframe">
&lt;thead>
&lt;tr style="text-align: right;">
&lt;th>&lt;/th>
&lt;th>x&lt;/th>
&lt;th>y&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;th>0&lt;/th>
&lt;td>1&lt;/td>
&lt;td>-13.115843&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>1&lt;/th>
&lt;td>2&lt;/td>
&lt;td>25.806547&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>2&lt;/th>
&lt;td>3&lt;/td>
&lt;td>-5.017285&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>3&lt;/th>
&lt;td>4&lt;/td>
&lt;td>20.256415&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>4&lt;/th>
&lt;td>5&lt;/td>
&lt;td>4.075003&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>5&lt;/th>
&lt;td>6&lt;/td>
&lt;td>-3.530260&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>6&lt;/th>
&lt;td>7&lt;/td>
&lt;td>24.045999&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>7&lt;/th>
&lt;td>8&lt;/td>
&lt;td>22.112566&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>8&lt;/th>
&lt;td>9&lt;/td>
&lt;td>5.968591&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>9&lt;/th>
&lt;td>10&lt;/td>
&lt;td>43.392339&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>10&lt;/th>
&lt;td>11&lt;/td>
&lt;td>32.224643&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>11&lt;/th>
&lt;td>12&lt;/td>
&lt;td>14.666142&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>12&lt;/th>
&lt;td>13&lt;/td>
&lt;td>17.966141&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>13&lt;/th>
&lt;td>14&lt;/td>
&lt;td>-2.754718&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>14&lt;/th>
&lt;td>15&lt;/td>
&lt;td>25.156840&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>15&lt;/th>
&lt;td>16&lt;/td>
&lt;td>20.182870&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>16&lt;/th>
&lt;td>17&lt;/td>
&lt;td>22.281929&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>17&lt;/th>
&lt;td>18&lt;/td>
&lt;td>16.757447&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>18&lt;/th>
&lt;td>19&lt;/td>
&lt;td>54.219575&lt;/td>
&lt;/tr>
&lt;tr>
&lt;th>19&lt;/th>
&lt;td>20&lt;/td>
&lt;td>60.564151&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;p>We need to split our data into inputs and the associated outputs&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Extract input variables (all rows, all columns but last column)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">X&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">df&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">values&lt;/span>&lt;span class="p">[:,&lt;/span> &lt;span class="p">:&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Extract output column (all rows, last column)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Y&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">df&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">values&lt;/span>&lt;span class="p">[:,&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>We then need to create separate training and testing data to evaluate performance and reduce overfitting.
Her ewe make use of the &lt;a href="https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html" target="_blank" rel="noopener">&lt;code>train_test_split&lt;/code>&lt;/a> utility.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">X_train&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">X_test&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Y_train&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Y_test&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">train_test_split&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">X&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Y&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">test_size&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mf">1.0&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mf">3.0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">random_state&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Next:&lt;/p>
&lt;ul>
&lt;li>we train the standard &lt;a href="https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html#sklearn.linear_model.LinearRegression" target="_blank" rel="noopener">&lt;code>LinearRegression&lt;/code>&lt;/a> model provided by &lt;code>scikit-learn&lt;/code> against our training data&lt;/li>
&lt;li>then we use the trained model to fit a regression to our test data&lt;/li>
&lt;/ul>
&lt;p>The utility allows us to easily score the model using
$R^2$.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">model&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">LinearRegression&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">model&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">X_train&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Y_train&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">model&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">score&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">X_test&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Y_test&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;R^2: &lt;/span>&lt;span class="si">%.3f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="n">result&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;pre>&lt;code>R^2: 0.182
&lt;/code>&lt;/pre>
&lt;p>Using &lt;code>matplotlib&lt;/code> we can visualise the model output against the whole input data set&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">matplotlib.pyplot&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">plt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">plot&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">X&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Y&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;o&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># scatterplot&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">plot&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">X&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">model&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">coef_&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">flatten&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="n">X&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">intercept_&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">flatten&lt;/span>&lt;span class="p">())&lt;/span> &lt;span class="c1"># line&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">show&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="png" srcset="
/note/2023/11/07/linear-regression/output_14_0_hu422a98f1ce9d0eba86bf694aff8cdb9d_16164_bd1bd73e15981a589a9b0ef1b0410da6.webp 400w,
/note/2023/11/07/linear-regression/output_14_0_hu422a98f1ce9d0eba86bf694aff8cdb9d_16164_473878726ba89009eae83ae7e2fe1bbe.webp 760w,
/note/2023/11/07/linear-regression/output_14_0_hu422a98f1ce9d0eba86bf694aff8cdb9d_16164_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2023/11/07/linear-regression/output_14_0_hu422a98f1ce9d0eba86bf694aff8cdb9d_16164_bd1bd73e15981a589a9b0ef1b0410da6.webp"
width="555"
height="413"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p></description></item><item><title>Sample Jupyter Notebook</title><link>https://www.synesthesia.co.uk/note/2023/11/07/sample-jupyter-notebook/</link><pubDate>Tue, 07 Nov 2023 00:00:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2023/11/07/sample-jupyter-notebook/</guid><description>&lt;p>This is a test of importing Jupyter notebooks directly as work notes using the &lt;a href="https://github.com/GetRD/academic-file-converter" target="_blank" rel="noopener">Academic CLI&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;pre>&lt;code>2
&lt;/code>&lt;/pre></description></item><item><title>Reply to Ton Zijlstra 'The Enshittification of LinkedIn As DSA Takes Effect'</title><link>https://www.synesthesia.co.uk/2023/09/11/reply-to-ton-zijlstra-the-enshittification-of-linkedin-as-dsa-takes-effect/</link><pubDate>Mon, 11 Sep 2023 09:51:05 +0100</pubDate><guid>https://www.synesthesia.co.uk/2023/09/11/reply-to-ton-zijlstra-the-enshittification-of-linkedin-as-dsa-takes-effect/</guid><description>&lt;h2 id="same-old-same-old">Same old, same old&lt;/h2>
&lt;p>I never post my updates on there, that&amp;rsquo;s what this site and my Mastodon feed are for. If I really thought there was any value in it I would post links &amp;lsquo;over there&amp;rsquo; to selected posts &amp;lsquo;over here&amp;rsquo;.&lt;/p>
&lt;p>When it first started, the idea of tracking your own professional network, and seeing &amp;ldquo;who knew whom&amp;rdquo; was something of a winner, but the inevitable swamping in &amp;ldquo;social&amp;rdquo; features, adverts, algorithmically-driven content and posts written by marketing people has made it pretty much useless, a source of irritating noise.&lt;/p>
&lt;p>One of the less-than-lovely features is that every time you connect to someone, it automatically follows them in your feed, whereas I want to be selective in whose posts I follow.&lt;/p>
&lt;p>I&amp;rsquo;m following the two main tips from Ton&amp;rsquo;s post:&lt;/p>
&lt;ul>
&lt;li>bookmark the &lt;a href="https://www.linkedin.com/mynetwork/invite-connect/connections/" target="_blank" rel="noopener">network page&lt;/a> as my main entry point into the platform&lt;/li>
&lt;li>unfollow all my connections&lt;/li>
&lt;/ul>
&lt;h2 id="unfollowing-connections">Unfollowing connections&lt;/h2>
&lt;p>Potentially this means my feed is just the algo-babble, but then I plan not to read my feed.&lt;/p>
&lt;p>Unfortunately the scripts &lt;a href="https://www.zylstra.org/blog/2021/09/emptied-my-linkedin-feed/" target="_blank" rel="noopener">suggested by Ton&lt;/a> from &lt;a href="https://quadlayers.com/unfollow-connections-in-bulk-linkedin/" target="_blank" rel="noopener">How to mass unfollow connections on LinkedIn in 2022&lt;/a> no longer work in September 2023 as the HTML of the
following and followers page has changed.&lt;/p>
&lt;p>With a bit of hacking around I managed to get something of what I needed from this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="p">(()&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">let&lt;/span> &lt;span class="nx">count&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">function&lt;/span> &lt;span class="nx">getAllButtons&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">querySelectorAll&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;[aria-label*=&amp;#34;stop following&amp;#34;]&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">async&lt;/span> &lt;span class="kd">function&lt;/span> &lt;span class="nx">unfollowAll&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">buttons&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">getAllButtons&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kd">let&lt;/span> &lt;span class="nx">button&lt;/span> &lt;span class="k">of&lt;/span> &lt;span class="nx">buttons&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">count&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">count&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sb">`Unfollow #&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nx">count&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="sb">`&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">window&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">scrollTo&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">button&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">offsetTop&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">260&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">button&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">click&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">await&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nb">Promise&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="nx">resolve&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="nx">setTimeout&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">resolve&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">async&lt;/span> &lt;span class="kd">function&lt;/span> &lt;span class="nx">run&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">await&lt;/span> &lt;span class="nx">unfollowAll&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">window&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">scrollTo&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">body&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">scrollHeight&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">await&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nb">Promise&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="nx">resolve&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="nx">setTimeout&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">resolve&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1000&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">buttons&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">getAllButtons&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">buttons&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">length&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="nx">run&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">run&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">})();&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>While running the script it does pop up random &amp;ldquo;are you sure&amp;rdquo; dialogues which still need a manual click, but for some reason not for every &amp;ldquo;click&amp;rdquo;.&lt;/p>
&lt;h2 id="the-hardest-challenge">The hardest challenge&lt;/h2>
&lt;p>Does this mean that I want social networks to work much like they did in 2005? Mostly yes.&lt;/p>
&lt;p>The biggest challenge? Finding a way to explain the reasons for this to colleagues who still see any form of social network as yet one more one-way marketing medium.&lt;/p>
&lt;p>Oh well&amp;hellip;&lt;/p></description></item><item><title>Summer's Lease</title><link>https://www.synesthesia.co.uk/2023/09/04/summers-lease/</link><pubDate>Mon, 04 Sep 2023 14:53:26 +0100</pubDate><guid>https://www.synesthesia.co.uk/2023/09/04/summers-lease/</guid><description>&lt;p>So that was Summer 2023!&lt;/p>
&lt;p>Something of an absence from the online world which is not a bad thing.&lt;/p>
&lt;p>In six weeks we seem to have packed in:&lt;/p>
&lt;ul>
&lt;li>an emotionally charged week before a significant chunk of our family migrated to Canada&lt;/li>
&lt;li>a week in a fancy (but not as fancy as it thought) hotel in north-east Spain, including a &amp;ldquo;big night out&amp;rdquo; with some friends who happened to be staying in the next town along&lt;/li>
&lt;li>Covid again (from the symptoms probably the Eris variant)&lt;/li>
&lt;li>a hectic two weeks of work getting things done that had to be ready for today&lt;/li>
&lt;li>a week in a friend&amp;rsquo;s apartment in southern Spain doing not very much and enjoying that&lt;/li>
&lt;/ul>
&lt;p>Now it&amp;rsquo;s back to the 5 am alarm in the dark and the start of the grind into winter.&lt;/p></description></item><item><title>Working with this Hugo site in GitHub Codespaces</title><link>https://www.synesthesia.co.uk/note/2023/06/28/working-with-this-hugo-site-in-github-codespaces/</link><pubDate>Wed, 28 Jun 2023 05:43:35 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2023/06/28/working-with-this-hugo-site-in-github-codespaces/</guid><description>&lt;p>I wanted to learn a bit more about using devcontainers and GitHub CodeSpaces, and thought the code/content repo for this site would be a good place to start.&lt;/p>
&lt;h2 id="development-containers">Development Containers&lt;/h2>
&lt;p>The &lt;a href="https://containers.dev/" target="_blank" rel="noopener">Development Containers&lt;/a> spec was originally started by Microsoft to provided a simple experience to edit codes in predictable containerised development environments from Visual Studio Code via the &lt;a href="https://code.visualstudio.com/docs/devcontainers/containers" target="_blank" rel="noopener">Visual Studio Code Dev Containers extension&lt;/a>.&lt;/p>
&lt;p>Amongst the benefits are:&lt;/p>
&lt;ul>
&lt;li>predictable development environment&lt;/li>
&lt;li>easy to setup new developers&lt;/li>
&lt;li>easy way to cross-target, for example edit a .Net application on a windows machine (with Docker and WSL2) that will target a Linux environment.&lt;/li>
&lt;/ul>
&lt;p>When running on a Windows host, the tooling takes advantage of WSL2 and Docker for Windows to run the environment in Linux-based containers. Windows-based containers are not supported.&lt;/p>
&lt;p>However many web development tools work best in a Linux environment, so this potentially allows the author to stay in their familiar Windows filesystem whilst taking advantage of the Linux services in WSL2.&lt;/p>
&lt;p>I started with the &lt;a href="https://github.com/microsoft/vscode-dev-containers/tree/main/containers/hugo" target="_blank" rel="noopener">community-contributed Hugo devcontainer&lt;/a> config, and made the following changes:&lt;/p>
&lt;ul>
&lt;li>change the Hugo variant to &lt;code>hugo_extended&lt;/code> - needed by the SASS elements in the site third-party theme&lt;/li>
&lt;li>change the Node version to &lt;code>18&lt;/code>&lt;/li>
&lt;li>added a feature to include Go in the build - needed because the theme is included via a module&lt;/li>
&lt;li>extended the VS Code extensions list I wanted&lt;/li>
&lt;/ul>
&lt;p>The final version is shown at the end of this post.&lt;/p>
&lt;p>I tried two configurations locally, running on a Windows 11 laptop with WSL2 and Docker for Windows configured:&lt;/p>
&lt;h3 id="from-windows-filesystem">From Windows filesystem&lt;/h3>
&lt;p>In this scenario the VS Code IDE is running in Windows connecting to a remote container in WSL2.&lt;/p>
&lt;p>&lt;strong>TL;DR&lt;/strong> - At first it seemed that everything started correctly, but when I tried to edit the files in the container only the top-level of the source directory was visible. The file name of files in sub-directories were visible but the file content could not be accessed.&lt;/p>
&lt;p>A further problem showed itself when I updated the &lt;code>devcontainer.json&lt;/code> file to automatically run &lt;code>npm install&lt;/code>, this failed at the point of trying to create the &lt;code>node_modules&lt;/code> folder.&lt;/p>
&lt;p>Given these symptoms my working assumption is that this is to do with a mismatch between windows permissions model / user ids and the container, but I haven&amp;rsquo;t had time to investigate further.&lt;/p>
&lt;h3 id="from-wsl2-filesystem">From WSL2 filesystem&lt;/h3>
&lt;p>I normally edit this repo in Ubuntu on WSL2 using the &lt;a href="https://code.visualstudio.com/docs/remote/wsl" target="_blank" rel="noopener">VS Code WSL extension&lt;/a> that allows an IDE running in Windows to edit files in WSL2. (This is completely invisible to the user, you just type &lt;code>code .&lt;/code> in your WSL directory at the bash prompt.)&lt;/p>
&lt;p>There is still a use case for development containers WSL2 - WSL2 as this allows the development environment to be predictable for that project, regardless of what changes you may have made to your WSL2 setup.&lt;/p>
&lt;p>In simple terms, this &amp;ldquo;just worked&amp;rdquo;.&lt;/p>
&lt;h2 id="github-codespaces">Github Codespaces&lt;/h2>
&lt;p>&lt;a href="https://github.com/features/codespaces" target="_blank" rel="noopener">Github codespaces&lt;/a> are a feature which provides Github users with a cloud-based on-demand development environment for their repositories. It supports remote development from a local IDE but for many the key benefit is the provision of a web-based version of Visual Studio Code. This allows remote development using only a browser.&lt;/p>
&lt;p>There is plenty of &lt;a href="https://docs.github.com/en/codespaces/getting-started/quickstart" target="_blank" rel="noopener">documentation on how to set this up&lt;/a>, and it all worked as it says, or at least until I tried to run a development build of the site with &lt;code>hugo serve -D&lt;/code>, which I found would randomly crash.&lt;/p>
&lt;p>I had a vague feeling this might be to do with memory (I had heard that &lt;code>hugo serve&lt;/code> could be memory-hungry) so re-ran the command with the &lt;code>--printMemoryUsage&lt;/code> flag. Sure enough it peaked just below the maximum memory of the VM (default codespace VM is 2 cores / 8GB RAM) before it fell over. To increase the RAM available you need to jump up to 8 cores / 16GB RAM, and at this configuration the command worked, with a maximum allocation on this site of 8.6GB.&lt;/p>
&lt;p>Although this size of machine does eat up the compute allotment, even on the free tier you get 120/8 = 15 hours per month. I already pay for a Github Pro subscription, so within that $4 price you get 180/8 = 22.5 hours per month. For the few times I need to edit the blog in a browser this seems a very reasonable compromise.&lt;/p>
&lt;h2 id="update">Update&lt;/h2>
&lt;p>By setting the container user to &lt;code>root&lt;/code> the process will work from a windows directory too.&lt;/p>
&lt;h2 id="final-version-of-the-configuration">Final version of the configuration&lt;/h2>
&lt;script src="https://gist.github.com/synesthesia/ff13d3d46016b31f4dbf594c693e4096.js">&lt;/script></description></item><item><title>TIL - Adjusting Json.NET settings in Azure Durable Functions</title><link>https://www.synesthesia.co.uk/note/2023/06/21/adjusting-json-net-settings-in-azure-durable-functions/</link><pubDate>Wed, 21 Jun 2023 08:06:39 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2023/06/21/adjusting-json-net-settings-in-azure-durable-functions/</guid><description>&lt;h2 id="context">Context&lt;/h2>
&lt;p>This issue surfaced during development of a webhook application intended to receive events from Zoom (e.g. meeting started, recording completed etc.) and trigger consequential actions via Azure Durable Functions orchestrations.&lt;/p>
&lt;p>The application relies on the &lt;a href="https://github.com/Jericho/ZoomNet" target="_blank" rel="noopener">Jericho/ZoomNet&lt;/a> library for Zoom-specific methods, including the serialisation and deserialisation of webhook events.&lt;/p>
&lt;p>The high-level logic looks like this:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/note/2023/06/21/adjusting-json-net-settings-in-azure-durable-functions/zoom-webhook-logic.drawio_hu698c5c9a99b7b68ffbde51134827004f_33232_b20b0f1099053017087917f33be9bdf3.webp 400w,
/note/2023/06/21/adjusting-json-net-settings-in-azure-durable-functions/zoom-webhook-logic.drawio_hu698c5c9a99b7b68ffbde51134827004f_33232_2758ba8a21f6285d1d29051e7bdbeab2.webp 760w,
/note/2023/06/21/adjusting-json-net-settings-in-azure-durable-functions/zoom-webhook-logic.drawio_hu698c5c9a99b7b68ffbde51134827004f_33232_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2023/06/21/adjusting-json-net-settings-in-azure-durable-functions/zoom-webhook-logic.drawio_hu698c5c9a99b7b68ffbde51134827004f_33232_b20b0f1099053017087917f33be9bdf3.webp"
width="760"
height="399"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="the-problem">The problem&lt;/h2>
&lt;p>A typical incoming webhook payload (obfuscated) might look like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;event&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;meeting.started&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;payload&amp;#34;&lt;/span>&lt;span class="p">:{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;account_id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;XXXXXXXXXXXXX&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;object&amp;#34;&lt;/span>&lt;span class="p">:{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;duration&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;start_time&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;2023-06-21T04:54:42Z&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;timezone&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;topic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;XXX&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;12345678901&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;uuid&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;abcdefghijklMNOPqr+xrQ==&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;host_id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;XXXXXXXXXXXXXXX&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;event_ts&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">1687323282665&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Inspecting the deserialised object in the Visual Studio debugger shows that ZoomNet correctly maps this to a nested object:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/note/2023/06/21/adjusting-json-net-settings-in-azure-durable-functions/deserialised-webhook-event-1_hu5e118bc0fbceb2c905f9e9521a63479e_31364_73fe609ddf18fce67fa474011496c7d6.webp 400w,
/note/2023/06/21/adjusting-json-net-settings-in-azure-durable-functions/deserialised-webhook-event-1_hu5e118bc0fbceb2c905f9e9521a63479e_31364_6bfdf0096a6705b68ed01882454d7539.webp 760w,
/note/2023/06/21/adjusting-json-net-settings-in-azure-durable-functions/deserialised-webhook-event-1_hu5e118bc0fbceb2c905f9e9521a63479e_31364_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2023/06/21/adjusting-json-net-settings-in-azure-durable-functions/deserialised-webhook-event-1_hu5e118bc0fbceb2c905f9e9521a63479e_31364_73fe609ddf18fce67fa474011496c7d6.webp"
width="433"
height="423"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>In the HttpTrigger function we wrap the event into a parameter object&amp;hellip;&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">MeetingStartedEvent&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">nameof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">MeetingStartedOrchestration&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">new&lt;/span> &lt;span class="n">ZoomMeetingStartedOrchestrationArgument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">theEvent&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">MeetingStartedEvent&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">public&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">ZoomMeetingStartedOrchestrationArgument&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">OrchestrationArgument&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="n">MeetingStartedEvent&lt;/span> &lt;span class="n">Event&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="k">get&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">set&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="n">ZoomMeetingStartedOrchestrationArgument&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">MeetingStartedEvent&lt;/span> &lt;span class="n">@event&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Event&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">@event&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>and dispatch the orchestration in the usual way:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="n">instanceId&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">await&lt;/span> &lt;span class="n">starter&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">StartNewAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">orchestration&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">argument&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The problem comes in the downstream orchestration when trying to access the orchestration argument:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="na">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na"> [FunctionName(nameof(MeetingStartedOrchestration))]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="kd">async&lt;/span> &lt;span class="n">Task&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">OrchestrationResult&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="n">RunOrchestrator&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na"> [OrchestrationTrigger]&lt;/span> &lt;span class="n">IDurableOrchestrationContext&lt;/span> &lt;span class="n">context&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">//...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">input&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">context&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetInput&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">ZoomMeetingStartedOrchestrationArgument&lt;/span>&lt;span class="p">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>which throws an exception like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Newtonsoft.Json.JsonSerializationException: Could not create an instance of type ZoomNet.Models.Meeting. Type is an interface or abstract class and cannot be instantiated.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="analysis">Analysis&lt;/h2>
&lt;p>It&amp;rsquo;s always worth remembering that Azure Durable Functions works by serializing arguments and results between triggers, worflows and actions. The full list of data that will be serialized and persisted when using features of Durable Functions is:&lt;/p>
&lt;ul>
&lt;li>All inputs and outputs of orchestrator, activity, and entity functions, including any IDs and unhandled exceptions&lt;/li>
&lt;li>Orchestrator, activity, and entity function names&lt;/li>
&lt;li>External event names and payloads&lt;/li>
&lt;li>Custom orchestration status payloads&lt;/li>
&lt;li>Orchestration termination messages&lt;/li>
&lt;li>Durable timer payloads&lt;/li>
&lt;li>Durable HTTP request and response URLs, headers, and payloads&lt;/li>
&lt;li>Entity call and signal payloads&lt;/li>
&lt;li>Entity state payloads
— &lt;a href="https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-serialization-and-persistence?tabs=csharp-inproc#task-hub-contents" target="_blank" rel="noopener">source&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>So by attempting to read the orchestration arguments from the &lt;code>IDurableOrchestrationContext&lt;/code> under the hood a deserialization is happening.&lt;/p>
&lt;p>Looking at the model classes in ZoomNet:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">public&lt;/span> &lt;span class="kd">abstract&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">Event&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// Gets or sets the type of event.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;/summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="n">EventType&lt;/span> &lt;span class="n">EventType&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="k">get&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">set&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na"> [JsonPropertyName(&amp;#34;timestamp&amp;#34;)]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na"> [JsonConverter(typeof(EpochConverter))]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="n">DateTime&lt;/span> &lt;span class="n">Timestamp&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="k">get&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">set&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">public&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">MeetingEvent&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">Event&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// Gets or sets the unique identifier of the account in wich the event occured.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;/summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na"> [JsonPropertyName(&amp;#34;account_id&amp;#34;)]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="kt">string&lt;/span> &lt;span class="n">AccountId&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="k">get&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">set&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// Gets or sets the meeting object.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;/summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na"> [JsonPropertyName(&amp;#34;object&amp;#34;)]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="n">Meeting&lt;/span> &lt;span class="n">Meeting&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="k">get&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">set&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The problem is triggered by the classes for &lt;code>Meeting&lt;/code> because the inheritance has an abstract base:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">public&lt;/span> &lt;span class="kd">abstract&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">Meeting&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// all the meeting properties&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">public&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">InstantMeeting&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">Meeting&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="fix">Fix&lt;/h2>
&lt;p>I can&amp;rsquo;t change the model structure without abandoning the library, which I am reluctant to do as it seems to do most of what I need.&lt;/p>
&lt;p>After a bit of searching I found the documentation for &lt;a href="https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_TypeNameHandling.htm" target="_blank" rel="noopener">JsonSerializerSettings.TypeNameHandling&lt;/a> in the Json.Net docs.&lt;/p>
&lt;p>With further search I found &lt;a href="https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-serialization-and-persistence?tabs=csharp-inproc" target="_blank" rel="noopener">Data persistence and serialization in Durable Functions (Azure Functions)&lt;/a>, which documents that the default settings for serialisation of inputs, outputs and state are:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="n">JsonSerializerSettings&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">TypeNameHandling&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">TypeNameHandling&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">None&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">DateParseHandling&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">DateParseHandling&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">None&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Looking specifically at &lt;a href="https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-serialization-and-persistence?tabs=csharp-inproc#customizing-serialization-with-dependency-injection" target="_blank" rel="noopener">Customizing serialization with Dependency Injection&lt;/a> I was able to modify the &lt;code>Startup&lt;/code> class of my app:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="na">[assembly: FunctionsStartup(typeof(Startup))]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">public&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">Startup&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">FunctionsStartup&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// existing logic&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="kd">override&lt;/span> &lt;span class="k">void&lt;/span> &lt;span class="n">Configure&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">IFunctionsHostBuilder&lt;/span> &lt;span class="n">builder&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">//...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// modify JSON.net behaviour on Durable Functions&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">builder&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Services&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">AddSingleton&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">IMessageSerializerSettingsFactory&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">CustomMessageSerializerSettingsFactory&lt;/span>&lt;span class="p">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">//...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">internal&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">CustomMessageSerializerSettingsFactory&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">IMessageSerializerSettingsFactory&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="n">JsonSerializerSettings&lt;/span> &lt;span class="n">CreateJsonSerializerSettings&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Return your custom JsonSerializerSettings here&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">JsonSerializerSettings&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">TypeNameHandling&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">TypeNameHandling&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">All&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">DateParseHandling&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">DateParseHandling&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">None&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>After deploying that change the function works as expected.&lt;/p></description></item><item><title>Exploring Initial Teacher Training data with Datasette</title><link>https://www.synesthesia.co.uk/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/</link><pubDate>Wed, 14 Jun 2023 15:59:28 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>I wanted an opportunity to try out &lt;a href="https://datasette.io/" target="_blank" rel="noopener">Datasette&lt;/a> for a bit of ad-hoc data analysis, with the ability to easily share the results. To quote the tool home page:&lt;/p>
&lt;blockquote>
&lt;p>Datasette is a tool for exploring and publishing data. It helps people take data of any shape, analyze and explore it, and publish it as an interactive website and accompanying API.&lt;/p>
&lt;/blockquote>
&lt;h2 id="the-data">The data&lt;/h2>
&lt;p>The &lt;a href="https://www.gov.uk/government/organisations/department-for-education" target="_blank" rel="noopener">Department for Education&lt;/a> (DfE) publish Initial Teacher Training (ITT) application data each month — &lt;a href="https://www.gov.uk/government/publications/monthly-statistics-on-initial-teacher-training-recruitment-2023-to-2024" target="_blank" rel="noopener">Monthly statistics on initial teacher training recruitment: 2023 to 2024&lt;/a>&lt;/p>
&lt;p>Each month a zip file is published containing a number of CSV files.&lt;/p>
&lt;p>Further information on the statistics can be found &lt;a href="https://www.apply-for-teacher-training.service.gov.uk/publications/monthly-statistics" target="_blank" rel="noopener">here&lt;/a>, and it&amp;rsquo;s worth a read, not least to understand the complications caused by each candidate being allowed multiple applications.&lt;/p>
&lt;p>This background is also very relevant, especially where it speaks about the incompleteness of these statistics:&lt;/p>
&lt;blockquote>
&lt;p>Applications for courses starting in the 2023 to 2024 academic year are submitted in the October 2022 to September 2023 recruitment cycle (ITT2023) or deferred from the previous cycle for a 2023 to 2024 course start date.&lt;/p>
&lt;p>&lt;strong>Teacher training applications made directly to providers or Teach First are not included. Undergraduate teacher training is also not included.&lt;/strong>&lt;/p>
&lt;p>These statistics collect data from 11 October 2022 to 15 May 2023 (ITT2023) and include deferred applications from the October 2021 to September 2022&lt;/p>
&lt;/blockquote>
&lt;h2 id="tldr">TL;DR&lt;/h2>
&lt;p>Using Datasette and a selection of command line tools I was able to import and explore the data, create a nice Cumulative Flow Diagram that allowed me to answer a question, and publish the results on a website.&lt;/p>
&lt;p>A couple of things that I didn&amp;rsquo;t need for this test but will want to use later didn&amp;rsquo;t seem to work, but that might be a lack of understanding on my part. (SpatiaLite integration)&lt;/p>
&lt;h2 id="environment-for-experiments">Environment for experiments&lt;/h2>
&lt;p>The following experiments were conducted in a Ubuntu 22.04 environment running on Windows Subsystem for Linux (WSL2).&lt;/p>
&lt;p>Python 3 is already installed.&lt;/p>
&lt;p>I am going to use &lt;a href="https://datasette.io/" target="_blank" rel="noopener">Datasette&lt;/a> as a tool for exploring the data.&lt;/p>
&lt;h2 id="data-questions">Data questions&lt;/h2>
&lt;ol>
&lt;li>Is there a bottleneck in processing of applications?&lt;/li>
&lt;/ol>
&lt;h2 id="downloading-the-data">Downloading the data&lt;/h2>
&lt;p>Unfortunately the download URLs of the zip files are not a consistent pattern so we have to download each explicitly&lt;/p>
&lt;p>Create new repo on WSL at &lt;code>~/data/itt&lt;/code>. All paths now are relative to root of repo&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">mkdir -p ./data/orig
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> data.orig
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Get May 2023 data like this&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">wget -O itt_2023_05.zip https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/1162196/Initial_teacher_training_recruitment_candidate_applications_and_numbers_May_2023.zip -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>And so on, adjusting the source URL and the output file as needed back through the files ending up at:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">wget -O itt_2022_11 https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/1122970/Initial_teacher_training_recruitment_candidate_applications_and_numbers__November_2022__1_.zip
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>I then unzipped these into a folder for each month:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">mkdir 2023-24
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">q&lt;/span>&lt;span class="o">=&lt;/span>0&lt;span class="p">;&lt;/span> &lt;span class="k">while&lt;/span> &lt;span class="o">[[&lt;/span> q -lt &lt;span class="m">2&lt;/span> &lt;span class="o">]]&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">do&lt;/span> &lt;span class="o">((&lt;/span>q++&lt;span class="o">))&lt;/span>&lt;span class="p">;&lt;/span> mkdir 2023-24/2022-1&lt;span class="nv">$q&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">q&lt;/span>&lt;span class="o">=&lt;/span>0&lt;span class="p">;&lt;/span> &lt;span class="k">while&lt;/span> &lt;span class="o">[[&lt;/span> q -lt &lt;span class="m">6&lt;/span> &lt;span class="o">]]&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">do&lt;/span> &lt;span class="o">((&lt;/span>q++&lt;span class="o">))&lt;/span>&lt;span class="p">;&lt;/span> mkdir 2023-24/2023-0&lt;span class="nv">$q&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">q&lt;/span>&lt;span class="o">=&lt;/span>0&lt;span class="p">;&lt;/span> &lt;span class="k">while&lt;/span> &lt;span class="o">[[&lt;/span> q -lt &lt;span class="m">2&lt;/span> &lt;span class="o">]]&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">do&lt;/span> &lt;span class="o">((&lt;/span>q++&lt;span class="o">))&lt;/span>&lt;span class="p">;&lt;/span> unzip itt_2022_1&lt;span class="nv">$q&lt;/span>.zip -d 2023-24/2022-1&lt;span class="nv">$q&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">q&lt;/span>&lt;span class="o">=&lt;/span>0&lt;span class="p">;&lt;/span> &lt;span class="k">while&lt;/span> &lt;span class="o">[[&lt;/span> q -lt &lt;span class="m">5&lt;/span> &lt;span class="o">]]&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">do&lt;/span> &lt;span class="o">((&lt;/span>q++&lt;span class="o">))&lt;/span>&lt;span class="p">;&lt;/span> unzip itt_2023_0&lt;span class="nv">$q&lt;/span>.zip -d 2023-24/2023-0&lt;span class="nv">$q&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>There was some further manual tidying up to remove inconsistencies in sub-folders within the zip files.&lt;/p>
&lt;p>Our files now look like this (from the root of our working directory):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">tree -a -I &lt;span class="s1">&amp;#39;.git&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">└── data
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └── orig
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├── 2023-24
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── 2022-11
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_course_age_group-2022-11.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_course_type-2022-11.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_primary_specialist_subject-2022-11.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_provider_area-2022-11.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications_by_status-2022-11.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-by_secondary_subject-2022-11.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_age_group-2022-11.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_area-2022-11.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_sex-2022-11.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   └── monthly-statistics-candidates_by_status-2022-11.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── 2022-12
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── Dec_monthly_stats_2022
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_course_age_group-2022-12.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_course_type-2022-12.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_primary_specialist_subject-2022-12.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_provider_area-2022-12.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_secondary_subject-2022-12.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications_by_status-2022-12.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_age_group-2022-12.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_area-2022-12.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_sex-2022-12.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   └── monthly-statistics-candidates_by_status-2022-12.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── 2023-01
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_course_age_group-2023-01.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_course_type-2023-01.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_primary_specialist_subject-2023-01.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_provider_area-2023-01.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_secondary_subject-2023-01.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications_by_status-2023-01.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_age_group-2023-01.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_area-2023-01.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_sex-2023-01.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   └── monthly-statistics-candidates_by_status-2023-01.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── 2023-02
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_course_age_group-2023-02.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_course_type-2023-02.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_primary_specialist_subject-2023-02.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_provider_area-2023-02.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_secondary_subject-2023-02.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications_by_status-2023-02.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_age_group-2023-02.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_area-2023-02.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_sex-2023-02.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   └── monthly-statistics-candidates_by_status-2023-02.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── 2023-03
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_course_age_group-2023-03.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_course_type-2023-03.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_primary_specialist_subject-2023-03.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_provider_area-2023-03.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_secondary_subject-2023-03.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications_by_status-2023-03.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_age_group-2023-03.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_area-2023-03.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_sex-2023-03.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   └── monthly-statistics-candidates_by_status-2023-03.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── 2023-04
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_course_age_group-2023-04.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_course_type-2023-04.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_primary_specialist_subject-2023-04.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_provider_area-2023-04.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications-by_secondary_subject-2023-04.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-applications_by_status-2023-04.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_age_group-2023-04.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_area-2023-04.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   ├── monthly-statistics-candidates-by_sex-2023-04.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   │   └── monthly-statistics-candidates_by_status-2023-04.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   └── 2023-05
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── monthly-statistics-applications-by_course_type-2023-05.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── monthly-statistics-applications-by_primary_specialist_subject-2023-05.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── monthly-statistics-applications-by_provider_area-2023-05.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── monthly-statistics-applications-by_secondary_subject-2023-05.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── monthly-statistics-applications_by_status-2023-05.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── monthly-statistics-candidates-by_age_group-2023-05.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── monthly-statistics-candidates-by_area-2023-05.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── monthly-statistics-candidates-by_course_age_group-2023-05.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   ├── monthly-statistics-candidates-by_sex-2023-05.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> │   └── monthly-statistics-candidates_by_status-2023-05.csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├── itt_2022_11.zip
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├── itt_2022_12.zip
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├── itt_2023_01.zip
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├── itt_2023_02.zip
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├── itt_2023_03.zip
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ├── itt_2023_04.zip
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └── itt_2023_05.zip
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="cleaning-the-data">Cleaning the data&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://pypi.org/project/pipx/" target="_blank" rel="noopener">Install Pipx&lt;/a>&lt;/li>
&lt;li>Install &lt;a href="https://www.sqlite.org/index.html" target="_blank" rel="noopener">sqlite&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Set up datasette venv:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pipx install datasette
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pipx inject datasette sqlite-utils
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create an empty database that we will populate with our cleaned data:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> ./data
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sqlite-utils create-database itt.db
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For our first question we need to look at the applications by status for each month, and combine these into a single table, with a date column added set to the last day of the sample month.&lt;/p>
&lt;p>The data is in CSV files with the filename &lt;code>monthly-statistics-applications_by_status-yyyy-mm.csv&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">$ &lt;span class="nb">cd&lt;/span> data/orig/2023-24/2023-05
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">$ column -s, -t &amp;lt; monthly-statistics-applications_by_status-2023-05.csv &lt;span class="p">|&lt;/span> less -#2 -N -S
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="m">1&lt;/span> Status First application Apply again Total
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="m">2&lt;/span> Recruited &lt;span class="m">1022&lt;/span> &lt;span class="m">80&lt;/span> &lt;span class="m">1102&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="m">3&lt;/span> Conditions pending &lt;span class="m">14134&lt;/span> &lt;span class="m">1491&lt;/span> &lt;span class="m">15625&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="m">4&lt;/span> Deferred &lt;span class="m">204&lt;/span> &lt;span class="m">27&lt;/span> &lt;span class="m">231&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="m">5&lt;/span> Received an offer but not responded &lt;span class="m">1308&lt;/span> &lt;span class="m">182&lt;/span> &lt;span class="m">1490&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="m">6&lt;/span> Awaiting provider decisions &lt;span class="m">11158&lt;/span> &lt;span class="m">2920&lt;/span> &lt;span class="m">14078&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="m">7&lt;/span> Declined an offer &lt;span class="m">7424&lt;/span> &lt;span class="m">355&lt;/span> &lt;span class="m">7779&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="m">8&lt;/span> Withdrew an application &lt;span class="m">19037&lt;/span> &lt;span class="m">3468&lt;/span> &lt;span class="m">22505&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="m">9&lt;/span> Application rejected &lt;span class="m">26245&lt;/span> &lt;span class="m">6335&lt;/span> &lt;span class="m">32580&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Our process is:&lt;/p>
&lt;ul>
&lt;li>insert the 2023-05 data into a new table &lt;code>application_status&lt;/code>&lt;/li>
&lt;li>insert a column &lt;code>reportdate&lt;/code>&lt;/li>
&lt;li>set &lt;code>reportdate&lt;/code> to 31/05/2023 in all rows&lt;/li>
&lt;li>for each remaining CSV
&lt;ul>
&lt;li>import CSV to temp table application_status_yymm&lt;/li>
&lt;li>select into &lt;code>application_status&lt;/code> adding correct value for &lt;code>reportdate&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># in data directory&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># initial import&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sqlite-utils insert itt.db application_status orig/2023-24/2023-05/monthly-statistics-applications_by_status-2023-05.csv --csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># query in sqlite3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sqlite3 itt.db
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># see column names&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sqlite&amp;gt; PRAGMA table_info&lt;span class="o">(&lt;/span>application_status&lt;span class="o">)&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">0&lt;span class="p">|&lt;/span>Status&lt;span class="p">|&lt;/span>TEXT&lt;span class="p">|&lt;/span>0&lt;span class="o">||&lt;/span>&lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1&lt;span class="p">|&lt;/span>First application&lt;span class="p">|&lt;/span>TEXT&lt;span class="p">|&lt;/span>0&lt;span class="o">||&lt;/span>&lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2&lt;span class="p">|&lt;/span>Apply again&lt;span class="p">|&lt;/span>TEXT&lt;span class="p">|&lt;/span>0&lt;span class="o">||&lt;/span>&lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">3&lt;span class="p">|&lt;/span>Total&lt;span class="p">|&lt;/span>TEXT&lt;span class="p">|&lt;/span>0&lt;span class="o">||&lt;/span>&lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># see data&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sqlite&amp;gt; &lt;span class="k">select&lt;/span> * from application_status&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Recruited&lt;span class="p">|&lt;/span>1022&lt;span class="p">|&lt;/span>80&lt;span class="p">|&lt;/span>&lt;span class="m">1102&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Conditions pending&lt;span class="p">|&lt;/span>14134&lt;span class="p">|&lt;/span>1491&lt;span class="p">|&lt;/span>&lt;span class="m">15625&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Deferred&lt;span class="p">|&lt;/span>204&lt;span class="p">|&lt;/span>27&lt;span class="p">|&lt;/span>&lt;span class="m">231&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Received an offer but not responded&lt;span class="p">|&lt;/span>1308&lt;span class="p">|&lt;/span>182&lt;span class="p">|&lt;/span>&lt;span class="m">1490&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Awaiting provider decisions&lt;span class="p">|&lt;/span>11158&lt;span class="p">|&lt;/span>2920&lt;span class="p">|&lt;/span>&lt;span class="m">14078&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Declined an offer&lt;span class="p">|&lt;/span>7424&lt;span class="p">|&lt;/span>355&lt;span class="p">|&lt;/span>&lt;span class="m">7779&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Withdrew an application&lt;span class="p">|&lt;/span>19037&lt;span class="p">|&lt;/span>3468&lt;span class="p">|&lt;/span>&lt;span class="m">22505&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Application rejected&lt;span class="p">|&lt;/span>26245&lt;span class="p">|&lt;/span>6335&lt;span class="p">|&lt;/span>&lt;span class="m">32580&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sqlite&amp;gt;.quit
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>As we can see the initial table has been created, so we need to add the &lt;code>report_date&lt;/code> column and fill it. Note also the data type of the columns &lt;code>First application&lt;/code>, &lt;code>Apply again&lt;/code> and &lt;code>Total&lt;/code> is wrong, we will fix that if necessary after we import the other data. (Datasette seems to be very forgiving about data types).&lt;/p>
&lt;p>We plan to store dates as ISO8601 strings (&lt;code>&amp;quot;YYYY-MM-DD&amp;quot;&lt;/code>), so our new &lt;code>report_date&lt;/code> column should be of type TEXT.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sqlite-utils add-column itt.db application_status report_date text
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sqlite3 itt.db
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sqlite&amp;gt; PRAGMA table_info&lt;span class="o">(&lt;/span>application_status&lt;span class="o">)&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">0&lt;span class="p">|&lt;/span>Status&lt;span class="p">|&lt;/span>TEXT&lt;span class="p">|&lt;/span>0&lt;span class="o">||&lt;/span>&lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1&lt;span class="p">|&lt;/span>First application&lt;span class="p">|&lt;/span>TEXT&lt;span class="p">|&lt;/span>0&lt;span class="o">||&lt;/span>&lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2&lt;span class="p">|&lt;/span>Apply again&lt;span class="p">|&lt;/span>TEXT&lt;span class="p">|&lt;/span>0&lt;span class="o">||&lt;/span>&lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">3&lt;span class="p">|&lt;/span>Total&lt;span class="p">|&lt;/span>TEXT&lt;span class="p">|&lt;/span>0&lt;span class="o">||&lt;/span>&lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">4&lt;span class="p">|&lt;/span>report_date&lt;span class="p">|&lt;/span>TEXT&lt;span class="p">|&lt;/span>0&lt;span class="o">||&lt;/span>&lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sqlite&amp;gt; UPDATE application_status SET &lt;span class="nv">report_date&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;2023-05-31&amp;#39;&lt;/span> WHERE report_date IS NULL OR &lt;span class="nv">report_date&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sqlite&amp;gt; &lt;span class="k">select&lt;/span> * from application_status&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Recruited&lt;span class="p">|&lt;/span>1022&lt;span class="p">|&lt;/span>80&lt;span class="p">|&lt;/span>1102&lt;span class="p">|&lt;/span>2023-05-31
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Conditions pending&lt;span class="p">|&lt;/span>14134&lt;span class="p">|&lt;/span>1491&lt;span class="p">|&lt;/span>15625&lt;span class="p">|&lt;/span>2023-05-31
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Deferred&lt;span class="p">|&lt;/span>204&lt;span class="p">|&lt;/span>27&lt;span class="p">|&lt;/span>231&lt;span class="p">|&lt;/span>2023-05-31
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Received an offer but not responded&lt;span class="p">|&lt;/span>1308&lt;span class="p">|&lt;/span>182&lt;span class="p">|&lt;/span>1490&lt;span class="p">|&lt;/span>2023-05-31
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Awaiting provider decisions&lt;span class="p">|&lt;/span>11158&lt;span class="p">|&lt;/span>2920&lt;span class="p">|&lt;/span>14078&lt;span class="p">|&lt;/span>2023-05-31
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Declined an offer&lt;span class="p">|&lt;/span>7424&lt;span class="p">|&lt;/span>355&lt;span class="p">|&lt;/span>7779&lt;span class="p">|&lt;/span>2023-05-31
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Withdrew an application&lt;span class="p">|&lt;/span>19037&lt;span class="p">|&lt;/span>3468&lt;span class="p">|&lt;/span>22505&lt;span class="p">|&lt;/span>2023-05-31
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Application rejected&lt;span class="p">|&lt;/span>26245&lt;span class="p">|&lt;/span>6335&lt;span class="p">|&lt;/span>32580&lt;span class="p">|&lt;/span>2023-05-31
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Now we need to import the earlier data sets into their temp tables.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> PERIOD in 2022-11 2022-12 2023-01 2023-02 2023-03 2023-04&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">do&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sqlite-utils insert itt.db application_status_&lt;span class="nv">$PERIOD&lt;/span> orig/2023-24/&lt;span class="nv">$PERIOD&lt;/span>/monthly-statistics-applications_by_status-&lt;span class="nv">$PERIOD&lt;/span>.csv --csv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>To merge this data into the main table we use INSERT INTO &amp;hellip; SELECT&amp;hellip;&lt;/p>
&lt;p>Note use of &amp;quot;&amp;quot; to enclose table and column names that would otherwise be invalid, and &amp;rsquo;&amp;rsquo; for string literals.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">INSERT INTO application_status SELECT Status, &lt;span class="s2">&amp;#34;First Application&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;Apply Again&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;Total&amp;#34;&lt;/span>, &lt;span class="s1">&amp;#39;2022-11-30&amp;#39;&lt;/span> FROM &lt;span class="s2">&amp;#34;application_status_2022-11&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">INSERT INTO application_status SELECT Status, &lt;span class="s2">&amp;#34;First Application&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;Apply Again&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;Total&amp;#34;&lt;/span>, &lt;span class="s1">&amp;#39;2022-12-31&amp;#39;&lt;/span> FROM &lt;span class="s2">&amp;#34;application_status_2022-12&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">INSERT INTO application_status SELECT Status, &lt;span class="s2">&amp;#34;First Application&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;Apply Again&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;Total&amp;#34;&lt;/span>, &lt;span class="s1">&amp;#39;2023-01-31&amp;#39;&lt;/span> FROM &lt;span class="s2">&amp;#34;application_status_2023-01&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">INSERT INTO application_status SELECT Status, &lt;span class="s2">&amp;#34;First Application&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;Apply Again&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;Total&amp;#34;&lt;/span>, &lt;span class="s1">&amp;#39;2023-02-28&amp;#39;&lt;/span> FROM &lt;span class="s2">&amp;#34;application_status_2023-02&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">INSERT INTO application_status SELECT Status, &lt;span class="s2">&amp;#34;First Application&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;Apply Again&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;Total&amp;#34;&lt;/span>, &lt;span class="s1">&amp;#39;2023-03-31&amp;#39;&lt;/span> FROM &lt;span class="s2">&amp;#34;application_status_2023-03&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">INSERT INTO application_status SELECT Status, &lt;span class="s2">&amp;#34;First Application&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;Apply Again&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;Total&amp;#34;&lt;/span>, &lt;span class="s1">&amp;#39;2023-04-30&amp;#39;&lt;/span> FROM &lt;span class="s2">&amp;#34;application_status_2023-04&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="first-check-in-datasette">First check in Datasette&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">datasette data/itt.db
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Looking at &lt;code>http://127.0.0.1:8001/itt/application_status&lt;/code> we can now browse our rather trivial table and play around with the Datasette controls:&lt;/p>
&lt;figure id="figure-datasette-view-of-the-first-data-table">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Datasette view of the first data table" srcset="
/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-07-18-31_hu580b2a235bb6a017386ce5747bf8a56f_105732_ac146b3efbd0e98cef3e400e827c386e.webp 400w,
/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-07-18-31_hu580b2a235bb6a017386ce5747bf8a56f_105732_31d83337e0743898a1c1a8382ec6bf08.webp 760w,
/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-07-18-31_hu580b2a235bb6a017386ce5747bf8a56f_105732_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-07-18-31_hu580b2a235bb6a017386ce5747bf8a56f_105732_ac146b3efbd0e98cef3e400e827c386e.webp"
width="760"
height="417"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Datasette view of the first data table
&lt;/figcaption>&lt;/figure>
&lt;h2 id="adding-a-graph">Adding a graph&lt;/h2>
&lt;p>Remembering our first data question, to explore whether there is a good flow through the application process we want to plot a cumulative flow diagram of our data.&lt;/p>
&lt;p>We will use the &lt;a href="https://datasette.io/plugins/datasette-dashboards" target="_blank" rel="noopener">datasette-dashboards&lt;/a> plugin to render a dashboard in our datasette web app.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">datasette install datasette-dashboards
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">touch data/metadata.yml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>From now on we will need to run datasette like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">datasette data/itt.db --metadata&lt;span class="o">=&lt;/span>data/metadata.yml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>There are no dashboards to see yet, so we need to populate &lt;code>data/metadata.yml&lt;/code>.&lt;/p>
&lt;p>Initial content looks like&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Datasette demo of DfE ITT stats&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">plugins&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">datasette-dashboards&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">itt-applications&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ITT applications&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Data about applications to Initial Teacher Training&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">layout&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="p">[&lt;/span>&lt;span class="l">analysis-note]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">charts&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">analysis-note&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">library&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">markdown&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">display&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">|-&lt;/span>&lt;span class="sd">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> # Analysis notes
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> &amp;gt; A look through the DfE ITT application statistics for training in 2023-24&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Running datasette we now have a maenu item top right that takes us to a dashboard page, with a single dashboard listed &lt;code>ITT Applications&lt;/code>&lt;/p>
&lt;p>Opening that we see the dashboard, currently just containing the markdown test block we added:&lt;/p>
&lt;figure id="figure-initial-text-only-dashboard">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Initial text-only dashboard" srcset="
/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-07-31-30_hu683315b63edfb4580110c496053e1d9a_32861_1867d48bdaae975514c919f8924bc61f.webp 400w,
/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-07-31-30_hu683315b63edfb4580110c496053e1d9a_32861_36daeab34a262d0a82e15c8de5c09e34.webp 760w,
/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-07-31-30_hu683315b63edfb4580110c496053e1d9a_32861_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-07-31-30_hu683315b63edfb4580110c496053e1d9a_32861_1867d48bdaae975514c919f8924bc61f.webp"
width="753"
height="486"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Initial text-only dashboard
&lt;/figcaption>&lt;/figure>
&lt;p>Now we need to add our chart.&lt;/p>
&lt;p>First in &lt;code>data/metadata.yml&lt;/code> add a new chart to the layout, and then start the definition of the chart:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Datasette demo of DfE ITT stats&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">plugins&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">datasette-dashboards&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">itt-applications&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ITT applications&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Data about applications to Initial Teacher Training&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">layout&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="p">[&lt;/span>&lt;span class="l">analysis-note, applications-cfd]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">charts&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">analysis-note&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">library&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">markdown&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">display&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">|-&lt;/span>&lt;span class="sd">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> # Analysis notes
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> &amp;gt; A look through the DfE ITT application statistics for training in 2023-24&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">applications-cfd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Cumulative flow of applications&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">width&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">600&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">height&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">400&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">db&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">itt&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">query&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">SELECT Status as status, Total as total, report_date FROM application_status ORDER BY report_date&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">library&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">vega-lite&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">display&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#(continued...)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The datasette-dashboards plugin documentation states that the &lt;code>display&lt;/code> property:&lt;/p>
&lt;ul>
&lt;li>Requires a valid &lt;a href="https://vega.github.io/vega/docs/" target="_blank" rel="noopener">Vega specification object&lt;/a>&lt;/li>
&lt;li>Some fields are pre-defined: &lt;code>$schema&lt;/code>, &lt;code>description&lt;/code>, &lt;code>autosize&lt;/code>, &lt;code>data&lt;/code>, &lt;code>signals&lt;/code>&lt;/li>
&lt;li>All fields are passed along as-is (overriding pre-defined fields if any)&lt;/li>
&lt;li>Only &lt;code>mark&lt;/code> and &lt;code>encoding&lt;/code> fields are required as the bare-minimum&lt;/li>
&lt;/ul>
&lt;p>To work out the display specification we need to look at the &lt;a href="https://vega.github.io/vega-lite/examples/" target="_blank" rel="noopener">Vega-Lite examples gallery&lt;/a>, specifically the &lt;a href="https://vega.github.io/vega-lite/examples/stacked_area.html" target="_blank" rel="noopener">Stacked Area Chart&lt;/a>&lt;/p>
&lt;p>Our &lt;code>data/metadata.yml&lt;/code> file now looks like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Datasette demo of DfE ITT stats&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">plugins&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">datasette-dashboards&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">itt-applications&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ITT applications&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Data about applications to Initial Teacher Training&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">layout&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="p">[&lt;/span>&lt;span class="l">analysis-note, applications-cfd]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">charts&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">analysis-note&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">library&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">markdown&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">display&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">|-&lt;/span>&lt;span class="sd">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> # Analysis notes
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> &amp;gt; Data source [DfE](https://www.gov.uk/government/publications/monthly-statistics-on-initial-teacher-training-recruitment-2023-to-2024)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> &amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="sd"> &amp;gt; Minimal processing &amp;amp;mdash; extract the data, transform to add report dates, load to the database.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">applications-cfd&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Cumulative flow of applications&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">db&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">itt&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">query&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">SELECT Status as status, Total as total, report_date FROM application_status ORDER BY report_date&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">library&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">vega-lite&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">display&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">mark&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{&lt;span class="w"> &lt;/span>&lt;span class="nt">type: area, tooltip&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w"> &lt;/span>}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">encoding&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">x&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{&lt;span class="w"> &lt;/span>&lt;span class="nt">field: report_date, timeUnit&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">yearmonth }&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">y&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{&lt;span class="w"> &lt;/span>&lt;span class="nt">aggregate&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;sum&amp;#34;&lt;/span>&lt;span class="nt">, field&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">total }&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">color&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{&lt;span class="nt">field&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">status}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Our dashboard now looks like this:&lt;/p>
&lt;figure id="figure-dashboard-with-cumulative-flow-diagram">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Dashboard with Cumulative Flow Diagram" srcset="
/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-08-03-33_huddd56f6951b28b1ee5a4fd853e95295b_87014_086da80aa03d1d7b1a586b9f1cf7884d.webp 400w,
/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-08-03-33_huddd56f6951b28b1ee5a4fd853e95295b_87014_aaaf419754c274aa79a7b1c64f61abe8.webp 760w,
/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-08-03-33_huddd56f6951b28b1ee5a4fd853e95295b_87014_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-08-03-33_huddd56f6951b28b1ee5a4fd853e95295b_87014_086da80aa03d1d7b1a586b9f1cf7884d.webp"
width="760"
height="325"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Dashboard with Cumulative Flow Diagram
&lt;/figcaption>&lt;/figure>
&lt;p>Looking closely at the chart, the order of the stack is not helpful, it would be better if there were some approximation to process order.&lt;/p>
&lt;p>I found at least part of the answer in &lt;a href="https://stackoverflow.com/a/61939414" target="_blank" rel="noopener">this StackOverflow answer&lt;/a>, and edited the display part of this chart definition to look like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">display&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">transform&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="w"> &lt;/span>{&lt;span class="nt">calculate&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;indexof([ &amp;#39;Conditions Pending&amp;#39;, &amp;#39;Awaiting provider decisions&amp;#39;, &amp;#39;Deferred&amp;#39;, &amp;#39;Recruited&amp;#39;, &amp;#39;Withdrew an application&amp;#39;, &amp;#39;Received an offer but did not respond&amp;#39;, &amp;#39;Declined an offer&amp;#39;, &amp;#39;Application rejected&amp;#39;], datum.status)&amp;#34;&lt;/span>&lt;span class="nt">, as&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;order&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">mark&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{&lt;span class="w"> &lt;/span>&lt;span class="nt">type: area, tooltip&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w"> &lt;/span>}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">encoding&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">x&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{&lt;span class="w"> &lt;/span>&lt;span class="nt">field: report_date, timeUnit&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">yearmonth }&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">y&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{&lt;span class="w"> &lt;/span>&lt;span class="nt">aggregate&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;sum&amp;#34;&lt;/span>&lt;span class="nt">, field&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">total }&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">color&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{&lt;span class="nt">field: status, scale&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{&lt;span class="nt">&amp;#34;scheme&amp;#34;: &lt;/span>&lt;span class="s2">&amp;#34;tableau10&amp;#34;&lt;/span>}}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">order&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{&lt;span class="nt">field&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;order&amp;#34;&lt;/span>&lt;span class="nt">, type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;ordinal&amp;#34;&lt;/span>}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This sorts the order of the stack so the chart now looks like:&lt;/p>
&lt;figure id="figure-cumulative-flow-diagram-with-bands-in-custom-order">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Cumulative Flow Diagram with bands in custom order" srcset="
/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-08-36-05_hua703187b13e303034d7d68a3a7bbd8b2_67048_4df9f028115d297a21f9434072ae2679.webp 400w,
/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-08-36-05_hua703187b13e303034d7d68a3a7bbd8b2_67048_ec782c61b2c3ab16a39c17d951b80e3c.webp 760w,
/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-08-36-05_hua703187b13e303034d7d68a3a7bbd8b2_67048_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2023/06/14/exploring-initial-teacher-training-data-with-datasette/2023-06-14-08-36-05_hua703187b13e303034d7d68a3a7bbd8b2_67048_4df9f028115d297a21f9434072ae2679.webp"
width="760"
height="326"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Cumulative Flow Diagram with bands in custom order
&lt;/figcaption>&lt;/figure>
&lt;p>I looked for ways to change the order of the legend categories to match but so far have been unsuccessful.&lt;/p>
&lt;h2 id="answering-the-question">Answering the question&lt;/h2>
&lt;p>The question I posed was &lt;strong>&amp;ldquo;Is there a bottleneck in processing of applications?&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Looking at the series on the chart for &amp;ldquo;Awaiting provider decisions&amp;rdquo; it is roughly the same height and same slope over time, suggesting that the delay through that stage is approximately constant, and therefore that applications are being determined at roughly the rate they are being presented. (A closer look might suggest that a bottleneck is starting to appear in May 2023, but without finer grained data it is hard to be certain).&lt;/p>
&lt;p>The series &amp;ldquo;Conditions pending&amp;rdquo; could be indicative of a growing backlog in the process, but without further information it&amp;rsquo;s impossible to tell where this sits between applicants, providers and the DfE.&lt;/p>
&lt;h2 id="a-wider-reflection-on-the-data-so-far">A wider reflection on the data so far&lt;/h2>
&lt;p>In the wider context, my biggest concerns with this data are:&lt;/p>
&lt;ul>
&lt;li>the scope statement I quoted at the beginning - without this data how can the overall state of recruitment be judged?
&lt;blockquote>
&lt;p>Teacher training applications made directly to providers or Teach First are not included. Undergraduate teacher training is also not included.&lt;/p>
&lt;/blockquote>
&lt;/li>
&lt;li>the absolutely tiny fraction of applicants that make it through to being recruited - what lies behind that?&lt;/li>
&lt;li>where (if anywhere) is the underlying data? The datasets in this collection are all aggregated statistical returns, are there other factors worthy of analysis?&lt;/li>
&lt;/ul>
&lt;h2 id="sharing-the-analysis-so-far">Sharing the analysis so far&lt;/h2>
&lt;p>One of the benefits of Datasette is the ability to quickly publish a set of data and dashboards to a number of different hosting services.&lt;/p>
&lt;p>I decided to try &lt;a href="https://docs.datasette.io/en/stable/publish.html#publishing-to-vercel" target="_blank" rel="noopener">publishing to Vercel&lt;/a>, as I already have a free account there.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Install the &lt;a href="https://vercel.com/docs/cli" target="_blank" rel="noopener">Vercel CLI&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://vercel.com/docs/cli/login" target="_blank" rel="noopener">Login to Vercel&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Add the plugin&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">datasette install datasette-publish-vercel
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>publish the site&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">datasette publish vercel data/itt.db --project itt -m data/metadata.yml --install datasette-dashboards
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>check the site location at &lt;a href="https://itt-lac.vercel.app/" target="_blank" rel="noopener">https://itt-lac.vercel.app/&lt;/a>, with dashboard at &lt;a href="https://itt-lac.vercel.app/-/dashboards/itt-applications" target="_blank" rel="noopener">https://itt-lac.vercel.app/-/dashboards/itt-applications&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="reflections">Reflections&lt;/h2>
&lt;p>The core reason for this experiment was to do an end-to-end test of Datasette to see how easy it is to use and to get usable output using a tiny data set.&lt;/p>
&lt;p>In a way it&amp;rsquo;s typical open-source - not glossy except where it has to be, but focused on the functionality. When you add in the power of the plugin ecosystem and the out-of-the-box web publishing this tool does a lot. You have to remind yourself that the vast majority of the code you are using is the product of one person, because the functionality is deep.&lt;/p>
&lt;p>Becasuse I was starting from zero and making these notes as I went, it took a long time to get to the very basic result. If I was just doing this quick and dirty analysis would I use Datasette? Probably not if I had Excel to hand.&lt;/p>
&lt;p>But as soon as you need an environment where you can easily script things like data transformations, enter adhoc queries, add visualisations, and even share on the web, then I&amp;rsquo;m starting to like Datasette. And of course all of these tools are free open source.&lt;/p>
&lt;p>Unsurprisingly the bit that took the most time was around visualisations (it always is), so a fair bit of time was not related to the core of Datasette but to the &lt;a href="https://datasette.io/plugins/datasette-dashboards" target="_blank" rel="noopener">datasette-dashboards&lt;/a> plugin and the associated &lt;a href="https://vega.github.io/vega-lite/" target="_blank" rel="noopener">Vega-Lite&lt;/a> library.&lt;/p>
&lt;p>Out of the box the generated website is open access, so you would not want to use this for confidential analysis. However there is a whole section in the Datasette documentation on &lt;a href="https://docs.datasette.io/en/stable/authentication.html" target="_blank" rel="noopener">authentication and permissions&lt;/a>, and it looks like there are plenty of options (and the opportunity to write a plugin if what you need isn&amp;rsquo;t there).&lt;/p>
&lt;h2 id="next-steps">Next steps&lt;/h2>
&lt;p>The code for this exploration is available on Github at &lt;a href="https://github.com/synesthesia/datasette-itt" target="_blank" rel="noopener">synesthesia/datasette-itt&lt;/a>.&lt;/p>
&lt;p>I want to try some geo-related analysis of some of the other tables available in this dataset, and originally installed the &lt;a href="https://docs.datasette.io/en/stable/spatialite.html" target="_blank" rel="noopener">SpatiaLite&lt;/a> extensions, However I found that the Vercel plugin doesn&amp;rsquo;t seem to support that feature (at least I couldn&amp;rsquo;t get the site to work with SpatiaLite installed). As the geo-related functionality is a very appealing part of the Datasette feature list I will want to spend some more time on this later.&lt;/p>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 40/100&lt;/p></description></item><item><title>TIL - using Channels in dotnet</title><link>https://www.synesthesia.co.uk/note/2023/06/07/til-using-channels-in-dotnet/</link><pubDate>Wed, 07 Jun 2023 17:25:10 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2023/06/07/til-using-channels-in-dotnet/</guid><description>&lt;h2 id="context">Context&lt;/h2>
&lt;p>Many of the code tools we build in a small non-software business relate to various forms of data cleanup.&lt;/p>
&lt;p>A classic example would be to read set of data from one system (or a spreadsheet), compare it with data from another system, make row-by-row decisions, and then create, delete or update rows in a system based on that decision.&lt;/p>
&lt;p>These are usually console apps run from the developer&amp;rsquo;s machine (typically we are looking at a couple of hundred thousand rows at most), and although they might only get used a few times a year, the code needs to be reasonably performant &lt;em>and&lt;/em> understandable.&lt;/p>
&lt;p>A typical tool will involve at least a few internet I/O operations for each row, as well as reading and writing files, so an asynchronous approach is pretty much essential.&lt;/p>
&lt;p>Although the first temptation is always a &amp;ldquo;God class&amp;rdquo; that does everything in one long method, this always fails the maintainability test, and with large numbers of rows and/or complex transformations is often horrible to make performant. However when you break down the process into logical sections you are then faced with the challenge of passing data between those sections - tempting to do everything all at once in memory but that doesn&amp;rsquo;t scale, and it can be hard to optimise the async / parallel bits of each stage.&lt;/p>
&lt;p>This week&amp;rsquo;s problem broke down into these requirements:&lt;/p>
&lt;ul>
&lt;li>read a spreadsheet of contact data that had been manually exported from our marketing automation&lt;/li>
&lt;li>match each row to the equivalent contact in CRM&lt;/li>
&lt;li>identify rows which failed to match on any of a handful of critical fields (i.e. historical sync failures)&lt;/li>
&lt;li>trigger existing cloud logic to resync the erroneous rows&lt;/li>
&lt;/ul>
&lt;h2 id="systemthreadingchannels">System.Threading.Channels&lt;/h2>
&lt;p>Although this capability has been around since Net Core 2.1, I&amp;rsquo;d not heard of it until recently.&lt;/p>
&lt;p>I recommend the video &lt;a href="https://learn.microsoft.com/en-us/shows/on-net/working-with-channels-in-net" target="_blank" rel="noopener">Working with channels in Net&lt;/a> to get a good overview.&lt;/p>
&lt;p>The System.Threading.Channels namespace provides a set of synchronization data structures for passing data between producers and consumers asynchronously. The library targets .NET Standard and works on all .NET implementations.&lt;/p>
&lt;p>Channels are an implementation of the producer/consumer conceptual programming model. In this programming model, producers asynchronously produce data, and consumers asynchronously consume that data. In other words, this model hands off data from one party to another.&lt;/p>
&lt;p>Options control the behavior of the channels, such as how many elements they&amp;rsquo;re allowed to store and what happens if that limit is reached, or whether the channel may be accessed by multiple producers or multiple consumers concurrently.&lt;/p>
&lt;p>See also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://learn.microsoft.com/en-us/dotnet/core/extensions/channels" target="_blank" rel="noopener">Channels - MSFT Learn&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://devblogs.microsoft.com/dotnet/an-introduction-to-system-threading-channels/" target="_blank" rel="noopener">An Introduction to System.Threading.Channels&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="wiring-it-all-up">Wiring it all up&lt;/h2>
&lt;p>The basic design pattern I used was to have a class for each step of the process, with each wired up with at least one of:&lt;/p>
&lt;ul>
&lt;li>an input channel&lt;/li>
&lt;li>an output channel&lt;/li>
&lt;li>an error channel (this is shared across all the stages)&lt;/li>
&lt;/ul>
&lt;figure id="figure-example-app-for-checking-marketing-contacts---data-flow-between-stages-using-via-channels">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Example app for checking marketing contacts - data flow between stages using via channels" srcset="
/note/2023/06/07/til-using-channels-in-dotnet/channels-based-app.drawio_hu4e39d11e990c14b485699b3328117e0d_48662_7574edec4e6e387bffd2a4353ce4849b.webp 400w,
/note/2023/06/07/til-using-channels-in-dotnet/channels-based-app.drawio_hu4e39d11e990c14b485699b3328117e0d_48662_9cf969d08de4b6a8b23c1906e5d3db27.webp 760w,
/note/2023/06/07/til-using-channels-in-dotnet/channels-based-app.drawio_hu4e39d11e990c14b485699b3328117e0d_48662_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2023/06/07/til-using-channels-in-dotnet/channels-based-app.drawio_hu4e39d11e990c14b485699b3328117e0d_48662_7574edec4e6e387bffd2a4353ce4849b.webp"
width="760"
height="506"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Example app for checking marketing contacts - data flow between stages using via channels
&lt;/figcaption>&lt;/figure>
&lt;p>I can&amp;rsquo;t share the full code as it is inside as larger repo, however to give you some idea of the code, the Program class is responsible for all the wiring up, then setting each stage running:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// note I am using McMaster.Extensions.CommandLineUtils&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">internal&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">Program&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// setup arguments&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="kd">static&lt;/span> &lt;span class="n">Task&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="n">Main&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">string&lt;/span>&lt;span class="p">[]&lt;/span> &lt;span class="n">args&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// setup logging&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// read configuration&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// configure services&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">app&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">CommandLineApplication&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">Program&lt;/span>&lt;span class="p">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">app&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">HelpOption&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">app&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Conventions&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">UseDefaultConventions&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">UseConstructorInjection&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sp&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">app&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ExecuteAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">catch&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">Exception&lt;/span> &lt;span class="n">ex&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Log&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Fatal&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ex&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;Unhandled exception {message}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ex&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Message&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">Task&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">FromResult&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">finally&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Log&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CloseAndFlush&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">private&lt;/span> &lt;span class="kd">async&lt;/span> &lt;span class="n">Task&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="n">OnExecuteAsync&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// check arguments&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">errors&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">inputRows&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">matches&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">reSyncNeeded&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">CreateChannels&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// start the comparer&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Task&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Run&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kd">async&lt;/span> &lt;span class="k">delegate&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">await&lt;/span> &lt;span class="n">_contactComparer&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CompareContacts&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">matches&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">reSyncNeeded&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">errors&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// start the matcher&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Task&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Run&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kd">async&lt;/span> &lt;span class="k">delegate&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">await&lt;/span> &lt;span class="n">_xrmMatcher&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">MatchRows&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">inputRows&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">matches&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">errors&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// feed the pipeline&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Task&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Run&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kd">async&lt;/span> &lt;span class="k">delegate&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">await&lt;/span> &lt;span class="n">_sheetReader&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ReadInput&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">DataPath&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">inputRows&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">errors&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// start the resyncer&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">await&lt;/span> &lt;span class="n">_resyncer&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">SyncContacts&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">reSyncNeeded&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">errors&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Unsafe&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// output the errors&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">await&lt;/span> &lt;span class="k">foreach&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">var&lt;/span> &lt;span class="n">e&lt;/span> &lt;span class="k">in&lt;/span> &lt;span class="n">errors&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Reader&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ReadAllAsync&lt;/span>&lt;span class="p">())&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogWarning&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;{source}: {message}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Source&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Message&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="m">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Configuration of channels looks a bit like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">private&lt;/span> &lt;span class="kd">static&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Channel&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">ErrorMessage&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="n">errors&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Channel&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">InputRow&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="n">inputRows&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Channel&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">MatchedPair&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="n">matches&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Channel&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">MatchedPair&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="n">reSyncNeeded&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">CreateChannels&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// create a channel to receive errors&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">errors&lt;/span> &lt;span class="p">=&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Channel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CreateUnbounded&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">ErrorMessage&lt;/span>&lt;span class="p">&amp;gt;(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">new&lt;/span> &lt;span class="n">UnboundedChannelOptions&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">SingleWriter&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// create a channel to receive the input rows&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">inputRows&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Channel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CreateBounded&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">InputRow&lt;/span>&lt;span class="p">&amp;gt;(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">new&lt;/span> &lt;span class="n">BoundedChannelOptions&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">1000&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">SingleWriter&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">FullMode&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">BoundedChannelFullMode&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Wait&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// create a channel to receive the matched pairs&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">matches&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Channel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CreateBounded&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">MatchedPair&lt;/span>&lt;span class="p">&amp;gt;(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">new&lt;/span> &lt;span class="n">BoundedChannelOptions&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">1000&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">SingleWriter&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">FullMode&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">BoundedChannelFullMode&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Wait&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// create a channel to receive the pairs needing resync&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">reSyncNeeded&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Channel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CreateBounded&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">MatchedPair&lt;/span>&lt;span class="p">&amp;gt;(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">new&lt;/span> &lt;span class="n">BoundedChannelOptions&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">10&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">SingleWriter&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">FullMode&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">BoundedChannelFullMode&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Wait&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">errors&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">inputRows&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">matches&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">reSyncNeeded&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 38/100&lt;/p></description></item><item><title>We're doomed - or are we?</title><link>https://www.synesthesia.co.uk/2023/06/07/doomed-or-are-we/</link><pubDate>Wed, 07 Jun 2023 06:47:47 +0100</pubDate><guid>https://www.synesthesia.co.uk/2023/06/07/doomed-or-are-we/</guid><description>&lt;h2 id="a-soup-of-views">A soup of views&lt;/h2>
&lt;p>There&amp;rsquo;s a lot of talk around the net at the moment about the perils of uncontrolled AI (which for the context of this post mean &lt;a href="https://garden.synesthesia.co.uk/Large%20Language%20Model" target="_blank" rel="noopener">Large Language Models&lt;/a>), for example a large group of experts have signed an &lt;a href="https://futureoflife.org/open-letter/pause-giant-ai-experiments" target="_blank" rel="noopener">open letter calling for a pause in development whilst risks and regulation are explored&lt;/a>.&lt;/p>
&lt;p>Another line of warning relates to implicit biases in the content used to train the models (e.g. researchers such as &lt;a href="https://dl.acm.org/doi/10.1145/3442188.3445922" target="_blank" rel="noopener">Bender and Gebru&lt;/a> have highlighted the the danger that GPT tools which are trained on &lt;em>&amp;ldquo;the internet&amp;rdquo;&lt;/em> tend to &lt;em>&amp;ldquo;risk perpetuating dominant viewpoints, increasing power imbalances and further reifying inequality&amp;rdquo;&lt;/em>).&lt;/p>
&lt;p>Even further, the dominant world-view of the companies and big-tech leaders who are driving the research comes into focus for criticism, for example &lt;a href="https://www.xriskology.com/" target="_blank" rel="noopener">Émile P. Torres&lt;/a> and &lt;a href="-https://dair-community.social/@timnitGebru">Timnit Gebru&lt;/a> have &lt;a href="https://twitter.com/xriskology/status/1635313845400113153" target="_blank" rel="noopener">coined&lt;/a> the acronym &lt;a href="https://twitter.com/xriskology/status/1635313838508883968?s=20" target="_blank" rel="noopener">TESCREAL&lt;/a> to describe a &lt;a href="https://washingtonspectator.org/understanding-tescreal-silicon-valleys-rightward-turn/" target="_blank" rel="noopener">set of right-wing ideologies&lt;/a> that they see &lt;a href="%28https://peopleofcolorintech.com/articles/timnit-gebru-and-emile-torres-call-out-racist-roots-of-the-tech-elites-ai-ideologies/%29">underlying the motivations of many of the people and companies involved&lt;/a>.&lt;/p>
&lt;p>Balancing this are views that all the statements about AI being an &amp;rsquo;extinction risk&amp;rsquo; are too vague (with the exception of possible weaponisation) for effective action to be taken:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;I am strongly in favour of being as careful as we possibly can be, and have been saying so publicly for the past ten years, it is important to maintain a sense of proportion – particularly when discussing the extinction of a species of eight billion individuals. AI can create social problems that must really be averted. As scientists, we have a duty to understand them and then do our best to solve them. But the first step is to name and describe them – and to be specific.&amp;rdquo;&lt;/p>
&lt;p>— &lt;a href="https://theconversation.com/if-were-going-to-label-ai-an-extinction-risk-we-need-to-clarify-how-it-could-happen-206738" target="_blank" rel="noopener">Nello Cristianini&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>For a complete contrast, Cory Doctorow &lt;a href="https://doctorow.medium.com/ayyyyyy-eyeeeee-4ac92fa2eed" target="_blank" rel="noopener">sees all of this&lt;/a> as &lt;a href="https://sts-news.medium.com/youre-doing-it-wrong-notes-on-criticism-and-technology-hype-18b08b4307e5" target="_blank" rel="noopener">criti-hype&lt;/a> — &lt;em>criticism that incorporates a self-serving commercial boast&lt;/em>&lt;/p>
&lt;blockquote>
&lt;p>If AI is an existential threat to the human race, it is powerful and therefore valuable. The problems with a powerful AI are merely “shakedown” bugs, not showstoppers. Bosses can use AI to replace human workers, even though the AI does a much worse job — just give it a little time and those infelicities will be smoothed over by the wizards who created these incredibly dangerous and therefore powerful tools.&lt;/p>
&lt;/blockquote>
&lt;p>Doctorow thinks that in reality AI is just one more step on the road to the &lt;a href="https://pluralistic.net/2023/01/21/potemkin-ai/#hey-guys" target="_blank" rel="noopener">&amp;rsquo;enshittificaiton&amp;rsquo;&lt;/a> at the heart of many big-tech business models, or in &lt;a href="https://aus.social/@PaulWay/110496947991359261" target="_blank" rel="noopener">other words&lt;/a> this is just one more example of how late-stage capitalism works, &lt;em>&amp;rsquo;the corporations that use AI try to take over the world&amp;rsquo;&lt;/em>.&lt;/p>
&lt;p>To borrow from &lt;a href="https://mastodon.social/@harold/110499816999861929" target="_blank" rel="noopener">Harold Jarche&lt;/a>:&lt;/p>
&lt;figure id="figure-a-mcluhan-tetrad-on-capitalism---c-harold-jarche---cc-by-nc-sa-40">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="A McLuhan tetrad on Capitalism - (c) Harold Jarche - CC BY-NC-SA 4.0" srcset="
/2023/06/07/doomed-or-are-we/jarche-tetrad-capitalism_hud725d1007d8c4670d774a5391545e80b_490254_23db0b17b379153c1309b6c3a4373a60.webp 400w,
/2023/06/07/doomed-or-are-we/jarche-tetrad-capitalism_hud725d1007d8c4670d774a5391545e80b_490254_48b883f9ce3a92e0ef3588f5bf0b6881.webp 760w,
/2023/06/07/doomed-or-are-we/jarche-tetrad-capitalism_hud725d1007d8c4670d774a5391545e80b_490254_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2023/06/07/doomed-or-are-we/jarche-tetrad-capitalism_hud725d1007d8c4670d774a5391545e80b_490254_23db0b17b379153c1309b6c3a4373a60.webp"
width="760"
height="593"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
A McLuhan tetrad on Capitalism - (c) Harold Jarche - CC BY-NC-SA 4.0
&lt;/figcaption>&lt;/figure>
&lt;h2 id="so-what-can-an-individual-do">So what can an individual do?&lt;/h2>
&lt;p>Heuristically, the usual basic tenets of making sense of new technologies and the hype around them would seem to apply:&lt;/p>
&lt;ul>
&lt;li>learn &lt;em>&amp;rsquo;enough&amp;rsquo;&lt;/em> about what it is and the basics of how it does what it does&lt;/li>
&lt;li>think about the implied world-view in any statement&lt;/li>
&lt;li>follow the money&lt;/li>
&lt;li>find narrow use-cases where it seems likely the benefits out-weigh the risks, and experiment&lt;/li>
&lt;/ul>
&lt;h2 id="where-am-i-experimenting-currently">Where am I experimenting currently?&lt;/h2>
&lt;p>The following areas seem useful to me at the moment:&lt;/p>
&lt;ul>
&lt;li>I am using &lt;a href="https://docs.github.com/en/copilot/getting-started-with-github-copilot" target="_blank" rel="noopener">GitHub CoPilot&lt;/a> as an aid for both personal and professional software writing&lt;/li>
&lt;li>where I work, I have guided the sales team to get going with Microsoft &lt;a href="https://www.microsoft.com/en-us/microsoft-viva/sales#overview" target="_blank" rel="noopener">Viva Sales&lt;/a> within Dynamics 365&lt;/li>
&lt;li>I am occasionally playing with ChatGPT and similar to put together first drafts of things&lt;/li>
&lt;li>very likely to experiment with Microsoft 365 CoPilot once it is available to us&lt;/li>
&lt;/ul>
&lt;h2 id="a-tentative-conclusion-for-now">A tentative conclusion, for now&lt;/h2>
&lt;p>Overall my sense is it&amp;rsquo;s too soon to say (in terms specifically of the LLM tools - there are plenty of other examples in the wider sphere of AI which are already proven sources of benefit).&lt;/p>
&lt;p>Unlike other over-hyped technologies such as blockchain and crypto, this one looks like it might be genuinely useful in certain scenarios.&lt;/p>
&lt;p>As always, &lt;strong>caveat emptor&lt;/strong>.&lt;/p>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 37/100&lt;/p>
&lt;p>&lt;ins datetime="2023-06-08T06:27:00TZD">08/06/2023 Minor edit for style&lt;/ins>&lt;/p></description></item><item><title>Applying ChatGPT-like tools across your own data</title><link>https://www.synesthesia.co.uk/note/2023/05/16/applying-chatgpt-like-tools-across-your-own-data/</link><pubDate>Tue, 16 May 2023 07:09:48 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2023/05/16/applying-chatgpt-like-tools-across-your-own-data/</guid><description>&lt;p>The current speed of iteration across tools based on Large Language Models, both corporate and open-source, is way too fast for a non-specialist to keep up, a classic case of the need to apply &lt;a href="https://jarche.com/pkm/" target="_blank" rel="noopener">Personal Knowledge Mastery&lt;/a> techniques and identify a trusted network.&lt;/p>
&lt;p>This post draws on an author who is new to me, but who I suspect may be worth following, &lt;a href="https://github.com/iMicknl" target="_blank" rel="noopener">Mick Vleeshouwer&lt;/a>, who is currently an AI Cloud Solution Architect at Microsoft.&lt;/p>
&lt;h2 id="applying-chatgpt-like-tools-across-your-own-data">Applying ChatGPT-like tools across your own data&lt;/h2>
&lt;p>In &lt;a href="https://medium.com/@imicknl/how-to-create-a-private-chatgpt-with-your-own-data-15754e6378a1" target="_blank" rel="noopener">How to create a private ChatGPT with your own data&lt;/a> he sets out some core principles for building a tool that allows an individual or company to use ChatGPT (or similar) to interrogate their own knowledge base, in summary:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Avoid trying to fine-tune an LLM with your own data&lt;/p>
&lt;ul>
&lt;li>risk of &lt;a href="https://hyp.is/4OpjfPOyEe2FwC8LG5eQRw/openai.com/research/gpt-4" target="_blank" rel="noopener">hallucinations&lt;/a> (incorrect answers)&lt;/li>
&lt;li>lack of traceability&lt;/li>
&lt;li>lack of access control&lt;/li>
&lt;li>ongoing costs to retrain the model as new documents become available&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Separate your knowledge from your language model&lt;/p>
&lt;ul>
&lt;li>the key principle is to apply your own understanding of your own information to provide the most relevant information to the LLM&lt;/li>
&lt;li>not viable to feed ALL your documents to the model with each query (cost, time)&lt;/li>
&lt;li>instead, search first for most relevant text&lt;/li>
&lt;li>generate a prompt for the LLM that combines the user question with the relevant text&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Only retrieve the most relevant data&lt;br>
Build a knowledge base from your source material than can be the target
for an effective semantic search&lt;/p>
&lt;ul>
&lt;li>Chunk and split the data
&lt;ul>
&lt;li>per page or with a splitter&lt;/li>
&lt;li>maybe use a search engine service&lt;/li>
&lt;li>or perhaps precomputing embeddings and compare with user input&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>explore different chunking strategies to improve relevance&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Generate a smart prompt for your LLM&lt;br>
Mick gives &lt;a href="https://github.com/Azure-Samples/azure-search-openai-demo/blob/main/app/backend/approaches/retrievethenread.py" target="_blank" rel="noopener">an example of a prompt template&lt;/a> that frames how a question should be answered&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="comparison-with-commercial-product-announcements">Comparison with commercial product announcements&lt;/h2>
&lt;p>Given that Mick works for Microsoft, it&amp;rsquo;s interesting to compare his &amp;ldquo;basic principles&amp;rdquo; post with what is being said in Microsoft marketing about their commercial AI products under the &amp;lsquo;&lt;a href="https://news.microsoft.com/reinventing-productivity/" target="_blank" rel="noopener">CoPilot&lt;/a>&amp;rsquo; brand.&lt;/p>
&lt;p>One recent post (with a title that looks like it has been designed to have every buzz word) is &lt;a href="https://cloudblogs.microsoft.com/dynamics365/bdm/2023/05/12/how-copilot-in-microsoft-dynamics-365-and-power-platform-delivers-enterprise-ready-ai-built-for-security-and-privacy/" target="_blank" rel="noopener">How Copilot in Microsoft Dynamics 365 and Power Platform delivers enterprise-ready AI built for security and privacy&lt;/a>.&lt;/p>
&lt;p>Scrolling past the puffery to the bit about &amp;ldquo;&lt;a href="https://hyp.is/QT_AdPPGEe2wXpMRM835hg/cloudblogs.microsoft.com/dynamics365/bdm/2023/05/12/how-copilot-in-microsoft-dynamics-365-and-power-platform-delivers-enterprise-ready-ai-built-for-security-and-privacy/" target="_blank" rel="noopener">how it works&lt;/a>&amp;rdquo; you can see can how this relates to the same principles espoused in Mick&amp;rsquo;s article:&lt;/p>
&lt;ul>
&lt;li>receives input prompt from user inside app context (e.g. Dynamics 365 or Power Apps)&lt;/li>
&lt;li>access data and documents security trimmed for the user access permitted by Microsoft Graph and Dynamics&lt;/li>
&lt;li>use this contextual information to ground the LLM query (i.e. provided context in the prompt)&lt;/li>
&lt;li>post-process the LLM response for security and compliance checks, and to generate app commands&lt;/li>
&lt;li>return a recommended response plus commands back to apps&lt;/li>
&lt;/ul>
&lt;p>The article also adds another reason why you don&amp;rsquo;t want to re-train a model with your personal/business data (apart from time and cost) - security and confidentiality.&lt;/p>
&lt;h2 id="references">References&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://langchain.readthedocs.io/en/latest/reference/modules/text_splitter.html" target="_blank" rel="noopener">Text splitters&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://learn.microsoft.com/en-us/azure/search/semantic-ranking" target="_blank" rel="noopener">Example of semantic ranking search service (Bing)&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://towardsdatascience.com/neural-network-embeddings-explained-4d028e6f0526" target="_blank" rel="noopener">Deep dive on embeddings - Towards Data Science&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/dair-ai/Prompt-Engineering-Guide" target="_blank" rel="noopener">Prompt Engineeering Guide&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 32/100&lt;/p></description></item><item><title>Adding label column for optionset in fact table</title><link>https://www.synesthesia.co.uk/note/2023/05/05/adding-label-column-for-optionset-in-fact-table/</link><pubDate>Fri, 05 May 2023 07:47:42 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2023/05/05/adding-label-column-for-optionset-in-fact-table/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>In the &lt;a href="https://www.synesthesia.co.uk/note/2023/05/04/adding-columns-to-parquet-based-fact-table/">previous post&lt;/a> I discussed adding new columns to historical snapshots of a fact table stored in Parquet format.&lt;/p>
&lt;p>As a reminder, this work is within a datalake that is processing (amongst other sources) sales data from Dynamics 365:&lt;/p>
&lt;figure id="figure-overview-of-datalake-with-dynamics-sales-data">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Overview of datalake with Dynamics sales data" srcset="
/note/2023/05/05/adding-label-column-for-optionset-in-fact-table/lake-overview.drawio_hub93613da85dcaceb9942927ce11c6b46_101491_a82e629d6de635db6c217271c3e3ce5b.webp 400w,
/note/2023/05/05/adding-label-column-for-optionset-in-fact-table/lake-overview.drawio_hub93613da85dcaceb9942927ce11c6b46_101491_ea7077423e750f7f40f9bcc85c6398d2.webp 760w,
/note/2023/05/05/adding-label-column-for-optionset-in-fact-table/lake-overview.drawio_hub93613da85dcaceb9942927ce11c6b46_101491_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2023/05/05/adding-label-column-for-optionset-in-fact-table/lake-overview.drawio_hub93613da85dcaceb9942927ce11c6b46_101491_a82e629d6de635db6c217271c3e3ce5b.webp"
width="760"
height="379"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Overview of datalake with Dynamics sales data
&lt;/figcaption>&lt;/figure>
&lt;p>Two of the new columns I added were based on local optionset fields (or in the new nomenclature, choice columns) in the opportunity entity (table).&lt;/p>
&lt;p>As these value fields contain an opaque integer, reporting would have to do a lookup to another dimension table containing the values.&lt;/p>
&lt;p>Alternatively, and to make the reporting much simpler, I want to add additional columns to the fact table containing the label for each choice.&lt;/p>
&lt;p>This work is split into these stages:&lt;/p>
&lt;ul>
&lt;li>modify the notebook that generates the fact table so that &lt;em>future&lt;/em> daily snapshots have the label columns populated with the correct data&lt;/li>
&lt;li>create a copy of all the historical daily snapshots with the columns added if necessary, historically with a blank label (the sales team have only just started using these fields)&lt;/li>
&lt;li>manually replace the existing folder of fact snapshots with the folder containing the updated snapshots&lt;/li>
&lt;li>update the reporting views&lt;/li>
&lt;li>refresh the Power BI Model&lt;/li>
&lt;/ul>
&lt;h2 id="modifying-the-fact-builder-notebook">Modifying the fact-builder notebook&lt;/h2>
&lt;p>This change has to do the following:&lt;/p>
&lt;ul>
&lt;li>load the data for the local optionsets from the &amp;ldquo;clean&amp;rdquo; datalake&lt;/li>
&lt;li>create two joins between our existing sales facts and the two optionsets, adding the label columns into the result&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">datetime&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">date&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">pyspark.sql&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">functions&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">F&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">processedDate&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">date&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">today&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">processedDateString&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">processedDate&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strftime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;%Y-%m-&lt;/span>&lt;span class="si">%d&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">sourceStorageAccount&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;MYCLEANLAKE.dfs.core.windows.net&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">sourceContainer&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;MYDATAVERSECLEANCONTAINER&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># omitting all the existing code that builds &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># the existing fact table in data frame fctConversations&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># read in the cleaned optionset data&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">localOptionsSourceFolder&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;metadata/localoptionsets/processedDate=&lt;/span>&lt;span class="si">{pd}&lt;/span>&lt;span class="s1">/*.parquet&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pd&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">processedDateString&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">localOptionsDF&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">spark&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">parquet&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;abfss://&lt;/span>&lt;span class="si">{sourceContainer}&lt;/span>&lt;span class="s1">@&lt;/span>&lt;span class="si">{storageAccount}&lt;/span>&lt;span class="s1">/&lt;/span>&lt;span class="si">{sourceFolder}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>\
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sourceContainer&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">sourceContainer&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">storageAccount&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">sourceStorageAccount&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sourceFolder&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">localOptionsSourceFolder&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">localOptionsDF&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">printSchema&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The local optionsets dataframe has this schema:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">root
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> |-- EntityName: string (nullable = true)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> |-- OptionSetName: string (nullable = true)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> |-- Option: long (nullable = true)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> |-- LocalizedLabel: string (nullable = true)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For each of the optionset columns we are augmenting, we need to join our facts to a filtered view of the optionset data:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># filter out the optionset values for opportunity/ssat_category&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">oppCategoryOptionsDF&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">localOptionsDF&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">filter&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">localOptionsDF&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">EntityName&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;opportunity&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">filter&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">localOptionsDF&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">OptionSetName&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s1">&amp;#39;ssat_category&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">withColumnRenamed&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;LocalizedLabel&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;opp_categorylabel&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">drop&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;EntityName&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">drop&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;OptionSetName&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">oppCategoryOptionsDF&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">show&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># join existing facts dataframe to the opportunity/ssat_category dataframe&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># create new column opp_categorylabel containing the label text&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="s1">&amp;#39;ssat_category&amp;#39;&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">fctConversations&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">columns&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">&amp;amp;&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;opp_categorylabel&amp;#39;&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">fctConversations&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">columns&lt;/span>&lt;span class="p">)):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">categoryJoinDF&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">fctConversations&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">oppCategoryOptionsDF&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">fctConversations&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ssat_category&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="n">oppCategoryOptionsDF&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Option&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;left&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">drop&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;Option&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fctConversations&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">categoryJoinDF&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># filter out the optionset values for opportunity/ssat_source &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">oppSourceOptionsDF&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">localOptionsDF&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">filter&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">localOptionsDF&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">EntityName&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;opportunity&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">filter&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">localOptionsDF&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">OptionSetName&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s1">&amp;#39;ssat_source&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">withColumnRenamed&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;LocalizedLabel&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;opp_sourcelabel&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">drop&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;EntityName&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">drop&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;OptionSetName&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">oppSourceOptionsDF&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">show&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># join existing facts dataframe to the opportunity/ssat_source dataframe&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># create new column opp_categorylabel containing the label text&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="s1">&amp;#39;ssat_source&amp;#39;&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">fctConversations&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">columns&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">&amp;amp;&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;opp_sourcelabel&amp;#39;&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">fctConversations&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">columns&lt;/span>&lt;span class="p">)):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;do source&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sourceJoinDF&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">fctConversations&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">oppSourceOptionsDF&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">fctConversations&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ssat_source&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="n">oppSourceOptionsDF&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Option&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;left&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">drop&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;Option&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fctConversations&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">sourceJoinDF&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="adding-the-label-columns-to-historical-snapshots">Adding the label columns to historical snapshots&lt;/h2>
&lt;p>This is done with the same process as shown in the &lt;a href="https://www.synesthesia.co.uk/note/2023/05/04/adding-columns-to-parquet-based-fact-table/">previous post&lt;/a>.&lt;/p>
&lt;h2 id="manually-move-updated-fact-snapshots-into-place">Manually move updated fact snapshots into place&lt;/h2>
&lt;p>Many ways of doing this, the simplest of which is just done with folder renames in the storage account&lt;/p>
&lt;h2 id="update-the-reporting-views">Update the reporting views&lt;/h2>
&lt;p>In the Azure portal, find the resource page for the Synapse Analytics workspace, and find the Serverless SQL endpoint:&lt;/p>
&lt;figure id="figure-find-the-serverless-sql-endpoint">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Find the Serverless SQL endpoint" srcset="
/note/2023/05/05/adding-label-column-for-optionset-in-fact-table/synapse-serverless-sql-url_hu1754b32b7ec42257569625b79096dd76_89861_16a7706abd6921e85e36e0a661def7ad.webp 400w,
/note/2023/05/05/adding-label-column-for-optionset-in-fact-table/synapse-serverless-sql-url_hu1754b32b7ec42257569625b79096dd76_89861_d83df2a4449018ea55662cda057bc9d7.webp 760w,
/note/2023/05/05/adding-label-column-for-optionset-in-fact-table/synapse-serverless-sql-url_hu1754b32b7ec42257569625b79096dd76_89861_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2023/05/05/adding-label-column-for-optionset-in-fact-table/synapse-serverless-sql-url_hu1754b32b7ec42257569625b79096dd76_89861_16a7706abd6921e85e36e0a661def7ad.webp"
width="760"
height="214"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Find the Serverless SQL endpoint
&lt;/figcaption>&lt;/figure>
&lt;p>Install and open &lt;a href="https://azure.microsoft.com/en-gb/products/data-studio/" target="_blank" rel="noopener">Azure Data Studio&lt;/a>, and connect to the Serverless SQL Endpoint.&lt;/p>
&lt;p>Open the view that is used to query the fact table, right click and select &lt;strong>Script as Alter&lt;/strong>. This will generate a script that looks similar to this, just run it:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-SQL" data-lang="SQL">&lt;span class="line">&lt;span class="cl">&lt;span class="k">SET&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">ANSI_NULLS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">ON&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">GO&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">SET&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">QUOTED_IDENTIFIER&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">ON&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">GO&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">ALTER&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">VIEW&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">funnel&lt;/span>&lt;span class="p">].[&lt;/span>&lt;span class="n">vwFctConversations&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">AS&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">SELECT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">fc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">filepath&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">as&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">ProcessedDate&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">FROM&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">OPENROWSET&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">BULK&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;facts/fctConversations/processedDate=*/*.snappy.parquet&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">DATA_SOURCE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;ExternalDataSourceDataLakeSales&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">FORMAT&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;PARQUET&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">fc&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">WHERE&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">fc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">filepath&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">CONVERT&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">VARCHAR&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">20&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">CAST&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">GETDATE&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">AS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">Date&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">120&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">GO&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="refresh-the-power-bi-model">Refresh the Power BI Model&lt;/h2>
&lt;ul>
&lt;li>Open the Power BI Model in Power BI Desktop&lt;/li>
&lt;li>Open the Data blade&lt;/li>
&lt;li>right click on the table that is mapped to the SQL view&lt;/li>
&lt;li>select Refresh Data&lt;/li>
&lt;li>if necessary, drag the new fields onto filters&lt;/li>
&lt;li>save the model, and if necessary republish to any Power BI workspaces you are using&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 31/100&lt;/p></description></item><item><title>Adding columns to parquet-based fact table</title><link>https://www.synesthesia.co.uk/note/2023/05/04/adding-columns-to-parquet-based-fact-table/</link><pubDate>Thu, 04 May 2023 07:21:45 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2023/05/04/adding-columns-to-parquet-based-fact-table/</guid><description>&lt;p>Docs: &lt;a href="https://docs.hugoblox.com/content/writing-markdown-latex/#callouts" target="_blank" rel="noopener">https://docs.hugoblox.com/content/writing-markdown-latex/#callouts&lt;/a>&lt;/p>
&lt;h2 id="parameters">Parameters&lt;/h2>
&lt;p>#0 : optional, positional
Add the class &amp;ldquo;alert-{#0}&amp;rdquo; to the &lt;div> container of the callout element.
Default Hugo Blox Builder available styles are &amp;ldquo;note&amp;rdquo; and &amp;ldquo;warning&amp;rdquo;.
Otherwise you can create your own class (see &lt;code>assets/scss/blox-bootstrap/elements/_callout.scss&lt;/code>).
*/}}&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
This example uses Azure Synapse Analytics, but the principles could be extended to any data analytics tool that uses &lt;a href="https://spark.apache.org/docs/latest/api/python/index.html" target="_blank" rel="noopener">PySpark&lt;/a>.
&lt;/div>
&lt;/div>
&lt;h2 id="background">Background&lt;/h2>
&lt;p>To enable us to run data analytics against our Dynamics 365 data history, I have created a datalake using &lt;a href="https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-introduction" target="_blank" rel="noopener">Azure Datalake Storage V2&lt;/a>, Synapse Analytics (&lt;a href="https://learn.microsoft.com/en-us/azure/synapse-analytics/spark/apache-spark-development-using-notebooks" target="_blank" rel="noopener">Notebooks&lt;/a>, &lt;a href="https://learn.microsoft.com/en-us/azure/synapse-analytics/get-started-pipelines" target="_blank" rel="noopener">Pipelines&lt;/a> and &lt;a href="https://learn.microsoft.com/en-us/azure/synapse-analytics/sql/on-demand-workspace-overview" target="_blank" rel="noopener">Serverless SQL&lt;/a>) and &lt;a href="https://learn.microsoft.com/en-us/power-apps/maker/data-platform/azure-synapse-link-data-lake" target="_blank" rel="noopener">Dataverse Synapse Link&lt;/a>, with &lt;a href="https://learn.microsoft.com/en-us/azure/synapse-analytics/get-started-visualize-power-bi" target="_blank" rel="noopener">Power BI&lt;/a> as the reporting layer.&lt;/p>
&lt;p>A high level view of the architecture looks like this (ignoring data sources other than Dataverse):&lt;/p>
&lt;figure id="figure-overview-of-datalake-with-dynamics-sales-data">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Overview of datalake with Dynamics sales data" srcset="
/note/2023/05/04/adding-columns-to-parquet-based-fact-table/lake-overview.drawio_hub93613da85dcaceb9942927ce11c6b46_101491_a82e629d6de635db6c217271c3e3ce5b.webp 400w,
/note/2023/05/04/adding-columns-to-parquet-based-fact-table/lake-overview.drawio_hub93613da85dcaceb9942927ce11c6b46_101491_ea7077423e750f7f40f9bcc85c6398d2.webp 760w,
/note/2023/05/04/adding-columns-to-parquet-based-fact-table/lake-overview.drawio_hub93613da85dcaceb9942927ce11c6b46_101491_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2023/05/04/adding-columns-to-parquet-based-fact-table/lake-overview.drawio_hub93613da85dcaceb9942927ce11c6b46_101491_a82e629d6de635db6c217271c3e3ce5b.webp"
width="760"
height="379"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Overview of datalake with Dynamics sales data
&lt;/figcaption>&lt;/figure>
&lt;h2 id="parquet-file-format">Parquet file format&lt;/h2>
&lt;p>All cleaned and structured data in our lake is stored in the &lt;a href="https://www.databricks.com/glossary/what-is-parquet" target="_blank" rel="noopener">Parquet&lt;/a> format.&lt;/p>
&lt;p>Apache Parquet is an open source, column-oriented data file format designed for efficient data storage and retrieval. It provides efficient data compression and encoding schemes with enhanced performance to handle complex data in bulk. Apache Parquet is designed to be a common interchange format for both batch and interactive workloads.&lt;/p>
&lt;p>The advantages of this format over CSV are that it is good for storing big data of any kind, saves on cloud storage space by using highly efficient column-wise compression, and flexible encoding schemes for columns with different data types, and offers increased data throughput and performance using techniques like data skipping, whereby queries that fetch specific column values need not read the entire row of data.&lt;/p>
&lt;p>However, it is not a format that can be trivially updated. Many data lake requirements never need to process updates, but on the occasions when it is needed, the common practice with parquet is to copy and transform, then replace the original.&lt;/p>
&lt;h2 id="adding-columns">Adding columns&lt;/h2>
&lt;p>The business requirement was to carry some new columns added to Dynamics through into our reporting data. Previously I have added these columns into our daily cleaned data snapshots, and also
to the new daily snapshots of the fact table (this was done by editing and publishing the relevant notebooks). However this means that all previous snapshots are missing the columns, and this gives problems when trying to run views across the whole dataset.&lt;/p>
&lt;p>If the fact and dimension tables were maintained in a database such as SQL server this would be a matter of adding the columns to the relevant tables and running a script to populate the rows.&lt;/p>
&lt;p>However for the reasons above we have chosen to store this data in Parquet files, partitioned by the processing date of each daily snapshot.&lt;/p>
&lt;p>As the format is effectively read-only, the overall approach is:&lt;/p>
&lt;ul>
&lt;li>iterate over the existing data one partition at a time (i.e. one daily snapshot at a time)&lt;/li>
&lt;li>read the snapshot into a dataframe&lt;/li>
&lt;li>check for the existence of each new column, and if not present insert as empty&lt;/li>
&lt;li>write out the data frame to a new set of data files&lt;/li>
&lt;li>replace the &amp;ldquo;in use&amp;rdquo; files with the new versions&lt;/li>
&lt;/ul>
&lt;h3 id="setting-up-configuration-data">Setting up configuration data&lt;/h3>
&lt;p>Docs: &lt;a href="https://docs.hugoblox.com/content/writing-markdown-latex/#callouts" target="_blank" rel="noopener">https://docs.hugoblox.com/content/writing-markdown-latex/#callouts&lt;/a>&lt;/p>
&lt;h2 id="parameters-1">Parameters&lt;/h2>
&lt;p>#0 : optional, positional
Add the class &amp;ldquo;alert-{#0}&amp;rdquo; to the &lt;div> container of the callout element.
Default Hugo Blox Builder available styles are &amp;ldquo;note&amp;rdquo; and &amp;ldquo;warning&amp;rdquo;.
Otherwise you can create your own class (see &lt;code>assets/scss/blox-bootstrap/elements/_callout.scss&lt;/code>).
*/}}&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
This code assumes that authorised links from the Synapse Analytics workspace to the relevant ADLSv2 storage accounts have already been configured.
&lt;/div>
&lt;/div>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">datetime&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">datetime&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">date&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">timedelta&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># configure columns to add&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">newcols&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;utm_campaign&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;utm_medium&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;utm_source&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># setup the source and sink locations&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">inputContainer&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;sales&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">inputStorageAccount&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;MYSTORAGEACCOUNT.dfs.core.windows.net&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">inputFolder&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;facts/fctConversations&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">outputStorageAccount&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;MYSTORAGEACCOUNT.dfs.core.windows.net&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">outputContainer&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;sales&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># this needs to be different from inputFolder &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># as we use a write then rename approach&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">outputFolder&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;facts2/fctConversations&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">archivesuffix&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">datetime&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">utcnow&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strftime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;%Y-%m-&lt;/span>&lt;span class="si">%d&lt;/span>&lt;span class="s2">-%H%M&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">archiveStorageAccount&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;MYSTORAGEACCOUNT.dfs.core.windows.net&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">archiveContainer&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;salesarchive&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">archiveFolder&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;facts/fctConversations-&lt;/span>&lt;span class="si">%s&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span> &lt;span class="o">%&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">archivesuffix&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># configure the date range of daily snapshots we are going to process&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># set this to be the first daily snapshot date to process&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">start_date&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">date&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2021&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">11&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">27&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># set this to be the most recent daily snapshot date to process&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">end_date&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">date&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2023&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># we loop one day at a time&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">delta&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">timedelta&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">days&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="generating-the-updated-fact-table">Generating the updated fact table&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">pyspark.sql&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">functions&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">F&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">os.path&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">os&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">path&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">processedDate&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">start_date&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">while&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">processedDate&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">end_date&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">processedDateString&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">processedDate&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">strftime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;%Y-%m-&lt;/span>&lt;span class="si">%d&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">processedDateString&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">end&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">filePath&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;abfss://&lt;/span>&lt;span class="si">{sourceContainer}&lt;/span>&lt;span class="s1">@&lt;/span>&lt;span class="si">{storageAccount}&lt;/span>&lt;span class="s1">/&lt;/span>&lt;span class="si">{sourceFolder}&lt;/span>&lt;span class="s1">/processedDate=&lt;/span>&lt;span class="si">{processedDateString}&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span>\
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">.&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">sourceContainer&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">inputContainer&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">storageAccount&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">inputStorageAccount&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sourceFolder&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">inputFolder&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">processedDateString&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">processedDateString&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;reading from &lt;/span>&lt;span class="si">%s&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span> &lt;span class="o">%&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">filePath&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">inputDF&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">spark&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">parquet&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">filePath&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">columns&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">inputDF&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">columns&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">col&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">newcols&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">col&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">columns&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">inputDF&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">inputDF&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">withColumn&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">col&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">F&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">lit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kc">None&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cast&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;string&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># uncomment these lines to check columns have been added&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#columns2 = inputDF.columns&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#for col in newcols:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># print(&amp;#39;pre-write missing %s&amp;#39; %(col)) if col not in columns2 else 0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#write updated dataframe&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">outputPath&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;abfss://&lt;/span>&lt;span class="si">{container}&lt;/span>&lt;span class="s2">@&lt;/span>&lt;span class="si">{storageAccount}&lt;/span>&lt;span class="s2">/&lt;/span>&lt;span class="si">{outputFolder}&lt;/span>&lt;span class="s2">/processedDate=&lt;/span>&lt;span class="si">{processedDateString}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">container&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">outputContainer&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">storageAccount&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">outputStorageAccount&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">outputFolder&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">outputFolder&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">processedDateString&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">processedDateString&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;writing to: &lt;/span>&lt;span class="si">%s&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span> &lt;span class="o">%&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">outputPath&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">inputDF&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">mode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;append&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">parquet&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">outputPath&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># uncomment these lines to check file is updated by reading back&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#print(&amp;#39;checking: %s&amp;#39; %(outputPath))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#checkDF = spark.read.parquet(outputPath)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#checkcolumns = checkDF.columns&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">#for col in newcols:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># print(&amp;#39;read-back missing %s&amp;#39; %(col)) if col not in checkcolumns else 0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Processing error!&amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> \
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s2">&amp;#34;ERROR : &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nb">str&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">processedDate&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="n">delta&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="moving-the-converted-files-into-place">Moving the converted files into place&lt;/h2>
&lt;p>To finally replace the sales facts with our new table, we need to move the new set of files into the correct directory, deleting (or better, moving to archive) the original set.&lt;/p>
&lt;p>I haven&amp;rsquo;t documented this as there are several approaches that can work, including a set of steps in a notebook (using &lt;code>from notebookutils import mssparkutils&lt;/code> to access file move. copy and delete commands), in a Data Flow, or by direct interaction with the data lake storage account(s) using the Azure CLI.&lt;/p>
&lt;h2 id="finishing-up">Finishing up&lt;/h2>
&lt;p>Any consumers of the fact table will need to be updated to access the new columns. In our case this meant:&lt;/p>
&lt;ul>
&lt;li>regenerate the relevant view in the serverless SQL pool we use to make the data accessible from Power BI&lt;/li>
&lt;li>rebuild any Power BI model that consumes the table&lt;/li>
&lt;/ul>
&lt;h2 id="next-steps">Next steps&lt;/h2>
&lt;p>In the real world case behind this example, two of the extra columns were &lt;code>choice&lt;/code> columns in the original Dynamics model. The approach in this note adds them as the choice value, but for easier reporting we will want to augment them with a second column for each one containing the corresponding label.&lt;/p>
&lt;p>The code to do this will be in the next note.&lt;/p>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 31/100&lt;/p></description></item><item><title>This is what happens</title><link>https://www.synesthesia.co.uk/2023/04/27/this-is-what-happens/</link><pubDate>Thu, 27 Apr 2023 17:22:23 +0100</pubDate><guid>https://www.synesthesia.co.uk/2023/04/27/this-is-what-happens/</guid><description>&lt;p>When you combine a couple of weeks where you are mostly away from the keyboard, followed by a couple of weeks of totally heads-down work delivery, mixed in with some highly significant news away from work, and a bit of minor surgery:&lt;/p>
&lt;ul>
&lt;li>no time to read interesting threads&lt;/li>
&lt;li>no time to keep up with feeds&lt;/li>
&lt;li>no energy to have non-work ideas that are worth writing about&lt;/li>
&lt;li>no output at all on the site&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 31/100&lt;/p></description></item><item><title>Next steps for Personal Knowledge Mastery</title><link>https://www.synesthesia.co.uk/2023/03/20/next-steps-for-personal-knowledge-mastery/</link><pubDate>Mon, 20 Mar 2023 10:47:32 +0000</pubDate><guid>https://www.synesthesia.co.uk/2023/03/20/next-steps-for-personal-knowledge-mastery/</guid><description>&lt;p>I&amp;rsquo;ve reached the end of Harold Jarche&amp;rsquo;s &lt;a href="https://jarche.com/pkm/" target="_blank" rel="noopener">Personal Knowledge Mastery&lt;/a> course, it&amp;rsquo;s time to review, reflect and set myself some next steps.&lt;/p>
&lt;p>This post is largely structured around the last two exercises in the course.&lt;/p>
&lt;h2 id="review-questions">Review questions&lt;/h2>
&lt;dl>
&lt;dt>What was the most useful concept I learned from this workshop?&lt;/dt>
&lt;dd>The frameworks for linking Seek-Sense-Share to both organisational forms (Team / CoP / Network) and &amp;ldquo;new&amp;rdquo; workplace skills.&lt;/dd>
&lt;dt>What was the most surprising concept that has changed my thinking about PKM?&lt;/dt>
&lt;dd>The emphasis on &lt;em>thinking&lt;/em> and sense-making rather than tools. This wasn&amp;rsquo;t a surprise this time around, but it was the first time I followed Harold&amp;rsquo;s course, and I think it will be for many newcomers, espeically when contrasted with the zillions of blog posts and YouTube videos that label themselves &amp;ldquo;PKM&amp;rdquo; but are mostly confined to &lt;em>&amp;ldquo;how to do stuff with tool X&amp;rdquo;&lt;/em>.&lt;/dd>
&lt;dt>What will be the most challenging aspect of PKM for me?&lt;/dt>
&lt;dd>Sense-making is by far the hardest element of the &lt;strong>seek-sense-share&lt;/strong> triad for me, and in many ways the biggest challenge is my inner critic that would stop me writing anything unless it was deeply researched and fully referenced - and given the reality of my schedule that would mean I didn&amp;rsquo;t write anything at all.&lt;/dd>
&lt;dt>Where do I hope to be with my PKM practice one year from now?&lt;/dt>
&lt;dd>An increased amount of public sensing and sharing around the core of my professional knowledge (as opposed to my hobbies and hobby-horses), which will require me to become more adept at separating the technical bones from the business contextual flesh. I also plan to have a better-developed professional network, something that has severely suffered through lockdown and the subsequent transition to working from home.&lt;/dd>
&lt;/dl>
&lt;h2 id="improving-my-competencies">Improving my competencies&lt;/h2>
&lt;p>In the last course module Harold identifies 4 key workplace skills (from a list of 10 in &lt;a href="https://legacy.iftf.org/uploads/media/SR-1382A_UPRI_future_work_skills_sm.pdf" target="_blank" rel="noopener">this paper&lt;/a>) which are &lt;em>&amp;ldquo;at the heart of personal knowledge mastery&amp;rdquo;&lt;/em> and challenges us to use the improvement of these at the core of our continual improvement plan for our own own PKM practice (definitions taken from the source):&lt;/p>
&lt;dl>
&lt;dt>Sense-making&lt;/dt>
&lt;dd>ability to determine the deeper meaning or significance of what is being expressed&lt;/dd>
&lt;dt>Social intelligence&lt;/dt>
&lt;dd>ability to connect to others in a deep and direct way, to sense and stimulate reactions and desired interactions&lt;/dd>
&lt;dt>New media literacy&lt;/dt>
&lt;dd>ability to critically assess and develop content that uses new media forms, and to leverage these media for persuasive communication&lt;/dd>
&lt;dt>Cognitive load management&lt;/dt>
&lt;dd>ability to discriminate and filter information for importance, and to understand how to maximize cognitive functioning using a variety of tools and techniques&lt;/dd>
&lt;/dl>
&lt;p>Where do I want to improve? The slick answer would be &lt;a href="https://www.imdb.com/title/tt6710474/" target="_blank" rel="noopener">&amp;ldquo;Everything EveryWhere All at Once&amp;rdquo;&lt;/a>. A more considered answer would be to say that of the four my priorities are around Sense-making and Social intelligence, so my next step is to develop some guides and metrics around those to steer my practice. For new media literacy and cognitive load management, again I think I have plenty of source material from which I could create some practice guides for myself.&lt;/p>
&lt;h2 id="have-i-moved-on-at-all-in-8-years">Have I moved on at all in 8 years?&lt;/h2>
&lt;p>The first time I took this course, I &lt;a href="https://www.synesthesia.co.uk/2015/04/13/pkm40-what-have-i-learned-so-far/" target="_blank" rel="noopener">reflected at the halfway point&lt;/a>, and identified my key challenges as being the need for:&lt;/p>
&lt;ul>
&lt;li>more focus in my PKM practice (which I now try and align by capturing &amp;ldquo;Open Questions&amp;rdquo; in my daily logs)&lt;/li>
&lt;li>better ability to split out the non-confidential parts of my work and use them in public sense-making and sharing - that one is still a significant challenge, but I feel more comfortable in doing so now, and it is helped by &lt;a href="http://localhost:1313/2023/03/06/how-i-narrate-my-work/" target="_blank" rel="noopener">rigorous daily note-taking&lt;/a>, a practice I didn&amp;rsquo;t have back then&lt;/li>
&lt;li>getting slicker at writing in public (hence &lt;a href="https://www.synesthesia.co.uk/2023/01/06/a-new-year-and-100-days-to-offload/" target="_blank" rel="noopener">100DaysToOffload&lt;/a> as a driver to keep doing it)&lt;/li>
&lt;/ul>
&lt;p>A hard comparison of what I have written there with what I have written today would suggest not a lot of progress in all of that time, and for many of those intervening years I would say that was correct. The difference now is how confident I feel about internalising these processes, and a sense of &amp;ldquo;readiness&amp;rdquo; for this challenge - after all, &lt;em>&amp;ldquo;if not now, when?&amp;rdquo;&lt;/em>&lt;/p>
&lt;h2 id="would-i-recommend-this-course">Would I recommend this course?&lt;/h2>
&lt;p>If you have any interest at all in improving your own skills and practices as a networked learner, then an unequivocal &lt;strong>yes&lt;/strong>. This is a course that not only makes you think, but if you are prepared to run with it, will teach you some practices which can &lt;strong>form the habit of thinking&lt;/strong>. The content has been refreshed well to keep up with current trends, and the abandonment of Twitter for examples of networked learning on social media in favour of Mastodon is to be applauded.&lt;/p>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 29/100&lt;/p></description></item><item><title>How I narrate my work</title><link>https://www.synesthesia.co.uk/2023/03/06/how-i-narrate-my-work/</link><pubDate>Mon, 06 Mar 2023 07:09:15 +0000</pubDate><guid>https://www.synesthesia.co.uk/2023/03/06/how-i-narrate-my-work/</guid><description>&lt;h2 id="context">Context&lt;/h2>
&lt;p>As previously mentioned, I am currently re-experiencing Harold Jarche’s &lt;a href="https://jarche.com/pkm/" target="_blank" rel="noopener">Personal Knowledge Mastery&lt;/a> course.&lt;/p>
&lt;p>The latest challenge from Harold is to explore narrating our work either to ourselves or in a shared form, as this can form a key stimulus in networked learning&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>Narrating one’s work does not get knowledge transferred, but it provides a better medium to gain more understanding&lt;/em> - &lt;a href="https://jarche.com/2014/02/the-seek-sense-share-framework/" target="_blank" rel="noopener">Harold Jarche&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;p>This is something I have iterated over a few times, so I thought it would be useful to capture my current practice.&lt;/p>
&lt;p>The two hurdles I have always felt with this process have been:&lt;/p>
&lt;ul>
&lt;li>to be able to separate the things which really can only be discussed inside my employer&amp;rsquo;s organisation, and the things which potentially can be made public&lt;/li>
&lt;li>accepting that what I write in my web spaces doesn&amp;rsquo;t have to fit into any particular pattern, i.e. it is perfectly acceptable to mix professional things with personal interests, or comments on things that I have noticed.&lt;/li>
&lt;/ul>
&lt;h2 id="my-approach-in-brief">My approach in brief&lt;/h2>
&lt;p>My current practice is made up of the following elements:&lt;/p>
&lt;ul>
&lt;li>narrating my work for myself&lt;/li>
&lt;li>encouraging my team to narrate what they are doing&lt;/li>
&lt;li>weekly sharing of the whole team activity with the wider company&lt;/li>
&lt;li>sharing things publicly on this site in the following areas:
&lt;ul>
&lt;li>ephemeral short notes and bookmarks&lt;/li>
&lt;li>specifically technical notes&lt;/li>
&lt;li>more general blog posts&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>syndicating my site into my Mastodon timeline (&lt;a href="https://indieweb.org/POSSE" target="_blank" rel="noopener">POSSE&lt;/a>)&lt;/li>
&lt;/ul>
&lt;h2 id="more-detail">More detail&lt;/h2>
&lt;h3 id="narrating-for-myself">Narrating for myself&lt;/h3>
&lt;p>I have built a simple template for daily notes, based around what I did, blocks I found, what I learned, and open questions that have come up during the day. The single most important discipline I have found in all of this is to make myself write these daily notes as I go along, no matter how brief they are.&lt;/p>
&lt;p>Further I have a weekly note template with headings that make it a place to note down key priorities at the end of the week, serve as a synopsis of the week, and to note key priorities for the following week.&lt;/p>
&lt;h3 id="encouraging-my-team-to-narrate-their-own-work">Encouraging my team to narrate their own work&lt;/h3>
&lt;p>This is very much at a &amp;ldquo;work in progress&amp;rdquo; stage, however I think the habits are starting to form. I have used the following elements so far:&lt;/p>
&lt;ul>
&lt;li>individual and team discussions about the benefits of keeping an effective working log, starting with the personal benefit for individuals about being able to loook back over the problems they solved&lt;/li>
&lt;li>a template for weekly progress reporting that has headings for &amp;ldquo;What have you worked on?&amp;rdquo;, &amp;ldquo;what is complete?&amp;rdquo;, &amp;ldquo;what challenges did you have?&amp;rdquo;, &amp;ldquo;do you need help?&amp;rdquo;, &amp;ldquo;what did you learn / what would you do differently?&amp;rdquo; and &amp;ldquo;what do you see as your priorities for next week?&amp;rdquo;&lt;/li>
&lt;li>an agenda for short weekly 1:1 meetings that follows the same structure&lt;/li>
&lt;/ul>
&lt;h3 id="sharing-within-the-company">Sharing within the company&lt;/h3>
&lt;p>In December 2022 I started a practice of sharing a regular &amp;ldquo;weeknote&amp;rdquo; about the team&amp;rsquo;s work in an internally-visible location. I build this from my own and the team-member&amp;rsquo;s notes to summarise what we have been up to, what we have delivered, and where we are focusing next. I will often share some of the challenges and learning points, although there is a balance to be struck between explaining the detail and on the other hand keeping it accessible and relvant to our non-technical colleagues. I will usually end the note with a reference to an external source about something that is broadly current, or sometimes just a quote or cartoon relevant to a technical point.&lt;/p>
&lt;p>Within the company our primary shared communication platform is Microsoft Teams, and I &amp;ldquo;own&amp;rdquo; a public channel for technology updates. I publish the weeknotes there, but make a point to &lt;em>not&lt;/em> tag &amp;ldquo;All Company&amp;rdquo; (which would force a notification for all staff), rather to leave it there for those who are interested. I do tag team members when I mention their work, and specific colleagues outside the team who have been involved in various pieces of work.&lt;/p>
&lt;h3 id="sharing-publicly">Sharing publicly&lt;/h3>
&lt;p>My own way of dealing with the &amp;ldquo;what can I talk about publicly&amp;rdquo; dilemma mostly falls into one of two camps:&lt;/p>
&lt;ul>
&lt;li>write &lt;a href="https://www.synesthesia.co.uk/note/" target="_blank" rel="noopener">purely technical posts&lt;/a>, with minimal reference to the company context that drove that particular investigation&lt;/li>
&lt;li>within the &lt;a href="https://www.synesthesia.co.uk/post/" target="_blank" rel="noopener">main blog area&lt;/a> pick up more abstract issues, often driven from my daily &amp;ldquo;Open Questions&amp;rdquo; note, or from my personal interests&lt;/li>
&lt;/ul>
&lt;p>I have set up &lt;a href="https://indieweb.org/POSSE" target="_blank" rel="noopener">POSSE&lt;/a>-style syndication to my Mastodon feed using the summary metadata from each of these types of post. I also share complete shorter note content from my &lt;a href="https://www.synesthesia.co.uk/stream/" target="_blank" rel="noopener">Ephemera&lt;/a> section.&lt;/p>
&lt;h2 id="reflection">Reflection&lt;/h2>
&lt;p>I have found the single most important factor in all of this is the personal discipline to write my own notes, and within that the hardest part is to tease out explicitly the learning points. Paying attention to &amp;ldquo;Open Questions&amp;rdquo; is also a great source of starting points for my personal &lt;strong>Seek-Sense-Share&lt;/strong> cycle.&lt;/p>
&lt;p>With the team, as we are all working on technical problems of various sorts, the basic idea of keeping a log of what you tried and what worked is fairly easy. The hardest challenge is to coach them to develop the reflective practice of identifying learning points explicity, and that mirrors my own challenges there. I don&amp;rsquo;t yet think any of them are at the point where a more visible narration of their work either within the company or publicly would sit comfortably, and I also think they are at a very early point in any kind of metalearning about their own process.&lt;/p>
&lt;p>My motivations for the company-visible weeknote are several:&lt;/p>
&lt;ul>
&lt;li>we should be accountable to colleagues for what we are doing&lt;/li>
&lt;li>it&amp;rsquo;s useful to explain things we are doing which may not be immediately obvious to colleagues, in part so they get a clearer picture of why &amp;ldquo;their thing&amp;rdquo; isn&amp;rsquo;t being worked on yet&lt;/li>
&lt;li>it&amp;rsquo;s a way of reinforcing to my team the importance of the narration process&lt;/li>
&lt;li>as one of the senior managers I think (and say) that all teams in the company should be transparent, so I need to hold myself to that standard and set an example&lt;/li>
&lt;/ul>
&lt;p>In terms of external sharing, at one level I am very used to it, having been blogging for over 20 years. Nevertheless I do still find myself vulnerable to the internal critics about &amp;ldquo;how good&amp;rdquo; a post has to be to share it. It&amp;rsquo;s really useful to have an external push, whether from participating in a &lt;a href="https://jarche.com/pkm/" target="_blank" rel="noopener">course&lt;/a>, or from signing up to a public challenge such as &lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a>.&lt;/p>
&lt;p>I think the main next steps are:&lt;/p>
&lt;ul>
&lt;li>continue the dailiy discipline of doing something that supports my learning/narration/sharing process - habits need to be reinforced&lt;/li>
&lt;li>start to introduce some further ideas to team members around purposeful selection of learning sources, and introducing some kind of reflective writing into their own processes to aid synoptic sense-making&lt;/li>
&lt;li>conversations with senior colleagues to share some of these core concepts and perhaps influence their own thinking&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 26/100&lt;/p></description></item><item><title>A heuristic for choosing people to follow on Mastodon</title><link>https://www.synesthesia.co.uk/2023/03/03/a-heuristic-for-choosing-people-to-follow-on-mastodon/</link><pubDate>Fri, 03 Mar 2023 10:43:20 +0000</pubDate><guid>https://www.synesthesia.co.uk/2023/03/03/a-heuristic-for-choosing-people-to-follow-on-mastodon/</guid><description>&lt;h2 id="context">Context&lt;/h2>
&lt;p>Following my post yesterday about &lt;a href="https://www.synesthesia.co.uk/2023/03/01/finding-connectors-in-mastodon/">Finding &amp;lsquo;connectors&amp;rsquo; in Mastodon&lt;/a>, Ton Zijlstra was kind enough to &lt;a href="https://www.zylstra.org/blog/2023/03/conversational-symmetry-redux/" target="_blank" rel="noopener">point out&lt;/a> his 2008(!) post &lt;a href="https://www.zylstra.org/blog/2008/05/conversational_1/" target="_blank" rel="noopener">Conversational Symmetry and Twitter&lt;/a> in which he too was looking at followers / following ratios, only back then it was on Twitter of course.&lt;/p>
&lt;p>The key to his approach is &lt;em>&amp;ldquo;For me, social media ia all about conversation&amp;rdquo;&lt;/em>, and like my more recent look, he was looking for accounts that had a fairly balanced follow/follower ratio.&lt;/p>
&lt;p>He coined a couple of more labels for people with extreme statistics:&lt;/p>
&lt;ul>
&lt;li>&lt;em>Large antenna array&lt;/em> accounts have a very LOW &lt;code>follower:follow&lt;/code> ratio, with a very large number of follows and few, if any, followers - these are people who Ton characerises as : &lt;em>&amp;quot;&amp;hellip; one on one interaction is not your goal apparantly. You’re building a phonebook, or you’re soaking up a large collage of everything that’s being posted &amp;hellip;&amp;quot;&lt;/em>&lt;/li>
&lt;li>&lt;em>A-lister&lt;/em> was his term for the accounts with a very HIGH &lt;code>follower:follow&lt;/code> ratio, the ones I called either &lt;strong>Just Famous&lt;/strong> or &lt;strong>Broadcaster&lt;/strong> based on how many posts they made - Ton came to a similar conclusion about these &lt;em>&amp;ldquo;It’s the celebrity profile so to speak. You can use it as mass media then&amp;rdquo;&lt;/em>&lt;/li>
&lt;/ul>
&lt;h2 id="a-heuristic-for-choosing-people-to-follow-on-mastodon">A heuristic for choosing people to follow on Mastodon&lt;/h2>
&lt;p>Combining my thoughts from yesterday with a little reflection on my current practice, and the added seasoning of Ton&amp;rsquo;s thoughts re-shared, I&amp;rsquo;ve come up with the following &lt;a href="https://en.wikipedia.org/wiki/Heuristic" target="_blank" rel="noopener">heuristic&lt;/a> that I&amp;rsquo;m going to play with as a guide to my follow activity on Mastodon:&lt;/p>
&lt;ol>
&lt;li>have a goal in mind for your use of Mastodon in so far as it relates to developing a knowledge network&lt;/li>
&lt;li>follow promiscuously anyone who looks even slightly interesting&lt;/li>
&lt;li>but be ready to unfollow at a whim too - let your gut be your guide&lt;/li>
&lt;li>look at the ratio of &lt;code>followers&lt;/code>:&lt;code>followed&lt;/code> and the &lt;code>number of posts&lt;/code> (aka Toots on some clients)&lt;/li>
&lt;li>for accounts which have interesting content, a very HIGH &lt;code>followers&lt;/code>:&lt;code>followed&lt;/code> ratio and a reasonable number of posts (the &lt;strong>Broadcasters&lt;/strong>), consider adding &lt;a href="https://garden.synesthesia.co.uk/RSS%20feeds%20from%20Mastodon#to-follow-an-account" target="_blank" rel="noopener">the RSS feed of their account&lt;/a> to your feed reader, and unfollowing in Mastodon&lt;/li>
&lt;li>for accounts which have a very HIGH &lt;code>followers&lt;/code>:&lt;code>followed&lt;/code> ratio and a LOW number of posts (the &lt;strong>Just Famous&lt;/strong>), seriously, why bother? Cull the follow!&lt;/li>
&lt;li>for accounts which have a very LOW &lt;code>followers&lt;/code>:&lt;code>followed&lt;/code> ratio (the &lt;strong>Large Antenna Arrays&lt;/strong>), again why bother?&lt;/li>
&lt;li>for the ones that are left, engage them in conversation on anything that looks interesting - you will be pleasantly surprised how nice people are&lt;/li>
&lt;/ol>
&lt;p>What is your approach?&lt;/p>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 25/100&lt;/p></description></item><item><title>Finding 'connectors' in Mastodon</title><link>https://www.synesthesia.co.uk/2023/03/01/finding-connectors-in-mastodon/</link><pubDate>Wed, 01 Mar 2023 08:08:31 +0000</pubDate><guid>https://www.synesthesia.co.uk/2023/03/01/finding-connectors-in-mastodon/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>This week as part of the &lt;a href="https://jarche.com/pkm/" target="_blank" rel="noopener">Personal Knowledge Mastery&lt;/a> course Harold challenged us to identify some &amp;lsquo;Connectors&amp;rsquo; on Mastodon and consider their posting habits.&lt;/p>
&lt;p>Although connectors are defined by their behaviour, in that they join up those who seek knowledge with those who share it, it was suggested that we look at individuals who had a high ratio of follwers to followed as a starting point.&lt;/p>
&lt;h2 id="getting-the-data">Getting the data&lt;/h2>
&lt;p>As a quick experiment I wanted to look at the people I currently follow, and those who follow me, to see who might stand out based on the ratio &lt;strong>followers/following&lt;/strong>&lt;/p>
&lt;p>An excellent tool for analysing remote API data as if it were in a local database is &lt;a href="https://steampipe.io/" target="_blank" rel="noopener">Steampipe&lt;/a>, so for this test:&lt;/p>
&lt;ul>
&lt;li>I &lt;a href="https://garden.synesthesia.co.uk/Install%20steampipe%20for%20mastodon" target="_blank" rel="noopener">installed Steampipe, the Steampipe Mastodon plugin and the Mastodon dashboard collection&lt;/a> (the latter two tools are by &lt;a href="https://mastodon.social/@judell" target="_blank" rel="noopener">@judell@mastodon.social&lt;/a>)&lt;/li>
&lt;li>ran the dashboards:
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">cd steampipe-mod-mastodon-insights
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">steampipe dashboard
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>Added &lt;a href="https://github.com/synesthesia/steampipe-mod-mastodon-insights/commit/6b5e5e8364c6ce1e1d5c1b8b3d5efb8873f8b887" target="_blank" rel="noopener">this extra column&lt;/a> to the dashboards for Followers and Following&lt;/li>
&lt;li>viewed each of the two dashboards, sorted by &lt;code>followratio&lt;/code> (descending).&lt;/li>
&lt;/ul>
&lt;p>On first inspection a couple of the numbers looked a bit off, e.g. some followers who had a &amp;ldquo;following&amp;rdquo; count of 1.&lt;/p>
&lt;p>Naively I did this on the server,&lt;/p>
&lt;p>&lt;code>RAILS_ENV=production tootctl accounts refresh --all --verbose&lt;/code>&lt;/p>
&lt;p>which fixed the problem, but took quite a while - it appears that even on my one-person instance Mastodon was tracking 86,253 users!&lt;/p>
&lt;p>After that, the dashboards look like this (example):&lt;/p>
&lt;p>
&lt;figure id="figure-sample-of-steampipe-dashboard-for-followers">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Sample of Steampipe dashboard for followers" srcset="
/2023/03/01/finding-connectors-in-mastodon/sample-follower-dashboard_hu2c90a8c78068faa7c9dfa0d37db18bbc_55076_758d4f5253b78af37907467ffe6cfcb8.webp 400w,
/2023/03/01/finding-connectors-in-mastodon/sample-follower-dashboard_hu2c90a8c78068faa7c9dfa0d37db18bbc_55076_172abe64d4be2f423e91ad8ae7d6403b.webp 760w,
/2023/03/01/finding-connectors-in-mastodon/sample-follower-dashboard_hu2c90a8c78068faa7c9dfa0d37db18bbc_55076_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/2023/03/01/finding-connectors-in-mastodon/sample-follower-dashboard_hu2c90a8c78068faa7c9dfa0d37db18bbc_55076_758d4f5253b78af37907467ffe6cfcb8.webp"
width="683"
height="390"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Sample of Steampipe dashboard for followers
&lt;/figcaption>&lt;/figure>
.&lt;/p>
&lt;h2 id="observations">Observations&lt;/h2>
&lt;h3 id="followers">Followers&lt;/h3>
&lt;p>Looking first at Followers, when I pick the ones with &lt;code>followratio&lt;/code> &amp;gt; 2, I get this list:&lt;/p>
&lt;table class="table">
&lt;tr> &lt;th>﻿Account&lt;/th> &lt;th>followers&lt;/th> &lt;th>following&lt;/th> &lt;th>followratio&lt;/th> &lt;th>toots&lt;/th> &lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@chrisjhorn@mastodon.ie&lt;/td>
&lt;td data-table-dtype="number">546&lt;/td>
&lt;td data-table-dtype="number">107&lt;/td>
&lt;td data-table-dtype="text">5.1&lt;/td>
&lt;td data-table-dtype="number">215&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@harold@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">758&lt;/td>
&lt;td data-table-dtype="number">159&lt;/td>
&lt;td data-table-dtype="text">4.76&lt;/td>
&lt;td data-table-dtype="number">1003&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@CGLambdin@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">216&lt;/td>
&lt;td data-table-dtype="number">78&lt;/td>
&lt;td data-table-dtype="text">2.76&lt;/td>
&lt;td data-table-dtype="number">1047&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@ewen@photog.social&lt;/td>
&lt;td data-table-dtype="number">1100&lt;/td>
&lt;td data-table-dtype="number">422&lt;/td>
&lt;td data-table-dtype="text">2.6&lt;/td>
&lt;td data-table-dtype="number">1199&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@danclarke@mstdn.social&lt;/td>
&lt;td data-table-dtype="number">242&lt;/td>
&lt;td data-table-dtype="number">105&lt;/td>
&lt;td data-table-dtype="text">2.3&lt;/td>
&lt;td data-table-dtype="number">110&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@SuneAuken@mastodon.world&lt;/td>
&lt;td data-table-dtype="number">2684&lt;/td>
&lt;td data-table-dtype="number">1169&lt;/td>
&lt;td data-table-dtype="text">2.29&lt;/td>
&lt;td data-table-dtype="number">2854&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@vic@mstdn.social&lt;/td>
&lt;td data-table-dtype="number">325&lt;/td>
&lt;td data-table-dtype="number">158&lt;/td>
&lt;td data-table-dtype="text">2.05&lt;/td>
&lt;td data-table-dtype="number">677&lt;/td>
&lt;/tr>
&lt;caption>Table 1: Followers with follower:followed &amp;gt; 2&lt;/caption>
&lt;/table>
&lt;h3 id="followed">Followed&lt;/h3>
&lt;p>The picture here needs some interpretation.&lt;/p>
&lt;p>When you look at the top 11 in this list by &lt;code>followratio&lt;/code> you see:&lt;/p>
&lt;table class="table">
&lt;tr> &lt;th>﻿Account&lt;/th> &lt;th>followers&lt;/th> &lt;th>following&lt;/th> &lt;th>followratio&lt;/th> &lt;th>toots&lt;/th> &lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@Mastodon@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">743916&lt;/td>
&lt;td data-table-dtype="number">10&lt;/td>
&lt;td data-table-dtype="text">74391.6&lt;/td>
&lt;td data-table-dtype="number">230&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@EU_&lt;a href="mailto:Commission@social.network.europa.eu">Commission@social.network.europa.eu&lt;/a>&lt;/td>
&lt;td data-table-dtype="number">72376&lt;/td>
&lt;td data-table-dtype="number">2&lt;/td>
&lt;td data-table-dtype="number">36188&lt;/td>
&lt;td data-table-dtype="number">1426&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@ivory@tapbots.social&lt;/td>
&lt;td data-table-dtype="number">76597&lt;/td>
&lt;td data-table-dtype="number">4&lt;/td>
&lt;td data-table-dtype="text">19149.25&lt;/td>
&lt;td data-table-dtype="number">3203&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@profbriancox@universeodon.com&lt;/td>
&lt;td data-table-dtype="number">36686&lt;/td>
&lt;td data-table-dtype="number">3&lt;/td>
&lt;td data-table-dtype="text">12228.66&lt;/td>
&lt;td data-table-dtype="number">11&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@internetarchive@mastodon.archive.org&lt;/td>
&lt;td data-table-dtype="number">27906&lt;/td>
&lt;td data-table-dtype="number">3&lt;/td>
&lt;td data-table-dtype="number">9302&lt;/td>
&lt;td data-table-dtype="number">121&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@rbreich@masto.ai&lt;/td>
&lt;td data-table-dtype="number">210312&lt;/td>
&lt;td data-table-dtype="number">26&lt;/td>
&lt;td data-table-dtype="text">8088.92&lt;/td>
&lt;td data-table-dtype="number">981&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@IceCubesApp@mastodon.online&lt;/td>
&lt;td data-table-dtype="number">5893&lt;/td>
&lt;td data-table-dtype="number">1&lt;/td>
&lt;td data-table-dtype="number">5893&lt;/td>
&lt;td data-table-dtype="number">125&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@EC_&lt;a href="mailto:Commissioner_Breton@social.network.europa.eu">Commissioner_Breton@social.network.europa.eu&lt;/a>&lt;/td>
&lt;td data-table-dtype="number">4868&lt;/td>
&lt;td data-table-dtype="number">1&lt;/td>
&lt;td data-table-dtype="number">4868&lt;/td>
&lt;td data-table-dtype="number">54&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@goodlawproject@mastodon.world&lt;/td>
&lt;td data-table-dtype="number">13893&lt;/td>
&lt;td data-table-dtype="number">4&lt;/td>
&lt;td data-table-dtype="text">3473.25&lt;/td>
&lt;td data-table-dtype="number">731&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@mehdihasan@journa.host&lt;/td>
&lt;td data-table-dtype="number">44916&lt;/td>
&lt;td data-table-dtype="number">17&lt;/td>
&lt;td data-table-dtype="text">2642.11&lt;/td>
&lt;td data-table-dtype="number">42&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@mariapopova@indieweb.social&lt;/td>
&lt;td data-table-dtype="number">9807&lt;/td>
&lt;td data-table-dtype="number">4&lt;/td>
&lt;td data-table-dtype="text">2451.75&lt;/td>
&lt;td data-table-dtype="number">1470&lt;/td>
&lt;/tr>
&lt;caption>Table 2: Top 11 followed by follower:followed ratio&lt;/caption>
&lt;/table>
&lt;p>&lt;strong>What is happening here, with these quite extreme ratios?&lt;/strong>&lt;/p>
&lt;p>I suggest that the accounts in this list fall into two main groups:&lt;/p>
&lt;ul>
&lt;li>&amp;ldquo;&lt;strong>broadcasters&lt;/strong>&amp;rdquo; - these are accounts which fundamentally are used to push out notifications. This is typical for accounts representing applications or big organisations, or for individuals such as &lt;code>@rbreich@masto.ai&lt;/code> or &lt;code>@mariapopova@indieweb.social&lt;/code> who are promoting content from elsewhere&lt;/li>
&lt;li>&amp;ldquo;&lt;strong>just famous&lt;/strong>&amp;rdquo; - for example &lt;code>@profbriancox@universeodon.com&lt;/code> and &lt;code>@mehdihasan@journa.host&lt;/code> have extremely low toot counts, which suggests these accounts are still &amp;ldquo;dipping their toes into the water&amp;rdquo; with Mastodon, the high follower numbers are reflective of the follower numbers they had on Twitter, and more general fame.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Looking lower down the followed list&lt;/strong>&lt;/p>
&lt;p>You can start to see some numbers that make more sense, for example if I filter for the entirely arbitrary range of 2 &amp;lt; &lt;code>followratio&lt;/code> &amp;lt; 700 and &lt;code>toots&lt;/code> &amp;gt; 100 you get this somewhat longer list:&lt;/p>
&lt;p>(&lt;a href="#exploring-content">&lt;em>Jump over this long list&lt;/em>&lt;/a>)&lt;/p>
&lt;table class="table">
&lt;tr> &lt;th>﻿account&lt;/th> &lt;th>followers&lt;/th> &lt;th>following&lt;/th> &lt;th>followratio&lt;/th> &lt;th>toots&lt;/th> &lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@malwaretech@infosec.exchange&lt;/td>
&lt;td data-table-dtype="number">54920&lt;/td>
&lt;td data-table-dtype="number">87&lt;/td>
&lt;td data-table-dtype="text">631.26&lt;/td>
&lt;td data-table-dtype="number">1063&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@jayrosen_&lt;a href="mailto:nyu@mastodon.social">nyu@mastodon.social&lt;/a>&lt;/td>
&lt;td data-table-dtype="number">42314&lt;/td>
&lt;td data-table-dtype="number">133&lt;/td>
&lt;td data-table-dtype="text">318.15&lt;/td>
&lt;td data-table-dtype="number">293&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@rozenberg@journa.host&lt;/td>
&lt;td data-table-dtype="number">5832&lt;/td>
&lt;td data-table-dtype="number">19&lt;/td>
&lt;td data-table-dtype="text">306.94&lt;/td>
&lt;td data-table-dtype="number">215&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@feditips@mstdn.social&lt;/td>
&lt;td data-table-dtype="number">171660&lt;/td>
&lt;td data-table-dtype="number">579&lt;/td>
&lt;td data-table-dtype="text">296.47&lt;/td>
&lt;td data-table-dtype="number">3200&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@taylorlorenz@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">50967&lt;/td>
&lt;td data-table-dtype="number">181&lt;/td>
&lt;td data-table-dtype="text">281.58&lt;/td>
&lt;td data-table-dtype="number">487&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@EC_&lt;a href="mailto:DIGIT@social.network.europa.eu">DIGIT@social.network.europa.eu&lt;/a>&lt;/td>
&lt;td data-table-dtype="number">2901&lt;/td>
&lt;td data-table-dtype="number">11&lt;/td>
&lt;td data-table-dtype="text">263.72&lt;/td>
&lt;td data-table-dtype="number">270&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@codinghorror@infosec.exchange&lt;/td>
&lt;td data-table-dtype="number">5382&lt;/td>
&lt;td data-table-dtype="number">22&lt;/td>
&lt;td data-table-dtype="text">244.63&lt;/td>
&lt;td data-table-dtype="number">613&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@mfowler@toot.thoughtworks.com&lt;/td>
&lt;td data-table-dtype="number">17838&lt;/td>
&lt;td data-table-dtype="number">106&lt;/td>
&lt;td data-table-dtype="text">168.28&lt;/td>
&lt;td data-table-dtype="number">285&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@RichardJMurphy@mas.to&lt;/td>
&lt;td data-table-dtype="number">6540&lt;/td>
&lt;td data-table-dtype="number">39&lt;/td>
&lt;td data-table-dtype="text">167.69&lt;/td>
&lt;td data-table-dtype="number">326&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@gergelyorosz@mastodon.online&lt;/td>
&lt;td data-table-dtype="number">13329&lt;/td>
&lt;td data-table-dtype="number">83&lt;/td>
&lt;td data-table-dtype="text">160.59&lt;/td>
&lt;td data-table-dtype="number">139&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@eleventy@fosstodon.org&lt;/td>
&lt;td data-table-dtype="number">2282&lt;/td>
&lt;td data-table-dtype="number">16&lt;/td>
&lt;td data-table-dtype="text">142.62&lt;/td>
&lt;td data-table-dtype="number">1074&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@onlmaps@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">1832&lt;/td>
&lt;td data-table-dtype="number">15&lt;/td>
&lt;td data-table-dtype="text">122.13&lt;/td>
&lt;td data-table-dtype="number">5138&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@adambienkov@mastodon.green&lt;/td>
&lt;td data-table-dtype="number">5161&lt;/td>
&lt;td data-table-dtype="number">44&lt;/td>
&lt;td data-table-dtype="text">117.29&lt;/td>
&lt;td data-table-dtype="number">154&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@EC_&lt;a href="mailto:OSPO@social.network.europa.eu">OSPO@social.network.europa.eu&lt;/a>&lt;/td>
&lt;td data-table-dtype="number">3905&lt;/td>
&lt;td data-table-dtype="number">34&lt;/td>
&lt;td data-table-dtype="text">114.85&lt;/td>
&lt;td data-table-dtype="number">217&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@b0rk@social.jvns.ca&lt;/td>
&lt;td data-table-dtype="number">24826&lt;/td>
&lt;td data-table-dtype="number">232&lt;/td>
&lt;td data-table-dtype="number">107&lt;/td>
&lt;td data-table-dtype="number">365&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@chrischirp@fediscience.org&lt;/td>
&lt;td data-table-dtype="number">20191&lt;/td>
&lt;td data-table-dtype="number">201&lt;/td>
&lt;td data-table-dtype="text">100.45&lt;/td>
&lt;td data-table-dtype="number">601&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@gruber@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">28997&lt;/td>
&lt;td data-table-dtype="number">382&lt;/td>
&lt;td data-table-dtype="text">75.9&lt;/td>
&lt;td data-table-dtype="number">950&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@drewharwell@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">61926&lt;/td>
&lt;td data-table-dtype="number">831&lt;/td>
&lt;td data-table-dtype="text">74.51&lt;/td>
&lt;td data-table-dtype="number">691&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@DrLindseyFitzharris@mastodon.world&lt;/td>
&lt;td data-table-dtype="number">8671&lt;/td>
&lt;td data-table-dtype="number">117&lt;/td>
&lt;td data-table-dtype="text">74.11&lt;/td>
&lt;td data-table-dtype="number">547&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@kev@fosstodon.org&lt;/td>
&lt;td data-table-dtype="number">22870&lt;/td>
&lt;td data-table-dtype="number">313&lt;/td>
&lt;td data-table-dtype="text">73.06&lt;/td>
&lt;td data-table-dtype="number">2323&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@GeorgePeretzKC@eupolicy.social&lt;/td>
&lt;td data-table-dtype="number">4320&lt;/td>
&lt;td data-table-dtype="number">63&lt;/td>
&lt;td data-table-dtype="text">68.57&lt;/td>
&lt;td data-table-dtype="number">375&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@nisreen@mastodon.online&lt;/td>
&lt;td data-table-dtype="number">9428&lt;/td>
&lt;td data-table-dtype="number">146&lt;/td>
&lt;td data-table-dtype="text">64.57&lt;/td>
&lt;td data-table-dtype="number">451&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@w3c@w3c.social&lt;/td>
&lt;td data-table-dtype="number">8043&lt;/td>
&lt;td data-table-dtype="number">130&lt;/td>
&lt;td data-table-dtype="text">61.86&lt;/td>
&lt;td data-table-dtype="number">284&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@ct_&lt;a href="mailto:bergstrom@fediscience.org">bergstrom@fediscience.org&lt;/a>&lt;/td>
&lt;td data-table-dtype="number">34590&lt;/td>
&lt;td data-table-dtype="number">617&lt;/td>
&lt;td data-table-dtype="text">56.06&lt;/td>
&lt;td data-table-dtype="number">1529&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@davidfowl@hachyderm.io&lt;/td>
&lt;td data-table-dtype="number">6353&lt;/td>
&lt;td data-table-dtype="number">118&lt;/td>
&lt;td data-table-dtype="text">53.83&lt;/td>
&lt;td data-table-dtype="number">249&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@carnage4life@mas.to&lt;/td>
&lt;td data-table-dtype="number">8307&lt;/td>
&lt;td data-table-dtype="number">201&lt;/td>
&lt;td data-table-dtype="text">41.32&lt;/td>
&lt;td data-table-dtype="number">757&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@davew@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">6340&lt;/td>
&lt;td data-table-dtype="number">172&lt;/td>
&lt;td data-table-dtype="text">36.86&lt;/td>
&lt;td data-table-dtype="number">2021&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@anildash@me.dm&lt;/td>
&lt;td data-table-dtype="number">27612&lt;/td>
&lt;td data-table-dtype="number">822&lt;/td>
&lt;td data-table-dtype="text">33.59&lt;/td>
&lt;td data-table-dtype="number">1585&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@abebab@scholar.social&lt;/td>
&lt;td data-table-dtype="number">4326&lt;/td>
&lt;td data-table-dtype="number">133&lt;/td>
&lt;td data-table-dtype="text">32.52&lt;/td>
&lt;td data-table-dtype="number">307&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@danneidle@econtwitter.net&lt;/td>
&lt;td data-table-dtype="number">1798&lt;/td>
&lt;td data-table-dtype="number">58&lt;/td>
&lt;td data-table-dtype="number">31&lt;/td>
&lt;td data-table-dtype="number">563&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@GaelVaroquaux@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">2631&lt;/td>
&lt;td data-table-dtype="number">88&lt;/td>
&lt;td data-table-dtype="text">29.89&lt;/td>
&lt;td data-table-dtype="number">106&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@Nick_&lt;a href="mailto:Craver@infosec.exchange">Craver@infosec.exchange&lt;/a>&lt;/td>
&lt;td data-table-dtype="number">4127&lt;/td>
&lt;td data-table-dtype="number">143&lt;/td>
&lt;td data-table-dtype="text">28.86&lt;/td>
&lt;td data-table-dtype="number">795&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@timbray@hachyderm.io&lt;/td>
&lt;td data-table-dtype="number">14176&lt;/td>
&lt;td data-table-dtype="number">500&lt;/td>
&lt;td data-table-dtype="text">28.35&lt;/td>
&lt;td data-table-dtype="number">1399&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@hadleybeeman@w3c.social&lt;/td>
&lt;td data-table-dtype="number">1778&lt;/td>
&lt;td data-table-dtype="number">63&lt;/td>
&lt;td data-table-dtype="text">28.22&lt;/td>
&lt;td data-table-dtype="number">547&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@jessitron@hachyderm.io&lt;/td>
&lt;td data-table-dtype="number">4486&lt;/td>
&lt;td data-table-dtype="number">170&lt;/td>
&lt;td data-table-dtype="text">26.38&lt;/td>
&lt;td data-table-dtype="number">311&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@gidmk@med-mastodon.com&lt;/td>
&lt;td data-table-dtype="number">6044&lt;/td>
&lt;td data-table-dtype="number">240&lt;/td>
&lt;td data-table-dtype="text">25.18&lt;/td>
&lt;td data-table-dtype="number">156&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@ddoomen@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">291&lt;/td>
&lt;td data-table-dtype="number">12&lt;/td>
&lt;td data-table-dtype="text">24.25&lt;/td>
&lt;td data-table-dtype="number">206&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@jamesshore@mastodon.online&lt;/td>
&lt;td data-table-dtype="number">1372&lt;/td>
&lt;td data-table-dtype="number">58&lt;/td>
&lt;td data-table-dtype="text">23.65&lt;/td>
&lt;td data-table-dtype="number">445&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@leo@twit.social&lt;/td>
&lt;td data-table-dtype="number">24476&lt;/td>
&lt;td data-table-dtype="number">1097&lt;/td>
&lt;td data-table-dtype="text">22.31&lt;/td>
&lt;td data-table-dtype="number">1282&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@rem@front-end.social&lt;/td>
&lt;td data-table-dtype="number">2535&lt;/td>
&lt;td data-table-dtype="number">117&lt;/td>
&lt;td data-table-dtype="text">21.66&lt;/td>
&lt;td data-table-dtype="number">476&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@joshuatopolsky@mastodon.online&lt;/td>
&lt;td data-table-dtype="number">2823&lt;/td>
&lt;td data-table-dtype="number">131&lt;/td>
&lt;td data-table-dtype="text">21.54&lt;/td>
&lt;td data-table-dtype="number">345&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@cubicgarden@mas.to&lt;/td>
&lt;td data-table-dtype="number">1577&lt;/td>
&lt;td data-table-dtype="number">74&lt;/td>
&lt;td data-table-dtype="text">21.31&lt;/td>
&lt;td data-table-dtype="number">2590&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@atomicpoet@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">14746&lt;/td>
&lt;td data-table-dtype="number">694&lt;/td>
&lt;td data-table-dtype="text">21.24&lt;/td>
&lt;td data-table-dtype="number">20776&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@rauschma@fosstodon.org&lt;/td>
&lt;td data-table-dtype="number">3417&lt;/td>
&lt;td data-table-dtype="number">169&lt;/td>
&lt;td data-table-dtype="text">20.21&lt;/td>
&lt;td data-table-dtype="number">1668&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@klillington@mastodon.ie&lt;/td>
&lt;td data-table-dtype="number">5067&lt;/td>
&lt;td data-table-dtype="number">251&lt;/td>
&lt;td data-table-dtype="text">20.18&lt;/td>
&lt;td data-table-dtype="number">1647&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@shanselman@hachyderm.io&lt;/td>
&lt;td data-table-dtype="number">32773&lt;/td>
&lt;td data-table-dtype="number">1632&lt;/td>
&lt;td data-table-dtype="text">20.08&lt;/td>
&lt;td data-table-dtype="number">1641&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@gcluley@mastodon.green&lt;/td>
&lt;td data-table-dtype="number">11348&lt;/td>
&lt;td data-table-dtype="number">614&lt;/td>
&lt;td data-table-dtype="text">18.48&lt;/td>
&lt;td data-table-dtype="number">505&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@rachelcoldicutt@assemblag.es&lt;/td>
&lt;td data-table-dtype="number">1524&lt;/td>
&lt;td data-table-dtype="number">84&lt;/td>
&lt;td data-table-dtype="text">18.14&lt;/td>
&lt;td data-table-dtype="number">401&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@brentsimmons@indieweb.social&lt;/td>
&lt;td data-table-dtype="number">4036&lt;/td>
&lt;td data-table-dtype="number">238&lt;/td>
&lt;td data-table-dtype="text">16.95&lt;/td>
&lt;td data-table-dtype="number">183&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@davetroy@toad.social&lt;/td>
&lt;td data-table-dtype="number">14952&lt;/td>
&lt;td data-table-dtype="number">895&lt;/td>
&lt;td data-table-dtype="text">16.7&lt;/td>
&lt;td data-table-dtype="number">2106&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@ChrisPirillo@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">6504&lt;/td>
&lt;td data-table-dtype="number">396&lt;/td>
&lt;td data-table-dtype="text">16.42&lt;/td>
&lt;td data-table-dtype="number">2698&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@glynmoody@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">4225&lt;/td>
&lt;td data-table-dtype="number">259&lt;/td>
&lt;td data-table-dtype="text">16.31&lt;/td>
&lt;td data-table-dtype="number">19146&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@SecurityWriter@infosec.exchange&lt;/td>
&lt;td data-table-dtype="number">2491&lt;/td>
&lt;td data-table-dtype="number">153&lt;/td>
&lt;td data-table-dtype="text">16.28&lt;/td>
&lt;td data-table-dtype="number">568&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@emilybell@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">3910&lt;/td>
&lt;td data-table-dtype="number">263&lt;/td>
&lt;td data-table-dtype="text">14.86&lt;/td>
&lt;td data-table-dtype="number">316&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@jeffjarvis@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">30232&lt;/td>
&lt;td data-table-dtype="number">2034&lt;/td>
&lt;td data-table-dtype="text">14.86&lt;/td>
&lt;td data-table-dtype="number">5437&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@kenshirriff@oldbytes.space&lt;/td>
&lt;td data-table-dtype="number">5028&lt;/td>
&lt;td data-table-dtype="number">355&lt;/td>
&lt;td data-table-dtype="text">14.16&lt;/td>
&lt;td data-table-dtype="number">204&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@damianedwards@hachyderm.io&lt;/td>
&lt;td data-table-dtype="number">2738&lt;/td>
&lt;td data-table-dtype="number">198&lt;/td>
&lt;td data-table-dtype="text">13.82&lt;/td>
&lt;td data-table-dtype="number">267&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@stopfundinghate@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">4867&lt;/td>
&lt;td data-table-dtype="number">355&lt;/td>
&lt;td data-table-dtype="text">13.7&lt;/td>
&lt;td data-table-dtype="number">173&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@blaine@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">5532&lt;/td>
&lt;td data-table-dtype="number">411&lt;/td>
&lt;td data-table-dtype="text">13.45&lt;/td>
&lt;td data-table-dtype="number">1290&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@MattHodges@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">3210&lt;/td>
&lt;td data-table-dtype="number">241&lt;/td>
&lt;td data-table-dtype="text">13.31&lt;/td>
&lt;td data-table-dtype="number">1801&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@APHClarkson@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">2910&lt;/td>
&lt;td data-table-dtype="number">232&lt;/td>
&lt;td data-table-dtype="text">12.54&lt;/td>
&lt;td data-table-dtype="number">228&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@tastapod@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">2546&lt;/td>
&lt;td data-table-dtype="number">210&lt;/td>
&lt;td data-table-dtype="text">12.12&lt;/td>
&lt;td data-table-dtype="number">175&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@Garwboy@ohai.social&lt;/td>
&lt;td data-table-dtype="number">1575&lt;/td>
&lt;td data-table-dtype="number">132&lt;/td>
&lt;td data-table-dtype="text">11.93&lt;/td>
&lt;td data-table-dtype="number">235&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@SusanMichie@fediscience.org&lt;/td>
&lt;td data-table-dtype="number">3274&lt;/td>
&lt;td data-table-dtype="number">279&lt;/td>
&lt;td data-table-dtype="text">11.73&lt;/td>
&lt;td data-table-dtype="number">960&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@mikegalsworthy@mas.to&lt;/td>
&lt;td data-table-dtype="number">29401&lt;/td>
&lt;td data-table-dtype="number">2727&lt;/td>
&lt;td data-table-dtype="text">10.78&lt;/td>
&lt;td data-table-dtype="number">1095&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@foosel@chaos.social&lt;/td>
&lt;td data-table-dtype="number">4066&lt;/td>
&lt;td data-table-dtype="number">388&lt;/td>
&lt;td data-table-dtype="text">10.47&lt;/td>
&lt;td data-table-dtype="number">2741&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@zachleat@fediverse.zachleat.com&lt;/td>
&lt;td data-table-dtype="number">5028&lt;/td>
&lt;td data-table-dtype="number">485&lt;/td>
&lt;td data-table-dtype="text">10.36&lt;/td>
&lt;td data-table-dtype="number">2471&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@katebevan@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">2368&lt;/td>
&lt;td data-table-dtype="number">254&lt;/td>
&lt;td data-table-dtype="text">9.32&lt;/td>
&lt;td data-table-dtype="number">748&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@Amy_&lt;a href="mailto:Hupe@social.design.systems">Hupe@social.design.systems&lt;/a>&lt;/td>
&lt;td data-table-dtype="number">985&lt;/td>
&lt;td data-table-dtype="number">106&lt;/td>
&lt;td data-table-dtype="text">9.29&lt;/td>
&lt;td data-table-dtype="number">249&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@laura@mastodon.laurakalbag.com&lt;/td>
&lt;td data-table-dtype="number">4422&lt;/td>
&lt;td data-table-dtype="number">491&lt;/td>
&lt;td data-table-dtype="number">9&lt;/td>
&lt;td data-table-dtype="number">1111&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@ChrisMayLA6@zirk.us&lt;/td>
&lt;td data-table-dtype="number">892&lt;/td>
&lt;td data-table-dtype="number">102&lt;/td>
&lt;td data-table-dtype="text">8.74&lt;/td>
&lt;td data-table-dtype="number">3062&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@13sarahmurphy@mastodon.green&lt;/td>
&lt;td data-table-dtype="number">3150&lt;/td>
&lt;td data-table-dtype="number">363&lt;/td>
&lt;td data-table-dtype="text">8.67&lt;/td>
&lt;td data-table-dtype="number">377&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@Tibor@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">4835&lt;/td>
&lt;td data-table-dtype="number">561&lt;/td>
&lt;td data-table-dtype="text">8.61&lt;/td>
&lt;td data-table-dtype="number">1812&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@cgseife@sciencemastodon.com&lt;/td>
&lt;td data-table-dtype="number">2831&lt;/td>
&lt;td data-table-dtype="number">332&lt;/td>
&lt;td data-table-dtype="text">8.52&lt;/td>
&lt;td data-table-dtype="number">949&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@blowdart@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">2746&lt;/td>
&lt;td data-table-dtype="number">335&lt;/td>
&lt;td data-table-dtype="text">8.19&lt;/td>
&lt;td data-table-dtype="number">1355&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@andy@bell.bz&lt;/td>
&lt;td data-table-dtype="number">2969&lt;/td>
&lt;td data-table-dtype="number">365&lt;/td>
&lt;td data-table-dtype="text">8.13&lt;/td>
&lt;td data-table-dtype="number">2386&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@jerry@infosec.exchange&lt;/td>
&lt;td data-table-dtype="number">25616&lt;/td>
&lt;td data-table-dtype="number">3326&lt;/td>
&lt;td data-table-dtype="text">7.7&lt;/td>
&lt;td data-table-dtype="number">17403&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@simon@fedi.simonwillison.net&lt;/td>
&lt;td data-table-dtype="number">14944&lt;/td>
&lt;td data-table-dtype="number">1972&lt;/td>
&lt;td data-table-dtype="text">7.57&lt;/td>
&lt;td data-table-dtype="number">2752&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@cyberlyra@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">1385&lt;/td>
&lt;td data-table-dtype="number">185&lt;/td>
&lt;td data-table-dtype="text">7.48&lt;/td>
&lt;td data-table-dtype="number">264&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@dell@journa.host&lt;/td>
&lt;td data-table-dtype="number">6685&lt;/td>
&lt;td data-table-dtype="number">923&lt;/td>
&lt;td data-table-dtype="text">7.24&lt;/td>
&lt;td data-table-dtype="number">560&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@GeePawHill@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">3075&lt;/td>
&lt;td data-table-dtype="number">425&lt;/td>
&lt;td data-table-dtype="text">7.23&lt;/td>
&lt;td data-table-dtype="number">1745&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@TheConversationUS@newsie.social&lt;/td>
&lt;td data-table-dtype="number">10901&lt;/td>
&lt;td data-table-dtype="number">1606&lt;/td>
&lt;td data-table-dtype="text">6.78&lt;/td>
&lt;td data-table-dtype="number">903&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@ftrain@tilde.zone&lt;/td>
&lt;td data-table-dtype="number">3533&lt;/td>
&lt;td data-table-dtype="number">531&lt;/td>
&lt;td data-table-dtype="text">6.65&lt;/td>
&lt;td data-table-dtype="number">559&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@mttaggart@fosstodon.org&lt;/td>
&lt;td data-table-dtype="number">3135&lt;/td>
&lt;td data-table-dtype="number">485&lt;/td>
&lt;td data-table-dtype="text">6.46&lt;/td>
&lt;td data-table-dtype="number">3921&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@jasongorman@mastodon.cloud&lt;/td>
&lt;td data-table-dtype="number">1061&lt;/td>
&lt;td data-table-dtype="number">167&lt;/td>
&lt;td data-table-dtype="text">6.35&lt;/td>
&lt;td data-table-dtype="number">1344&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@profcarroll@federate.social&lt;/td>
&lt;td data-table-dtype="number">13767&lt;/td>
&lt;td data-table-dtype="number">2170&lt;/td>
&lt;td data-table-dtype="text">6.34&lt;/td>
&lt;td data-table-dtype="number">1341&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@monkchips@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">1626&lt;/td>
&lt;td data-table-dtype="number">263&lt;/td>
&lt;td data-table-dtype="text">6.18&lt;/td>
&lt;td data-table-dtype="number">114&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@mxbck@front-end.social&lt;/td>
&lt;td data-table-dtype="number">1395&lt;/td>
&lt;td data-table-dtype="number">228&lt;/td>
&lt;td data-table-dtype="text">6.11&lt;/td>
&lt;td data-table-dtype="number">348&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@Drand@techhub.social&lt;/td>
&lt;td data-table-dtype="number">1564&lt;/td>
&lt;td data-table-dtype="number">262&lt;/td>
&lt;td data-table-dtype="text">5.96&lt;/td>
&lt;td data-table-dtype="number">348&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@sesivany@floss.social&lt;/td>
&lt;td data-table-dtype="number">1428&lt;/td>
&lt;td data-table-dtype="number">246&lt;/td>
&lt;td data-table-dtype="text">5.8&lt;/td>
&lt;td data-table-dtype="number">1486&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@happykhan@mstdn.science&lt;/td>
&lt;td data-table-dtype="number">1294&lt;/td>
&lt;td data-table-dtype="number">224&lt;/td>
&lt;td data-table-dtype="text">5.77&lt;/td>
&lt;td data-table-dtype="number">574&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@TheVinylConstituency@mastodon.scot&lt;/td>
&lt;td data-table-dtype="number">331&lt;/td>
&lt;td data-table-dtype="number">60&lt;/td>
&lt;td data-table-dtype="text">5.51&lt;/td>
&lt;td data-table-dtype="number">347&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@michelle@front-end.social&lt;/td>
&lt;td data-table-dtype="number">991&lt;/td>
&lt;td data-table-dtype="number">180&lt;/td>
&lt;td data-table-dtype="text">5.5&lt;/td>
&lt;td data-table-dtype="number">372&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@LauraThompson@mastodon.green&lt;/td>
&lt;td data-table-dtype="number">565&lt;/td>
&lt;td data-table-dtype="number">103&lt;/td>
&lt;td data-table-dtype="text">5.48&lt;/td>
&lt;td data-table-dtype="number">126&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@openrightsgroup@social.openrightsgroup.org&lt;/td>
&lt;td data-table-dtype="number">6284&lt;/td>
&lt;td data-table-dtype="number">1157&lt;/td>
&lt;td data-table-dtype="text">5.43&lt;/td>
&lt;td data-table-dtype="number">314&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@maartenballiauw@mastodon.online&lt;/td>
&lt;td data-table-dtype="number">1547&lt;/td>
&lt;td data-table-dtype="number">285&lt;/td>
&lt;td data-table-dtype="text">5.42&lt;/td>
&lt;td data-table-dtype="number">612&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@OkieSpaceQueen@scicomm.xyz&lt;/td>
&lt;td data-table-dtype="number">1503&lt;/td>
&lt;td data-table-dtype="number">282&lt;/td>
&lt;td data-table-dtype="text">5.32&lt;/td>
&lt;td data-table-dtype="number">237&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@kevlin@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">1033&lt;/td>
&lt;td data-table-dtype="number">196&lt;/td>
&lt;td data-table-dtype="text">5.27&lt;/td>
&lt;td data-table-dtype="number">337&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@timhutton@mathstodon.xyz&lt;/td>
&lt;td data-table-dtype="number">2254&lt;/td>
&lt;td data-table-dtype="number">439&lt;/td>
&lt;td data-table-dtype="text">5.13&lt;/td>
&lt;td data-table-dtype="number">338&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@chrisjhorn@mastodon.ie&lt;/td>
&lt;td data-table-dtype="number">546&lt;/td>
&lt;td data-table-dtype="number">107&lt;/td>
&lt;td data-table-dtype="text">5.1&lt;/td>
&lt;td data-table-dtype="number">215&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@cogdog@social.fossdle.org&lt;/td>
&lt;td data-table-dtype="number">495&lt;/td>
&lt;td data-table-dtype="number">98&lt;/td>
&lt;td data-table-dtype="text">5.05&lt;/td>
&lt;td data-table-dtype="number">447&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@Downes@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">824&lt;/td>
&lt;td data-table-dtype="number">163&lt;/td>
&lt;td data-table-dtype="text">5.05&lt;/td>
&lt;td data-table-dtype="number">4036&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@holly_&lt;a href="mailto:cummins@hachyderm.io">cummins@hachyderm.io&lt;/a>&lt;/td>
&lt;td data-table-dtype="number">1080&lt;/td>
&lt;td data-table-dtype="number">214&lt;/td>
&lt;td data-table-dtype="text">5.04&lt;/td>
&lt;td data-table-dtype="number">270&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@mattgodbolt@hachyderm.io&lt;/td>
&lt;td data-table-dtype="number">2781&lt;/td>
&lt;td data-table-dtype="number">557&lt;/td>
&lt;td data-table-dtype="text">4.99&lt;/td>
&lt;td data-table-dtype="number">415&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@hopkinsdavid@mastodon.world&lt;/td>
&lt;td data-table-dtype="number">249&lt;/td>
&lt;td data-table-dtype="number">51&lt;/td>
&lt;td data-table-dtype="text">4.88&lt;/td>
&lt;td data-table-dtype="number">248&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@aral@mastodon.ar.al&lt;/td>
&lt;td data-table-dtype="number">32596&lt;/td>
&lt;td data-table-dtype="number">6714&lt;/td>
&lt;td data-table-dtype="text">4.85&lt;/td>
&lt;td data-table-dtype="number">23198&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@tchambers@indieweb.social&lt;/td>
&lt;td data-table-dtype="number">11560&lt;/td>
&lt;td data-table-dtype="number">2402&lt;/td>
&lt;td data-table-dtype="text">4.81&lt;/td>
&lt;td data-table-dtype="number">20474&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@harold@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">758&lt;/td>
&lt;td data-table-dtype="number">159&lt;/td>
&lt;td data-table-dtype="text">4.76&lt;/td>
&lt;td data-table-dtype="number">1003&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@coachtony@me.dm&lt;/td>
&lt;td data-table-dtype="number">2102&lt;/td>
&lt;td data-table-dtype="number">445&lt;/td>
&lt;td data-table-dtype="text">4.72&lt;/td>
&lt;td data-table-dtype="number">570&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@expede@octodon.social&lt;/td>
&lt;td data-table-dtype="number">481&lt;/td>
&lt;td data-table-dtype="number">103&lt;/td>
&lt;td data-table-dtype="text">4.66&lt;/td>
&lt;td data-table-dtype="number">106&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@rdanielkelemen@eupolicy.social&lt;/td>
&lt;td data-table-dtype="number">1648&lt;/td>
&lt;td data-table-dtype="number">358&lt;/td>
&lt;td data-table-dtype="text">4.6&lt;/td>
&lt;td data-table-dtype="number">179&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@Fascinatorfun@mastodon.green&lt;/td>
&lt;td data-table-dtype="number">6432&lt;/td>
&lt;td data-table-dtype="number">1434&lt;/td>
&lt;td data-table-dtype="text">4.48&lt;/td>
&lt;td data-table-dtype="number">3440&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@vivianho@journa.host&lt;/td>
&lt;td data-table-dtype="number">932&lt;/td>
&lt;td data-table-dtype="number">208&lt;/td>
&lt;td data-table-dtype="text">4.48&lt;/td>
&lt;td data-table-dtype="number">122&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@mattpotter@c.im&lt;/td>
&lt;td data-table-dtype="number">1331&lt;/td>
&lt;td data-table-dtype="number">298&lt;/td>
&lt;td data-table-dtype="text">4.46&lt;/td>
&lt;td data-table-dtype="number">847&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@mike@robot.rodeo&lt;/td>
&lt;td data-table-dtype="number">8413&lt;/td>
&lt;td data-table-dtype="number">1925&lt;/td>
&lt;td data-table-dtype="text">4.37&lt;/td>
&lt;td data-table-dtype="number">1699&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@ricmac@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">1305&lt;/td>
&lt;td data-table-dtype="number">306&lt;/td>
&lt;td data-table-dtype="text">4.26&lt;/td>
&lt;td data-table-dtype="number">566&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@jon@gruene.social&lt;/td>
&lt;td data-table-dtype="number">9580&lt;/td>
&lt;td data-table-dtype="number">2265&lt;/td>
&lt;td data-table-dtype="text">4.22&lt;/td>
&lt;td data-table-dtype="number">3362&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@adamsdesk@fosstodon.org&lt;/td>
&lt;td data-table-dtype="number">316&lt;/td>
&lt;td data-table-dtype="number">75&lt;/td>
&lt;td data-table-dtype="text">4.21&lt;/td>
&lt;td data-table-dtype="number">1895&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@Hhesterm@mastodon.online&lt;/td>
&lt;td data-table-dtype="number">1520&lt;/td>
&lt;td data-table-dtype="number">364&lt;/td>
&lt;td data-table-dtype="text">4.17&lt;/td>
&lt;td data-table-dtype="number">317&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@DocOnDev@mstdn.social&lt;/td>
&lt;td data-table-dtype="number">530&lt;/td>
&lt;td data-table-dtype="number">129&lt;/td>
&lt;td data-table-dtype="text">4.1&lt;/td>
&lt;td data-table-dtype="number">247&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@martin@openedtech.social&lt;/td>
&lt;td data-table-dtype="number">781&lt;/td>
&lt;td data-table-dtype="number">191&lt;/td>
&lt;td data-table-dtype="text">4.08&lt;/td>
&lt;td data-table-dtype="number">227&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@csharpfritz@mas.to&lt;/td>
&lt;td data-table-dtype="number">982&lt;/td>
&lt;td data-table-dtype="number">245&lt;/td>
&lt;td data-table-dtype="number">4&lt;/td>
&lt;td data-table-dtype="number">204&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@jongalloway@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">1424&lt;/td>
&lt;td data-table-dtype="number">376&lt;/td>
&lt;td data-table-dtype="text">3.78&lt;/td>
&lt;td data-table-dtype="number">132&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@mikeolson@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">605&lt;/td>
&lt;td data-table-dtype="number">160&lt;/td>
&lt;td data-table-dtype="text">3.78&lt;/td>
&lt;td data-table-dtype="number">468&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@Martindotnet@hachyderm.io&lt;/td>
&lt;td data-table-dtype="number">731&lt;/td>
&lt;td data-table-dtype="number">196&lt;/td>
&lt;td data-table-dtype="text">3.72&lt;/td>
&lt;td data-table-dtype="number">915&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@SeanJones@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">3788&lt;/td>
&lt;td data-table-dtype="number">1028&lt;/td>
&lt;td data-table-dtype="text">3.68&lt;/td>
&lt;td data-table-dtype="number">942&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@jarango@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">588&lt;/td>
&lt;td data-table-dtype="number">162&lt;/td>
&lt;td data-table-dtype="text">3.62&lt;/td>
&lt;td data-table-dtype="number">534&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@charlesarthur@newsie.social&lt;/td>
&lt;td data-table-dtype="number">1059&lt;/td>
&lt;td data-table-dtype="number">295&lt;/td>
&lt;td data-table-dtype="text">3.58&lt;/td>
&lt;td data-table-dtype="number">408&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@charlesarthur@newsie.social&lt;/td>
&lt;td data-table-dtype="number">1059&lt;/td>
&lt;td data-table-dtype="number">295&lt;/td>
&lt;td data-table-dtype="text">3.58&lt;/td>
&lt;td data-table-dtype="number">408&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@davidtoddmccarty@me.dm&lt;/td>
&lt;td data-table-dtype="number">3306&lt;/td>
&lt;td data-table-dtype="number">924&lt;/td>
&lt;td data-table-dtype="text">3.57&lt;/td>
&lt;td data-table-dtype="number">1533&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@eloquence@social.coop&lt;/td>
&lt;td data-table-dtype="number">5485&lt;/td>
&lt;td data-table-dtype="number">1542&lt;/td>
&lt;td data-table-dtype="text">3.55&lt;/td>
&lt;td data-table-dtype="number">3071&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@filipw@mathstodon.xyz&lt;/td>
&lt;td data-table-dtype="number">1041&lt;/td>
&lt;td data-table-dtype="number">297&lt;/td>
&lt;td data-table-dtype="text">3.5&lt;/td>
&lt;td data-table-dtype="number">595&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@danmcquillan@kolektiva.social&lt;/td>
&lt;td data-table-dtype="number">855&lt;/td>
&lt;td data-table-dtype="number">245&lt;/td>
&lt;td data-table-dtype="text">3.48&lt;/td>
&lt;td data-table-dtype="number">346&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@ctietze@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">881&lt;/td>
&lt;td data-table-dtype="number">275&lt;/td>
&lt;td data-table-dtype="text">3.2&lt;/td>
&lt;td data-table-dtype="number">2643&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@djnicholl@mastodonapp.uk&lt;/td>
&lt;td data-table-dtype="number">985&lt;/td>
&lt;td data-table-dtype="number">318&lt;/td>
&lt;td data-table-dtype="text">3.09&lt;/td>
&lt;td data-table-dtype="number">115&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@rickmans@nerdculture.de&lt;/td>
&lt;td data-table-dtype="number">1298&lt;/td>
&lt;td data-table-dtype="number">432&lt;/td>
&lt;td data-table-dtype="number">3&lt;/td>
&lt;td data-table-dtype="number">1562&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@raesene@infosec.exchange&lt;/td>
&lt;td data-table-dtype="number">764&lt;/td>
&lt;td data-table-dtype="number">255&lt;/td>
&lt;td data-table-dtype="text">2.99&lt;/td>
&lt;td data-table-dtype="number">256&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@rklau@sfba.social&lt;/td>
&lt;td data-table-dtype="number">1527&lt;/td>
&lt;td data-table-dtype="number">511&lt;/td>
&lt;td data-table-dtype="text">2.98&lt;/td>
&lt;td data-table-dtype="number">156&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@UrsEnzler@tooting.ch&lt;/td>
&lt;td data-table-dtype="number">259&lt;/td>
&lt;td data-table-dtype="number">87&lt;/td>
&lt;td data-table-dtype="text">2.97&lt;/td>
&lt;td data-table-dtype="number">485&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@clive@saturation.social&lt;/td>
&lt;td data-table-dtype="number">10495&lt;/td>
&lt;td data-table-dtype="number">3556&lt;/td>
&lt;td data-table-dtype="text">2.95&lt;/td>
&lt;td data-table-dtype="number">4863&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@testobsessed@ruby.social&lt;/td>
&lt;td data-table-dtype="number">1389&lt;/td>
&lt;td data-table-dtype="number">485&lt;/td>
&lt;td data-table-dtype="text">2.86&lt;/td>
&lt;td data-table-dtype="number">415&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@markmoxon@universeodon.com&lt;/td>
&lt;td data-table-dtype="number">307&lt;/td>
&lt;td data-table-dtype="number">107&lt;/td>
&lt;td data-table-dtype="text">2.86&lt;/td>
&lt;td data-table-dtype="number">156&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@sf105@mastodonapp.uk&lt;/td>
&lt;td data-table-dtype="number">398&lt;/td>
&lt;td data-table-dtype="number">139&lt;/td>
&lt;td data-table-dtype="text">2.86&lt;/td>
&lt;td data-table-dtype="number">228&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@jopo_&lt;a href="mailto:dr@critcare.social">dr@critcare.social&lt;/a>&lt;/td>
&lt;td data-table-dtype="number">732&lt;/td>
&lt;td data-table-dtype="number">259&lt;/td>
&lt;td data-table-dtype="text">2.82&lt;/td>
&lt;td data-table-dtype="number">192&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@p_&lt;a href="mailto:malin@mastodon.gamedev.place">malin@mastodon.gamedev.place&lt;/a>&lt;/td>
&lt;td data-table-dtype="number">568&lt;/td>
&lt;td data-table-dtype="number">201&lt;/td>
&lt;td data-table-dtype="text">2.82&lt;/td>
&lt;td data-table-dtype="number">112&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@liztai@hachyderm.io&lt;/td>
&lt;td data-table-dtype="number">1592&lt;/td>
&lt;td data-table-dtype="number">574&lt;/td>
&lt;td data-table-dtype="text">2.77&lt;/td>
&lt;td data-table-dtype="number">4515&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@CGLambdin@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">216&lt;/td>
&lt;td data-table-dtype="number">78&lt;/td>
&lt;td data-table-dtype="text">2.76&lt;/td>
&lt;td data-table-dtype="number">1047&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@ben@mastodon.adida.net&lt;/td>
&lt;td data-table-dtype="number">1510&lt;/td>
&lt;td data-table-dtype="number">555&lt;/td>
&lt;td data-table-dtype="text">2.72&lt;/td>
&lt;td data-table-dtype="number">769&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@james@bne.social&lt;/td>
&lt;td data-table-dtype="number">532&lt;/td>
&lt;td data-table-dtype="number">195&lt;/td>
&lt;td data-table-dtype="text">2.72&lt;/td>
&lt;td data-table-dtype="number">274&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@ewen@photog.social&lt;/td>
&lt;td data-table-dtype="number">1100&lt;/td>
&lt;td data-table-dtype="number">422&lt;/td>
&lt;td data-table-dtype="text">2.6&lt;/td>
&lt;td data-table-dtype="number">1199&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@ldodds@mastodon.me.uk&lt;/td>
&lt;td data-table-dtype="number">501&lt;/td>
&lt;td data-table-dtype="number">192&lt;/td>
&lt;td data-table-dtype="text">2.6&lt;/td>
&lt;td data-table-dtype="number">718&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@crschmidt@better.boston&lt;/td>
&lt;td data-table-dtype="number">1099&lt;/td>
&lt;td data-table-dtype="number">430&lt;/td>
&lt;td data-table-dtype="text">2.55&lt;/td>
&lt;td data-table-dtype="number">913&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@fetzert@econtwitter.net&lt;/td>
&lt;td data-table-dtype="number">2520&lt;/td>
&lt;td data-table-dtype="number">1043&lt;/td>
&lt;td data-table-dtype="text">2.41&lt;/td>
&lt;td data-table-dtype="number">1498&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@futzle@old.mermaid.town&lt;/td>
&lt;td data-table-dtype="number">1443&lt;/td>
&lt;td data-table-dtype="number">619&lt;/td>
&lt;td data-table-dtype="text">2.33&lt;/td>
&lt;td data-table-dtype="number">1788&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@chriscorrigan@mstdn.ca&lt;/td>
&lt;td data-table-dtype="number">295&lt;/td>
&lt;td data-table-dtype="number">128&lt;/td>
&lt;td data-table-dtype="text">2.3&lt;/td>
&lt;td data-table-dtype="number">367&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@danclarke@mstdn.social&lt;/td>
&lt;td data-table-dtype="number">242&lt;/td>
&lt;td data-table-dtype="number">105&lt;/td>
&lt;td data-table-dtype="text">2.3&lt;/td>
&lt;td data-table-dtype="number">110&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@jimcarroll@futurist.info&lt;/td>
&lt;td data-table-dtype="number">1651&lt;/td>
&lt;td data-table-dtype="number">716&lt;/td>
&lt;td data-table-dtype="text">2.3&lt;/td>
&lt;td data-table-dtype="number">2241&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@gin@scicomm.xyz&lt;/td>
&lt;td data-table-dtype="number">425&lt;/td>
&lt;td data-table-dtype="number">184&lt;/td>
&lt;td data-table-dtype="text">2.3&lt;/td>
&lt;td data-table-dtype="number">218&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@SuneAuken@mastodon.world&lt;/td>
&lt;td data-table-dtype="number">2684&lt;/td>
&lt;td data-table-dtype="number">1169&lt;/td>
&lt;td data-table-dtype="text">2.29&lt;/td>
&lt;td data-table-dtype="number">2854&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@kegill@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">449&lt;/td>
&lt;td data-table-dtype="number">201&lt;/td>
&lt;td data-table-dtype="text">2.23&lt;/td>
&lt;td data-table-dtype="number">560&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@judeswae@toot.thoughtworks.com&lt;/td>
&lt;td data-table-dtype="number">912&lt;/td>
&lt;td data-table-dtype="number">439&lt;/td>
&lt;td data-table-dtype="text">2.07&lt;/td>
&lt;td data-table-dtype="number">3528&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@jzb@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">549&lt;/td>
&lt;td data-table-dtype="number">267&lt;/td>
&lt;td data-table-dtype="text">2.05&lt;/td>
&lt;td data-table-dtype="number">462&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@vic@mstdn.social&lt;/td>
&lt;td data-table-dtype="number">325&lt;/td>
&lt;td data-table-dtype="number">158&lt;/td>
&lt;td data-table-dtype="text">2.05&lt;/td>
&lt;td data-table-dtype="number">677&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@susherwood@mastodon.social&lt;/td>
&lt;td data-table-dtype="number">1858&lt;/td>
&lt;td data-table-dtype="number">910&lt;/td>
&lt;td data-table-dtype="text">2.04&lt;/td>
&lt;td data-table-dtype="number">397&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="text">@emilybache@sw-development-is.social&lt;/td>
&lt;td data-table-dtype="number">842&lt;/td>
&lt;td data-table-dtype="number">413&lt;/td>
&lt;td data-table-dtype="text">2.03&lt;/td>
&lt;td data-table-dtype="number">241&lt;/td>
&lt;/tr>
&lt;caption>Table 3: Follwed with 2 &amp;lt; followratio , 700 and toots &amp;gt; 100&lt;/caption>
&lt;/table>
&lt;p>This, together with the earlier list of followers looks much more fruitful ground to explore for &amp;ldquo;Connectors&amp;rdquo;&lt;/p>
&lt;h2 id="exploring-content">Exploring content&lt;/h2>
&lt;p>I don&amp;rsquo;t have the time or tools to do an exhaustive examination of content from these potential Connectors, let alone any kind of semantic classification of their posts.&lt;/p>
&lt;p>Sampling at random though, I noticed the following:&lt;/p>
&lt;ul>
&lt;li>a fair amount of boosting (re-posting someone&amp;rsquo;s tweet into your timeline and to your followers)&lt;/li>
&lt;li>a fair amount of tagging other people&lt;/li>
&lt;li>a fair amount of linking to web content&lt;/li>
&lt;li>yet still a reasonable amount of their own content&lt;/li>
&lt;/ul>
&lt;p>In other words, it &amp;ldquo;just looks balanced&amp;rdquo;.&lt;/p>
&lt;h2 id="reflection">Reflection&lt;/h2>
&lt;p>At the risk of starting a discussion on &lt;a href="https://en.wikipedia.org/wiki/How_many_angels_can_dance_on_the_head_of_a_pin%3F" target="_blank" rel="noopener">angels and pinheads&lt;/a>, there&amp;rsquo;s part of me that&amp;rsquo;s not convinced that follower ratio is a good measure for who is a &amp;lsquo;Connector&amp;rsquo; - perhaps a good Connector would tend to show a more balanced ratio of followers / follows?&lt;/p>
&lt;p>I think that is born out by what I found at the top of my Follows list, accounts with extreme &lt;code>followratio&lt;/code> that I arbitrarily classifed as either &lt;strong>Broadcasters&lt;/strong> or &lt;strong>Just Famous&lt;/strong>, neither of which are much use in a knowledge network.&lt;/p>
&lt;p>In the world of technical analysis of social networks, &lt;a href="https://en.wikipedia.org/wiki/Valdis_Krebs" target="_blank" rel="noopener">Valdis Krebs&lt;/a> pioneered this work 15+ years ago, and if we were able to do that type of analysis what we might be looking for are people with high &lt;a href="http://orgnet.com/sna.html" target="_blank" rel="noopener">&lt;em>Betweenness Centrality&lt;/em>&lt;/a>, i.e. people who sit between otherwise-disconnected groups in the network.&lt;/p>
&lt;p>Regardless of these network topologies, the key point is the behaviour, a connector is someone who joins up others, who &lt;a href="https://bethkanter.org/close-the-triangle/" target="_blank" rel="noopener">closes the triangle&lt;/a>.&lt;/p>
&lt;p>Although someone with more skills and time might pull off some amazing semantic or topological study, in pragmatic terms I am pretty happy with my ad hoc observation that Connectors seem to be &amp;ldquo;balanced&amp;rdquo;, reflected by posts that show a good mixture of:&lt;/p>
&lt;ul>
&lt;li>boosts&lt;/li>
&lt;li>tagging others&lt;/li>
&lt;li>sharing links&lt;/li>
&lt;/ul>
&lt;p>What do &lt;em>you&lt;/em> think?&lt;/p>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 24/100&lt;/p></description></item><item><title>Meetings may be part of the work, but that's not enough</title><link>https://www.synesthesia.co.uk/2023/02/28/meetings-may-be-part-of-the-work-but-thats-not-enough/</link><pubDate>Tue, 28 Feb 2023 06:26:18 +0000</pubDate><guid>https://www.synesthesia.co.uk/2023/02/28/meetings-may-be-part-of-the-work-but-thats-not-enough/</guid><description>&lt;p>Yesterday I wrote &lt;a href="https://www.synesthesia.co.uk/2023/02/27/finding-the-real-work-that-meetings-are-good-at/" target="_blank" rel="noopener">my first impressions&lt;/a> triggered by &lt;a href="https://mastodon.social/@elizayer" target="_blank" rel="noopener">Elizabeth Ayer&lt;/a>&amp;rsquo;s &lt;a href="https://medium.com/@ElizAyer/meetings-are-the-work-9e429dde6aa3" target="_blank" rel="noopener">&amp;ldquo;Meetings &lt;em>are&lt;/em> the work&amp;rdquo;&lt;/a>.&lt;/p>
&lt;p>On further reflection I think Elizabeth&amp;rsquo;s hypothesis is &lt;a href="https://en.wikipedia.org/wiki/Necessity_and_sufficiency" target="_blank" rel="noopener">necessary but not sufficient&lt;/a> in a mission to truly improve organisational learning and the state of knowledge work within companies.&lt;/p>
&lt;p>To make that point I am going to lean heavily on Harold Jarche&amp;rsquo;s model of &lt;a href="https://jarche.com/2021/10/learning-in-the-complex-domain/" target="_blank" rel="noopener">Learning in the Complex Domain&lt;/a>, and specifically the distinctions in this diagram:&lt;/p>
&lt;p>
&lt;figure id="figure-pkm-cynefin">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="PKM in the presence of complexity (c) Jarche 2021 CC-BY-NC-SA" srcset="
/2023/02/28/meetings-may-be-part-of-the-work-but-thats-not-enough/pkm-cynefin_hub8d9268b8bbc812fe34b6d3d0f46bb41_176755_cc1635fbaa90fcd829c222e3cd37a1de.webp 400w,
/2023/02/28/meetings-may-be-part-of-the-work-but-thats-not-enough/pkm-cynefin_hub8d9268b8bbc812fe34b6d3d0f46bb41_176755_ca6eea559535843c25b6584701598f7f.webp 760w,
/2023/02/28/meetings-may-be-part-of-the-work-but-thats-not-enough/pkm-cynefin_hub8d9268b8bbc812fe34b6d3d0f46bb41_176755_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2023/02/28/meetings-may-be-part-of-the-work-but-thats-not-enough/pkm-cynefin_hub8d9268b8bbc812fe34b6d3d0f46bb41_176755_cc1635fbaa90fcd829c222e3cd37a1de.webp"
width="760"
height="565"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
PKM in the presence of complexity (c) Jarche 2021 CC-BY-NC-SA
&lt;/figcaption>&lt;/figure>
.&lt;/p>
&lt;p>Reading between the lines of Elizabeth&amp;rsquo;s post and profile, I think the experience on which she bases her thesis is the US tech industry. I have no experience of working in that environment, so I fully acknowledge that my response contains some assumptions. Based on my own experience in a large and complex organisation her position on the attitude to meetings and the common dysfunctions of meetings rings true, as do her suggestions about how to make meetings generative of knowledge. However my sense is that we are still talking about interactions that lie towards the bottom left of the figure, either &amp;ldquo;semi-permanent collaborative teams&amp;rdquo; or &amp;ldquo;temporary negotiated hierarchies&amp;rdquo;.&lt;/p>
&lt;p>To fully realise the value of collective learning to the benefit of both the individuals &lt;em>and&lt;/em> the company we need to augment the learning with community and network layers. Large companies may support communities of practice where professionals of different skill sets can exchange ideas, but how much is that in tension with a tightly-managed Tayloristic division of work?&lt;/p>
&lt;p>Moving on towards the top-right of the diagram how much do large companies permit or facilitate their professionals to spend time in wider knowledge networks? In the tech sphere a useful proxy indicator might be the &lt;a href="https://www.mend.io/resources/blog/the-top-10-companies-contributing-to-open-source/" target="_blank" rel="noopener">numbers of staff who are allowed to particpate in open source initiatives&lt;/a>? &lt;em>(caveat, 2018 figures)&lt;/em> In so far as those companies make such policies public it might be interesting to survey the IP policies they impose on staff before permitting them to engage with open source projects.&lt;/p>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 23/100&lt;/p></description></item><item><title>Finding the real work that meetings are good at</title><link>https://www.synesthesia.co.uk/2023/02/27/finding-the-real-work-that-meetings-are-good-at/</link><pubDate>Mon, 27 Feb 2023 16:01:57 +0000</pubDate><guid>https://www.synesthesia.co.uk/2023/02/27/finding-the-real-work-that-meetings-are-good-at/</guid><description>&lt;p>&lt;a href="https://mastodon.social/@elizayer" target="_blank" rel="noopener">Elizabeth Ayer&lt;/a> gets &lt;a href="https://mastodon.social/@elizayer/109910545887946424" target="_blank" rel="noopener">&lt;em>deeply frustrated by the whole &amp;ldquo;meetings aren&amp;rsquo;t real work&amp;rdquo; thing&lt;/em>&lt;/a> and has expanded that thought in &lt;a href="https://medium.com/@ElizAyer/meetings-are-the-work-9e429dde6aa3" target="_blank" rel="noopener">Meetings &lt;em>are&lt;/em> the work&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>Every day I see people trying hard to avoid meetings
&amp;hellip;
I get it. Meeting culture sucks. It’s too easy for people to thoughtlessly take each others’ time, occupy standing slots, show off with performative teamwork, and generally suck your energy. Meetings feel like dead time. Meetings are time spent with people yet strangely devoid of social gratification. Meetings typically bore most participants — the greatest sin in knowledge work — and when they’re over, nothing has changed except us all being that much closer to retirement.&lt;/p>
&lt;/blockquote>
&lt;p>Her hypothesis borrows from &lt;a href="https://archive.org/details/landmarksoftomor00druc_0/mode/2up" target="_blank" rel="noopener">Druckers&amp;rsquo;s &lt;em>Landmarks of Tomorrow&lt;/em>&lt;/a> and expresses success in knowledge as being not the facts we know, but by how good we are at judging the truth of uncertain things, and suggests that &lt;em>in a healthy workplace, the whole system promotes higher-quality knowledge production, above and beyond what any individual could achieve alone&amp;hellip;&lt;/em>&lt;/p>
&lt;p>Contrasting that with the almost ubiquitous sense that organisations don&amp;rsquo;t learn, Elizabeth leans heavily on &lt;a href="https://archive.org/details/onorganizational0000argy" target="_blank" rel="noopener">Argyris &lt;em>On Organizational Learning&lt;/em>&lt;/a> to assert that pretty much everyone finds the interaciton of individual and organizational learning very hard.&lt;/p>
&lt;p>She expresses what she thinks &lt;em>does&lt;/em> work for learning, as:&lt;/p>
&lt;blockquote>
&lt;ul>
&lt;li>A good individual knowledge worker has information and experience in the domain they’re making decisions about.&lt;/li>
&lt;li>A great knowledge worker has a solid practice of learning, demonstrably improving in effectiveness over time.&lt;/li>
&lt;li>The best knowledge workers have a social reflective practice to acquire more diverse input, do a better job of interpretation, and actively find errors in thinking.&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>In the continuous exercise of prioritisation and intentionality we (consciously or otherwise) steer the forms of knowledge that we surface, but to move beyond the capabilities of am individual mind we also need to learn to live with different viewpoints and learn how to work together to synthesise a greater truth.&lt;/p>
&lt;p>This work is inherently collaborative, and often &amp;ldquo;messy&amp;rdquo;, it doesn&amp;rsquo;t fit well into work cultures that are focused on deeply-structured work and progress measures. Even more challenging, she writes: &lt;em>Forming new knowledge requires you to be open to whole people, not just the facet of their expected role. It can also be ephemeral; if you don’t work to keep them, good thoughts vanish again.&lt;/em>&lt;/p>
&lt;p>Her call to action is:&lt;/p>
&lt;blockquote>
&lt;p>not about the first-order “how to make knowledge together,” but rather about how we can promote culture change to appropriately value social meaning-making and reflective practice.&lt;/p>
&lt;ol>
&lt;li>Recognize that it takes active resistance for interpretation spaces to thrive in tech orgs. There is such a strong pull in our work systems to decompose work that it’s borderline revolutionary to center integration and meaning instead. It is likely to be uncomfortable and probably won’t be directly rewarded.&lt;/li>
&lt;li>Notice the conditions under which you are a not good as a knowledge-maker (e.g. early mornings, after too many other meetings). Avoid collaboration under those circumstances, because it reinforces the devaluation of collaborative spaces.&lt;/li>
&lt;li>Positively reinforce the meaning-making parts in meeting spaces. Example: “this conversation was valuable — I’d hadn’t realized we were using different definitions!”&lt;/li>
&lt;li>Negatively reinforce the one-way or mechanical tasks in shared spaces Examples: shift simpler communciations to written or recorded media, ringfence reading time for others if necessary, and most importantly, lead by actually reading what others communicate to you async.&lt;/li>
&lt;li>Be mindful of zoom levels and different cognitive tasks.&lt;/li>
&lt;li>Resist the urge to fill in the hunger for meaning with lists and tasks. Conversations with these as a primary focus are the empty calories of a working life. Fair play if they exist to provoke the useful conversations, though.&lt;/li>
&lt;li>Shift personal development away from project management mechanics like backlog management or forecasting and towards knowledge and communication topics like facilitation, collaborative decision-making, effective writing.&lt;/li>
&lt;li>Get inspired by learning collectives.&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>Elizabeth closes by asserting that the common meme of &amp;ldquo;meetings aren&amp;rsquo;t work&amp;rdquo; completely reinforces (and is therefore reinforced by) the capitalist / Taylorist split of employees between &amp;ldquo;thinkers&amp;rdquo; and &amp;ldquo;doers&amp;rdquo;:&lt;/p>
&lt;blockquote>
&lt;p>That’s toxic productivity culture speaking. That’s the dominant power structure trying to preserve a split between thinkers and doers. It’s a perspective that rejects the dignity of knowledge work and of your colleagues as knowers&lt;/p>
&lt;/blockquote>
&lt;h2 id="initial-reflection">Initial Reflection&lt;/h2>
&lt;p>I found this a timely piece of reading - although I am currently focused on how we can help colleagues get better at their individual sense-making, that is but a step on the journey towards a better collective sense-making around shared challenges.&lt;/p>
&lt;p>Elizabeth&amp;rsquo;s post contains some bold links to some very big philosophical (and other) concepts - to be frank without her familiarity with those writings I found it a little hard to follow the thread at points. Intuitively the conclusions are right, but I think that if we are to influence others then we need to do more work to join the dots in an accessible way.&lt;/p>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 22/100&lt;/p></description></item><item><title>A McLuhan Tetrad about GitHub CoPilot</title><link>https://www.synesthesia.co.uk/2023/02/23/a-mcluhan-tetrad-about-github-copilot/</link><pubDate>Thu, 23 Feb 2023 07:12:03 +0000</pubDate><guid>https://www.synesthesia.co.uk/2023/02/23/a-mcluhan-tetrad-about-github-copilot/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>I am currently re-experiencing (after 9 years!) Harold Jarche&amp;rsquo;s &lt;a href="https://jarche.com/pkm/" target="_blank" rel="noopener">Personal Knowledge Mastery&lt;/a> course. One constant is Harold&amp;rsquo;s focus on PKM as a discipline, with the application of thinking tools to the process of making sense of the world.&lt;/p>
&lt;p>One of those tools that Harold &lt;a href="https://jarche.com/2017/04/tetrads-for-sense-making/" target="_blank" rel="noopener">advocates&lt;/a> is the &lt;a href="https://en.wikipedia.org/wiki/Tetrad_of_media_effects" target="_blank" rel="noopener">McLuhan &lt;strong>Tetrad&lt;/strong>&lt;/a> as a way of applying McLuhan&amp;rsquo;s Laws of Media to a given problem. Perhaps the best way to explain this approach is to quote McLuhan:&lt;/p>
&lt;blockquote>
&lt;p>“For example, a Medium may EXTEND a particular characteristic or enhance a specific capability. When that particular item is EXTENDED beyond reasonable limits, the over-extension REVERSES into a complementary, but opposite action or form that directly and thematically corresponds to the specific EXTENSION. Similarly, the EXTENDED offering would OBSOLESCE some attribute of an earlier Medium that relates to the aspect being extended, and RETRIEVE an earlier form of that aspect belonging to some previously OBSOLESCED Medium.” —&lt;a href="http://kairos.technorhetoric.net/9.1/reviews/brooks/managers.html" target="_blank" rel="noopener">McLuhan for Managers&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>As part of the course we have been set the challenge to select a technology or medium and analyse using this model.&lt;/p>
&lt;h2 id="first-experiment">First experiment&lt;/h2>
&lt;p>For my first experiment I have selected AI-based code tools, such as &lt;a href="https://github.com/features/copilot/" target="_blank" rel="noopener">GitHub CoPilot&lt;/a>.&lt;/p>
&lt;p>These (I&amp;rsquo;ll keep it generic, although I only know of the one example at present) tools use a large language model that has been trained on large amounts of software code, and which are integrated with commonly-used code editors. As the developer types either code or comments, the AI model will (when prompted) offer suggestions for the next piece of code.&lt;/p>
&lt;p>From my fairly short exposure to the tool on a new project, I would say that perhaps 50-60% of the time it produces something that goes a long way towards expressing what you needed to achieve with the next statement block or small function, perhaps 20% of the time it is in the right direction but needs a reasonable amount of changes, and then inevitably there will be some suggestions which are garbage.&lt;/p>
&lt;p>Again, in my limited experience, the key benefits are:&lt;/p>
&lt;ul>
&lt;li>speed with which it places the typical &amp;ldquo;boilerplate&amp;rdquo; code that is needed with almost any coding framework, allowing you to focus more time on business logic&lt;/li>
&lt;li>quickly expressing common language structures, again, allowing you to focus on &lt;em>what&lt;/em> you are trying to achieve rather than &lt;em>how&lt;/em>&lt;/li>
&lt;/ul>
&lt;h2 id="placing-this-in-a-tetrad">Placing this in a Tetrad&lt;/h2>
&lt;p>Here is my first attempt at applying the McLuhan model to AI-assisted code suggestions:&lt;/p>
&lt;figure id="figure-mcluhan-tetrad---ai-assisted-code-editors">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="McLuhan Tetrad - AI assisted code editors" srcset="
/2023/02/23/a-mcluhan-tetrad-about-github-copilot/mcluhan-tetrad-github-copilot.drawio_hu4d176d92ca810899da25db60f70beab3_28398_b742ddc9dd6f1b5a7f63b45217ff417d.webp 400w,
/2023/02/23/a-mcluhan-tetrad-about-github-copilot/mcluhan-tetrad-github-copilot.drawio_hu4d176d92ca810899da25db60f70beab3_28398_3de477f9e8a94c8952a38c118b49ec82.webp 760w,
/2023/02/23/a-mcluhan-tetrad-about-github-copilot/mcluhan-tetrad-github-copilot.drawio_hu4d176d92ca810899da25db60f70beab3_28398_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2023/02/23/a-mcluhan-tetrad-about-github-copilot/mcluhan-tetrad-github-copilot.drawio_hu4d176d92ca810899da25db60f70beab3_28398_b742ddc9dd6f1b5a7f63b45217ff417d.webp"
width="401"
height="476"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
McLuhan Tetrad - AI assisted code editors
&lt;/figcaption>&lt;/figure>
&lt;h2 id="reflection">Reflection&lt;/h2>
&lt;p>The hardest part of this model to apply is &lt;strong>RETRIEVE&lt;/strong> - what is the earlier form that is re-invigorated by the medium or technology?&lt;/p>
&lt;p>In this case I think, tentatively, that the power of these tools brings back an earlier form of software development with simpler (or no) frameworks - although you lose the support of whatever framework you are using, you also lose the &amp;ldquo;boiler plate&amp;rdquo; code needed to &amp;ldquo;feed&amp;rdquo; the framework. Not sure this sticks yet, but in the spirit of &amp;ldquo;share your half-baked ideas&amp;rdquo; I put it out there.&lt;/p>
&lt;p>&lt;em>UPDATE - after I published this post, I found &lt;a href="https://newsletter.goodtechthings.com/p/when-programming-is-gone-will-we" target="_blank" rel="noopener">this&lt;/a> by &lt;a href="https://hachyderm.io/@forrestbrazeal" target="_blank" rel="noopener">Forrest Brazeal&lt;/a> that explores some of those factors more deeply.&lt;/em>&lt;/p>
&lt;p>I suspect that the more general challenge with the &lt;strong>RETRIEVE&lt;/strong> stage is having enough historical perspective and the ability to zoom out from the specific and everyday, to see the echos of the past.&lt;/p>
&lt;p>As a thinking exercise I can see the power of the tool - although I have seen these examples on Harold&amp;rsquo;s site for some time, I have never before tried to use the model to structure thought about some technology or medium, and it is definitely both a guide to, and provoker of, a deeper analysis.&lt;/p>
&lt;p>Harold has asked us &lt;em>&amp;ldquo;Does this allow you to see the technology with new eyes? Would this kind of perspective be helpful in making business decisions or where to invest your energy?&amp;rdquo;&lt;/em> - to which I would say that the focus on both the benefits and potential negative effects of a technology is a great place to start thinking about how it might affect the wider human / technical / management system it is operating within.&lt;/p>
&lt;h2 id="afterthought">Afterthought&lt;/h2>
&lt;p>Update - after I saw &lt;a href="https://hachyderm.io/@forrestbrazeal" target="_blank" rel="noopener">Forrest Brazeal&lt;/a>&amp;rsquo;s blog post I also found this cartoon by him:&lt;/p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="A cartoon about sad engineers looking at the additional complexity from AI" srcset="
/2023/02/23/a-mcluhan-tetrad-about-github-copilot/brazeal-ai-code-sad_hud1744acf0c084f46e121a9e0f2424526_773270_cbbfca1cd7a5bc1d04e238b4414666cc.webp 400w,
/2023/02/23/a-mcluhan-tetrad-about-github-copilot/brazeal-ai-code-sad_hud1744acf0c084f46e121a9e0f2424526_773270_1d6ad69e70ee498bfedbacfca70f2852.webp 760w,
/2023/02/23/a-mcluhan-tetrad-about-github-copilot/brazeal-ai-code-sad_hud1744acf0c084f46e121a9e0f2424526_773270_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2023/02/23/a-mcluhan-tetrad-about-github-copilot/brazeal-ai-code-sad_hud1744acf0c084f46e121a9e0f2424526_773270_cbbfca1cd7a5bc1d04e238b4414666cc.webp"
width="60%"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;p>&lt;a href="https://www.goodtechthings.com/pile-of-complexity/" target="_blank" rel="noopener">image source&lt;/a>, used with permission.&lt;/p>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 20/100&lt;/p></description></item><item><title>Four day's work for five day's pay</title><link>https://www.synesthesia.co.uk/2023/02/21/four-days-work-five-days-pay/</link><pubDate>Tue, 21 Feb 2023 12:10:04 +0000</pubDate><guid>https://www.synesthesia.co.uk/2023/02/21/four-days-work-five-days-pay/</guid><description>&lt;p>Many will have seen the story &amp;lsquo;&lt;a href="https://www.bbc.co.uk/news/business-64669987" target="_blank" rel="noopener">Firms stick to four-day week after trial ends&lt;/a>&amp;rsquo; on BBC News this morning (21/02/2023). The report relates to a UK-based pilot where companies volunteered to experiment with a 20% reduction in working hours for staff with no loss of pay.&lt;/p>
&lt;p>Docs: &lt;a href="https://docs.hugoblox.com/content/writing-markdown-latex/#callouts" target="_blank" rel="noopener">https://docs.hugoblox.com/content/writing-markdown-latex/#callouts&lt;/a>&lt;/p>
&lt;h2 id="parameters">Parameters&lt;/h2>
&lt;p>#0 : optional, positional
Add the class &amp;ldquo;alert-{#0}&amp;rdquo; to the &lt;div> container of the callout element.
Default Hugo Blox Builder available styles are &amp;ldquo;note&amp;rdquo; and &amp;ldquo;warning&amp;rdquo;.
Otherwise you can create your own class (see &lt;code>assets/scss/blox-bootstrap/elements/_callout.scss&lt;/code>).
*/}}&lt;/p>
&lt;div class="alert alert-warning">
&lt;div>
I am not a qualified HR professional, so any comment I make below about the legal aspects of employment should be treated solely as a personal obervation
&lt;/div>
&lt;/div>
&lt;h2 id="summary">Summary&lt;/h2>
&lt;p>The pilot was run by campaigning group &lt;a href="https://www.4dayweek.com/" target="_blank" rel="noopener">4 Day Week Global Foundation&lt;/a> with academic support from Boston College, UC Dublin, University of Cambridge and the private research organisation &lt;a href="https://autonomy.work/" target="_blank" rel="noopener">Autonomy&lt;/a>.&lt;/p>
&lt;p>The &lt;a href="https://www.4dayweek.com/s/UK-4-Day-Week-Pilot-Results-Report-2023.pdf" target="_blank" rel="noopener">UK pilot report&lt;/a> highlights the following key findings:&lt;/p>
&lt;ul>
&lt;li>companies were free to devise their own policy, ranging from classic &amp;ldquo;Friday off&amp;rdquo; to &amp;ldquo;staggered&amp;rdquo;, &amp;ldquo;decentralised&amp;rdquo;, &amp;ldquo;annualised&amp;rdquo;, and &amp;ldquo;conditional&amp;rdquo; structures.&lt;/li>
&lt;li>92% of the companies (N=61) are continuing with the four-day week, with 30% confirming it is a permanent change.&lt;/li>
&lt;li>39% of employees (N~2,900) report lower stress, and 71% report reduced levels of burnout. Other reported benefits include improvements in mental and physical health, lower anxiety, fatigue and sleep issues.&lt;/li>
&lt;li>54% of employees reported better work-life, 60% increased ability to combine paid work with caring responsiblities, and 62% easier to combine work with a social life.&lt;/li>
&lt;li>companies&amp;rsquo; revenue stayed broadly the same across the trial, rising by 1.4% on average, weighted by company size&lt;/li>
&lt;li>staff turnover at the participating companies dropped by 57% over the trial period, sick and personal leave days per month dropped 65% and new hiring dropped 37%.&lt;/li>
&lt;/ul>
&lt;h2 id="caveats-and-complexities">Caveats and complexities&lt;/h2>
&lt;p>The &lt;a href="https://www.4dayweek.com/s/UK-4-Day-Week-Pilot-Results-Report-2023.pdf" target="_blank" rel="noopener">UK pilot report&lt;/a> also details some of the details around staff contracts, annual leave and impact for existing part-time workers. See also &lt;a href="https://www.personneltoday.com/hr/four-day-week-legal/" target="_blank" rel="noopener">Four-day week: what are the legal considerations for HR?&lt;/a>.&lt;/p>
&lt;p>A common concern amongst workers is that such changes will increase the intensity and/or complexity of their work.&lt;/p>
&lt;p>In the pilot:&lt;/p>
&lt;ul>
&lt;li>36% of employees evaluated intensity as slightly increased, whereas 31% perceived a decline in work intensity.&lt;/li>
&lt;li>42% of employees saw some increase in work complexity, 42% saw a decrease in work complexity.&lt;/li>
&lt;li>90% of employees wanted to continue after the pilot, and 96% had a preference for a four-day week over a five-day week.&lt;/li>
&lt;/ul>
&lt;h2 id="productivity">Productivity&lt;/h2>
&lt;p>Many companies engaged staff in ways to adjust efficiency, reinforcing that a four-day week required a productivity increase. Examples from the pilot report:&lt;/p>
&lt;blockquote>
&lt;ul>
&lt;li>shorter and less frequent meetings, and with clearer agendas and objectives.&lt;/li>
&lt;li>better email etiquette&lt;/li>
&lt;li>asking staff to analyse and improve processes&lt;/li>
&lt;li>a designated time of day for staff to conduct independent work uninterrupted.&lt;/li>
&lt;li>automating aspects of work&lt;/li>
&lt;li>consolidating internal communications and documents into a single piece of software.&lt;/li>
&lt;li>promoting &amp;ldquo;monotasking&amp;rdquo;, eliminating the time wasted on switching between tasks.&lt;/li>
&lt;li>Creating a task-list before leaving work, in order to hand over to colleagues or hit the ground running on the following day.&lt;/li>
&lt;li>reducing the number of staff involved in a particular process.&lt;/li>
&lt;/ul>
&lt;p>— &lt;a href="https://www.4dayweek.com/s/UK-4-Day-Week-Pilot-Results-Report-2023.pdf" target="_blank" rel="noopener">UK pilot report&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="what-can-people-do-on-the-extra-free-day">What can people do on the extra &amp;lsquo;free&amp;rsquo; day?&lt;/h2>
&lt;p>The report categorises the responses from senior management about their hopes for staff time-use outside of work into &amp;ldquo;disinterest&amp;rdquo;, &amp;ldquo;interest&amp;rdquo; and &amp;ldquo;direction&amp;rdquo;. The last category is perhaps the most contentious:&lt;/p>
&lt;blockquote>
&lt;p>The third category, direction, refers to a small selection of pilot companies that tried to actively shape how staff used their time off. The CEOs of two organisations, for example, were disappointed with the low uptake of voluntary work among staff during the pilot, and were exploring ways to nudge staff toward spending their free-time on prosocial contributions.&lt;/p>
&lt;/blockquote>
&lt;p>and&amp;hellip;&lt;/p>
&lt;blockquote>
&lt;p>Several managers in the disinterested/interested companies saw the fifth day as a potentially attractive opportunity for staff to top up income (especially in the context of a cost of living crisis)&lt;/p>
&lt;p>In the more directive companies, by contrast, earning additional income was prohibited, either through a written agreement or less formally, through internal communications. Managers in these companies believed that staff who used their day off to earn further income would be breaching their side of a bargain&lt;/p>
&lt;/blockquote>
&lt;h2 id="comment">Comment&lt;/h2>
&lt;p>On the face of it this is an extremely interesting set of results. From a purely personal perspective the idea of working in a very focused way for four days in return for an additional day of leisure seems extremely attractive, I am fortunate in that I can easily see how my professional goals could be achieved in that way.&lt;/p>
&lt;p>By contrast, I am sure there are many jobs where it is less clear. Is there a potential here to make more complex the differences between jobs, adding to the distinction driven by the pandemic between jobs that can be done at home and those that can&amp;rsquo;t?&lt;/p>
&lt;p>There is lots more in the pilot report that hasn&amp;rsquo;t made it to my summary, well worth a deeper read if you are interested.&lt;/p>
&lt;h2 id="see-also">See also&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://phys.org/news/2023-02-four-day-week-boosts-employee-well-being.html" target="_blank" rel="noopener">Working a four-day week boosts employee well-being while preserving productivity, major six-month trial finds&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://phys.org/news/2022-12-four-day-week-trial-wellbeing-productivity.html" target="_blank" rel="noopener">Four-day week trial confirms working less increases wellbeing and productivity&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.personneltoday.com/hr/four-day-week-legal/" target="_blank" rel="noopener">Four-day week: what are the legal considerations for HR?&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.bbc.com/worklife/article/20220322-the-realities-of-the-four-day-workweek" target="_blank" rel="noopener">The realities of the four-day workweek&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>This is &lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 18/100&lt;/p></description></item><item><title>Dataverse resilience pause and reflect</title><link>https://www.synesthesia.co.uk/note/2023/01/31/dataverse-resilience-pause-and-reflect/</link><pubDate>Tue, 31 Jan 2023 06:29:43 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2023/01/31/dataverse-resilience-pause-and-reflect/</guid><description>&lt;h2 id="tests-so-far">Tests so far&lt;/h2>
&lt;p>I have now documented some fairly pragmatic and uncontrolled tests of four different approaches to calling Dataverse from client code:&lt;/p>
&lt;ul>
&lt;li>using &lt;code>ServiceClient&lt;/code> in a &lt;code>Parallel.ForEach&lt;/code> loop, setting maximum parallelisation based on the recommended settings from the Dataverse instance&lt;/li>
&lt;li>using &lt;code>ServiceClient&lt;/code> in a &lt;code>Parallel.ForEachAsync&lt;/code> loop, setting maximum parallelisation based on the recommended settings from the Dataverse instance&lt;/li>
&lt;li>using &lt;code>HttpClient&lt;/code> without any retry logic and with varying degrees of parallelisation&lt;/li>
&lt;li>using &lt;code>HttpClient&lt;/code> with &lt;code>Polly&lt;/code>-based retry logic and with varying degrees of parallelisation&lt;/li>
&lt;/ul>
&lt;p>Of these, the fastest for small volumes seems to be to use HttpClient on its own, however that speed comes with a low resilience: there is an unpredictable threshold where the volume of calls, the amount of server-side processing or the chosen number of parallel tasks can all tip the process over into error.&lt;/p>
&lt;p>Based on these quick samples I would mirror the advice in the Microsoft documentation - if your client is written in C# and you are happy to let the &lt;code>ServiceClient&lt;/code> control the retry logic then that should be your first choice, choosing &lt;code>async&lt;/code> operations for best speed. I would suggest that another factor is that your client app is running on a single node.&lt;/p>
&lt;p>If you are calling Dataverse from a more complex application, potentially with multiple scaled-out nodes, then I think further investigation is needed.&lt;/p>
&lt;h2 id="next-steps">Next steps&lt;/h2>
&lt;p>As I mentioned in the project header for these posts, another significant area of use cases for us is Dataverse client code running in Azure Functions.&lt;/p>
&lt;p>Most of the applications we host that way are small volume functions in our overall suite that just help glue everything together. With those it is almost a case of &amp;ldquo;throw the code into Functions and let it run&amp;rdquo; (which is sort of the point of serverless, perhaps!): certainly, it is the case that for those apps the biggest percentage of our time is spent developing and testing the business logic.&lt;/p>
&lt;p>However we have a couple of larger integrations where the volume of Dataverse calls can be significant, for example when we are pulling sends/clicks/opens/bounces from our Marketing Automation into Dataverse. In that case we have found issues arising which we have had to work around in a fairly fast &amp;ldquo;just get this working&amp;rdquo; sort of way. Again, since we are talking about real life with a small development team, we have never taken the time to explore properly how our workloads drive the underlying &lt;a href="https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-perf-and-scale" target="_blank" rel="noopener">Consumption Plan scaling&lt;/a> and how that might impact our use of downstream services.&lt;/p>
&lt;p>So before I can go further with understanding the best ways to talk to Dataverse at scale, I need to diverge slightly and spend some time experimenting with the behaviour of the Azure Functions platform.&lt;/p>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 11/100&lt;/p></description></item><item><title>Dataverse resilience experiment 4</title><link>https://www.synesthesia.co.uk/note/2023/01/30/dataverse-resilience-experiment-4/</link><pubDate>Mon, 30 Jan 2023 09:36:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2023/01/30/dataverse-resilience-experiment-4/</guid><description>&lt;h2 id="polly">Polly&lt;/h2>
&lt;p>&lt;a href="https://github.com/App-vNext/Polly/wiki" target="_blank" rel="noopener">Polly&lt;/a> is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, Rate-limiting and Fallback in a fluent and thread-safe manner.&lt;/p>
&lt;p>It has many helper extensions, including a high-level of integration with &lt;code>IHttpClientFactory&lt;/code> and Typed Clients.&lt;/p>
&lt;h2 id="code-changes">Code changes&lt;/h2>
&lt;p>The code can be seen at &lt;a href="https://github.com/synesthesia/dataverse-resilience/tree/29245c3a977e3d1639a85331587165fe37519fb7" target="_blank" rel="noopener">29245c3&lt;/a>.&lt;/p>
&lt;p>The only &lt;a href="https://github.com/synesthesia/dataverse-resilience/commit/29245c3a977e3d1639a85331587165fe37519fb7" target="_blank" rel="noopener">change&lt;/a> is in the DI configuration of our Typed Client, where we add a &lt;a href="https://github.com/App-vNext/Polly/wiki" target="_blank" rel="noopener">Polly&lt;/a> &lt;a href="https://github.com/App-vNext/Polly/wiki/Retry" target="_blank" rel="noopener">WaitAndRetryAsync&lt;/a> policy.&lt;/p>
&lt;p>If the retry is as a result of Dataverse signalling &amp;ldquo;Too Many Requests&amp;rdquo; this policy pauses the request for the number of seconds signalled in the response header, otherwise it waits for an exponentially increasing number of seconds before retrying.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">public&lt;/span> &lt;span class="kd">static&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">ServiceCollectionExtensions&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="kd">static&lt;/span> &lt;span class="n">IServiceCollection&lt;/span> &lt;span class="n">UseDataVerseHttpClient&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">this&lt;/span> &lt;span class="n">IServiceCollection&lt;/span> &lt;span class="n">services&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">services&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">AddHttpClient&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">IDataverseClient&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">DataverseClient&lt;/span>&lt;span class="p">&amp;gt;(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ....&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">ConfigureHttpMessageHandlerBuilder&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">builder&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">//....&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">AddPolicyHandler&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">s&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">request&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HttpPolicyExtensions&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">HandleTransientHttpError&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">OrResult&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">httpResponseMessage&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="n">httpResponseMessage&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">StatusCode&lt;/span> &lt;span class="p">==&lt;/span> &lt;span class="n">System&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Net&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">HttpStatusCode&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">TooManyRequests&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">WaitAndRetryAsync&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">HttpResponseMessage&lt;/span>&lt;span class="p">&amp;gt;(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">retryCount&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="m">5&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sleepDurationProvider&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">count&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">context&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">seconds&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">headers&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Result&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Headers&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">headers&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Contains&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Retry-After&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">seconds&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kt">int&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Parse&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">headers&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetValues&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Retry-After&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">FirstOrDefault&lt;/span>&lt;span class="p">());&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">seconds&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">Math&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Pow&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">count&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">TimeSpan&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">FromSeconds&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">seconds&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">onRetryAsync&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">outcome&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">timespan&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">retryAttempt&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">context&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">context&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s">&amp;#34;RetriesInvoked&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">retryAttempt&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">s&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetService&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">ILogger&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">DataverseClient&lt;/span>&lt;span class="p">&amp;gt;&amp;gt;()?&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">LogWarning&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Status {statusCode} - delaying for {delay}ms, then do retry {retry}.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">outcome&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Result&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">StatusCode&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">timespan&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">TotalMilliseconds&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">retryAttempt&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">Task&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CompletedTask&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="experiment-4---httpclient-with-polly-awaitandretry">Experiment 4 - HttpClient with Polly AwaitAndRetry&lt;/h2>
&lt;p>I jumped straight in with the configuration that, in &lt;a href="https://www.synesthesia.co.uk/note/2023/01/27/dataverse-resilience-experiment-3/">the previous experiment&lt;/a> , had caused the job to crash out, that is 3000 records and a &lt;code>MaxDegreeOfParallelism&lt;/code> of 12.&lt;/p>
&lt;p>The result was that there were a few retries during the process, but the run completed successfully, creating the records in 1,513 seconds (then 131 seconds to delete).&lt;/p>
&lt;p>Although the good news is the increase in reliability, the overall performance is nearly 20% slower than the previous experiment running without Polly and constraining the degrees of parallelism to 8.&lt;/p>
&lt;p>In case this was an issue caused my laptop I killed a couple of other things that were running in the background and chewing up CPU and re-ran the test, and got results of 1,411 seconds to create 3,000 records, so now &amp;ldquo;only&amp;rdquo; 10% slower than achieved without the retry logic.&lt;/p>
&lt;h2 id="reflections">Reflections&lt;/h2>
&lt;p>I&amp;rsquo;m cautious about drawing too many conclusions about the speed change - from a visual inspection of the log there were not that many retries, but many create requests seemed to be taking about 4-6 seconds to complete, longer than I was seeing last week.&lt;/p>
&lt;p>My home internet speed checks look roughly the same as last week and in line with the expected service - 74MB/s down and 19Mb/s up.&lt;/p>
&lt;p>However if I was going to the next level of testing I would want to run multiple experiments against the Dataverse instance and against other sandbox instances in the same region. I have an unproven suspicion that sometimes Sandbox instances are not fully &amp;ldquo;warmed up&amp;rdquo; until they have been used a bit.&lt;/p>
&lt;p>In the next post I will review the tests so far and plot out some further things I want to explore.&lt;/p>
&lt;h2 id="see-also">See also&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://github.com/App-vNext/Polly/wiki" target="_blank" rel="noopener">Polly&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://learn.microsoft.com/en-us/dotnet/architecture/microservices/implement-resilient-applications/implement-http-call-retries-exponential-backoff-polly" target="_blank" rel="noopener">Implement HTTP call retries with exponential backoff with IHttpClientFactory and Polly policies (MSFT)&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://learn.microsoft.com/en-us/power-apps/developer/data-platform/api-limits?tabs=webapi#retry-operations" target="_blank" rel="noopener">Service protection API limits - How to re-try (MSFT)&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://github.com/App-vNext/Polly/wiki/Polly-and-HttpClientFactory#configuring-policies-to-use-services-registered-with-di-such-as-iloggert" target="_blank" rel="noopener">Configuring policies to use services registered with DI, such as ILogger&lt;T>&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>This post is part of &lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> and is post 10/100&lt;/p></description></item><item><title>Dataverse resilience experiment 3</title><link>https://www.synesthesia.co.uk/note/2023/01/27/dataverse-resilience-experiment-3/</link><pubDate>Fri, 27 Jan 2023 07:02:29 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2023/01/27/dataverse-resilience-experiment-3/</guid><description>&lt;h2 id="initial-code">Initial code&lt;/h2>
&lt;p>The first version of the code can be seen at &lt;a href="https://github.com/synesthesia/dataverse-resilience/tree/99d01bfe8d5aa85fab1b1fe99ff87aa3296a0f01" target="_blank" rel="noopener">99d01bf&lt;/a>.&lt;/p>
&lt;p>This code uses a class &lt;code>DataverseClient&lt;/code>, to contain a &lt;a href="https://learn.microsoft.com/en-us/dotnet/core/extensions/httpclient-factory#typed-clients" target="_blank" rel="noopener">typed HttpClient&lt;/a> configured for use with Dataverse:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">DVConsole.Model.DTO&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Microsoft.Extensions.Logging&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Newtonsoft.Json&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">System.Text&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">namespace&lt;/span> &lt;span class="nn">DVConsole.Services&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cs">/// &amp;lt;summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cs">/// &amp;lt;inheritdoc cref=&amp;#34;IDataverseClient&amp;#34;/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cs">/// &amp;lt;/summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">public&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">DataverseClient&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">IDataverseClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">private&lt;/span> &lt;span class="n">HttpClient&lt;/span> &lt;span class="n">_client&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">private&lt;/span> &lt;span class="n">ILogger&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">DataverseClient&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="n">_logger&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="n">DataverseClient&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HttpClient&lt;/span> &lt;span class="n">httpClient&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ILogger&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">DataverseClient&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="n">logger&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_client&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">httpClient&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">logger&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// Get ID of Dataverse user&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;/summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="kd">async&lt;/span> &lt;span class="n">Task&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">Guid&lt;/span>&lt;span class="p">?&amp;gt;&lt;/span> &lt;span class="n">GetUserId&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">response&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">await&lt;/span> &lt;span class="n">_client&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;WhoAmI&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">response&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">EnsureSuccessStatusCode&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">content&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">await&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Content&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ReadAsStringAsync&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">whoAmIResponse&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">JsonConvert&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">DeserializeObject&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">WhoAmIResponse&lt;/span>&lt;span class="p">&amp;gt;(&lt;/span>&lt;span class="n">content&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">whoAmIResponse&lt;/span>&lt;span class="p">?.&lt;/span>&lt;span class="n">UserId&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// Create record&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;/summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;param name=&amp;#34;entityCollection&amp;#34;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;param name=&amp;#34;data&amp;#34;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;param name=&amp;#34;ct&amp;#34;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="kd">async&lt;/span> &lt;span class="n">Task&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">Guid&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="n">Create&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">string&lt;/span> &lt;span class="n">entityCollection&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">object&lt;/span> &lt;span class="n">data&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">CancellationToken&lt;/span> &lt;span class="n">ct&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">default&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">request&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">HttpRequestMessage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">HttpMethod&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Post&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">entityCollection&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">jsonData&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">JsonConvert&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">SerializeObject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">request&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Content&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">StringContent&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">jsonData&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Encoding&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">UTF8&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;application/json&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">response&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">await&lt;/span> &lt;span class="n">_client&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">SendAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">request&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ct&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">await&lt;/span> &lt;span class="n">EnsureSuccessStatusCode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ct&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">idGuid&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">GetEntityIdFromResponse&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">idGuid&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// delete record&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;/summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;param name=&amp;#34;entityCollection&amp;#34;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;param name=&amp;#34;entityId&amp;#34;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;param name=&amp;#34;ct&amp;#34;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cs">/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="kd">async&lt;/span> &lt;span class="n">Task&lt;/span> &lt;span class="n">Delete&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">string&lt;/span> &lt;span class="n">entityCollection&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Guid&lt;/span> &lt;span class="n">entityId&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">CancellationToken&lt;/span> &lt;span class="n">ct&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">default&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">response&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">await&lt;/span> &lt;span class="n">_client&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">DeleteAsync&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">$&amp;#34;{entityCollection}({entityId})&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ct&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">await&lt;/span> &lt;span class="n">EnsureSuccessStatusCode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">response&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ct&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="cm">/*
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cm"> * helper methods not shown in this listing
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cm"> * see GitHub for full source
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cm"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The configuration is done in &lt;code>ServiceCollectionExtensions.UseDataVerseHttpClient(this IServiceCollection services)&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="cs">/// &amp;lt;summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cs">/// Configure the app to use HttpClient to access Dataverse&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cs">/// &amp;lt;/summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cs">/// &amp;lt;param name=&amp;#34;services&amp;#34;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cs">/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cs">/// &amp;lt;exception cref=&amp;#34;InvalidOperationException&amp;#34;&amp;gt;&amp;lt;/exception&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">public&lt;/span> &lt;span class="kd">static&lt;/span> &lt;span class="n">IServiceCollection&lt;/span> &lt;span class="n">UseDataVerseHttpClient&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">this&lt;/span> &lt;span class="n">IServiceCollection&lt;/span> &lt;span class="n">services&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">services&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">AddHttpClient&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">IDataverseClient&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">DataverseClient&lt;/span>&lt;span class="p">&amp;gt;(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="n">sp&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">options&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">sp&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetRequiredService&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">IOptions&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">DataVerseOptions&lt;/span>&lt;span class="p">&amp;gt;&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">config&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">options&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Value&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Set the base address of the named client.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">client&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">BaseAddress&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">Uri&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">config&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">InstanceUrl&lt;/span> &lt;span class="p">+&lt;/span> &lt;span class="s">&amp;#34;/api/data/v9.2/&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">headers&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">DefaultRequestHeaders&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Add a user-agent default request header.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">headers&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">UserAgent&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ParseAdd&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;dotnet-docs&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">headers&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;OData-MaxVersion&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;4.0&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">headers&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;OData-Version&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;4.0&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">headers&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Accept&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Add&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">new&lt;/span> &lt;span class="n">MediaTypeWithQualityHeaderValue&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;application/json&amp;#34;&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">ConfigureHttpMessageHandlerBuilder&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">builder&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">builder&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">PrimaryHandler&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">builder&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Services&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetRequiredService&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">OAuthMessageHandler&lt;/span>&lt;span class="p">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">services&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">AddTransient&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">OAuthMessageHandler&lt;/span>&lt;span class="p">&amp;gt;(&lt;/span>&lt;span class="n">sp&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">options&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">sp&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetRequiredService&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">IOptions&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">DataVerseOptions&lt;/span>&lt;span class="p">&amp;gt;&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">config&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">options&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Value&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">config&lt;/span>&lt;span class="p">?.&lt;/span>&lt;span class="n">InstanceUrl&lt;/span> &lt;span class="p">==&lt;/span> &lt;span class="kc">null&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">throw&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">InvalidOperationException&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;InstanceUrl is not set in the configuration&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">ap&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">sp&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetRequiredService&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">IConfidentialClientApplication&lt;/span>&lt;span class="p">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">handler&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">OAuthMessageHandler&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">config&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">InstanceUrl&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ap&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">new&lt;/span> &lt;span class="n">HttpClientHandler&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="n">UseCookies&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">false&lt;/span>&lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">handler&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">services&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">AddSingleton&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">IConfidentialClientApplication&lt;/span>&lt;span class="p">&amp;gt;(&lt;/span>&lt;span class="n">sp&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">options&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">sp&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetRequiredService&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">IOptions&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">DataVerseOptions&lt;/span>&lt;span class="p">&amp;gt;&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">config&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">options&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Value&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">authProvider&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">ConfidentialClientApplicationBuilder&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">Create&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">config&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ClientId&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">WithClientSecret&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">config&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ClientSecret&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">WithAuthority&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">AzureCloudInstance&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">AzurePublic&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">config&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">TenantId&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">Build&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">authProvider&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">services&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Authentication is done by the class &lt;code>OAuthMessageHandler&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="cs">/// &amp;lt;summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cs">/// A delegating HTTP handler that authenticates to Dataverse using the Microsoft.Identity.Client library.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cs">/// &amp;lt;/summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cs">/// &amp;lt;remarks&amp;gt;see https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/enhanced-quick-start&amp;lt;/remarks&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">public&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">OAuthMessageHandler&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">DelegatingHandler&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">private&lt;/span> &lt;span class="k">readonly&lt;/span> &lt;span class="n">IConfidentialClientApplication&lt;/span> &lt;span class="n">_authProvider&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">private&lt;/span> &lt;span class="k">readonly&lt;/span> &lt;span class="kt">string&lt;/span>&lt;span class="p">[]&lt;/span> &lt;span class="n">_scopes&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">public&lt;/span> &lt;span class="n">OAuthMessageHandler&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">string&lt;/span> &lt;span class="n">serviceUrl&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">IConfidentialClientApplication&lt;/span> &lt;span class="n">authProvider&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HttpMessageHandler&lt;/span> &lt;span class="n">innerHandler&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">:&lt;/span> &lt;span class="k">base&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">innerHandler&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_authProvider&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">authProvider&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">scope&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">serviceUrl&lt;/span> &lt;span class="p">+&lt;/span> &lt;span class="s">&amp;#34;//.default&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_scopes&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span>&lt;span class="p">[]&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="n">scope&lt;/span> &lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">private&lt;/span> &lt;span class="n">AuthenticationResult&lt;/span> &lt;span class="n">GetToken&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">_authProvider&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">AcquireTokenForClient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">_scopes&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">ExecuteAsync&lt;/span>&lt;span class="p">().&lt;/span>&lt;span class="n">Result&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">protected&lt;/span> &lt;span class="kd">override&lt;/span> &lt;span class="n">Task&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">HttpResponseMessage&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="n">SendAsync&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HttpRequestMessage&lt;/span> &lt;span class="n">request&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">System&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Threading&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CancellationToken&lt;/span> &lt;span class="n">cancellationToken&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">token&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">GetToken&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">authHeader&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">AuthenticationHeaderValue&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Bearer&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">token&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">AccessToken&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">request&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Headers&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Authorization&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">authHeader&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="k">base&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">SendAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">request&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">cancellationToken&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The calling method is very similar to the last experiment, but with a hard-coded &lt;code>MaxDegreeOfParallelism&lt;/code> set to the value we saw in previous experiments agaisnt this Dataverse instance:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="n">createdIds&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">ConcurrentBag&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">Guid&lt;/span>&lt;span class="p">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">try&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogInformation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">$&amp;#34;Creating and deleting {accountsToCreate.Count} accounts&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">startCreate&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">DateTime&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Now&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">userId&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">await&lt;/span> &lt;span class="n">_xrmClient&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetUserId&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogInformation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">$&amp;#34;UserId: {userId}&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">parallelOptions&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">ParallelOptions&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">MaxDegreeOfParallelism&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="m">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">await&lt;/span> &lt;span class="n">Parallel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ForEachAsync&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">source&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">accountsToCreate&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parallelOptions&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">parallelOptions&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">async&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">entity&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">token&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">createdIds&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">await&lt;/span> &lt;span class="n">_xrmClient&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Create&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;accounts&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">entity&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">token&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">secondsToCreate&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">DateTime&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Now&lt;/span> &lt;span class="p">-&lt;/span> &lt;span class="n">startCreate&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">TotalSeconds&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogInformation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">$&amp;#34;Created {accountsToCreate.Count} accounts in {Math.Round(secondsToCreate)} seconds.&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogInformation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">$&amp;#34;Deleting {createdIds.Count} accounts&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">startDelete&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">DateTime&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Now&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">await&lt;/span> &lt;span class="n">Parallel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ForEachAsync&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">source&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">createdIds&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parallelOptions&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">parallelOptions&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">async&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">token&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">await&lt;/span> &lt;span class="n">_xrmClient&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Delete&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;accounts&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">id&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">token&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">secondsToDelete&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">DateTime&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Now&lt;/span> &lt;span class="p">-&lt;/span> &lt;span class="n">startDelete&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">TotalSeconds&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogInformation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">$&amp;#34;Deleted {createdIds.Count} accounts in {Math.Round(secondsToDelete)} seconds.&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ....&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="experiment-3---httpclient-with-no-resilience-tools-applied">Experiment 3 - HttpClient with no resilience tools applied&lt;/h2>
&lt;p>In the first naive version of this experiment I just used the above code, calling Dataverse using HttpClient directly without any resilience policies applied.&lt;/p>
&lt;p>For 100 records this worked well, taking 46 seconds to create and 6 seconds to delete. Again from a scan of the logs the round-trip Http request/response is taking about 3-4 seconds.&lt;/p>
&lt;p>For 1000 records the app took 432 seconds to create and 46 seconds to delete. I was extremely surprised not to see any errors from Service Protection limits on this run. Again there is a time improvement for record creation compared to the previous experiment, this time a further reduction of ~ 7%.&lt;/p>
&lt;p>As I need to provoke some API errors before I add retry policies, I ran the code again on 3,000 records, again no errors, created 3,000 in 1,277 seconds (then 125 seconds to delete), so still scaling approximately linearly.&lt;/p>
&lt;p>At this point I am really confused, so before trying a run of 10,000 records, decide to try 3,000 records again but with a higher degreee of parellism (12). This time I was able to provoke error code &lt;code> 0x80072321&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Combined execution time of incoming requests exceeded limit of 1200000 milliseconds over time window of 300 seconds. Decrease number of concurrent requests or reduce the duration of requests and try again later.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>after just 328 seconds, with only 754 accounts created.&lt;/p>
&lt;h2 id="reflections">Reflections&lt;/h2>
&lt;ul>
&lt;li>using &lt;code>HttpClient&lt;/code> directly gives a speed increase compared to the &lt;code>ServiceClient&lt;/code> approach&lt;/li>
&lt;li>without adding any retry logic, there is an unpredictable throughput limit at which point the code is likely to crash&lt;/li>
&lt;li>in the next experiment I will add resilience logic using &lt;a href="https://github.com/App-vNext/Polly" target="_blank" rel="noopener">Polly&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 9/100&lt;/p></description></item><item><title>Dataverse resilience experiment 2</title><link>https://www.synesthesia.co.uk/note/2023/01/27/dataverse-resilience-experiment-2/</link><pubDate>Fri, 27 Jan 2023 00:00:02 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2023/01/27/dataverse-resilience-experiment-2/</guid><description>&lt;h2 id="the-code">The code&lt;/h2>
&lt;p>For this experiment I followed this &lt;a href="https://learn.microsoft.com/en-us/power-apps/developer/data-platform/send-parallel-requests?tabs=sdk" target="_blank" rel="noopener">Microsoft guidance&lt;/a> to use &lt;code>Parallel.ForEachAsync&lt;/code>.&lt;/p>
&lt;p>The full code can be seen at &lt;a href="https://github.com/synesthesia/dataverse-resilience/tree/899df96aca3a21b1b000808e9b33d45d75f29e57" target="_blank" rel="noopener">899df9&lt;/a>, but the key method looks like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">private&lt;/span> &lt;span class="kd">async&lt;/span> &lt;span class="n">Task&lt;/span> &lt;span class="n">CreateAndDeleteAccounts&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">numberOfAccounts&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">accountsToCreate&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">List&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">Entity&lt;/span>&lt;span class="p">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">count&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="m">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">count&lt;/span> &lt;span class="p">&amp;lt;&lt;/span> &lt;span class="n">numberOfAccounts&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">account&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">Entity&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;account&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="na"> [&amp;#34;name&amp;#34;]&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">$&amp;#34;Account {count}&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">accountsToCreate&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">account&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">count&lt;/span>&lt;span class="p">++;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">createdIds&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">ConcurrentBag&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">Guid&lt;/span>&lt;span class="p">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogInformation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">$&amp;#34;Creating and deleting {accountsToCreate.Count} accounts&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">startCreate&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">DateTime&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Now&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">parallelOptions&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">ParallelOptions&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">MaxDegreeOfParallelism&lt;/span> &lt;span class="p">=&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_xrmService&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">RecommendedDegreesOfParallelism&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">await&lt;/span> &lt;span class="n">Parallel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ForEachAsync&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">source&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">accountsToCreate&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parallelOptions&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">parallelOptions&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">async&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">entity&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">token&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">createdIds&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">await&lt;/span> &lt;span class="n">_xrmService&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CreateAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">entity&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">token&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">secondsToCreate&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">DateTime&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Now&lt;/span> &lt;span class="p">-&lt;/span> &lt;span class="n">startCreate&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">TotalSeconds&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogInformation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">$&amp;#34;Created {accountsToCreate.Count} accounts in {Math.Round(secondsToCreate)} seconds.&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogInformation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">$&amp;#34;Deleting {createdIds.Count} accounts&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">startDelete&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">DateTime&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Now&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">await&lt;/span> &lt;span class="n">Parallel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ForEachAsync&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">source&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">createdIds&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">parallelOptions&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">parallelOptions&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">async&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">token&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">await&lt;/span> &lt;span class="n">_xrmService&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">DeleteAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;account&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">id&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">token&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">secondsToDelete&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">DateTime&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Now&lt;/span> &lt;span class="p">-&lt;/span> &lt;span class="n">startDelete&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">TotalSeconds&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogInformation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">$&amp;#34;Deleted {createdIds.Count} accounts in {Math.Round(secondsToDelete)} seconds.&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">catch&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">AggregateException&lt;/span> &lt;span class="n">ae&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">inner&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">ae&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">InnerExceptions&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">FirstOrDefault&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">inner&lt;/span> &lt;span class="p">!=&lt;/span> &lt;span class="kc">null&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">throw&lt;/span> &lt;span class="n">inner&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="the-experiment">The experiment&lt;/h2>
&lt;p>On the first trial I tried to create/delete 1,000 accounts, on a similar setup to last time, running with &lt;code>MaxDegreeOfParallelism&lt;/code> set to the reported &lt;code>RecommendedDegreesOfParallelism&lt;/code> from the &lt;code>ServiceClient&lt;/code> instance. This performed ~7% faster than the synchronous approach in experiment 1 - a total of 469 seconds of which 37 seconds were for record deletion.&lt;/p>
&lt;p>As a small tweak I ran the code again but with doubled &lt;code>MaxDegreeOfParallelism&lt;/code> and this was noticeably worse overall, running into a lot of long retry timeouts because of aggregated processing time: a total of 769 seconds (of which 87 were to delete).&lt;/p>
&lt;h2 id="reflections">Reflections&lt;/h2>
&lt;ul>
&lt;li>perhaps not as much improvement as I expected&lt;/li>
&lt;li>tuning the &lt;code>MaxDegreeOfParallelism&lt;/code> is critical&lt;/li>
&lt;li>next steps will be to try using &lt;code>HttpClient&lt;/code> directly, with &lt;code>Polly&lt;/code> to implement the retry logic&lt;/li>
&lt;/ul>
&lt;h2 id="see-also">See also&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.gregbair.dev/posts/parallel-foreachasync/" target="_blank" rel="noopener">Parallel.ForEachAsync Deep Dive (Greg Bair)&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 8/100&lt;/p></description></item><item><title>Dataverse resilience experiment 1</title><link>https://www.synesthesia.co.uk/note/2023/01/26/dataverse-resilience-experiment-1/</link><pubDate>Thu, 26 Jan 2023 09:09:29 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2023/01/26/dataverse-resilience-experiment-1/</guid><description>&lt;h2 id="the-code">The code&lt;/h2>
&lt;p>If you are working with the &lt;code>ServiceClient&lt;/code> class from &lt;a href="https://github.com/microsoft/PowerPlatform-DataverseServiceClient" target="_blank" rel="noopener">&lt;code>Microsoft.PowerPlatform.Dataverse.Client&lt;/code>&lt;/a> then there is built-in logic to handle service protection errors from the remote service.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Property&lt;/th>
&lt;th>Comment&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>MaxRetryCount&lt;/code>&lt;/td>
&lt;td>Maximum number of retry attempts after receiving an error from the connection, default 10&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>RetryPauseTime&lt;/code>&lt;/td>
&lt;td>Time to wait before retry when response is &lt;code>503 Service unavailable&lt;/code> , default 5 seconds NB this is from a quick scan of source code, may not be accurate!&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>If the remote error is because of a &lt;a href="https://learn.microsoft.com/en-us/power-apps/developer/data-platform/api-limits?tabs=sdk" target="_blank" rel="noopener">Service Protection response&lt;/a>, then the retry period is calculated from the error reponse Retry-After.&lt;/p>
&lt;p>For the first experiment I used the rather simplistic approach from &lt;a href="https://learn.microsoft.com/en-us/power-apps/developer/data-platform/xrm-tooling/sample-tpl-crmserviceclient" target="_blank" rel="noopener">this Microsoft Example code&lt;/a>.&lt;/p>
&lt;p>The main loop looks like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#pragma&lt;/span> &lt;span class="n">warning&lt;/span> &lt;span class="n">disable&lt;/span> &lt;span class="n">CS1998&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">public&lt;/span> &lt;span class="kd">async&lt;/span> &lt;span class="n">Task&lt;/span> &lt;span class="n">StartAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">CancellationToken&lt;/span> &lt;span class="n">cancellationToken&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#pragma&lt;/span> &lt;span class="n">warning&lt;/span> &lt;span class="n">restore&lt;/span> &lt;span class="n">CS1998&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogInformation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Worker.StartAsync()&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogInformation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Dataverse ServiceClient.IsReady: {0}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">_xrmService&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">IsReady&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogInformation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Dataverse recommended max parallelism : {0}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">_xrmService&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">RecommendedDegreesOfParallelism&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">OptimiseConnectionSettings&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">startTime&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">DateTime&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">UtcNow&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">CreateAndDeleteAccounts&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">10000&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">secondsForRun&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">DateTime&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Now&lt;/span> &lt;span class="p">-&lt;/span> &lt;span class="n">startTime&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">TotalSeconds&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogInformation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">$&amp;#34;Finished in {Math.Round(secondsForRun)} seconds.&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_logger&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogCritical&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Calling host to end application&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">_hostApplicationLifetime&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">StopApplication&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The full code for this experiment can be seen at &lt;a href="https://github.com/synesthesia/dataverse-resilience/tree/7fdc7160446942b4dbea8bc8ad76bab3bcdfe88e" target="_blank" rel="noopener">7fdc716&lt;/a>TODO, however the part of interest is how the parallel record creation is set up using a synchronous &lt;code>Parallel.ForEach&lt;/code> loop:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">private&lt;/span> &lt;span class="n">ConcurrentBag&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">EntityReference&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="n">CreateEntities&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">List&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">Entity&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="n">entities&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">createdEntityReferences&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">ConcurrentBag&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">EntityReference&lt;/span>&lt;span class="p">&amp;gt;();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Parallel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ForEach&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">entities&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">new&lt;/span> &lt;span class="n">ParallelOptions&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="n">MaxDegreeOfParallelism&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">_xrmService&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">RecommendedDegreesOfParallelism&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">()&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="n">_xrmService&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Clone&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="c1">//Clone the ServiceClient for each thread&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="n">entity&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">loopState&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">index&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">threadLocalSvc&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// In each thread, create entities and add them to the ConcurrentBag&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// as EntityReferences&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">createdEntityReferences&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Add&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">new&lt;/span> &lt;span class="n">EntityReference&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">entity&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">LogicalName&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">threadLocalSvc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Create&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">entity&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">threadLocalSvc&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="n">threadLocalSvc&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">//Dispose the cloned ServiceClient instance&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">threadLocalSvc&lt;/span> &lt;span class="p">!=&lt;/span> &lt;span class="kc">null&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">threadLocalSvc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Dispose&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">//Return the ConcurrentBag of EntityReferences&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">createdEntityReferences&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Deletion of records as a batch follows a similar pattern.&lt;/p>
&lt;h2 id="the-experiment">The experiment&lt;/h2>
&lt;p>On the first approach I tried to create/delete 10,000 accounts, running on my laptop from inside the Visual Studio Debugger, with other tasks still happening, and over domestic Fibre-To-Cabinet internet.&lt;/p>
&lt;p>The process eventually crashed out with a connection error after about 90 mins, with ~8,900 records created.&lt;/p>
&lt;p>During the run, a number of retry errors were visible in the log, all related to aggregate processing time in a 300 second window, for example:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">[10:52:24 ERR] Failed to Execute Command - Create : RequestID=c9c5de1e-8ebf-4c58-a13f-1455f7bf7e07 : Create To Dataverse via IOrganizationService duration=00:00:00.0751690 ExceptionMessage = Combined execution time of incoming requests exceeded limit of 1200000 milliseconds over time window of 300 seconds. Decrease number of concurrent requests or reduce the duration of requests and try again later.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Source: System.Private.ServiceModel
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Method: HandleReply
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Error: Message: Combined execution time of incoming requests exceeded limit of 1200000 milliseconds over time window of 300 seconds. Decrease number of concurrent requests or reduce the duration of requests and try again later.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">ErrorCode: -2147015903
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Trace:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Error Details :
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="go">Retry-After : 00:00:34.2260000
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Because the code limits the degrees of parallelism to the recommended settings returned from the Dataverse service, I didn&amp;rsquo;t expect to see errors with too many requests in parallel, and that was true in practice.&lt;/p>
&lt;p>It&amp;rsquo;s worth noting that the instance I was running against has 7 plugins configured on the Create message of the Account entity. From a quick scan of log messages it looks like individual Account creation was taking approximately 2 to 4 seconds in most cases. Although it is technically possible to suppress plugin operation (with the right privileges), this risks creating records that do not comply with business rules, so in practice of limited use unless you build further logic into your import tool to update the accounts after creation.&lt;/p>
&lt;p>Because the main (large) run had failed I did a couple of shorter runs to get some rough data to baseline future tests. Times rounded to nearest second.&lt;/p>
&lt;ul>
&lt;li>Creation / deletion of 100 records took 55 seconds, of which 46 seconds were record creation. No retries were seen.&lt;/li>
&lt;li>Creation / deletion of 1000 records took 508 seconds, of which 466 seconds were record creation. Retries for aggregate prodcessing time were seen.&lt;/li>
&lt;/ul>
&lt;h2 id="reflections">Reflections&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>It looks like the trigger for retries was aggregate processing time (those plugins!), so using batch requests to create multiple accounts in one network request unlikely to be of any benefit.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>I forgot to disable the Affinity cookie, which meant we were probably overloading a single server (although this experiment was agaisnt a sandbox instance, so it might only have one server).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The way in which &lt;code>Parallel.ForEach&lt;/code> works is to divide the input collection into equal buckets, and assign a bucket per parallel thread. If one particular subset of requests is significantly faster, then that thread will terminate before the others, wasting processing capability (a &lt;a href="https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/" target="_blank" rel="noopener">Leaky Abstraction&lt;/a> - we need to know about the inner workings of the method).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This operation is largely not bound by the processor on which we are running it - network requests and remote processing are more significant. Therefore it would be a good fit for an asynchronous model if we can launch more requests and still stay within the API limits.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Although 10,000 records is a completely reasonable number for an ETL scenario, for this experimental setup it makes the iteration time of tests too long, and too vulnerable to connection errors (obviously real code would need to handle these gracefully). For future tests I will use creation and deletion of 1000 records, for which our baseline is 508 seconds - 466 seconds for record creation and 42 for deletion.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 7/100&lt;/p></description></item><item><title>Dataverse Resilience</title><link>https://www.synesthesia.co.uk/project/dataverse-resilience/</link><pubDate>Wed, 18 Jan 2023 06:15:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/project/dataverse-resilience/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Where I work we make extensive use of both Azure Functions and console apps, to manipulate data in Dataverse, or to integrate to/from Dataverse and other systems.&lt;/p>
&lt;p>We have found that it&amp;rsquo;s very easy to run into Dataverse API Service Protection limits when working with quite small datasets, so we&amp;rsquo;ve had to learn how to adopt various techniques to keep our applications working.&lt;/p>
&lt;p>This &amp;ldquo;project&amp;rdquo; will pull together an occasional series of posts documenting the different approaches we have tried, based on our own experience and a trawl through Microsoft example code.&lt;/p>
&lt;h2 id="dataverse-api-service-protection-limits">Dataverse API Service Protection limits&lt;/h2>
&lt;p>These are enforced by Microsoft to ensure no one consumer impacts on the overall performance of the Dataverse platform for all consumers. At the time of writing the &lt;a href="https://learn.microsoft.com/en-us/power-apps/developer/data-platform/api-limits?tabs=sdk" target="_blank" rel="noopener">Dataverse Service protection API limits&lt;/a> are evaluated per-user and per web-server (see below), and are set at:&lt;/p>
&lt;ul>
&lt;li>A cumulative 600 requests in a 300 second sliding window&lt;/li>
&lt;li>A combined execution time of 1200 seconds aggregated across requests in a 300 second sliding window&lt;/li>
&lt;li>A maximum of 52 concurrent requests per-user&lt;/li>
&lt;/ul>
&lt;p>These limits are enforced per web server, however the number of web servers servicing a given Dataverse environment is opaque, so it is prudent to plan for only one server when considering limits.&lt;/p>
&lt;h2 id="impact-of-exceeding-limits">Impact of exceeding limits&lt;/h2>
&lt;p>Depending on which API you are using, the platform will signal that limits are exceeded in one of two different ways:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>with the &lt;a href="https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/get-started-dynamics-365-web-api-csharp" target="_blank" rel="noopener">WebApi&lt;/a>, a &lt;a href="https://developer.mozilla.org/docs/Web/HTTP/Status/429" target="_blank" rel="noopener">429 Too Many Requests&lt;/a> error, and on the response a &lt;a href="https://developer.mozilla.org/docs/Web/HTTP/Headers/Retry-After" target="_blank" rel="noopener">Retry-After&lt;/a> header with a value in seconds indicating how long the caller should pause for.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>With the Dataverse SDK for .NET, an &lt;a href="https://learn.microsoft.com/en-us/dotnet/api/microsoft.xrm.sdk.organizationservicefault" target="_blank" rel="noopener">OrganizationServiceFault&lt;/a> error with one of three specific error codes:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Error code (from SDK)&lt;/th>
&lt;th>Hex code (from Web API)&lt;/th>
&lt;th>Message&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>-2147015902&lt;/code>&lt;/td>
&lt;td>&lt;code>0x80072322&lt;/code>&lt;/td>
&lt;td>&lt;code>Number of requests exceeded the limit of 6000 over time window of 300 seconds&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-2147015903&lt;/code>&lt;/td>
&lt;td>&lt;code>0x80072321&lt;/code>&lt;/td>
&lt;td>&lt;code>Combined execution time of incoming requests exceeded limit of 1,200,000 milliseconds over time window of 300 seconds. Decrease number of concurrent requests or reduce the duration of requests and try again later.&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-2147015898&lt;/code>&lt;/td>
&lt;td>&lt;code>0x80072326&lt;/code>&lt;/td>
&lt;td>&lt;code>Number of concurrent requests exceeded the limit of 52&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>In the &lt;a href="https://learn.microsoft.com/en-us/dotnet/api/microsoft.xrm.sdk.organizationservicefault" target="_blank" rel="noopener">OrganizationServiceFault&lt;/a>.&lt;a href="https://learn.microsoft.com/en-us/dotnet/api/microsoft.xrm.sdk.baseservicefault.errordetails#microsoft-xrm-sdk-baseservicefault-errordetails" target="_blank" rel="noopener">ErrorDetails&lt;/a> collection there will be an entry with key &lt;code>Retry-After&lt;/code> containing a &lt;a href="https://learn.microsoft.com/en-us/dotnet/api/system.timespan" target="_blank" rel="noopener">TimeSpan&lt;/a> value representing the necessary delay.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="areas-i-aim-to-cover">Areas I aim to cover&lt;/h2>
&lt;p>Our experiences include: simple console apps, typically used for data manipulation or bulk import; simple low-volume Azure Functions; and a couple of more complex Azure Functions apps that can scale out significantly and create a significant parallel load on the Dataverse API.&lt;/p>
&lt;p>In this series I aim to touch on all these scenarios and document the techniques we have found to work.&lt;/p>
&lt;p>As I publish posts in this series they will be linked at the bottom of this post.&lt;/p>
&lt;p>Example code can be found &lt;a href="https://github.com/synesthesia/dataverse-resilience" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;h2 id="see-also">See also&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://learn.microsoft.com/en-us/power-apps/developer/data-platform/api-limits?tabs=sdk" target="_blank" rel="noopener">Dataverse Service API protection limits (MSFT Docs)&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="meta">Meta&lt;/h2>
&lt;p>Image credit: &lt;a href="https://www.flickr.com/photos/chanceprojects/" target="_blank" rel="noopener">Neil Cummings&lt;/a> (&lt;a href="https://www.flickr.com/photos/23874985@N07/12883006984" target="_blank" rel="noopener">source&lt;/a>) - licenced &lt;a href="https://creativecommons.org/licenses/by-sa/2.0/" target="_blank" rel="noopener">CC-BY-SA 2.0&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> 6/100&lt;/p></description></item><item><title>Doctorow on Social Quitting</title><link>https://www.synesthesia.co.uk/2023/01/10/doctorow-on-social-quitting/</link><pubDate>Tue, 10 Jan 2023 12:16:40 +0000</pubDate><guid>https://www.synesthesia.co.uk/2023/01/10/doctorow-on-social-quitting/</guid><description>&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Cory_Doctorow" target="_blank" rel="noopener">Cory Doctorow&lt;/a> has been writing incisively about social media for a long time now. This week, in &lt;a href="https://doctorow.medium.com/social-quitting-f049b33ad3f6" target="_blank" rel="noopener">Social Quitting&lt;/a>, he goes to the heart of how all the big social platforms work, and why the landscape is starting to shift rapidly.&lt;/p>
&lt;p>The summary of his analysis on how every social platform so far makes money goes something like this:&lt;/p>
&lt;ul>
&lt;li>The economics of social media platforms are based on value extraction, and the platform design decisions that modify who benefits from that value.&lt;/li>
&lt;li>The end-goal for the platform companies is to move as much as possible of the value extraction in their favour, progressively making the service worse for end-users and businesses.&lt;/li>
&lt;li>To keep users and businesses on the platform while their value proposition is weakened (&amp;quot;&lt;strong>enshittification&lt;/strong>&amp;quot; as Doctorow eloquently puts it), the platform companies are skilled in exploiting network effects and switching costs.
Blocking interoperability with other platforms is a key and deliberate factor in this. The art is to keep users and businesses just happy enough that the pain of moving (and potentially losing their networks) is slightly more than the pain of using an increasingly enshittified platform&lt;/li>
&lt;li>The platform lifecycle typically goes like this:
&lt;ol>
&lt;li>lure users with fun and satisfying features, and a minimum of pain points like ads, data collection, manipulation of what you see&lt;/li>
&lt;li>at critical mass, lure in businesses, trading the user attention surplus for revenue generators like targeted advertising, whilst keeping the hurdles for business low&lt;/li>
&lt;li>the implicit side-effect of increasing value for businesses is reducing value for users as they see more and more ads, and their feeds fill with promoted content over the content they want&lt;/li>
&lt;li>once a business sector is almost universally using your platform, start using that network effect against them by pushing up fees, forcing them to use your monetisation options etc.&lt;/li>
&lt;li>when enough business revenue is effectively locked-in through network effects and blocks on interoperability, the service to businesses is progressively worsened to extract more value for the platform company&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;p>Success relies on a skillful balancing act:&lt;/p>
&lt;blockquote>
&lt;p>The platforms try to establish an equilibrium where they only leave business customers and users with the absolute bare minimum needed to keep them on the service, and extract the rest for their shareholders
But this is a very brittle equilibrium, because the prices that platforms impose on their users and business customers can change very quickly, even if the platforms don’t do anything differently.&lt;/p>
&lt;/blockquote>
&lt;p>Citing &lt;a href="https://www.theifod.com/steins-law/" target="_blank" rel="noopener">Stein&amp;rsquo;s Law&lt;/a> &lt;em>&amp;ldquo;If something cannot go on forever, it will stop&amp;rdquo;&lt;/em>, Doctorow draws parallels between social media baronies, supply chain failures, and even modern (&amp;ldquo;end-stage&amp;rdquo;) capitalism itself:&lt;/p>
&lt;blockquote>
&lt;p>companies can go on for years paying their workers just barely enough to survive (or even less, expecting them to get public assistance and/or a side-hustle), and those workers can tolerate it, and tolerate it, and tolerate it — until one day, they stop - The Great Resignation, Quiet Quitting, mass desertions from the gig economy.&lt;/p>
&lt;/blockquote>
&lt;p>An inevitable comparison springs to mind with the current relationship between the British electorate and the increasingly desperate shenanigans from those clinging to power. Sadly, whereas with social media there are an increasing range of alternatives that are designed to minimise the harvesting of surplus value, I&amp;rsquo;m not clear what an equivalent would be for government!&lt;/p>
&lt;p>This was post 4/100 in &lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a>.&lt;/p></description></item><item><title>A new year and 100 days to offload</title><link>https://www.synesthesia.co.uk/2023/01/06/a-new-year-and-100-days-to-offload/</link><pubDate>Fri, 06 Jan 2023 12:55:24 +0000</pubDate><guid>https://www.synesthesia.co.uk/2023/01/06/a-new-year-and-100-days-to-offload/</guid><description>&lt;p>Lots of people go for retrospective posts at this time of year, but I&amp;rsquo;m not sure I blogged frequently enough last year to really bring out the highlights. And yes I could go back through my weeknotes and daily logs, but not feeling that level of keen right now.&lt;/p>
&lt;p>I missed &lt;a href="https://100daystooffload.com/" target="_blank" rel="noopener">#100DaysToOffload&lt;/a> when it first came out, but it looks like people are still playing the game (some of them for the second time!) I may as well use this as a little challenge to myself to write more on this site.&lt;/p>
&lt;p>#100DaysToOffload post 1/100 !&lt;/p></description></item><item><title>A Rusty Advent</title><link>https://www.synesthesia.co.uk/note/2022/12/06/a-rusty-advent/</link><pubDate>Tue, 06 Dec 2022 06:19:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2022/12/06/a-rusty-advent/</guid><description>&lt;h2 id="background">Background&lt;/h2>
&lt;p>&lt;a href="http://was.tl/" target="_blank" rel="noopener">Eric Wastel&lt;/a> has been publishing &lt;a href="s://adventofcode.com/">Advent of Code&lt;/a> (AoC) since 2015. Each year he publishes 25 programming problems, releasing one a day from the 1st of December. Each day&amp;rsquo;s problem consists of a textual description of a small programming puzzle, split into two parts - you only see the second part when you solve the first one correctly. To make things interesting there isn&amp;rsquo;t a single set of input data and correct answers, Eric populates each question with an undisclosed number of variants, and you get one chosen randomly for your account.&lt;/p>
&lt;p>For some people the race to get on the &lt;a href="https://adventofcode.com/2022/leaderboard" target="_blank" rel="noopener">global leaderboard&lt;/a> is all part of the fun, but as only the first 100 correct answers per day get points, this is a serious challenge requiring skill, a grasp of tactics (&lt;a href="https://kevinyap.ca/2019/12/going-fast-in-advent-of-code/" target="_blank" rel="noopener">1&lt;/a>|&lt;a href="https://gist.github.com/mcpower/87427528b9ba5cac6f0c679370789661" target="_blank" rel="noopener">2&lt;/a>|&lt;a href="https://blog.vero.site/post/advent-leaderboard" target="_blank" rel="noopener">3&lt;/a>), and availability.&lt;/p>
&lt;p>Prompted by &lt;a href="https://fedi.simonwillison.net/@simon/109440161155706170" target="_blank" rel="noopener">this post&lt;/a> from Simon Willison, I thought I&amp;rsquo;d have a go at using &lt;a href="https://adventofcode.com/2022/" target="_blank" rel="noopener">this year&amp;rsquo;s AoC&lt;/a> to play with &lt;a href="https://www.rust-lang.org/" target="_blank" rel="noopener">Rust&lt;/a>. I have absolutely zero previous experience of using Rust, but as it&amp;rsquo;s profile is &lt;a href="https://www.tiobe.com/tiobe-index/" target="_blank" rel="noopener">slowly rising&lt;/a> and it is significantly different from my daily diet of C#, it seems a good opportunity to stretch my brain a bit.&lt;/p>
&lt;p>Learning a new programming language can be very slow at first, and often the things that get in the way are around setting up your project to work efficiently, rather than the specifics of the language. Luckily, the popularity of AoC means that there are a fair number of pre-built templates out there. I found &lt;a href="https://github.com/fspoettel/advent-of-code-rust" target="_blank" rel="noopener">this one&lt;/a> by &lt;a href="https://spoettel.dev/" target="_blank" rel="noopener">Felix Spöttel&lt;/a> to be very full-featured.&lt;/p>
&lt;h2 id="starting-the-problems">Starting the problems&lt;/h2>
&lt;p>There are at least two conceptual stages to solving an AoC problem (or indeed any programming challenge) - understanding the problem well enough to map out some kind of algorithm, and then implementing that algorithm in your tool of choice. Luckily code that is easy-to-write, ugly, and slow, (but accurate) is enough for AoC: it doesn&amp;rsquo;t require the extra attention needed in production code to make it efficient, safe and maintainable.&lt;/p>
&lt;p>As someone who writes a fair amount of code professionally the first of those isn&amp;rsquo;t too hard, but when you are learning a new language the second can be very challenging. As the point is to learn a new tool, it&amp;rsquo;s extremely useful to look at what other people have done (yes, in a strict competition this would be cheating!), and luckily a fair number of people make their solutions public. I&amp;rsquo;ve also found at least one person who is publishing &lt;a href="https://fasterthanli.me/series/advent-of-code-2022" target="_blank" rel="noopener">a set of tutorial blogs&lt;/a> based on the same challenge.&lt;/p>
&lt;p>Although approaching like this you can rack up stars fairly easily (although you won&amp;rsquo;t get on the leaderboard because of the time delay), that&amp;rsquo;s only incidental feedback. The whole point when using the process as a learning tool is to gradually wean yourself off looking at other people&amp;rsquo;s code until you get really stuck. In the words of my trainer, &amp;ldquo;you&amp;rsquo;re only cheating yourself!&amp;rdquo;.&lt;/p>
&lt;p>Simon Willison has explicitly chosen to use the process not only to learn Rust, but to test out the use of a modern AI model (&lt;a href="https://chat.openai.com/" target="_blank" rel="noopener">ChatGPT&lt;/a>) as a way of bootstrapping a first pass of code for a given question. I haven&amp;rsquo;t yet resorted to that, but I won&amp;rsquo;t rule it out. &lt;em>It will also be interesting to see if this area (writing code) is something ChatGPT can do well, as there are other fields (such as mathematics) where people are &lt;a href="https://mathstodon.xyz/@timhenke/109462327312838836" target="_blank" rel="noopener">reporting egregious errors in the results&lt;/a>.&lt;/em> If you are interested in a more in-depth discussion about using ChatGPT for this purpose and some of the wider questions this raises, I recommend &lt;a href="https://simonwillison.net/2022/Dec/5/rust-chatgpt-copilot/" target="_blank" rel="noopener">Simon&amp;rsquo;s blog post&lt;/a>.&lt;/p>
&lt;p>I am keeping more detailed learning notes in the &lt;a href="https://github.com/synesthesia/advent-of-code-rust-2022/issues?q=is%3Aissue&amp;#43;is%3Aclosed" target="_blank" rel="noopener">Github issues&lt;/a> associated with &lt;a href="https://github.com/synesthesia/advent-of-code-rust-2022/" target="_blank" rel="noopener">my code&lt;/a>, I will disclose all sources of help in there.&lt;/p>
&lt;h2 id="progress">Progress&lt;/h2>
&lt;p>As I write I am &lt;a href="https://github.com/synesthesia/advent-of-code-rust-2022/issues/2#issuecomment-1338924224" target="_blank" rel="noopener">part way through Question 2&lt;/a>, I only started yesterday and I have no illusions that I will complete these tasks before Christmas.&lt;/p>
&lt;p>I will keep commenting in Github as I go, and will come back here with a followup post when I finish (or lose the will to continue).&lt;/p></description></item><item><title>Example of adding Antora local author preview</title><link>https://www.synesthesia.co.uk/note/2022/12/02/example-of-adding-antora-local-author-preview/</link><pubDate>Fri, 02 Dec 2022 11:01:03 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2022/12/02/example-of-adding-antora-local-author-preview/</guid><description>&lt;p>In &lt;a href="https://www.synesthesia.co.uk/note/2020/09/03/antora-local-authoring/">Antora Local Authoring&lt;/a> I described how the &lt;a href="https://docs.antora.org/antora/latest/playbook/author-mode/" target="_blank" rel="noopener">author mode&lt;/a> configuration could be used to manage your local copy of a documentation site.&lt;/p>
&lt;p>&lt;a href="https://www.synesthesia.co.uk/#section-experience">Where I work&lt;/a> we have been running a couple of internal documentation sites for 2 years, the largest of which references nearly 30 source repositories. Although I drove the initial work I am always looking for ways to encourage colleagues to get involved with writing documentation, especially if they are contributing code changes to one of the systems or services that are documented.&lt;/p>
&lt;p>One of the barriers has been the inability to easily preview documentation changes when in the context of a specific code repository. Since one of the goals of &lt;a href="https://www.synesthesia.co.uk/tag/docsascode/">#docsascode&lt;/a> is to manage the documentation for a feature as you write that feature this has been a major impediment.&lt;/p>
&lt;p>The change I have started implementing from today is to add the minimum extra to each code repository to allow developers to run a local preview copy of the documentation.&lt;/p>
&lt;ul>
&lt;li>additional dev dependencies&lt;/li>
&lt;li>an additional documentation component to act as a local site entry point, with links to the other components&lt;/li>
&lt;li>an Antora local playbook&lt;/li>
&lt;li>a Gulp configuration to run antora agaisnt the local playbook and host a development server&lt;/li>
&lt;/ul>
&lt;p>Running the preview is as simple as:&lt;/p>
&lt;ul>
&lt;li>&lt;code>npm install&lt;/code>&lt;/li>
&lt;li>&lt;code>npx gulp&lt;/code>&lt;/li>
&lt;li>visit &lt;a href="http://localhost:5000" target="_blank" rel="noopener">http://localhost:5000&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>And the result looks like this:&lt;/p>
&lt;figure id="figure-example-repository-running-in-author-mode-preview">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Example repository running in author mode preview" srcset="
/note/2022/12/02/example-of-adding-antora-local-author-preview/local-preview-build_hu8c5a33255d403a89c80dd156a58f32a8_77978_953ffa501eca862f536fd83ad2d18d02.webp 400w,
/note/2022/12/02/example-of-adding-antora-local-author-preview/local-preview-build_hu8c5a33255d403a89c80dd156a58f32a8_77978_4d7e874653b714fed8408de38f9f73cd.webp 760w,
/note/2022/12/02/example-of-adding-antora-local-author-preview/local-preview-build_hu8c5a33255d403a89c80dd156a58f32a8_77978_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2022/12/02/example-of-adding-antora-local-author-preview/local-preview-build_hu8c5a33255d403a89c80dd156a58f32a8_77978_953ffa501eca862f536fd83ad2d18d02.webp"
width="760"
height="545"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Example repository running in author mode preview
&lt;/figcaption>&lt;/figure>
&lt;p>&lt;em>(internally we insert our own branded Antora UI so that the preview looks more like the final result)&lt;/em>&lt;/p>
&lt;p>The simplest example is in a &lt;a href="https://github.com/synesthesia/doc-example" target="_blank" rel="noopener">repository on Github&lt;/a>.&lt;/p></description></item><item><title>Reply to Chris Aldrich 'FeedReaderFriday: A Suggestion for Changing our Social Media Patterns'</title><link>https://www.synesthesia.co.uk/2022/12/02/reply-to-chris-aldrich-feedreaderfriday-a-suggestion-for-changing-our-social-media-patterns/</link><pubDate>Fri, 02 Dec 2022 07:07:28 +0000</pubDate><guid>https://www.synesthesia.co.uk/2022/12/02/reply-to-chris-aldrich-feedreaderfriday-a-suggestion-for-changing-our-social-media-patterns/</guid><description>&lt;p>I never really stopped reading stuff in a feed reader (currently for me, &lt;a href="https://feedly.com/" target="_blank" rel="noopener">Feedly&lt;/a>); it&amp;rsquo;s by far the fastest way to scan new content from sources you find interesting and then click thorugh directly to their own sites.&lt;/p>
&lt;p>Probably the biggest (and most useful) change I have made to the habit has been to &lt;a href="https://www.synesthesia.co.uk/2019/09/25/filtering-information-by-social-distance-2/">rearrange my feeds by social distance&lt;/a> - this immediately means that the people I interact with the most are near the top of my list, so if time is limited their posts are the ones I see first.&lt;/p>
&lt;figure id="figure-my-structure-of-folders-in-feedly">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="My structure of folders in Feedly" srcset="
/2022/12/02/reply-to-chris-aldrich-feedreaderfriday-a-suggestion-for-changing-our-social-media-patterns/feedly-2019-09-25_hu02fcbd15e73462e4e35ad955a609ca2c_7932_95cbe1ed7b89c5a06bc2079cfdb3cca9.webp 400w,
/2022/12/02/reply-to-chris-aldrich-feedreaderfriday-a-suggestion-for-changing-our-social-media-patterns/feedly-2019-09-25_hu02fcbd15e73462e4e35ad955a609ca2c_7932_720be6940603713826def85efc6e7996.webp 760w,
/2022/12/02/reply-to-chris-aldrich-feedreaderfriday-a-suggestion-for-changing-our-social-media-patterns/feedly-2019-09-25_hu02fcbd15e73462e4e35ad955a609ca2c_7932_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2022/12/02/reply-to-chris-aldrich-feedreaderfriday-a-suggestion-for-changing-our-social-media-patterns/feedly-2019-09-25_hu02fcbd15e73462e4e35ad955a609ca2c_7932_95cbe1ed7b89c5a06bc2079cfdb3cca9.webp"
width="221"
height="360"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
My structure of folders in Feedly
&lt;/figcaption>&lt;/figure>
&lt;p>However in the interests of widening the pool of ideas, and in the spirit of &lt;a href="https://www.synesthesia.co.uk/tag/feedreaderfriday">#FeedReaderFriday&lt;/a> I am starting to make a point of randomly sampling sites in the @D500 and @E999 parts of my feeds. At the moment &lt;a href="https://boffosocko.com/blog/" target="_blank" rel="noopener">Chris Aldrich&lt;/a> lives in @D500, but the whole point of this organisation is to move feeds up and down the list as the level of interaction changes. I&amp;rsquo;m finding more and more of interest around knowledge management and indieweb topics in Chris&amp;rsquo;s feed.&lt;/p>
&lt;p>You can see the current contents of my reading list as OPML at &lt;a href="https://www.synesthesia.co.uk/opml/synesthesia.opml">this link&lt;/a>. Currently this requires manual updating, but AFAIK Feedly make this information available via an API endpoint, so it should be straightforward to add a pre-build script to pull down a fresh copy.&lt;/p></description></item><item><title>See you never Twitter</title><link>https://www.synesthesia.co.uk/2022/11/21/see-you-never-twitter/</link><pubDate>Mon, 21 Nov 2022 09:02:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/2022/11/21/see-you-never-twitter/</guid><description>&lt;p>It&amp;rsquo;s that time.&lt;/p>
&lt;p>I&amp;rsquo;ve deleted most of my interaction history using the wonderful &lt;a href="https://semiphemeral.com/" target="_blank" rel="noopener">Semiphemeral&lt;/a>.&lt;/p>
&lt;p>My account is restricted.&lt;/p>
&lt;p>After this post I will switch off federation from my blog to Twitter.&lt;/p>
&lt;p>Find me on &lt;a href="https://www.synesthesia.co.uk" target="_blank" rel="noopener">my blog&lt;/a>, or &lt;a href="https://social.synesthesia.co.uk/@julian" target="_blank" rel="noopener">on Mastodon&lt;/a>&lt;/p></description></item><item><title>Joined the Fediverse</title><link>https://www.synesthesia.co.uk/2022/11/08/joined-the-fediverse/</link><pubDate>Tue, 08 Nov 2022 07:53:49 +0000</pubDate><guid>https://www.synesthesia.co.uk/2022/11/08/joined-the-fediverse/</guid><description>&lt;h2 id="what">What?&lt;/h2>
&lt;p>The &amp;ldquo;Fediverse&amp;rdquo; is&lt;/p>
&lt;blockquote>
&lt;p>an ensemble of federated (i.e. interconnected) servers that are used for web publishing (i.e. social networking, microblogging, blogging, or websites) and file hosting, but which, while independently hosted, can communicate with each other&lt;/p>
&lt;p>- &lt;a href="https://en.wikipedia.org/wiki/Fediverse" target="_blank" rel="noopener">Wikipedia:Fediverse&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>It&amp;rsquo;s not new, but there is definitely a &lt;a href="https://uk.pcmag.com/social-media/143628/mastodon-gains-200000-new-users-after-musk-completes-twitter-takeover" target="_blank" rel="noopener">popular surge to the Fediverse, especially Mastodon, since Musk took over Twitter&lt;/a>.&lt;/p>
&lt;p>For reasons I expand below, I&amp;rsquo;ve now made the leap and set up a Mastodon account, on my own instance (&lt;a href="https://social.synesthesia.co.uk@julian" target="_blank" rel="noopener">@julian@social.synesthesia.co.uk&lt;/a>). I won&amp;rsquo;t be deleting my Twitter account just yet, not least because I have several apps that use it for identity, but I might be changing how I use it.&lt;/p>
&lt;h2 id="why-and-why-now">Why? and Why Now?&lt;/h2>
&lt;p>I can only speak personally of course, but a more human-scaled social media feels like the obvious next step once you have started &lt;a href="https://boffosocko.com/2017/06/13/the-indieweb-movement-will-help-people-control-their-own-web-presence-future-hosting/" target="_blank" rel="noopener">taking control of your web presence&lt;/a>. Many commentators have pointed out that this is &lt;a href="https://mastodon.ie/@klillington/109290799195239199" target="_blank" rel="noopener">going back to the roots of what drove the web in the first place&lt;/a>, and as the length of this site&amp;rsquo;s archive shows, I was there!&lt;/p>
&lt;p>I have looked at Mastodon previously, and at that time felt there wasn&amp;rsquo;t enough content that I found interesting. Now, not least because of the recent surge, there are a lot more conversations of interest, and many of the people I already interact with (or in some cases, just follow, so far), have made the leap.&lt;/p>
&lt;p>When it comes to finding people, that is something that will feel instantly familiar to those of us who were around back then, as Ton &lt;a href="https://www.zylstra.org/blog/2022/10/twitter-after-the-birds-capture-find-me-at-tonm-tzyl-nl/" target="_blank" rel="noopener">says&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>finding your current others that you interact with already on Twitter. The path that one needs for this is like it used to be: once you connect to someone you check-out the people they follow and are followed by. We did that for blog rolls, and for every YASN (yet another social network) we joined, and we asked people in person for their e-mail addresses before that&lt;/p>
&lt;/blockquote>
&lt;p>So at one level personal curiosity, but also a professional interest. I need to know enough about the ecosystem to know whether I should advise my workplace to consider setting up our own Mastodon server: &lt;a href="https://toot.thoughtworks.com/@judeswae" target="_blank" rel="noopener">Julien Deswaef&lt;/a> has some &lt;a href="https://martinfowler.com/articles/your-org-run-mastodon.html" target="_blank" rel="noopener">compelling reasons why that might be a good idea&lt;/a>, and Ton Zjilstra takes the thinking even further, &lt;a href="https://www.zylstra.org/blog/2022/11/how-to-federate-like-our-business-ecosystem/" target="_blank" rel="noopener">considering multiple instances configured to replicate the network between a small company and its partners&lt;/a>.&lt;/p>
&lt;h2 id="how">How?&lt;/h2>
&lt;p>My first instinct was to run my own instance, to give me complete freedom in how I use it, but I also planned to set that up on a hosting service (e.g. the &lt;a href="https://masto.host/" target="_blank" rel="noopener">Masto.Host&lt;/a> service is recommended by a number of people I trust), unfortunately every hosting service I can find that might be of interest is currently closed for new business while they handle the surge of activity on existing instances.&lt;/p>
&lt;p>For the time being I have set up Mastodon on a cloud server to get things running. After that experience I would definitely point anyone else wanting their own instance to go with a specialised hosting service:&lt;/p>
&lt;ul>
&lt;li>the Docker approach failed for reasons I am still digging in to, but related to &lt;a href="https://github.com/mastodon/mastodon/issues/11368" target="_blank" rel="noopener">this issue&lt;/a>&lt;/li>
&lt;li>getting the app running required a wide range of Linux knowledge, and certain stages (e.g. building a specific Ruby version and compiling web assets) need a fairly beefy server - this would certainly be an area to improve with a CI build and deploy process&lt;/li>
&lt;li>running the app at even minimal performance seems to need a server that costs more than an equivalent hosting service (as they can benefit from economies of scale)&lt;/li>
&lt;/ul>
&lt;p>So once the hosting services open up again I think it likely I will port the instance across.&lt;/p>
&lt;h2 id="will-this-stick">Will this stick?&lt;/h2>
&lt;p>A few people are (of course) speculating about the future of social media. I&amp;rsquo;m sceptical about some of the wilder claims, but there are some who are making more grounded predictions, for example in the &lt;a href="https://social.coop/@eloquence/109300911537845631" target="_blank" rel="noopener">words&lt;/a> of &lt;a href="https://social.coop/@eloquence" target="_blank" rel="noopener">Erik Moeller&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>The collapse of Twitter is a system breakdown. Mastodon and the fediverse represent something different: &lt;em>system change&lt;/em>. From for-profit &amp;ldquo;Big Tech&amp;rdquo; to nonprofit, open source, community-owned public spaces.&lt;/p>
&lt;p>System change is always harder than you think. It always incurs short-term costs, with hoped for long-term benefits.&lt;/p>
&lt;p>The next few weeks will be really tough for the fediverse. Stick around, vibe with it, and you just might help us put a huge part of the web back in community hands. &amp;lt;3
Expect some of the following to happen in the coming weeks:&lt;/p>
&lt;ul>
&lt;li>celebrities with huge follower counts pushing tiny community-run servers to their knees&lt;/li>
&lt;li>instance admin burnout; shutting down of servers&lt;/li>
&lt;li>big new servers that don&amp;rsquo;t &amp;ldquo;vibe&amp;rdquo; with common rules or culture being widely defederated&lt;/li>
&lt;li>some notable account violating an instance code of conduct and throwing a fit&lt;/li>
&lt;li>lots of people ragequitting Mastodon for one reason or another&lt;/li>
&lt;li>etc.
It&amp;rsquo;ll be a rough ride. Patience and strength, all.&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;h2 id="find-me">Find me&lt;/h2>
&lt;p>You can find me at &lt;a href="https://social.synesthesia.co.uk@julian" target="_blank" rel="noopener">@julian@social.synesthesia.co.uk&lt;/a>&lt;/p></description></item><item><title>Bursty Backlogs</title><link>https://www.synesthesia.co.uk/2022/09/15/bursty-backlogs/</link><pubDate>Thu, 15 Sep 2022 05:21:13 +0100</pubDate><guid>https://www.synesthesia.co.uk/2022/09/15/bursty-backlogs/</guid><description>&lt;h2 id="why-hasnt-feature-x-been-done-yet">Why hasn&amp;rsquo;t feature X been done yet?&lt;/h2>
&lt;p>I think everyone who has any managerial responsiblity for developing software will have heard that question.&lt;/p>
&lt;p>The conversations with colleagues about the fluid nature of backlogs, the impact of changing business priorities, and the basic concept that an idea one has posted into the ideas portal is not a purchase order for a piece of functionality.&lt;/p>
&lt;p>Even at the level of basic observation most of us are also aware of the phenonemon of some features getting pulled through quickly, whilst others languish for weeks, months, years - sometimes surprising even to those of us making the prioritisation decisions.&lt;/p>
&lt;p>It turns out that the very act of prioritising may in itself be one of the contributing factors.&lt;/p>
&lt;h2 id="backlogs">Backlogs&lt;/h2>
&lt;p>&lt;a href="https://www.allankelly.net/" target="_blank" rel="noopener">Alan Kelly&lt;/a> has a reputation for constructively upsetting the conventional Agile applecart. Lately he has been writing about the &lt;a href="https://www.allankelly.net/archives/6541/backlogs-nobacklogs-and-comfort-blankets/" target="_blank" rel="noopener">problems with backlogs&lt;/a>.&lt;/p>
&lt;p>Docs: &lt;a href="https://docs.hugoblox.com/content/writing-markdown-latex/#callouts" target="_blank" rel="noopener">https://docs.hugoblox.com/content/writing-markdown-latex/#callouts&lt;/a>&lt;/p>
&lt;h2 id="parameters">Parameters&lt;/h2>
&lt;p>#0 : optional, positional
Add the class &amp;ldquo;alert-{#0}&amp;rdquo; to the &lt;div> container of the callout element.
Default Hugo Blox Builder available styles are &amp;ldquo;note&amp;rdquo; and &amp;ldquo;warning&amp;rdquo;.
Otherwise you can create your own class (see &lt;code>assets/scss/blox-bootstrap/elements/_callout.scss&lt;/code>).
*/}}&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
In software engineering, the &amp;ldquo;backlog&amp;rdquo; is the list of tasks or features that are required or requested for a product.
&lt;/div>
&lt;/div>
&lt;p>Calling them &amp;ldquo;a comfort blanket&amp;rdquo;, he identifies three key problems:&lt;/p>
&lt;ul>
&lt;li>Backlogs always grow, often faster than the work can be done. Some organisations perceive success as &amp;ldquo;doing&amp;rdquo; the backlog - an instant recipe for conflict and organisational politics.&lt;/li>
&lt;li>An emphasis on &amp;ldquo;doing the backlog&amp;rdquo; as opposed to delivering value in the form of benefits and outcomes&lt;/li>
&lt;li>A loss of strategy and purpose&lt;/li>
&lt;/ul>
&lt;p>With the result that:&lt;/p>
&lt;blockquote>
&lt;p>[&amp;hellip;] a lot of stakeholder problems get created because people believe that an item in the backlog is in some way promised when it isn’t. Product Owners and Teams accept items into the backlog for an easy life even when they know it is unlikely to ever get done. This stores up future problems because stakeholders start complaining when they fail to get their items. That damages trust in the team and a vicious circle ensues. [&amp;hellip;] This makes it increasingly difficult to follow the benefit and change course and act on product feedback.&lt;/p>
&lt;p>&lt;a href="https://www.allankelly.net/archives/6541/backlogs-nobacklogs-and-comfort-blankets/" target="_blank" rel="noopener">Alan Kelly - Backlogs, #NoBacklog(s) and comfort blankets&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>In a &lt;a href="https://www.allankelly.net/archives/6571/backlog-questions-and-answers/" target="_blank" rel="noopener">followup post&lt;/a> Alan continues his argument, and puts forward some interesting ideas about how a &amp;ldquo;just in time backlog&amp;rdquo; will lead to a more reactive technical response to changing business need. Some of those I&amp;rsquo;ll explore in a later post, but what caught my eye was a link via his post to an earlier comment, and thence to &lt;a href="https://shape-of-code.com/" target="_blank" rel="noopener">Derek Jones&amp;rsquo;&lt;/a> post &lt;a href="https://shape-of-code.com/2022/08/28/task-backlog-waiting-times-are-power-laws/" target="_blank" rel="noopener">Task backlog waiting times are power laws&lt;/a>.&lt;/p>
&lt;h2 id="power-laws-in-backlogs">Power laws in backlogs&lt;/h2>
&lt;p>Derek &lt;a href="https://shape-of-code.com/2022/08/28/task-backlog-waiting-times-are-power-laws/" target="_blank" rel="noopener">examines&lt;/a> a published dataset about &lt;a href="https://arxiv.org/abs/1901.01621" target="_blank" rel="noopener">software development tasks&lt;/a> which found that in a given backlog, the number of tasks
$n$ waiting for a time
$\tau$ satisfies the power law
$n \approx \tau^{-1}$.&lt;/p>
&lt;p>This contrasts with the expected behaviour from &lt;a href="https://en.wikipedia.org/wiki/Queueing_theory" target="_blank" rel="noopener">queueing theory&lt;/a> which would be an exponential
$n \approx a^{\tau}$ ( with
$a &lt; 1$) relationship, giving a far lower proportion of tasks at the longer wait times.&lt;/p>
&lt;p>The writer then looks at data on &lt;a href="https://arxiv.org/abs/physics/0510117" target="_blank" rel="noopener">how quickly famous scientists responded to letters&lt;/a> - a process involving choice and prioritisation - which found that this behaviour also followed a power law, albeit with an exponent of -1.5.&lt;/p>
&lt;p>He then references Barabási 2005 &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> (&lt;a href="https://garden.synesthesia.co.uk/references/Barabasi2005" target="_blank" rel="noopener">my summary note&lt;/a>) which showed that if task selection was based on unique probability of selection for each task (roughly proportional to the priority) then the result was a power law with exponent -1, just as in the original &lt;a href="https://arxiv.org/abs/1901.01621" target="_blank" rel="noopener">data&lt;/a>.&lt;/p>
&lt;p>The rest of the post is some open-ended speculation on how specific real-world selection behaviour might map to this model.&lt;/p>
&lt;h2 id="bursty-dynamics">Bursty dynamics&lt;/h2>
&lt;p>For me Derek Jones&amp;rsquo; post opened a new rabbit hole to dive down - the field of &lt;strong>Bursty Dynamics&lt;/strong> in human behaviour - the phenonemon that an area of behaviour is subject to very high peaks of interaction interspersed with long periods of relative inactivity.&lt;/p>
&lt;p>We are perhaps all familiar with situations in everyday life where we see &amp;ldquo;nothing for ages then it all comes at once&amp;rdquo;, but it turns out that when you use the data-collecting capabilities of everyday technology you can see bursty characteristics at both the level of individual activities and the level of interaction-driven collective activities, and that these behaviours, far from being random and following a Poisson distribution are instead best modelled with power-law curves. &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;p>There&amp;rsquo;s a lot to read, so I&amp;rsquo;ve only just scratched the surface&amp;hellip;&lt;/p>
&lt;h2 id="final-reflection">Final reflection&lt;/h2>
&lt;p>Occasionally I read things which give me that &amp;ldquo;more questions than answers&amp;rdquo; tingle of curiousity, and it turns out that a couple of blog posts about the everday mundanity of task backlogs have done just that. Some new areas to read here.&lt;/p>
&lt;p>Whilst reading the source papers I&amp;rsquo;ve referenced in this post it struck me, for far from the first time, just how much maths I have
lost - the referenced papers contain a moderate amount of statistical maths, and whereas I would have once read through it with relative facility, now each equation requires a fair bit of scrutiny and looking things up. Use it or lose it, as the saying goes.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Barabási, A.-L. (2005). The origin of bursts and heavy tails in human dynamics. &lt;a href="https://doi.org/10.1038/nature03459" target="_blank" rel="noopener">https://doi.org/10.1038/nature03459&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Karsai, M., Jo, H.-H., &amp;amp; Kaski, K. (2018). Bursty Human Dynamics. &lt;a href="https://doi.org/10.1007/978-3-319-68540-3" target="_blank" rel="noopener">https://doi.org/10.1007/978-3-319-68540-3&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Learning Tools 2022</title><link>https://www.synesthesia.co.uk/2022/09/09/learning-tools-2022/</link><pubDate>Fri, 09 Sep 2022 14:28:14 +0100</pubDate><guid>https://www.synesthesia.co.uk/2022/09/09/learning-tools-2022/</guid><description>&lt;h2 id="what-tools-are-people-using-to-support-learning">What tools are people using to support learning?&lt;/h2>
&lt;p>Every year for the last 16 years, &lt;a href="https://www.toptools4learning.com/about/" target="_blank" rel="noopener">Jane Hart&lt;/a> has compiled an annual list of &amp;ldquo;Top Tools for Learning&amp;rdquo;.&lt;/p>
&lt;p>Results for 2022 are &lt;a href="https://www.toptools4learning.com/" target="_blank" rel="noopener">here&lt;/a>, with &lt;a href="https://www.toptools4learning.com/analysis-2022/" target="_blank" rel="noopener">supporting analysis&lt;/a>.&lt;/p>
&lt;p>Key takeaways:&lt;/p>
&lt;ul>
&lt;li>fewer votes and for far fewer tools compared to 2021&lt;/li>
&lt;li>the top 5 tools (Youtube, PowerPoint, Google Search, Microsoft Teams, Zoom) were very significantly more popoular than the remainder of the list, which Jane interprets as showing that learning is now considered by most organisations as something that happens in the course of work&lt;/li>
&lt;li>in the light of fewer tools being nominated, Jane has dropped the separate lists for personal learning, workplace learning and educaiton, however she has published a &lt;a href="https://www.toptools4learning.com/wp-content/uploads/2022/08/TT4L2022.pdf" target="_blank" rel="noopener">useful Venn diagram in PDF form&lt;/a> showing the context of use for the top 100 tools.&lt;/li>
&lt;/ul>
&lt;h2 id="my-own-nominations">My own nominations&lt;/h2>
&lt;p>I overlooked the call for votes this year, but this is what I would have posted, together with changes since I last recorded &lt;a href="https://www.synesthesia.co.uk/2019/08/23/top-10-tools-for-learning-2019/">my choices in 2019&lt;/a>.&lt;/p>
&lt;h2 id="my-key-learning-tools-in-2022">My key learning tools in 2022&lt;/h2>
&lt;dl>
&lt;dt>Markdown&lt;/dt>
&lt;dd>It may seem strange to put a format in a list of tools, but the biggest change I have made is to build all of my learning and note-making processes (personal and professional) around plain text files, usually formatted with Markdown. This is the core of the sense-making part of my PKM processes.&lt;/dd>
&lt;/dl>
&lt;p>Using plain text opens the door to a huge range of tools, and where I need to convert to other formats (e.g. Microsoft Word) for working with less-techy colleagues it is easy enough to generate other output formats.&lt;/p>
&lt;dl>
&lt;dt>Feedly&lt;/dt>
&lt;dd>Feedly remains my key tool for keeping up to date across a range of personal and professional interests. For many of us RSS never went away, and there are encouraging &lt;a href="http://scripting.com/2022/09/08.html#a174315" target="_blank" rel="noopener">signs that it may have a resurgence&lt;/a>.&lt;/dd>
&lt;dt>Twitter&lt;/dt>
&lt;dd>Although this still remains an important source of information, fighting the algorithms gets harder and harder, and once I have found someone interesting I always look to see if they have a website with an RSS feed.&lt;/dd>
&lt;dt>Diigo&lt;/dt>
&lt;dd>Pretty much any page I find interesting or have to look at for work gets bookmarked into Diigo. The highlighting and annotation tools are usually the first step in sense-making.&lt;/dd>
&lt;dt>Drafts&lt;/dt>
&lt;dd>Incredibly &lt;a href="https://getdrafts.com/" target="_blank" rel="noopener">versatile tool&lt;/a> for creating and re-purposing text on iOS devices. Custom actions written in JavaScript allow me to push, pull and manipulate text pretty much as I need.&lt;/dd>
&lt;dt>Foam&lt;/dt>
&lt;dd>&lt;a href="https://foambubble.github.io/foam/" target="_blank" rel="noopener">an increasingly good notes tool&lt;/a> that sits within &lt;a href="https://code.visualstudio.com/" target="_blank" rel="noopener">Visual Studio Code&lt;/a>&lt;/dd>
&lt;dt>Zotero&lt;/dt>
&lt;dd>an &lt;a href="https://www.zotero.org/" target="_blank" rel="noopener">essential tool for capturing and annotating references&lt;/a> to formal papers&lt;/dd>
&lt;dt>SnipD&lt;/dt>
&lt;dd>Starting to build &lt;a href="https://www.snipd.com/" target="_blank" rel="noopener">this&lt;/a> AI-augmented podcast learning tool into my flow.&lt;/dd>
&lt;dt>YouTube&lt;/dt>
&lt;dd>I still use YouTube as a learning source, although I find most videos rather too longwinded compared to reading a textual summary.&lt;/dd>
&lt;dt>Github&lt;/dt>
&lt;dd>For the parts of my personal and professional learning that relate to code, Github is key. Whether it’s reading other people’s code, sharing my own ideas or collaborating on open source this tool is essential.&lt;/dd>
&lt;dt>Working Copy&lt;/dt>
&lt;dd>an essential companion for &lt;a href="https://workingcopy.app/" target="_blank" rel="noopener">working on my phone with text that lives in Github&lt;/a>&lt;/dd>
&lt;dt>Microsoft Teams&lt;/dt>
&lt;dd>This is a continually-growing part of my working day, and I keep finding new ways to push collaborative learning in the flow of work&lt;/dd>
&lt;dt>DuckDuckGo&lt;/dt>
&lt;dd>I have switched web search on my phone to &lt;a href="https://duckduckgo.com/" target="_blank" rel="noopener">DuckDuckGo&lt;/a>, and it&amp;rsquo;s about time I did so on my computer too, to get away from the pervasive tracking of Google search.&lt;/dd>
&lt;dt>Hugo&lt;/dt>
&lt;dd>This blog remains published on Hugo, and I have no plans to migrate it&lt;/dd>
&lt;dt>Other web site code&lt;/dt>
&lt;dd>My &lt;a href="https://garden.synesthesia.co.uk" target="_blank" rel="noopener">digital garden&lt;/a> is published from a subset of my notes using custom website code, currently heavily based on &lt;a href="https://github.com/mathieudutour/gatsby-digital-garden" target="_blank" rel="noopener">this Gatsby theme&lt;/a>.&lt;/dd>
&lt;dt>Bubbling under&lt;/dt>
&lt;dd>I&amp;rsquo;m starting to pay more attention to &lt;a href="https://hypothes.is/" target="_blank" rel="noopener">hypothes.is&lt;/a>.&lt;/dd>
&lt;/dl>
&lt;p>Another growth area is Indieweb - I already have web mentions working in and out of this blog, and I&amp;rsquo;m interested in potentially moving feed-related activities to an indieweb basis.&lt;/p>
&lt;p>Tempted to give &lt;a href="https://wiki.dendron.so" target="_blank" rel="noopener">Dendron&lt;/a> a go too.&lt;/p>
&lt;p>&lt;a href="https://ia.net/writer" target="_blank" rel="noopener">iaWriter&lt;/a> is becoming a popular tool on my phone for developing blog posts etc away from the computer&lt;/p>
&lt;h3 id="down-andor-out">Down and/or out&lt;/h3>
&lt;dl>
&lt;dt>Federated Wiki&lt;/dt>
&lt;dd>As I &lt;a href="https://www.synesthesia.co.uk/2021/05/01/reinventing-my-note-making-practice/" target="_blank" rel="noopener">have written elsewhere&lt;/a>, I have put down my experimentation with &lt;a href="http://fed.wiki.org/view/federated-wiki" target="_blank" rel="noopener">&lt;strong>FedWiki&lt;/strong>&lt;/a>, replacing the personal note-taking function with a combination of plain-text tools working on Markdown files.&lt;/dd>
&lt;/dl></description></item><item><title>Revisiting 'The Power of Context'</title><link>https://www.synesthesia.co.uk/2022/07/27/revisiting-the-power-of-context/</link><pubDate>Wed, 27 Jul 2022 00:30:28 +0100</pubDate><guid>https://www.synesthesia.co.uk/2022/07/27/revisiting-the-power-of-context/</guid><description>&lt;p>Another dive into the archives, &lt;a href="https://www.synesthesia.co.uk/2004/07/27/the-power-of-context/">this day in 2004&lt;/a> I was writing about the power of associative thinking to generate new insights, purely by juxtaposing existing ideas in a new way.&lt;/p>
&lt;p>These days it seems we hear of &amp;ldquo;nothing but&amp;rdquo; the power of associative thinking in the context of Zettelkasten or digital gardens, driven by the core principle of breaking ideas down into atomic concepts to support re-combination and serendipitous insight.&lt;/p>
&lt;p>However what many who focus on those current trends ignore (or are perhaps unaware of) is the very long history of tools that support this way of working (e.g. &lt;a href="https://en.wikipedia.org/wiki/Wiki" target="_blank" rel="noopener">wiki, 1995&lt;/a>, &lt;a href="https://www.tonybuzan.edu.sg/about/mind-maps/#:~:text=Originated%20in%201970%20by%20Tony,use%20their%20brains%20more%20effectively." target="_blank" rel="noopener">mind-mapping, 1970&lt;/a> ).&lt;/p>
&lt;p>So what, exactly, is the new context added by digital gardens? I&amp;rsquo;m not sure I know yet at a technical level. One clear benefit at an information level is that there is no shortage of discussion on how to use those tools to support thinking, but I would suggest much of that could be applied to any technology.&lt;/p>
&lt;p>Beyond the associative power of one mind is the additional benefit of social networks to support high quality ideation. In Burt 2003 &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> the author studied 673 managers in a large US electronics company and found that&lt;/p>
&lt;blockquote>
&lt;p>good ideas were disproportionately in the hands of managers rich in the social capital of brokering connections across structural holes. [such managers] were more likely to express their ideas, less likely to have their ideas dismissed by senior management, and more likely to have their ideas evaluated as valuable.&lt;/p>
&lt;/blockquote>
&lt;p>Clearly there is more than associative thinking at play here, a social network is not just a source of new ideas, but one&amp;rsquo;s cultural capital within that network is likely to add perceived value to one&amp;rsquo;s own constructs.&lt;/p>
&lt;p>If digital gardens and Zettelkasten have given us new tools for personal associative thinking, and when they are public can stimulate new patterns of thought in a reader, what do we have that supports the social element?&lt;/p>
&lt;p>In 2004 I wrote about three factors I saw as critical to &lt;a href="https://www.synesthesia.co.uk/2004/05/10/unpredictable-emergence-of-learning/">the unpredictable emergence of learning&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;ul>
&lt;li>&lt;em>Generalist / Polymath&lt;/em> learning exists, contributes knowledge and helps the horizontal distribution of knowledge;&lt;/li>
&lt;li>The public, linked, asynchronous nature of blogs and related technologies both exposes conversations to a wider pool of people and helps the ideas start to flow before any face-to-face meeting;&lt;/li>
&lt;li>The benefits of any specific piece of knowledge are not always forseeable until the right combination of circumstances and other people arises – in other words unpredictable emergent behaviour;&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>I&amp;rsquo;m not convinced anything has really changed there, it&amp;rsquo;s just we&amp;rsquo;ve all spent 15+ years looking in other directions. The re-emergence of blogs as an asynchronous conversation, combined with the ready availability of tools such as digital gardens to express loosely-coupled ideas, provide as good a platform now as they did then.&lt;/p>
&lt;p>The rise of distributed working has also given &lt;a href="https://about.gitlab.com/company/culture/all-remote/asynchronous/" target="_blank" rel="noopener">asynchronous work&lt;/a> new credibility as the route to both sanity and productivity in an always-on context.&lt;/p>
&lt;p>So what, is needed on top of my three points for 2004 to encourage effective networked thinking? I will hazard a guess at:&lt;/p>
&lt;ul>
&lt;li>expose yourself to lots of ideas - &lt;a href="https://www.synesthesia.co.uk/2022/07/13/renewal-revisited/">renew your self&lt;/a>&lt;/li>
&lt;li>learn stuff to support your process - more important to learn how to read, think and write in a networked context than how to use any specific technology&lt;/li>
&lt;li>create your own process for &lt;a href="https://jarche.com/2014/02/the-seek-sense-share-framework/" target="_blank" rel="noopener">Seek-Sense-Share&lt;/a> and stick to it (lightly)&lt;/li>
&lt;li>be &lt;a href="https://jarche.com/2022/07/intentionality/" target="_blank" rel="noopener">intentional&lt;/a>&lt;/li>
&lt;li>&amp;ldquo;own your own space&amp;rdquo; on the web - although embracing &lt;a href="https://indieweb.org/" target="_blank" rel="noopener">Indieweb&lt;/a> principles typically means an investment in learning some tech skills, that&amp;rsquo;s a small price to pay for your ideas having a permanent home (your domain), in a format you can lift and shift to any server you like&lt;/li>
&lt;li>engage with others and their ideas&lt;/li>
&lt;/ul>
&lt;p>Lastly I&amp;rsquo;m not immune to the thought that this is a self-referential post - it is re-examining earlier ideas in a new context. I&amp;rsquo;m happy to admit I stole the idea of going back through the archive from Ton Zjilstra, and as &lt;a href="https://www.zylstra.org/blog/2022/07/21942/" target="_blank" rel="noopener">he found recently&lt;/a>, even a conversation with your past self can generate new thinking.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://files.zotero.net/eyJleHBpcmVzIjoxNjU3NjI2NTE3LCJoYXNoIjoiZGMyODFlMDJhNDY1MWI5ZDdiYTE2OTllNzQxM2FhYWMiLCJjb250ZW50VHlwZSI6ImFwcGxpY2F0aW9uXC9wZGYiLCJjaGFyc2V0IjoiIiwiZmlsZW5hbWUiOiJCdXJ0IC0gMjAwMyAtIFNvY2lhbCBPcmlnaW5zIG9mIEdvb2QgSWRlYXMucGRmIn0%3D/f7671590898f12a52bc31d47121647088fcee5b70b34ba04d30048cba2e812d2/Burt%20-%202003%20-%20Social%20Origins%20of%20Good%20Ideas.pdf" target="_blank" rel="noopener">Burt, Ronald. ‘Social Origins of Good Ideas’, 1 January 2003&lt;/a>.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Digging out Diigo notes</title><link>https://www.synesthesia.co.uk/2022/07/15/digging-out-diigo-notes/</link><pubDate>Fri, 15 Jul 2022 08:15:58 +0100</pubDate><guid>https://www.synesthesia.co.uk/2022/07/15/digging-out-diigo-notes/</guid><description>&lt;p>&lt;em>Image credit&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/em>&lt;/p>
&lt;h2 id="context">Context&lt;/h2>
&lt;p>Like many others, a key part of my personal knowledge management process is
the creation of highlights and notes on web pages uses online tools, then the extraction of those notes
into a local Markdown file to form part of my knowledge library.&lt;/p>
&lt;p>So for example I might highlight a page using Diigo in the web browser:&lt;/p>
&lt;p>
&lt;figure id="figure-diigo-highlight">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="A web page highlighted in browser" srcset="
/2022/07/15/digging-out-diigo-notes/example-diigo-highlight_hu9f653083ca8099e723cf572d38dfaace_104102_ddbe5ed5d7258e0c8a5272451d3dd674.webp 400w,
/2022/07/15/digging-out-diigo-notes/example-diigo-highlight_hu9f653083ca8099e723cf572d38dfaace_104102_e6ce023c15f4f0080884eb7a295bcbe7.webp 760w,
/2022/07/15/digging-out-diigo-notes/example-diigo-highlight_hu9f653083ca8099e723cf572d38dfaace_104102_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2022/07/15/digging-out-diigo-notes/example-diigo-highlight_hu9f653083ca8099e723cf572d38dfaace_104102_ddbe5ed5d7258e0c8a5272451d3dd674.webp"
width="400"
height="359"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
A web page highlighted in browser
&lt;/figcaption>&lt;/figure>
.&lt;/p>
&lt;p>Those highlights are now stored within the Diigo system.&lt;/p>
&lt;p>Although some manipulation is possible, for example dragging content into an outliner for editing:&lt;/p>
&lt;p>
&lt;figure id="figure-diigo-outliner-1">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Within Diigo, drag highlights to an outliner" srcset="
/2022/07/15/digging-out-diigo-notes/example-diigo-drag-to-outliner_hu1ee61938cf74537cd96c3fd4ee9933f9_126851_256c1a13f03512b0de7eea2977d5ce24.webp 400w,
/2022/07/15/digging-out-diigo-notes/example-diigo-drag-to-outliner_hu1ee61938cf74537cd96c3fd4ee9933f9_126851_7b78b9f19a6e5993a0c6fbba3d129eb6.webp 760w,
/2022/07/15/digging-out-diigo-notes/example-diigo-drag-to-outliner_hu1ee61938cf74537cd96c3fd4ee9933f9_126851_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2022/07/15/digging-out-diigo-notes/example-diigo-drag-to-outliner_hu1ee61938cf74537cd96c3fd4ee9933f9_126851_256c1a13f03512b0de7eea2977d5ce24.webp"
width="760"
height="503"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Within Diigo, drag highlights to an outliner
&lt;/figcaption>&lt;/figure>
.&lt;/p>
&lt;p>All you can do from there is to export as either plain text or HTML, or print to PDF or paper, all of which
lose a lot of context and require a fair bit of manual editing just to get the information into a usable state
in my local notes before I can begin &lt;em>thinking&lt;/em> about it.&lt;/p>
&lt;p>The key point, common to most commercial services, is that it is far easier to use stuff &lt;em>within&lt;/em> their walls than it is to extract it.&lt;/p>
&lt;p>As discussed &lt;a href="https://www.synesthesia.co.uk/2022/05/24/reply-to-ton-zijlstra-julians-nudge-to-explore-hypothes.is-api/">here&lt;/a>, &lt;a href="https://www.synesthesia.co.uk/2022/05/24/reply-to-ton-zijlstra-clipping-articles-from-feed-reader-to-obsidian/">here&lt;/a> and &lt;a href="https://www.zylstra.org/blog/2022/05/clipping-articles-from-feed-reader-to-obsidian/" target="_blank" rel="noopener">here&lt;/a>, there is a personal benefit in creating some basic tooling support to pull such annotations into a local context.&lt;/p>
&lt;h2 id="solution-approach">Solution approach&lt;/h2>
&lt;p>Although previously I thought that &lt;a href="https://www.synesthesia.co.uk/2022/05/24/reply-to-ton-zijlstra-clipping-articles-from-feed-reader-to-obsidian/#processing">building an extension for Visual Studio Code&lt;/a> would be the best place to start, after playing around that for a while I found I was spending most of my time thinking about how to integrate with VS Code, and very little time looking at what I wanted to do with the information. On further reflection I have changed my mind, and think it would be unwise (certainly for a first attempt at this problem) to tie into one particular editor (&lt;em>what if I change my mind about Obsidian? etc&amp;hellip;&lt;/em>), and instead go for a command-line tool that can be pointed at a set of posts and pull the markdown into a specific directory.&lt;/p>
&lt;p>The criteria therefore were:&lt;/p>
&lt;ul>
&lt;li>runnable from the command line&lt;/li>
&lt;li>usable on Windows and linux&lt;/li>
&lt;li>easily distributed (even if only to multiple devices owned by me)&lt;/li>
&lt;li>in a language and toolset I know well, for speed of implementation&lt;/li>
&lt;/ul>
&lt;p>My fairly rapid conclusion was to build this as a &lt;a href="https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools" target="_blank" rel="noopener">.Net global tool&lt;/a>:&lt;/p>
&lt;ul>
&lt;li>these are command line apps&lt;/li>
&lt;li>because they will run anywhere that the .Net SDK is installed, they can run on Windows, Mac or linux&lt;/li>
&lt;li>the .Net SDK is &lt;a href="https://dotnet.microsoft.com/en-us/platform/free" target="_blank" rel="noopener">free to use&lt;/a> and &lt;a href="https://dotnet.microsoft.com/en-us/platform/open-source" target="_blank" rel="noopener">open source&lt;/a>&lt;/li>
&lt;li>easy distribution mechanism via Nuget&lt;/li>
&lt;li>I use C# almost every day&lt;/li>
&lt;/ul>
&lt;p>The first three criteria could also have been met with node+npm, or PHP+Composer, my speed with those languages is far lower.&lt;/p>
&lt;p>Although the requirement to install the .Net SDK puts this in the class of &amp;ldquo;tools for developers&amp;rdquo;, the same would apply to the other two approaches,
and this is fundamentally &lt;strong>a tool for me&lt;/strong> (although built and distributed in the open for anyone to try).&lt;/p>
&lt;p>Unlike the node+npm and PHP+Composer routes, there is also an option to migrate the code to a fully self-contained excutable for a single install should the desire ever be there.&lt;/p>
&lt;h2 id="what-does-it-do">What does it do?&lt;/h2>
&lt;p>Skipping over the detail of how to install and then invoke the tool (&lt;a href="https://github.com/synesthesia/digger/blob/master/README.md" target="_blank" rel="noopener">the code README&lt;/a> tells you those details), the process looks something like this:&lt;/p>
&lt;p>
&lt;figure id="figure-diigo-overview-1">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Processing Diigo annotations with Digger" srcset="
/2022/07/15/digging-out-diigo-notes/digger-overview-01.drawio_hu2b58b071107cd0e097119ccb294b1159_56632_dd3a230b8446a874b75a745786e4f61d.webp 400w,
/2022/07/15/digging-out-diigo-notes/digger-overview-01.drawio_hu2b58b071107cd0e097119ccb294b1159_56632_a84b47b13652bcd969ff7afe4c6b39d5.webp 760w,
/2022/07/15/digging-out-diigo-notes/digger-overview-01.drawio_hu2b58b071107cd0e097119ccb294b1159_56632_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2022/07/15/digging-out-diigo-notes/digger-overview-01.drawio_hu2b58b071107cd0e097119ccb294b1159_56632_dd3a230b8446a874b75a745786e4f61d.webp"
width="760"
height="447"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Processing Diigo annotations with Digger
&lt;/figcaption>&lt;/figure>
.&lt;/p>
&lt;h2 id="what-does-the-output-look-like">What does the output look like?&lt;/h2>
&lt;p>A typical generated markdown file looks like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">&lt;span class="gh"># .Net Tools
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gh">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">## Summary
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">(left blank for later summarisation)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[&lt;span class="nt">Link to source&lt;/span>](&lt;span class="na">https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools&lt;/span>)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Note captured: 08\/07\/2022
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Bookmark created: 08\/07\/2022
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">## See also
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">(left blank for later cross-references)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">## Highlights from source page
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span>&lt;span class="k">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">A .NET tool is a special NuGet package that contains a console application.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="ge">&lt;/span>&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">A tool can be installed on your machine in the following ways:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="ge">&lt;/span>&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">* **As a global tool**
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="ge">&lt;/span>&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">The tool binaries are installed in a default directory that is added to the PATH environment variable. You can invoke the tool from any directory on the machine without specifying its location. One version of a tool is used for all directories on the machine.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="ge">&lt;/span>&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">* **As a global tool in a custom location** (also known as a tool-path tool).
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="ge">&lt;/span>&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">The tool binaries are installed in a location that you specify. You can invoke the tool from the installation directory or by providing the directory with the command name or by adding the directory to the PATH environment variable. One version of a tool is used for all directories on the machine.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="ge">&lt;/span>&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">* **As a local tool** (applies to .NET Core SDK 3.0 and later).
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="ge">&lt;/span>&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">The tool binaries are installed in a default directory. You invoke the tool from the installation directory or any of its subdirectories. Different directories can use different versions of the same tool.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="ge">&lt;/span>&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">The .NET CLI uses manifest files to keep track of which tools are installed as local to a directory. When the manifest file is saved in the root directory of a source code repository, a contributor can clone the repository and invoke a single .NET CLI command that installs all of the tools listed in the manifest files.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="ge">&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">**.NET tools run in full trust. Do not install a .NET tool unless you trust the author.**
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="ge">&lt;/span>&lt;span class="k">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">Here are some ways to find tools:
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="ge">&lt;/span>&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">* Use the [dotnet tool search](dotnet-tool-search) command to find a tool that is published to NuGet.org.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="ge">&lt;/span>&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">* Search the [NuGet](https://www.nuget.org) website by using the &amp;#34;.NET tool&amp;#34; package type filter. For more information, see [Finding and choosing packages](/en-us/nuget/consume-packages/finding-and-choosing-packages).
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="ge">&lt;/span>&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">* See the source code for the tools created by the ASP.NET Core team in the [Tools directory of the dotnet/aspnetcore GitHub repository](https://github.com/dotnet/aspnetcore/tree/main/src/Tools).
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="ge">&lt;/span>&lt;span class="k">&amp;gt; &lt;/span>&lt;span class="ge">* Learn about diagnostic tools at [.NET diagnostic tools](../diagnostics/#net-core-diagnostic-global-tools).
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>As you can see I am prompting the next parts of my process by inserting explicit cues to write a summary and to cross-reference to other notes or sources.&lt;/strong>&lt;/p>
&lt;h2 id="can-i-use-this">Can I use this?&lt;/h2>
&lt;p>You are welcome to use this tool yourself, however as .Net tools run with full trust you should read the &lt;a href="https://github.com/synesthesia/digger" target="_blank" rel="noopener">source code&lt;/a> and satisfy yourself that it is safe to do so on your machine.&lt;/p>
&lt;p>It doesn&amp;rsquo;t do anything remotely dangerous, but don&amp;rsquo;t take my word for it!&lt;/p>
&lt;h2 id="what-next">What next&lt;/h2>
&lt;p>My priorities are:&lt;/p>
&lt;ul>
&lt;li>use it (&amp;lsquo;dogfooding&amp;rsquo;), and get back to focusing on what I want to learn&lt;/li>
&lt;li>tidy up the code and documentation&lt;/li>
&lt;li>modify the code that converts HTML content in annotations to give markdown consistent with the other parts of the output
&lt;ul>
&lt;li>&lt;em>for example, choice of list character&lt;/em>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>think about what next, possibilities:
&lt;ul>
&lt;li>a simple HTML to Markdown option to convert files acquired manually (e.g. downloaded Kindle highlights)&lt;/li>
&lt;li>extract annotations from &lt;a href="https://web.hypothes.is/" target="_blank" rel="noopener">hypothes.is&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Image credit &lt;a href="https://unsplash.com/@johnmcclane?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" target="_blank" rel="noopener">Andres Siimon&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Small Tools</title><link>https://www.synesthesia.co.uk/project/smalltools/</link><pubDate>Thu, 14 Jul 2022 13:34:56 +0100</pubDate><guid>https://www.synesthesia.co.uk/project/smalltools/</guid><description>&lt;p>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>A collection of various software tools that I mostly put together for myself, but in the spirit of &lt;strong>Small Tech&lt;/strong>&lt;/p>
&lt;p>In the &lt;a href="https://ar.al/2019/03/04/small-technology/" target="_blank" rel="noopener">words of Aral Balkan&lt;/a>, Small Tech,&lt;/p>
&lt;blockquote>
&lt;ul>
&lt;li>Is built by humans for humans&lt;/li>
&lt;li>Is not for profit&lt;/li>
&lt;li>Is built by individuals and organisations without equity capital&lt;/li>
&lt;li>Is not sponsored by Big Tech/surveillance capitalists&lt;/li>
&lt;li>Is private by default&lt;/li>
&lt;li>Is peer-to-peer&lt;/li>
&lt;li>Is copyleft&lt;/li>
&lt;li>Favours small over big, simple over complex, and modular over monolithic&lt;/li>
&lt;li>Respects human rights, effort, and experience&lt;/li>
&lt;li>Is human scale&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>I&amp;rsquo;m not sure of anything I build for myself quite reaches those lofty goals, but one has to start somewhere&amp;hellip;&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Photo by &lt;a href="https://unsplash.com/@halacious?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" target="_blank" rel="noopener">Hal Gatewood&lt;/a> on &lt;a href="https://unsplash.com/s/photos/digital-tools?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" target="_blank" rel="noopener">Unsplash&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>'Renewal' revisited</title><link>https://www.synesthesia.co.uk/2022/07/13/renewal-revisited/</link><pubDate>Wed, 13 Jul 2022 00:30:28 +0100</pubDate><guid>https://www.synesthesia.co.uk/2022/07/13/renewal-revisited/</guid><description>&lt;p>On this day 19 years ago, &lt;a href="https://www.synesthesia.co.uk/2003/07/13/renewal/">I wrote about selected highlights from Tom Peters&amp;rsquo; &amp;ldquo;Brand You, the Renewal 50&amp;rdquo;&lt;/a>. The original site is long gone, but &lt;a href="https://web.archive.org/web/20030724154836/https://www.tompeters.com/toms_world/brand_you.asp" target="_blank" rel="noopener">the archive has it&lt;/a>. (&lt;a href="https://www.estherderby.com/blog/page/43/" target="_blank" rel="noopener">Esther Derby&amp;rsquo;s blog&lt;/a> where I found it is still there, although I didn&amp;rsquo;t link the exact post).&lt;/p>
&lt;p>All of these ideas are, at root, about opening yourself up to new ideas and new experiences. It&amp;rsquo;s interesting to look at some of the things I grabbed from the list then and review how they might fit now.&lt;/p>
&lt;blockquote>
&lt;ol>
&lt;li>Go to the nearest magazine shop. Now. Spend 20 minutes. Pick up 20-twenty!-magazines. None should be ones you normally read. Spend the better part of a day perusing them. Tear stuff out. Make notes. Create files. Goal: Stretch! Repeat&amp;hellip; monthly&amp;hellip; or at least bimonthly.&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>From 2022 this looks a substantial investment in your mental flexiblity - specialist magazines can be £5 upwards. Peters wrote for a US city experience, and I&amp;rsquo;m not sure how well it would have translated even in 2003 to the UK in terms of easy access to a shop with a wide range. I suspect that availability would be even less now.&lt;/p>
&lt;blockquote>
&lt;ol start="2">
&lt;li>Go to the Web. Now. Relax. Follow your bliss! Visit at least 15 sites you haven&amp;rsquo;t visited before. Follow any chain that is even a little intriguing. Bookmark a few of the best. Repeat&amp;hellip; once a week.&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>Still fresh!&lt;/p>
&lt;blockquote>
&lt;ol start="3">
&lt;li>Take off this Wednesday afternoon. Wander the closest mall&amp;hellip; for two hours. Note the stuff you like. (And hate.) Products, merchandising, whatever. Repeat&amp;hellip; bimonthly.&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>You can take 2 hours out? I also wonder how much more homogeneous physical retail has become in 19 years, and this exercise is about variety and new ideas.&lt;/p>
&lt;blockquote>
&lt;ol start="4">
&lt;li>Buy a packet of 3x5-inch notecards. Carry them around with you. Always. Record cool stuff. Awful stuff. Daily. Review your card pack every Sunday. (Obsess on this!)&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>The idea still works, although for many it would be easier to do on a notes app on your phone.&lt;/p>
&lt;blockquote>
&lt;ol start="6">
&lt;li>Project stuck in a rut? Look through your Rolodex. Who&amp;rsquo;s the oddest duck in there? Call her/him. Invite her/him to lunch. Pick her/his brain for a couple of hours about your project.&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>Apart from the rather dated (and US-centric) reference to a Rolodex, the idea still makes some sense. Not sure if it assumes a level of physical proximity that may not be the case in post-pandemic 2022.&lt;/p>
&lt;blockquote>
&lt;ol start="7">
&lt;li>Create a new habit: Visit your Rolodex. Once a month. Pick a name of someone interesting you&amp;rsquo;ve lost touch with. Take her/him to lunch&amp;hellip; next week.&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>Again, leaving aside the dated technology, the idea has some merit, and again raises the same question about physical proximity.&lt;/p>
&lt;blockquote>
&lt;ol start="8">
&lt;li>New habit: You&amp;rsquo;re in a meeting. Someone you don&amp;rsquo;t know makes an interesting contribution. Invite him/her to lunch&amp;hellip; in the next two weeks.&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>There&amp;rsquo;s a lot of focus on going to lunch in this list that seems terribly dated. It also makes the world of 2003 sound impossibly leisurely.&lt;/p>
&lt;blockquote>
&lt;ol start="9">
&lt;li>You run across somebody interesting. As a matter of course, ask her (him) what&amp;rsquo;s the best thing she/he&amp;rsquo;s read in the last 90 days. Order it from Amazon.com&amp;hellip; this afternoon.&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>That one still works, although it presupposes time to read!&lt;/p>
&lt;blockquote>
&lt;ol start="10">
&lt;li>Take tomorrow afternoon off. Rain or shine. Wander a corner of the city you&amp;rsquo;ve never explored before.&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>Luxury!&lt;/p>
&lt;blockquote>
&lt;ol start="11">
&lt;li>Go to the local Rite Aid. Buy a $2 notebook. Title it Observations I. Start recording. Now. Anything and everything. (Now=Now)&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>As with no. 4 this still works although would be even better on a notes app on your phone.&lt;/p>
&lt;blockquote>
&lt;ol start="15">
&lt;li>Read a provocative article in a business journal. Triggers a thought? E-mail the author. So what if you never hear back? (The odds are actually pretty high that you will. Trust me.)&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>Still makes sense, although I can feel the reluctance this might trigger if I did it for real - combination of imposter syndrome and taking the time to write the response clearly.&lt;/p>
&lt;blockquote>
&lt;ol start="37">
&lt;li>Get up from your desk. Now. Take a two-hour walk on the beach. In the hills. Whatever. Repeat&amp;hellip; once every couple of weeks. (Weekly?)&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>Again, makes sense.&lt;/p>
&lt;p>Interestingly, but perhaps unsurprisingly, the biggest changes are around technology, and about the changes in our environment enabled/caused by that technology (more distributed work, less bricks-and-mortar retail). The other thing that comes out from several of the posts is the sense of time availability in working life - perhaps that is the biggest signal of all about what has changed in (nearly) two decades?&lt;/p>
&lt;p>What remains just as valid now is the drive to open up your mind to other people and other ideas. You never know which of those will find a good home in &lt;em>your&lt;/em> future view of the world.&lt;/p>
&lt;p>&lt;em>Photo credit &lt;a href="https://www.flickr.com/photos/number657/" target="_blank" rel="noopener">daniel&lt;/a> &lt;a href="https://creativecommons.org/licenses/by-nc/2.0/" target="_blank" rel="noopener">CC-BY NC 2.0&lt;/a>&lt;/em>&lt;/p></description></item><item><title>Reply to Ton Zijlstra 'Julian’s Nudge To Explore Hypothes.is API'</title><link>https://www.synesthesia.co.uk/2022/05/24/reply-to-ton-zijlstra-julians-nudge-to-explore-hypothes.is-api/</link><pubDate>Tue, 24 May 2022 13:23:08 +0100</pubDate><guid>https://www.synesthesia.co.uk/2022/05/24/reply-to-ton-zijlstra-julians-nudge-to-explore-hypothes.is-api/</guid><description>&lt;p>Ton expresses his concerns about annotations in any online tool (the example is Hypothes.is) being potentially risky, if nothing else as a consumer of learning time that isn&amp;rsquo;t well integrated with his other notes:&lt;/p>
&lt;blockquote>
&lt;p>The type of interaction and annotation I have/do with a source text I normally do locally. Unless it can be a &lt;a href="https://indieweb.org/PESOS" target="_blank" rel="noopener">PESOS&lt;/a> (Post Elsewhere Syndicate to Own Site) flow, exchanging that current value of processing things locally for merely the potential for interaction and conversation is likely a bad trade-off for my learning.&lt;/p>
&lt;/blockquote>
&lt;p>I completely agree, especially when it comes to the decision to start using yet another annotation tool.&lt;/p>
&lt;p>Although I do have some page annotations in &lt;a href="https://www.diigo.com/user/synesthesia" target="_blank" rel="noopener">Diigo&lt;/a>, as much as anything that&amp;rsquo;s because the tool is already there, in my browser.&lt;/p>
&lt;p>Aside from the risk that your work is sitting in someone else&amp;rsquo;s domain (the &lt;em>raison d&amp;rsquo;etre&lt;/em> of Indieweb!), as I develop my understanding of what I need to do for effective sense-making, the more I have realised that simple annotations sitting isolated from my main notes are almost as useless as bookmarks which are never looked at, and a far worse return on my time.&lt;/p>
&lt;p>Hence the motivation to &lt;a href="https://www.synesthesia.co.uk/2022/05/24/reply-to-ton-zijlstra-clipping-articles-from-feed-reader-to-obsidian/">build a tool to bring them in to my flow&lt;/a>.&lt;/p></description></item><item><title>Reply to Ton Zijlstra 'Clipping Articles From Feed Reader To Obsidian'</title><link>https://www.synesthesia.co.uk/2022/05/24/reply-to-ton-zijlstra-clipping-articles-from-feed-reader-to-obsidian/</link><pubDate>Tue, 24 May 2022 06:28:24 +0100</pubDate><guid>https://www.synesthesia.co.uk/2022/05/24/reply-to-ton-zijlstra-clipping-articles-from-feed-reader-to-obsidian/</guid><description>&lt;h2 id="ton-shows-the-way-again">Ton shows the way again&lt;/h2>
&lt;p>Once more, Ton has not only shown that he is thinking about similar personal information tooling challenges, but is ahead of me in implementing another &lt;a href="https://interconnected.org/home/2020/06/18/personal_software" target="_blank" rel="noopener">personal tool&lt;/a> to support his workflow.&lt;/p>
&lt;p>Ton has already taken the steps of implementing a &lt;a href="https://www.zylstra.org/blog/2022/02/building-my-own-microsub-client-for-feed-reading/" target="_blank" rel="noopener">feed reader&lt;/a> running on his local machine, to which he has added the ability to post commentary on tagged feed items to his public website (which I think runs on wordpress).&lt;/p>
&lt;p>In &lt;a href="https://www.zylstra.org/blog/2022/05/clipping-articles-from-feed-reader-to-obsidian/" target="_blank" rel="noopener">this post&lt;/a> he describes augmenting the tool, to allow him the option to post his clipped material and annotations into a Markdown file in his local notes repo. Given that Ton had already implemented his feed-reader client as PHP-based runnning in a local web server this approach seems extremely pragmatic.&lt;/p>
&lt;h2 id="my-process">My process&lt;/h2>
&lt;p>My &lt;a href="https://www.synesthesia.co.uk/2021/05/01/reinventing-my-note-making-practice/" target="_blank" rel="noopener">personal information environment&lt;/a> is somewhat different at the implementation layer (although broadly similar in terms of information flows).&lt;/p>
&lt;p>At the moment I don&amp;rsquo;t feel that using a commercial feed reader (&lt;a href="https://feedly.com/" target="_blank" rel="noopener">Feed.ly&lt;/a>) is the biggest pain point in my process. I value the portability of a cloud solution, and in particular the availability of a mobile app - most of my initial feed skimming is done on my phone in odd moments, and I use &lt;a href="http://ifttt.com/" target="_blank" rel="noopener">IFTTT&lt;/a> to post saved items into my &lt;a href="https://www.diigo.com/user/synesthesia" target="_blank" rel="noopener">Diigo library&lt;/a>.&lt;/p>
&lt;p>At the point I grab stuff into Diigo (either from Feedly or during normal web searches) I may have multiple outcomes in mind, broadly in these groups:&lt;/p>
&lt;ul>
&lt;li>something I&amp;rsquo;ve seen in a feed that I want to do &amp;ldquo;something&amp;rdquo; with later, in other words one of the other reasons in this list&lt;/li>
&lt;li>just a quick save of something I have opened (usually on my phone) and will want to come back to &amp;ldquo;at some point&amp;rdquo;, giving me portability of the bookmark across devices and allowing me to clear down open tabs&lt;/li>
&lt;li>whilst engaged on a work problem I will almost always end up with a dozen tabs open &lt;em>(different pieces of documentation, background reading, or examples of how someone has tackled the problem before)&lt;/em> - I usually tag these into Diigo so I can come back easily to them if I have to pick the problem up again and don&amp;rsquo;t want to search down a list of Google results to find them again&lt;/li>
&lt;li>something I think warrants further inspection that I want to grab into my reference library, possibly with initial annotations added in Diigo.&lt;/li>
&lt;/ul>
&lt;p>Of these, only the last really merits a permanent home in my notes, although of course information can move between categories - for example something I refer to while solving a problem might warrant deeper review after the immediate need.&lt;/p>
&lt;h2 id="technical-implementation">Technical implementation&lt;/h2>
&lt;p>I&amp;rsquo;m behind Ton on this, still thinking through what approach to use, and indeed this post is part of that process.&lt;/p>
&lt;p>I think it&amp;rsquo;s worth splitting the problem into&lt;/p>
&lt;ul>
&lt;li>sources&lt;/li>
&lt;li>destinations&lt;/li>
&lt;li>processing&lt;/li>
&lt;/ul>
&lt;h3 id="sources">Sources&lt;/h3>
&lt;p>Whatever I build has to pull information from two sources:&lt;/p>
&lt;ul>
&lt;li>Diigo (potentially only bookmarks with a specific tag)&lt;/li>
&lt;li>Hypothes.is &lt;em>(only just starting to play with this, but if I can&amp;rsquo;t see how I can process what I might capture with the tool, there is no point in starting down this track)&lt;/em>&lt;/li>
&lt;/ul>
&lt;p>Both of these services have APIs.&lt;/p>
&lt;h3 id="destinations">Destinations&lt;/h3>
&lt;p>All of my personal knowledge library is held and processed as Markdown files (website, public notes, private notes), so adding to the library is a matter of either saving files into the local copies of those repositories, or posting them to the relevant github repo.&lt;/p>
&lt;h3 id="processing">Processing&lt;/h3>
&lt;p>My initial thought was to implement a fairly bare-bones script that would pull bookmarks from Diigo, complete with annotations, and then save into a rough form in my library for further manual editing.&lt;/p>
&lt;p>This would have the advantages of simple implementation and the potential for easy automation, for example by running it in a Github action triggered on a schedule. The obvious downside is that in practice it would fill up my notes inbox with material that had not yet received any mental processing, in effect a local duplication of information at the same state as held in Diigo.&lt;/p>
&lt;p>I&amp;rsquo;m well aware from previous reflection that sense-making is definitely the weak link in how I practice Harold Jarche&amp;rsquo;s &lt;a href="http://jarche.com/2014/02/the-seek-sense-share-framework/" target="_blank" rel="noopener">Seek Sense Share&lt;/a> approach, and sense-making requires mental input.&lt;/p>
&lt;p>Although it will be more work I think the right approach mirrors Ton&amp;rsquo;s, that is only to bring items into my core library as an intentional act, and with some initial processing.&lt;/p>
&lt;p>That implies a user interface for selection of items (possibly from a pre-filtered list drawn from an API), integration of new commentary with clips and annotations that may come from the upstream tool, and selection of one or more destinations.&lt;/p>
&lt;p>As my primary text editing tool is &lt;a href="https://code.visualstudio.com/" target="_blank" rel="noopener">VS Code&lt;/a> combined with the &lt;a href="https://foambubble.github.io/" target="_blank" rel="noopener">Foam&lt;/a> plugin, there is an attraction in using that to host this curation interface.&lt;/p>
&lt;p>I&amp;rsquo;ve never written a VS Code extension, but I have looked at a couple and the code structure is reasonably clear. They use use Typescript, with which I have some level of knowledge, and the main challenge will be to understand the VS Code extension API.&lt;/p>
&lt;p>Anyway&amp;hellip;&lt;/p>
&lt;p>&lt;em>(as an aside - when writing a reply-to post should one use second-person (&amp;ldquo;you&amp;rdquo;) or third-person (e.g. &amp;ldquo;Ton&amp;rdquo;) to refer to the author of the original post?)&lt;/em>&lt;/p></description></item><item><title>An issue combining Flow and Power Apps Custom API</title><link>https://www.synesthesia.co.uk/note/2022/03/23/an-issue-combining-flow-and-power-apps-custom-api/</link><pubDate>Wed, 23 Mar 2022 06:26:57 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2022/03/23/an-issue-combining-flow-and-power-apps-custom-api/</guid><description>&lt;h2 id="scenario">Scenario&lt;/h2>
&lt;p>Solution contained:&lt;/p>
&lt;ul>
&lt;li>custom API&lt;/li>
&lt;li>a solution-based PowerAutomate flow that called the custom API&lt;/li>
&lt;/ul>
&lt;p>Solution was being created as unmanaged in one environment, then deployed as managed into production.&lt;/p>
&lt;h2 id="what-changed">What changed?&lt;/h2>
&lt;ul>
&lt;li>Made a change to the custom API (added additonal optional parameters)&lt;/li>
&lt;li>redeployed the solution&lt;/li>
&lt;/ul>
&lt;h2 id="what-was-the-impact">What was the impact?&lt;/h2>
&lt;ul>
&lt;li>on deployment of the change, the flow stopped working in the target environment where the solution was deployed as managed, and all attempts to turn it on failed&lt;/li>
&lt;li>it became impossible to edit the flow in the unmanaged development environment (screen timeouts)&lt;/li>
&lt;/ul>
&lt;h2 id="solution">Solution&lt;/h2>
&lt;ul>
&lt;li>remove the additional API parameters&lt;/li>
&lt;li>redeploy the solution as an upgrade in order to remove ther copy of the parameters ina lower layer in the target environment&lt;/li>
&lt;li>turn on the impacted flow in the target environment (which now worked again)&lt;/li>
&lt;/ul></description></item><item><title>Webmentions revisited</title><link>https://www.synesthesia.co.uk/note/2022/02/21/webmentions-revisited/</link><pubDate>Mon, 21 Feb 2022 17:54:18 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2022/02/21/webmentions-revisited/</guid><description>&lt;p>Docs: &lt;a href="https://docs.hugoblox.com/content/writing-markdown-latex/#callouts" target="_blank" rel="noopener">https://docs.hugoblox.com/content/writing-markdown-latex/#callouts&lt;/a>&lt;/p>
&lt;h2 id="parameters">Parameters&lt;/h2>
&lt;p>#0 : optional, positional
Add the class &amp;ldquo;alert-{#0}&amp;rdquo; to the &lt;div> container of the callout element.
Default Hugo Blox Builder available styles are &amp;ldquo;note&amp;rdquo; and &amp;ldquo;warning&amp;rdquo;.
Otherwise you can create your own class (see &lt;code>assets/scss/blox-bootstrap/elements/_callout.scss&lt;/code>).
*/}}&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
This is a very brief note for my own benefit - if you are even slightly interested I recommend following the links to find other authors who have done a much better job of explaining this!
&lt;/div>
&lt;/div>
&lt;p>I had previously displayed &lt;a href="https://indieweb.org/Webmention#History" target="_blank" rel="noopener">WebMentions&lt;/a> on posts via a script that ran on each pageview, queried &lt;a href="https://webmention.io/" target="_blank" rel="noopener">webmention.io&lt;/a> for mentions relevant to that page and rendered them - entirely based on the &lt;a href="https://sebastiandedeyne.com/adding-webmentions-to-my-blog/" target="_blank" rel="noopener">original approach documented by Sebastian de Dyne&lt;/a>.&lt;/p>
&lt;p>In the most recent iteration of changes I have:&lt;/p>
&lt;ul>
&lt;li>adapted the processing of inbound webmentions so they are pulled periodically into data files in the repo by Github actions, then processed when the site is built so they are baked into the rendered static pages&lt;/li>
&lt;li>added a Netlify build plugin to push outgoing webmentions from my site to the sites I link to&lt;/li>
&lt;/ul>
&lt;h2 id="processing-inbound-web-mentions">Processing inbound web mentions&lt;/h2>
&lt;p>Key elements:&lt;/p>
&lt;ul>
&lt;li>a Github action that runs every thirty minutes and calls a retrieval script&lt;/li>
&lt;li>the retrieval script which pulls webmentions from &lt;a href="https://webmention.io/" target="_blank" rel="noopener">webmention.io&lt;/a> and stores them as data files in the source repo for the site&lt;/li>
&lt;li>a processing script that is run each time the site is built - this reads the raw webmentions and processes them into a form suitable for Hugo to digest&lt;/li>
&lt;li>changes to page layouts to render a webmentions section&lt;/li>
&lt;/ul>
&lt;p>For all of this I am indebted to &lt;a href="https://rowanmanning.com/posts/webmentions-for-your-static-site/" target="_blank" rel="noopener">Rowan Manning&amp;rsquo;s approach&lt;/a>.&lt;/p>
&lt;h2 id="sending-web-mentions-when-the-site-is-built">Sending web mentions when the site is built&lt;/h2>
&lt;p>This is the other side of the coin. There are a range of approaches, but I decided to go with a Netlify build plugin &lt;a href="https://www.netlify.com/blog/2021/05/06/now-available-configure-build-plugins-by-deploy-context/" target="_blank" rel="noopener">configured to only run on production builds&lt;/a>.&lt;/p>
&lt;p>All the examples I could find work by processing the RSS feed for the site, and most take the approach of posting webmentions for any remote sites linked from the last (or a configurable last number of) posts. This will fall down if you ever create more than one post in between publishes - rare but not impossible.&lt;/p>
&lt;p>I then found the approach documented by &lt;a href="https://qubyte.codes/blog/dispatching-webmentions-with-a-netlify-build-plugin" target="_blank" rel="noopener">Mark Everitt&lt;/a> which compares the RSS feed before and after the build and pushes webmentions for all new items, and have adapted &lt;a href="https://github.com/qubyte/qubyte-codes/tree/main/plugins/dispatch-webmentions" target="_blank" rel="noopener">his code&lt;/a>.&lt;/p>
&lt;h2 id="other-things">Other things&lt;/h2>
&lt;p>&lt;del>&lt;em>A note to myself - new functionality based on code developed by others, I need to spend some time to make the repo for this site openable, then make it public.&lt;/em>&lt;/del>
&lt;ins>now done - &lt;a href="https://github.com/synesthesia/site2019" target="_blank" rel="noopener">here&lt;/a>&lt;/ins>&lt;/p></description></item><item><title>Svelte</title><link>https://www.synesthesia.co.uk/project/svelte/</link><pubDate>Fri, 17 Sep 2021 09:14:51 +0100</pubDate><guid>https://www.synesthesia.co.uk/project/svelte/</guid><description>&lt;p>Exploring the web framework &lt;a href="https://svelte.dev/" target="_blank" rel="noopener">Svelte&lt;/a>, together with the applicaiton framework &lt;a href="https://kit.svelte.dev/" target="_blank" rel="noopener">Svelte Kit&lt;/a>.&lt;/p>
&lt;p>See the &lt;a href="https://www.synesthesia.co.uk/note/2021/09/17/experimenting-with-svelte-ep00/">first post&lt;/a> for more background.&lt;/p></description></item><item><title>Experimenting With Svelte - episode 1</title><link>https://www.synesthesia.co.uk/note/2021/09/17/experimenting-with-svelte-ep01/</link><pubDate>Fri, 17 Sep 2021 09:10:01 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2021/09/17/experimenting-with-svelte-ep01/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>This is part of a series of notes documenting some experiments with the Svelte and SvelteKit code stack. To see a full list of posts in this series visit the &lt;a href="https://www.synesthesia.co.uk/project/svelte/">project link&lt;/a>&lt;/p>
&lt;h2 id="getting-going">Getting going&lt;/h2>
&lt;p>In the &lt;a href="https://www.synesthesia.co.uk/note/2021/09/17/experimenting-with-svelte-ep00/">previous note&lt;/a> I explained why I wanted to experiment with Svelte and SvelteKit.&lt;/p>
&lt;p>As is the case with most frameworks these days, SvelteKit offers a simplified CLI setup of a basic project, so my first experiment is to get this working locally.&lt;/p>
&lt;p>Following &lt;a href="https://kit.svelte.dev/docs#introduction-getting-started" target="_blank" rel="noopener">the instructions&lt;/a>, I opened up my WSL2 Ubuntu distro, created a new directory for these epxeriments, and typed:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">npm init svelte@next experiment01
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>During the setup it asks you if you want to use Typescript, ESLint and Prettier - I said yes to all of these.&lt;/p>
&lt;p>Then I ran these commands:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> experiment01
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm install
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm run dev -- --open
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="a-hiccough">A hiccough&lt;/h2>
&lt;p>On the first run the build failed with this error message:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="o">(&lt;/span>node:9397&lt;span class="o">)&lt;/span> UnhandledPromiseRejectionWarning: file:///home/julian/source/web/svelte-kit-experiments/experiment01/node_modules/@sveltejs/vite-plugin-svelte/dist/index.js:257
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">import &lt;span class="o">{&lt;/span> createMakeHot &lt;span class="o">}&lt;/span> from &lt;span class="s2">&amp;#34;svelte-hmr&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ^^^^^^^^^^^^^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">SyntaxError: The requested module &lt;span class="s1">&amp;#39;svelte-hmr&amp;#39;&lt;/span> is expected to be of &lt;span class="nb">type&lt;/span> CommonJS, which does not support named exports. CommonJS modules can be imported by importing the default export.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">For example:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">import pkg from &lt;span class="s1">&amp;#39;svelte-hmr&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">const &lt;span class="o">{&lt;/span> createMakeHot &lt;span class="o">}&lt;/span> &lt;span class="o">=&lt;/span> pkg&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>A bit of Googling &lt;a href="https://github.com/sveltejs/vite-plugin-svelte/issues/61#issuecomment-863850353" target="_blank" rel="noopener">suggested&lt;/a> that the fix was to update node. Turned out I was running node v12, so a quick &lt;code>nvm install 14.17.6&lt;/code> got things working again.&lt;/p>
&lt;p>This time on running &lt;code>npm run dev -- --open&lt;/code> my web browser opened to diplay a simple test site running locally.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/note/2021/09/17/experimenting-with-svelte-ep01/svelte-demo-page-1_hu6921749df008f7bf12802fadf6cd3123_156767_4e8ab2b97d6e1205e0193df13778acda.webp 400w,
/note/2021/09/17/experimenting-with-svelte-ep01/svelte-demo-page-1_hu6921749df008f7bf12802fadf6cd3123_156767_ea6c52ca223a160e87f93f7d98db45f6.webp 760w,
/note/2021/09/17/experimenting-with-svelte-ep01/svelte-demo-page-1_hu6921749df008f7bf12802fadf6cd3123_156767_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2021/09/17/experimenting-with-svelte-ep01/svelte-demo-page-1_hu6921749df008f7bf12802fadf6cd3123_156767_4e8ab2b97d6e1205e0193df13778acda.webp"
width="668"
height="715"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Docs: &lt;a href="https://docs.hugoblox.com/content/writing-markdown-latex/#callouts" target="_blank" rel="noopener">https://docs.hugoblox.com/content/writing-markdown-latex/#callouts&lt;/a>&lt;/p>
&lt;h2 id="parameters">Parameters&lt;/h2>
&lt;p>#0 : optional, positional
Add the class &amp;ldquo;alert-{#0}&amp;rdquo; to the &lt;div> container of the callout element.
Default Hugo Blox Builder available styles are &amp;ldquo;note&amp;rdquo; and &amp;ldquo;warning&amp;rdquo;.
Otherwise you can create your own class (see &lt;code>assets/scss/blox-bootstrap/elements/_callout.scss&lt;/code>).
*/}}&lt;/p>
&lt;div class="alert alert-note">
&lt;div>
A note on tooling. Throughout this series of experiments I will be using Visual Studio Code to edit files, together with the &lt;a href="https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode" target="_blank" rel="noopener">Svelte for VS Code&lt;/a> extension.
&lt;/div>
&lt;/div>
&lt;h2 id="code-on-github">Code on GitHub&lt;/h2>
&lt;p>As I work through these epxeriments I will share the code into &lt;a href="https://github.com/synesthesia/svelte-kit-experiments" target="_blank" rel="noopener">this repo&lt;/a> on GitHub. The code for this first experiment is in the sub-folder &lt;a href="https://github.com/synesthesia/svelte-kit-experiments/tree/main/experiment01" target="_blank" rel="noopener">&lt;code>/experiment01&lt;/code>&lt;/a>.&lt;/p>
&lt;h2 id="next-steps">Next steps&lt;/h2>
&lt;p>In the next experiment I will explore the code underneath each of the three pages in the sample app.&lt;/p></description></item><item><title>Experimenting With Svelte - Why?</title><link>https://www.synesthesia.co.uk/note/2021/09/17/experimenting-with-svelte-ep00/</link><pubDate>Fri, 17 Sep 2021 09:00:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2021/09/17/experimenting-with-svelte-ep00/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>This is part of a series of notes documenting some experiments with the Svelte and SvelteKit code stack. To see a full list of posts in this series visit the &lt;a href="https://www.synesthesia.co.uk/project/svelte/">project link&lt;/a>&lt;/p>
&lt;h2 id="what-is-svelte">What is Svelte?&lt;/h2>
&lt;p>Svelte 3 was released in 2019, and claims to be &lt;a href="https://svelte.dev/" target="_blank" rel="noopener">&amp;ldquo;a radical new approach to building user interfaces&amp;rdquo;&lt;/a>. In the launch &lt;a href="https://svelte.dev/blog/svelte-3-rethinking-reactivity" target="_blank" rel="noopener">post&lt;/a> &lt;a href="https://twitter.com/Rich_Harris" target="_blank" rel="noopener">Rich Harris&lt;/a> explains:&lt;/p>
&lt;blockquote>
&lt;p>Svelte is a component framework — like React or Vue — but with an important difference. Traditional frameworks allow you to write declarative state-driven code, but there&amp;rsquo;s a penalty: the browser must do extra work to convert those declarative structures into DOM operations, using techniques like &lt;a href="https://svelte.dev/blog/virtual-dom-is-pure-overhead" target="_blank" rel="noopener">virtual DOM diffing&lt;/a> that eat into your frame budget and tax the garbage collector.&lt;/p>
&lt;p>Instead, Svelte runs at build time, converting your components into highly efficient imperative code that surgically updates the DOM. As a result, you&amp;rsquo;re able to write ambitious applications with excellent performance characteristics.&lt;/p>
&lt;/blockquote>
&lt;p>In other words, it&amp;rsquo;s a compiler that outputs vanilla Javascript&lt;/p>
&lt;h2 id="and-svelte-kit">And Svelte Kit?&lt;/h2>
&lt;p>In the real world a purely front-end framework only goes so far. Most apps need to authenticate users and pull data from APIs, and increasingly the most secure way of doing this is seen as the &lt;a href="https://samnewman.io/patterns/architectural/bff/" target="_blank" rel="noopener">backend-for-frontend (BFF) pattern&lt;/a>, in other words hosting the backend APIs on the same domain as the frontend app.&lt;/p>
&lt;p>Although this has always been possible, historically the back-end was often written in a different language from the front-end, and sometimes in a seperate (but related) project.&lt;/p>
&lt;p>There&amp;rsquo;s often an advantage in having a single language for front- and back-ends, especially if the same person or team is developing them. One approach is Microsoft&amp;rsquo;s inclusion of &lt;a href="https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor" target="_blank" rel="noopener">Blazor&lt;/a> in ASP.Net, allowing C# code to be compiled to WebAssembly. In the Javascript world, specifically for teams using the React framework on the front-end, &lt;a href="https://nextjs.org/" target="_blank" rel="noopener">Next.js&lt;/a> offers the abililty to build front- and back-end in a single project, with clever build technology separating the output packages appropriately. Add-in dedicated hosting like &lt;a href="https://vercel.com/home" target="_blank" rel="noopener">Vercel&lt;/a> and single-click deployment of a front-end served fro the edge together with serverless functions to implement the back-end becomes a reality.&lt;/p>
&lt;p>The equivalent of Next.js for Svelte is &lt;a href="https://kit.svelte.dev/docs" target="_blank" rel="noopener">Svelte Kit&lt;/a>, which in turn is a reevelopment of the team&amp;rsquo;s earlier application framework &lt;a href="https://sapper.svelte.dev/docs" target="_blank" rel="noopener">Sapper&lt;/a>.&lt;/p>
&lt;p>To quote from the &lt;a href="https://kit.svelte.dev/docs#introduction-what-is-sveltekit" target="_blank" rel="noopener">Svelte Kit docs&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>SvelteKit is a framework for building extremely high-performance web apps. Building an app with all the modern best practices is fiendishly complicated. Those practices include &lt;a href="https://vitejs.dev/guide/features.html#build-optimizations" target="_blank" rel="noopener">build optimizations&lt;/a>), so that you load only the minimal required code; &lt;a href="https://kit.svelte.dev/docs#service-workers" target="_blank" rel="noopener">offline support&lt;/a>; &lt;a href="https://kit.svelte.dev/docs#anchor-options-sveltekit-prefetch" target="_blank" rel="noopener">prefetching&lt;/a> pages before the user initiates navigation; and &lt;a href="https://kit.svelte.dev/docs#ssr-and-javascript" target="_blank" rel="noopener">configurable rendering&lt;/a> that allows you to generate HTML &lt;a href="https://kit.svelte.dev/docs#ssr-and-javascript-ssr" target="_blank" rel="noopener">on the server&lt;/a> or &lt;a href="https://kit.svelte.dev/docs#ssr-and-javascript-router" target="_blank" rel="noopener">in the browser&lt;/a> at runtime or &lt;a href="https://kit.svelte.dev/docs#ssr-and-javascript-prerender" target="_blank" rel="noopener">at build-time&lt;/a>. SvelteKit does all the boring stuff for you so that you can get on with the creative part.&lt;/p>
&lt;p>And SvelteKit does this all while providing a lightning-fast development experience where changes to your code show up in your browser automatically. We do this by leveraging &lt;a href="https://vitejs.dev/" target="_blank" rel="noopener">Vite&lt;/a> with a &lt;a href="https://github.com/sveltejs/vite-plugin-svelte" target="_blank" rel="noopener">Svelte plugin&lt;/a>, so that &lt;a href="https://vitejs.dev/guide/features.html#hot-module-replacement" target="_blank" rel="noopener">updates are instant and precise without reloading the page or blowing away application state&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;p>In terms of hosting, the approach in Svelte Kit is to provide &lt;a href="https://kit.svelte.dev/docs#adapters" target="_blank" rel="noopener">adapters&lt;/a> which hook into the build process and modify the output to work on different hosts, such as &lt;a href="https://github.com/sveltejs/kit/tree/master/packages/adapter-netlify" target="_blank" rel="noopener">Netlify&lt;/a>, &lt;a href="https://github.com/sveltejs/kit/tree/master/packages/adapter-vercel" target="_blank" rel="noopener">Vercel&lt;/a>, or even for purely &lt;a href="https://github.com/sveltejs/kit/tree/master/packages/adapter-static" target="_blank" rel="noopener">static files&lt;/a>.&lt;/p>
&lt;h2 id="what-do-i-want-to-find-out">What do I want to find out?&lt;/h2>
&lt;p>Firstly I want to see if the promises of development speed and simplicty of code are reflected in reality.&lt;/p>
&lt;p>Then I want to explore adding some key common features, such as:&lt;/p>
&lt;ul>
&lt;li>mixing static, server-side rendered and client-side rendered content in an app&lt;/li>
&lt;li>adding APIs&lt;/li>
&lt;li>deploying to serverless hosts&lt;/li>
&lt;li>adding authentication against external identity sources&lt;/li>
&lt;li>managing authorization&lt;/li>
&lt;/ul>
&lt;p>The &lt;a href="https://github.com/synesthesia/svelte-kit-experiments" target="_blank" rel="noopener">code from the experiments is on Github&lt;/a>.&lt;/p></description></item><item><title>No Cameras Please</title><link>https://www.synesthesia.co.uk/2021/09/14/no-cameras/</link><pubDate>Tue, 14 Sep 2021 07:01:49 +0100</pubDate><guid>https://www.synesthesia.co.uk/2021/09/14/no-cameras/</guid><description>&lt;p>I&amp;rsquo;ve certainly had that feeling - when a colleague on the virtual meeting doesn&amp;rsquo;t have their camera switched on, the almost instinctive reaction that they aren&amp;rsquo;t listening.&lt;/p>
&lt;p>But as distributed working becomes the norm, there&amp;rsquo;s a growing body of opinion and evidence that it really doesn&amp;rsquo;t matter, and it may even be a good thing.&lt;/p>
&lt;p>A moment&amp;rsquo;s reflection shows that everyone in a meeting should be interested in how to make the time more effective. &lt;a href="https://seths.blog/2021/09/respecting-their-time/" target="_blank" rel="noopener">In the words of Seth Godin&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>Synchronized, real-time interaction is precious. It creates magic. We shouldn’t waste it on bureaucracy or displays of false control–it’s better saved for moments of connection and possibility.&lt;/p>
&lt;/blockquote>
&lt;p>Assuming that we have only invited people to the meeting who we think can help us towards a better outcome (quite an assumption in some quarters), then as leaders we need to create the conditions where everyone in the meeting is engaged and empowered to voice their ideas and opinions.&lt;/p>
&lt;p>Early research sugegsts that &amp;ldquo;Zoom fatigue&amp;rdquo; may be a real thing. For example, Professors &lt;a href="https://psychology.uga.edu/directory/people/kristen-shockley" target="_blank" rel="noopener">Kristen Shockley&lt;/a> and &lt;a href="https://eller.arizona.edu/people/allison-s-gabriel" target="_blank" rel="noopener">Allison Gabriel&lt;/a> found that meeting participants with the camera on (or who were told to have the camera on) reported more fatigue that those without, and that fatigue may be correlated with lower voice and engagement. Interestingly they found some evidence that these negative impacts were worse for women and more junior employees.&lt;/p>
&lt;p>They do however they express strong cautions about how far the conclusions can be taken from this early and fairly limited study:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;we caution against over-extrapolating our findings to conclude that virtual meetings with the camera off are universally more engaging, as our research did not consider how other virtual meetings participants are affected by focal employee camera usage&amp;rdquo;. &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;/blockquote>
&lt;p>On a different tack, allowing colleagues to choose if they turn on their camera can be good for the planet. In January of this year Science Daily reported on research from Purdue University that estimates the environmental impact of one hour of videoconferencing as 150-1,000 grams of carbon dioxide, 2-12 litres of water and demands a land area adding up to about the size of an iPad Mini. &lt;a href="www.sciencedaily.com/releases/2021/01/210114134033.htm">Leaving your camera off during a web call can reduce these footprints by 96%&lt;/a>. &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;p>I argue that above all we need to avoid the &lt;a href="https://sloanreview.mit.edu/article/why-best-practices-often-fall-short/" target="_blank" rel="noopener">common trap of &amp;ldquo;best practices&amp;rdquo;&lt;/a>. Work-effectiveness guru &lt;a href="https://simonterry.com/2021/09/13/the-work-effectiveness-conversation/" target="_blank" rel="noopener">Simon Terry puts it well&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>You can’t mandate the best way for people to work. People need to make choices that work best for each team and each circumstance.&lt;/p>
&lt;p>The cost of mandating ‘best practices’ is that you lose engagement of those for whom the mandated approach doesn’t work well, whether that is cameras on, meetings all day, agile practices, social tools or other processes. The mandate also reduces the opportunity for employees to make their work more productive for them and their colleagues.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;em>Image Credit&lt;/em> &lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://psycnet.apa.org/fulltext/2021-77825-003.pdf" target="_blank" rel="noopener">Kristen M. Shockley et al., &amp;lsquo;The Fatiguing Effects of Camera Use in Virtual Meetings: A within-Person Field Experiment.&amp;rsquo;, Journal of Applied Psychology 106, no. 8 (August 2021): 1137–55, https://doi.org/10.1037/apl0000948.&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>Renee Obringer et al., &amp;lsquo;The Overlooked Environmental Footprint of Increasing Internet Use&amp;rsquo;, Resources, Conservation and Recycling 167 (April 2021): 105389, &lt;a href="https://doi.org/10.1016/j.resconrec.2020.105389" target="_blank" rel="noopener">https://doi.org/10.1016/j.resconrec.2020.105389&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://www.flickr.com/photos/80497449@N04" target="_blank" rel="noopener">Free Grunge Textures&lt;/a> CC-BY 2.0&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Streaming Creates Media Jobs</title><link>https://www.synesthesia.co.uk/2021/09/13/streaming-creates-media-jobs/</link><pubDate>Mon, 13 Sep 2021 17:27:28 +0100</pubDate><guid>https://www.synesthesia.co.uk/2021/09/13/streaming-creates-media-jobs/</guid><description>&lt;p>&amp;ldquo;Streaming demand for UK shows will create 30,000 film and TV jobs&amp;rdquo; &lt;a href="https://www.theguardian.com/media/2021/sep/12/streaming-demand-for-uk-shows-will-create-30000-film-and-tv-jobs" target="_blank" rel="noopener">says the Guardian&lt;/a>, as demand from the global streaming giants for UK-made programmes goes unmet.&lt;/p></description></item><item><title>British exceptionalism, again</title><link>https://www.synesthesia.co.uk/2021/09/11/british-exceptionalism-again/</link><pubDate>Sat, 11 Sep 2021 08:58:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/2021/09/11/british-exceptionalism-again/</guid><description>&lt;p>&amp;ldquo;Global Britain&amp;rdquo; &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> stands out again! Sadly this time it is, once again, in terms of Covid-19 case rates, as this chart shows:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/2021/09/11/british-exceptionalism-again/coronavirus-data-explorer_hu949c83d3d576b731c139861191ec80c0_609791_57ebd786d62f6f8da8162e2e855a297f.webp 400w,
/2021/09/11/british-exceptionalism-again/coronavirus-data-explorer_hu949c83d3d576b731c139861191ec80c0_609791_3ace01cc1134af992840b879834d88d0.webp 760w,
/2021/09/11/british-exceptionalism-again/coronavirus-data-explorer_hu949c83d3d576b731c139861191ec80c0_609791_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2021/09/11/british-exceptionalism-again/coronavirus-data-explorer_hu949c83d3d576b731c139861191ec80c0_609791_57ebd786d62f6f8da8162e2e855a297f.webp"
width="760"
height="536"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>&lt;em>(chart &lt;a href="https://ourworldindata.org/covid-cases" target="_blank" rel="noopener">source&lt;/a>)&lt;/em>&lt;/p>
&lt;p>In a Twitter &lt;a href="https://twitter.com/chrischirp/status/1436393157579743253" target="_blank" rel="noopener">thread&lt;/a> today &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> Prof. Christina Pagel shares more detailed information about the current situation in the UK:&lt;/p>
&lt;ul>
&lt;li>Scotland has the highest rates, England the lowest, but everywhere higher than 12 months ago&lt;/li>
&lt;li>hospitalisation rising everywhere&lt;/li>
&lt;li>deaths are increasing, currently at ~1000 per week, way lower than the last peak, but significantly up on the Spring of 2021&lt;/li>
&lt;/ul>
&lt;p>All this is before the effect of schools opening in the last week, let alone the return of university students in October, filters through into infections.&lt;/p>
&lt;p>It’s hardly surprising that commentators are predicting a “firebreak” lockdown in October. To the sceptical observer of how the UK government has handled the pandemic, &lt;a href="https://www.theguardian.com/world/2021/sep/07/no-10-not-ruling-out-firebreak-lockdown-if-covid-cases-rise" target="_blank" rel="noopener">ministerial denials&lt;/a> merely confirm the likelihood.&lt;/p>
&lt;p>It’s clear from the data that Covid is “still a thing” in the UK, yet you only have to go into shops or on public transport to see more and more people not wearing masks, let alone having any sense of social distancing. Is it ignorance? Is it a dogged determination not to use “common sense”? Or is it a combination of “issue fatigue” coupled with the much lower profile of the pandemic in the popular media?&lt;/p>
&lt;p>This personal observation is at odds with a recent survey by the Office of National Statistics&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> that reports:&lt;/p>
&lt;blockquote>
&lt;p>This wave, over the period of 25 August to 5 September 2021, based on adults in Great Britain:&lt;/p>
&lt;ul>
&lt;li>A high proportion of adults still felt that measures to slow the spread of coronavirus (COVID-19) were either very important or important; the measures included wearing a face covering (87% this wave, 88% last wave between the period 18 and 22 August) and socially distancing from others not in their household (87% this wave, 86% last wave).&lt;/li>
&lt;li>The proportion of adults reporting to wear face coverings at some point in the last seven days when outside their home (89%) was similar to last wave (90%), as was the proportion of adults who always or often maintain social distancing (46% this wave, 45% last wave).&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>Are my experiences untypical? Or are people just lying to the statisticians?&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>the phrase “Global Britain” is &lt;a href="https://www.gov.uk/government/collections/global-britain-delivering-on-our-international-ambition" target="_blank" rel="noopener">widely used&lt;/a> by the UK government at the time of writing this post: both as a label for policy and a rhetorical shorthand that stands for large chunks of the populist and separatist agenda.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://1drv.ms/b/s!AlU3oK2wFhcrgrVAo7AGLfUaJWyy3w" target="_blank" rel="noopener">Archive copy of thread&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://www.ons.gov.uk/peoplepopulationandcommunity/healthandsocialcare/healthandwellbeing/bulletins/coronavirusandthesocialimpactsongreatbritain/latest" target="_blank" rel="noopener">Coronavirus and the social impacts on Great Britain: 10 September 2021&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>How to Make Schools Safer</title><link>https://www.synesthesia.co.uk/2021/09/04/how-to-make-schools-safer/</link><pubDate>Sat, 04 Sep 2021 17:56:56 +0100</pubDate><guid>https://www.synesthesia.co.uk/2021/09/04/how-to-make-schools-safer/</guid><description>&lt;p>One of the most compelling commentators I have been following throughout the pandemic is &lt;a href="https://twitter.com/chrischirp" target="_blank" rel="noopener">Prof. Christina Pagel (@chrischirp)&lt;/a>, Director of the &lt;a href="http://t.co/5Os9k9vGTS" target="_blank" rel="noopener">Clinical Operational Research Unit at UCL&lt;/a> and a member of &lt;a href="https://www.independentsage.org/" target="_blank" rel="noopener">Independent SAGE&lt;/a>.&lt;/p>
&lt;p>In a recent &lt;a href="https://twitter.com/chrischirp/status/1434211010529923072" target="_blank" rel="noopener">Twitter thread&lt;/a> she flags that:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>last November, cases in school children were high and rising&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Independent Sage released a &lt;a href="https://www.independentsage.org/wp-content/uploads/2020/11/Safe-schools-v4b1.pdf" target="_blank" rel="noopener">plan for safer schools&lt;/a>, and a detailed safer workplaces charter&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Key principles they advised for schools in November 2020 were:&lt;/p>
&lt;ul>
&lt;li>Distancing (implying smaller classes and reorganisation)&lt;/li>
&lt;li>Ventilation&lt;/li>
&lt;li>Face coverings&lt;/li>
&lt;li>Bubbles (consistent self-contained groups)&lt;/li>
&lt;li>Self-isolation: In the case of infections, the bubble should form the basis for isolating contacts.&lt;/li>
&lt;li>Testing (all staff and students within a bubble should be tested where they are positive cases)&lt;/li>
&lt;li>Learning resources to support home-based learning with books as well as IT&lt;/li>
&lt;li>Examinations - schools need to focus on learning and wellbeing, without sources of stress - replace secondary school exams replaced with assessment by teachers, with suitable moderation&lt;/li>
&lt;li>Wellbeing - creative thinking to ensure that young people are able to socialise safely&lt;/li>
&lt;li>Transparency - clear information should be provided to all stakeholders and organisations&lt;/li>
&lt;li>Advice and support from local public health teams&lt;/li>
&lt;li>Staff welfare and morale&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Pagel notes that a year later little of their advice has been picked up and implemented by central government, and cases in school children are even higher than they were last year&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Independent Sage have &lt;a href="https://www.independentsage.org/wp-content/uploads/2021/09/Workplace-charter-2021-redux.pdf" target="_blank" rel="noopener">relaunched an updated safer workplaces charter&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>They have issued a consultation document on &lt;a href="https://www.independentsage.org/wp-content/uploads/2021/09/Covid-codes-final-1-1.pdf" target="_blank" rel="noopener">Covid Safety Codes of Practice&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">THREAD on how to make schools and workplaces safer - inc *three* &lt;a href="https://twitter.com/IndependentSage?ref_src=twsrc%5Etfw">@IndependentSage&lt;/a> reports! &lt;br>&lt;br>1. late November, cases in school age children were high and rising and we released an urgent plan for safer schools with the Eagle Group for Education. &lt;a href="https://t.co/9s0n6C6Xd2">pic.twitter.com/9s0n6C6Xd2&lt;/a>&lt;/p>&amp;mdash; Prof. Christina Pagel (@chrischirp) &lt;a href="https://twitter.com/chrischirp/status/1434211010529923072?ref_src=twsrc%5Etfw">September 4, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>A PDF of the full thread is available &lt;a href="https://1drv.ms/b/s!AlU3oK2wFhcrgrU_CtUIcvhanQI18A?e=kxfOaj" target="_blank" rel="noopener">here&lt;/a>&lt;/p></description></item><item><title>Querying Application Insights using an Interactive Notebook</title><link>https://www.synesthesia.co.uk/note/2021/05/21/querying-application-insights-using-an-interactive-notebook/</link><pubDate>Fri, 21 May 2021 11:21:46 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2021/05/21/querying-application-insights-using-an-interactive-notebook/</guid><description>&lt;p>Although the most prominent use of interactive notebooks is in data science and statistics, to steal an idea from &lt;a href="https://www.youtube.com/watch?v=W-F0gO7dVOE" target="_blank" rel="noopener">Rob Sewell&lt;/a>, they also hold great potential for creating actionable documentation for common operational incidents.&lt;/p>
&lt;p>A common operational scenario is the need to query application log data to understand where and when a fault is occurring.&lt;/p>
&lt;p>This note book example uses the &lt;a href="https://github.com/dotnet/interactive" target="_blank" rel="noopener">.Net Interactive shell&lt;/a> to allow the use of C# code to query Azure Application Insights. Code is &lt;a href="https://gist.githubusercontent.com/synesthesia/e7e5a64b52acd9fb89dbcf3c2d13477f/raw/cc4417c0ce44a33e488b7cac7e488bfab562242c/query-ai-net.ipynb" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>The rest of this page is the actual notebook (with sample results) exported to Markdown.&lt;/p>
&lt;hr>
&lt;h2 id="querying--application-insights---c-version">Querying application insights - C# version&lt;/h2>
&lt;p>To run this notebook you need to have .Net Interactive installed on your machine:&lt;/p>
&lt;h3 id="install-net-interactive">Install .Net Interactive&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>as a minimum install &lt;a href="https://dotnet.microsoft.com/download" target="_blank" rel="noopener">Net Core 3.1&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>In an ordinary console, install the dotnet interactive global tool:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">dotnet&lt;/span> &lt;span class="k">tool&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">global&lt;/span> &lt;span class="n">Microsoft&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dotnet&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">interactive&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>WARNING&lt;/strong> This notebook does not work in Azure Data Studio. This is because it reads settings from a local environment file. Azure Data Studio sets the wrong value for current directory, see &lt;a href="https://github.com/microsoft/azuredatastudio/issues/12965" target="_blank" rel="noopener">microsoft/azuredatastudio:12965&lt;/a>.&lt;/p>
&lt;p>It &lt;strong>does&lt;/strong> work in &lt;code>nteract&lt;/code> or &lt;code>Jupyter&lt;/code>, see below for installing one or both of these tools.&lt;/p>
&lt;h3 id="installing-jupyter">Installing Jupyter&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>as a minimum install &lt;a href="https://dotnet.microsoft.com/download" target="_blank" rel="noopener">Net Core 3.1&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.anaconda.com/products/individual" target="_blank" rel="noopener">install Anaconda&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Open the Anaconda Prompt (Windows) or Terminal (macOS) and verify that Jupyter is installed and present on the path:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">jupyter kernelspec list
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> python3 ~\jupyter\kernels\python3
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Make sure you have .Net Interactive installed as at the top&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Install the .NET kernel to Jupyter by running the following within your Anaconda Prompt:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">dotnet interactive jupyter install
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> [InstallKernelSpec] Installed kernelspec .net-csharp in ~\jupyter\kernels\.net-csharp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> .NET kernel installation succeeded
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> [InstallKernelSpec] Installed kernelspec .net-fsharp in ~\jupyter\kernels\.net-fsharp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> .NET kernel installation succeeded
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> [InstallKernelSpec] Installed kernelspec .net-powershell in ~\jupyter\kernels\.net-powershell
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> .NET kernel installation succeeded
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>You can verify the installation by running the following again in the Anaconda Prompt:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">jupyter kernelspec list
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> .net-csharp ~\jupyter\kernels\.net-csharp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> .net-fsharp ~\jupyter\kernels\.net-fsharp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> .net-powershell ~\jupyter\kernels\.net-powershell
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> python3 ~\jupyter\kernels\python3
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>to run Jupyter&lt;/p>
&lt;ul>
&lt;li>open an anaconda prompt&lt;/li>
&lt;li>type &lt;code>jupyter notebook&lt;/code>&lt;/li>
&lt;li>wait for web browser to open to the local Jupyter server&lt;/li>
&lt;li>browse to the notebook you want&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="installing-nteract">Installing nteract&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://nteract.io/applications" target="_blank" rel="noopener">download the desktop app installer&lt;/a>&lt;/li>
&lt;li>run the installer&lt;/li>
&lt;li>&lt;a href="https://nteract.io/kernels/dotnet" target="_blank" rel="noopener">install the .Net kernels&lt;/a>&lt;/li>
&lt;li>run the app&lt;/li>
&lt;/ul>
&lt;h2 id="what-does-this-notebook-do">What does this notebook do?&lt;/h2>
&lt;p>This notebook shows an example of querying Application Insights using C# and the helper library &lt;code> Microsoft.Azure.ApplicationInsights.Query&lt;/code>, a wrapper over the Applicaiton Insights REST API&lt;/p>
&lt;h4 id="install-additional-dependencies">Install additional dependencies&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-C#" data-lang="C#">&lt;span class="line">&lt;span class="cl">&lt;span class="err">#&lt;/span>&lt;span class="n">r&lt;/span> &lt;span class="s">&amp;#34;nuget: Microsoft.Azure.ApplicationInsights.Query, 1.0.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="read-secrets-from-config--file">Read secrets from config file&lt;/h4>
&lt;p>To get an Application Id and API Secret go to your Applicaton Insights instance in the Azure portal, and access &lt;strong>Configure&lt;/strong> \ &lt;strong>API Access&lt;/strong>.&lt;/p>
&lt;p>Add the values into a local file &lt;code>.env.local&lt;/code> in the format KEY=VALUE&lt;/p>
&lt;p>&lt;strong>DO NOT&lt;/strong> check these values into source control.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-C#" data-lang="C#">&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">System&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">System.IO&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="n">here&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Directory&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetCurrentDirectory&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">WriteLine&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">here&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// added this when testing issues with Azure Data Studio&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="n">filePath&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">&amp;#34;.env.local&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="p">(!&lt;/span>&lt;span class="n">File&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Exists&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">filePath&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Error&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">WriteLine&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Cannot find env file&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">else&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">foreach&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">var&lt;/span> &lt;span class="n">line&lt;/span> &lt;span class="k">in&lt;/span> &lt;span class="n">File&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">ReadAllLines&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">filePath&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">parts&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">line&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Split&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="sc">&amp;#39;=&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">StringSplitOptions&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">RemoveEmptyEntries&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">parts&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Length&lt;/span> &lt;span class="p">!=&lt;/span> &lt;span class="m">2&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">continue&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">var&lt;/span> &lt;span class="n">x&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">$&amp;#34;Setting {parts[0]}&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">display&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Environment&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">SetEnvironmentVariable&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">parts&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">parts&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="p">]);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;pre>&lt;code>C:\Users\JulianElve\source\repos\notebooks\appinsights
Setting AI_APPID_XRM2XERO
Setting AI_APIKEY_XRM2XERO
Setting AI_APPID_XRMDATAINGEST
Setting AI_APIKEY_XRMDATAINGEST
&lt;/code>&lt;/pre>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-C#" data-lang="C#">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// substitute the correct key values for your application details in your `.env.local` file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="n">AI_APPID&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Environment&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetEnvironmentVariable&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;AI_APPID_XRM2XERO&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="n">AI_APISECRET&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">Environment&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetEnvironmentVariable&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;AI_APIKEY_XRM2XERO&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="create-an-authenticated--client">Create an authenticated client&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-C#" data-lang="C#">&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Microsoft.Azure.ApplicationInsights&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Microsoft.Azure.ApplicationInsights.Query&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="n">creds&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">ApiKeyClientCredentials&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">AI_APISECRET&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="n">client&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">ApplicationInsightsDataClient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">creds&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">BaseUri&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">Uri&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;https://api.applicationinsights.io/v1&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="query-application-insights-via-rest-api">Query Application Insights via REST API&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-C#" data-lang="C#">&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">System.Collections.Generic&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">System.Linq&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="nn">Microsoft.Azure.ApplicationInsights.Query.Models&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// see https://dev.applicationinsights.io/documentation/Using-the-API/Events&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="n">timespan&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">&amp;#34;P1D&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="n">topCount&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="m">100&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="n">filter&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">&amp;#34;startswith(customDimensions/Category, &amp;#39;Function&amp;#39;) and customDimensions/LogLevel eq &amp;#39;Error&amp;#39;&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="k">orderby&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">&amp;#34;timestamp desc&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">EventsResults&lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">EventsTraceResult&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> &lt;span class="n">traces&lt;/span> &lt;span class="p">=&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">await&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Events&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GetTraceEventsAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">AI_APPID&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">timespan&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">timespan&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">top&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">topCount&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">filter&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">filter&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">orderby&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="k">orderby&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">//display(traces.Value);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="n">results&lt;/span> &lt;span class="p">=&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">traces&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Value&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">Select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">new&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">TimeStamp&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Timestamp&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">SeverityLevel&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Trace&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">SeverityLevel&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LogLevel&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CustomDimensions&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">TryGetValue&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;LogLevel&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">out&lt;/span> &lt;span class="kt">var&lt;/span> &lt;span class="n">logLevel&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">?&lt;/span> &lt;span class="n">logLevel&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="s">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Operation&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Operation&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Name&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Message&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Trace&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Message&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Category&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CustomDimensions&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">TryGetValue&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Category&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">out&lt;/span> &lt;span class="kt">var&lt;/span> &lt;span class="n">category&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">?&lt;/span> &lt;span class="n">category&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="s">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">display&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">results&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;table>&lt;thead>&lt;tr>&lt;th>&lt;i>index&lt;/i>&lt;/th>&lt;th>TimeStamp&lt;/th>&lt;th>SeverityLevel&lt;/th>&lt;th>LogLevel&lt;/th>&lt;th>Operation&lt;/th>&lt;th>Message&lt;/th>&lt;th>Category&lt;/th>&lt;/tr>&lt;/thead>&lt;tbody>&lt;tr>&lt;td>0&lt;/td>&lt;td>&lt;span>2021-05-20 17:01:08Z&lt;/span>&lt;/td>&lt;td>&lt;div class="dni-plaintext">3&lt;/div>&lt;/td>&lt;td>Error&lt;/td>&lt;td>XrmInvoiceExportOrchestration&lt;/td>&lt;td>Xero Invoice : INV-50017337 - Error: The Account Number already exists. Please enter a different Account Number.&lt;/td>&lt;td>Function.XrmInvoiceExportOrchestration.User&lt;/td>&lt;/tr>&lt;tr>&lt;td>1&lt;/td>&lt;td>&lt;span>2021-05-20 16:01:07Z&lt;/span>&lt;/td>&lt;td>&lt;div class="dni-plaintext">3&lt;/div>&lt;/td>&lt;td>Error&lt;/td>&lt;td>XrmInvoiceExportOrchestration&lt;/td>&lt;td>Xero Invoice : INV-50017337 - Error: The Account Number already exists. Please enter a different Account Number.&lt;/td>&lt;td>Function.XrmInvoiceExportOrchestration.User&lt;/td>&lt;/tr>&lt;tr>&lt;td>2&lt;/td>&lt;td>&lt;span>2021-05-20 15:22:47Z&lt;/span>&lt;/td>&lt;td>&lt;div class="dni-plaintext">3&lt;/div>&lt;/td>&lt;td>Error&lt;/td>&lt;td>XrmInvoiceExportOrchestration&lt;/td>&lt;td>Xero Invoice : INV-50017337 - Error: The Account Number already exists. Please enter a different Account Number.&lt;/td>&lt;td>Function.XrmInvoiceExportOrchestration.User&lt;/td>&lt;/tr>&lt;/tbody>&lt;/table></description></item><item><title>Exploring Interactive Notebooks</title><link>https://www.synesthesia.co.uk/note/2021/05/21/exploring-interactive-notebooks/</link><pubDate>Fri, 21 May 2021 11:20:26 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2021/05/21/exploring-interactive-notebooks/</guid><description>&lt;p>As I mentioned the other day, one of my background learning goals for the second half of this year is a &lt;a href="https://www.synesthesia.co.uk/2021/05/07/maths-for-data-science/">maths refresh and to explore the world of data science&lt;/a>.&lt;/p>
&lt;p>You can&amp;rsquo;t get very far in such an exploration before you come across the idea of Interactive Notebooks, most commonly in the form of &lt;a href="https://jupyter.org/" target="_blank" rel="noopener">Jupyter Notebooks&lt;/a>.&lt;/p>
&lt;p>To quote the Jupyter site:&lt;/p>
&lt;blockquote>
&lt;p>The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling, data visualization, machine learning, and much more.&lt;/p>
&lt;/blockquote>
&lt;p>As &lt;a href="https://www.youtube.com/watch?v=W-F0gO7dVOE" target="_blank" rel="noopener">others&lt;/a> have pointed out, they also hold great potential for creating actionable documentation for common IT operational incidents. This may be the first area I explore - it&amp;rsquo;s potentially more accessible to me while I learn more about data science&lt;/p>
&lt;p>The range of tools and services which are available to run notebooks, either locally or in the cloud, seems to be growing all the time. A few that I have played with (or at least looked at) so far:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://jupyter.org/" target="_blank" rel="noopener">Jupyter&lt;/a> locally, on top of &lt;a href="https://www.anaconda.com/products/individual" target="_blank" rel="noopener">Anaconda&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://nteract.io/applications" target="_blank" rel="noopener">nteract&lt;/a>&lt;/li>
&lt;li>in &lt;a href="https://docs.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio?view=sql-server-ver15" target="_blank" rel="noopener">Azure Data Studio&lt;/a>&lt;/li>
&lt;li>in &lt;a href="https://code.visualstudio.com/docs/python/jupyter-support" target="_blank" rel="noopener">Visual Studio Code&lt;/a>&lt;/li>
&lt;li>in &lt;a href="https://code.visualstudio.com/insiders/" target="_blank" rel="noopener">Visual Studio Code Insiders&lt;/a> with the &lt;a href="https://github.com/microsoft/vscode-jupyter" target="_blank" rel="noopener">&lt;code>vscode-jupyter&lt;/code> extension&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://gradient.paperspace.com/" target="_blank" rel="noopener">Paperspace Gradient&lt;/a> (which even has a free tier that includes GPU for heavy processing)&lt;/li>
&lt;li>Azure &lt;a href="https://docs.microsoft.com/en-gb/azure/synapse-analytics/spark/apache-spark-development-using-notebooks?tabs=classical" target="_blank" rel="noopener">Synapse Analytics&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The number of kernels available (and therefore the languages you can write your notebooks in) is also increasing. Depending on the environment you run in you may have one or more of the following available:&lt;/p>
&lt;ul>
&lt;li>Python&lt;/li>
&lt;li>R&lt;/li>
&lt;li>.Net Interactive (C#, F#, Powershell)&lt;/li>
&lt;li>T-SQL&lt;/li>
&lt;li>Scala&lt;/li>
&lt;li>PySpark&lt;/li>
&lt;li>Spark/R&lt;/li>
&lt;li>Kusto&lt;/li>
&lt;li>&amp;hellip;?&lt;/li>
&lt;/ul>
&lt;p>I also found &lt;a href="https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks" target="_blank" rel="noopener">this great list of example notebooks&lt;/a>.&lt;/p>
&lt;p>As I continue to explore I will label notes on my experiments with the tag &lt;a href="https://www.synesthesia.co.uk/tag/notebooks/">&lt;code>notebooks&lt;/code>&lt;/a>.&lt;/p></description></item><item><title>The Very Model</title><link>https://www.synesthesia.co.uk/2021/05/11/the-very-model/</link><pubDate>Tue, 11 May 2021 07:31:06 +0100</pubDate><guid>https://www.synesthesia.co.uk/2021/05/11/the-very-model/</guid><description>&lt;p>I love this from &lt;a href="https://twitter.com/aedwardslevy" target="_blank" rel="noopener">@aedwardslevey&lt;/a>: &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">I&amp;#39;ve information anecdotal, chemical, and clinical&lt;br>I know the COVID experts, and I quote-tweet fights on aerosols&lt;br>List BioNTech to Zeneca, in order categorical&lt;/p>&amp;mdash; Ariel Edwards-Levy (@aedwardslevy) &lt;a href="https://twitter.com/aedwardslevy/status/1383456663684870147?ref_src=twsrc%5Etfw">April 17, 2021&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;blockquote>
&lt;p>I’ve information anecdotal, chemical, and clinical
I know the COVID experts, and I quote-tweet fights on aerosols&lt;/p>
&lt;p>List BioNTech to Zeneca, in order categorical
I’m very well acquainted, too, with matters virological&lt;/p>
&lt;p>I understand most models but I’m baffled by the cubical
About t-cell immunity I am teeming with a lot o’ news … lot o’ news…
with many cheerful facts about the antibodies I’ll produce!&lt;/p>
&lt;p>I know the vaccine history from Jenner and the old cowpox
I answer diagnostics, I thank all the nurses and the docs&lt;/p>
&lt;p>I quote in elegiacs all the CDC analysis
And hope we’ll usher in an annus slightly more mirabilis&lt;/p>
&lt;p>I can tell adenoviruses from mRNA and spike proteins
I have a working map of every single drug store close to me
Then I can hit refresh until finally a slot I score … slot I score …&lt;/p>
&lt;p>I’ll whistle all the way home ’cause I’m happy that my skin is sore!
I’m looking at the r-naught and I hope the trend is fabulous&lt;/p>
&lt;p>I know the pseudoscience claims of beings antivaxxulous
In short, in matters anecdotal, chemical, and clinical
I am the very model of Moderna-made injectables&lt;/p>
&lt;/blockquote>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>via &lt;a href="https://jarche.com/2021/04/stop-doing-dumb-shit/" target="_blank" rel="noopener">Harold Jarche&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Zotero to Markdown Notes</title><link>https://www.synesthesia.co.uk/note/2021/05/10/zotero-to-markdown-notes/</link><pubDate>Mon, 10 May 2021 09:09:43 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2021/05/10/zotero-to-markdown-notes/</guid><description>&lt;p>&lt;a href="https://www.zotero.org/" target="_blank" rel="noopener">Zotero&lt;/a> is a great free tool for managing any kind of references and citations.&lt;/p>
&lt;p>In &lt;a href="https://youtu.be/_Fjhad-Z61o" target="_blank" rel="noopener">this video&lt;/a> &lt;a href="https://www.bryanjenks.dev/blog" target="_blank" rel="noopener">Bryan Jenks&lt;/a> demonstrates his workflow to enable initial annotation of PDFs in Zotero to be flowed through into Markdown comments that can be imported into Obsidian, Foam or any other plaintext notes system. The notes include links back to the source via Zotero.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/_Fjhad-Z61o" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;h3 id="summary">Summary&lt;/h3>
&lt;p>Key steps are:&lt;/p>
&lt;ul>
&lt;li>have a working installation of Zotero&lt;/li>
&lt;li>install necessary Zotero plugins
&lt;ul>
&lt;li>&lt;a href="http://zotfile.com/" target="_blank" rel="noopener">Zotfile&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://retorque.re/zotero-better-bibtex/" target="_blank" rel="noopener">Better BibTex for Zotero&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/argenos/zotero-mdnotes" target="_blank" rel="noopener">MdNotes for Zotero&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>import the PDF source material into Zotero&lt;/li>
&lt;li>open the PDF from within Zotero&lt;/li>
&lt;li>annotate and save the PDF&lt;/li>
&lt;li>in Zotero right click on the PDF and select &lt;code>Manage Attachments &amp;gt; Extract Annotations&lt;/code>&lt;/li>
&lt;li>in Zotero right-click on the extracted notes file and select &lt;code>Mdnotes &amp;gt; Export to markdown&lt;/code>&lt;/li>
&lt;li>save the markdown file somewhere you can easily import into your notes system for further processing&lt;/li>
&lt;/ul></description></item><item><title>Maths for Data Science</title><link>https://www.synesthesia.co.uk/2021/05/07/maths-for-data-science/</link><pubDate>Fri, 07 May 2021 09:40:36 +0100</pubDate><guid>https://www.synesthesia.co.uk/2021/05/07/maths-for-data-science/</guid><description>&lt;p>On a whim I signed myself up to &lt;a href="https://www.coursera.org/learn/datasciencemathskills/home/welcome" target="_blank" rel="noopener">Data Science Math Skills&lt;/a> from a couple of professors at Duke University (on Coursera).&lt;/p>
&lt;p>This is pitched at people with little or no maths education, and so far it&amp;rsquo;s a refresh of things I had forgotten I knew around basic set and number theory. Scanning ahead I can see it&amp;rsquo;s all things I have learned once in my life, but sometimes a very long time ago (e.g. at school).&lt;/p>
&lt;p>The delivery format seems to be a set of video lectures accompanied by written summaries of the key concepts. So far (presumably because these concepts were already in my head, albeit buried below the clay of decades) I&amp;rsquo;ve found that reading through the notes is a quicker way of grasping what is going on, but so far other than revision quizzes haven&amp;rsquo;t really had to test whether the ideas have stuck.&lt;/p>
&lt;p>Fun to do something different!&lt;/p></description></item><item><title>Reinventing My Note Making Practice</title><link>https://www.synesthesia.co.uk/2021/05/01/reinventing-my-note-making-practice/</link><pubDate>Sat, 01 May 2021 16:17:02 +0000</pubDate><guid>https://www.synesthesia.co.uk/2021/05/01/reinventing-my-note-making-practice/</guid><description>&lt;p>This post is part of my wider &lt;a href="https://www.synesthesia.co.uk/project/note-making-practice/">enquiry into my note-making practices&lt;/a>.&lt;/p>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>Over the years I&amp;rsquo;ve tried all sorts of methodologies for managing the ideas that flow in and out of work projects, crop up in reading, diving down rabbit holes on social media, etc.&lt;/p>
&lt;p>The main things I&amp;rsquo;ve learned are to keep the technologies as simple as possible, and not to fret too much about a specific process.&lt;/p>
&lt;p>Having said that, I seem to have found a set of practices which are consistent enough to give me just enough structure that I don&amp;rsquo;t have to think too hard about where something goes, as shown in the diagram.&lt;/p>
&lt;figure id="figure-my-notes-ecosystem">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="My notes ecosystem" srcset="
/2021/05/01/reinventing-my-note-making-practice/notes-process.drawio_hu7c768330cea7770ea2e5a2d860e2f2c3_278710_adbd8b6f9d742de96889559f86304e10.webp 400w,
/2021/05/01/reinventing-my-note-making-practice/notes-process.drawio_hu7c768330cea7770ea2e5a2d860e2f2c3_278710_d2a3e7df9a0cbbb89f48ddfe1e0a8c6f.webp 760w,
/2021/05/01/reinventing-my-note-making-practice/notes-process.drawio_hu7c768330cea7770ea2e5a2d860e2f2c3_278710_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2021/05/01/reinventing-my-note-making-practice/notes-process.drawio_hu7c768330cea7770ea2e5a2d860e2f2c3_278710_adbd8b6f9d742de96889559f86304e10.webp"
width="659"
height="481"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
My notes ecosystem
&lt;/figcaption>&lt;/figure>
&lt;h2 id="private--structured-notes">Private / structured notes&lt;/h2>
&lt;p>Like most professionals the vast majority of my written output is private work product. Looking at the diagram these are the notes on the left. Within this there are structured notes (orange in the diagram) and freeform notes (green in the diagram). The structured part loosely follows some of the ideas in &lt;a href="https://gettingthingsdone.com/" target="_blank" rel="noopener">GTD&lt;/a>, and are somewhat inspired by &lt;a href="https://www.zylstra.org/blog/2020/10/100-days-in-obsidian-pt-2-hierarchy-and-logs/" target="_blank" rel="noopener">Ton Zjilstra&amp;rsquo;s post on the hierarchical part of his note-taking&lt;/a>.&lt;/p>
&lt;p>The daily logs and weekly summaries are the most structured, in the sense that I have a standard set of templated headings to prompt me and speed things up.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Daily logs&lt;/strong>&lt;/td>
&lt;td>ToDos / Activity log / daily review questions&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Weekly summaries&lt;/strong>&lt;/td>
&lt;td>Lookaheads at start of week (key priorities), review at end of week (key accomplishments, blockers, things I learned, carry forward to next week)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>The other notes are much more variable in format, driven by whatever area of work they relate to, and are arranged in folders by project or area of management concern (for example I have a folder for each member of my team where I keep notes relating to 1:1 meetings).&lt;/p>
&lt;p>All of these notes are likely to link to material elsewhere e.g. documents in OneDrive / Teams, product plans in Aha!, even individual code commits.&lt;/p>
&lt;h2 id="private--unstructured-notes">Private / unstructured notes&lt;/h2>
&lt;p>Within my private unstructured (and inter-linked) notes (green, on the left) I loosely divide things into &lt;strong>Ideas&lt;/strong> and &lt;strong>Longer Notes&lt;/strong>. The main difference (and it&amp;rsquo;s not hard and fast) is around length and complexity.&lt;/p>
&lt;p>&lt;strong>Ideas&lt;/strong> are single concept short notes that may capture a reference that I found useful or interesting, and might be a single sentence.&lt;/p>
&lt;p>I use &lt;strong>longer notes&lt;/strong> for a range of purposes, including assembling argument and analysis around a topic before creating more formal product. Often the only thing that distinguishes these from the &lt;strong>learning notes&lt;/strong> and &lt;strong>evergreen notes&lt;/strong> in my public material is that because they are private I can write more freely on professional topics without taking the time to generalise or anonymise.&lt;/p>
&lt;h2 id="public-notes">Public notes&lt;/h2>
&lt;p>Writing in public (the right side of the diagram) is something we all commit to when we start a blog, or a wiki, or a digital garden, or just about any form of self-publishing.&lt;/p>
&lt;p>The most useful differentiation in my mind is between &lt;a href="https://garden.synesthesia.co.uk/mike-caulfield-the-garden-and-the-stream" target="_blank" rel="noopener">the Garden and the Stream&lt;/a>: each has its merits.&lt;/p>
&lt;p>For time-based notes, on this site I maintain a somewhat artificial distinction between two streams, &lt;a href="https://www.synesthesia.co.uk/note/" target="_blank" rel="noopener">Work Notes&lt;/a> and &lt;a href="https://www.synesthesia.co.uk/post/" target="_blank" rel="noopener">Posts&lt;/a>. Mostly the former are about work, the latter about anything that takes my notice, but it&amp;rsquo;s not hard and fast.&lt;/p>
&lt;p>My other public notes (Garden mode) have moved homes a few times, and currently live in the &lt;a href="https://garden.synesthesia.co.uk" target="_blank" rel="noopener">Digital Garden&lt;/a>. In the diagram I have shown two sorts of notes (&lt;strong>Learning Notes&lt;/strong> and &lt;strong>Evergreen Notes&lt;/strong>), but it&amp;rsquo;s a difference of what is in the note rather than anything structural.&lt;/p>
&lt;p>For &lt;strong>Evergreen Notes&lt;/strong> the aspiration that they should be &lt;a href="https://garden.synesthesia.co.uk/permanent-notes-should-be-concept-based" target="_blank" rel="noopener">concept-based&lt;/a>, &lt;a href="https://garden.synesthesia.co.uk/permanent-notes-should-be-atomic" target="_blank" rel="noopener">atomic&lt;/a>, &lt;a href="https://garden.synesthesia.co.uk/permanent-notes-should-be-densely-linked" target="_blank" rel="noopener">densely-linked&lt;/a> and &lt;a href="https://garden.synesthesia.co.uk/permanent-notes-should-develop-iteratively" target="_blank" rel="noopener">develop iteratively&lt;/a>.&lt;/p>
&lt;p>All of those are exacting standards, so I invented a second category of &lt;strong>learning notes&lt;/strong> to cover everything else, but there is no formal distinction between the two. Mostly that&amp;rsquo;s about me getting comfortable with writing things which don&amp;rsquo;t &amp;ldquo;meet the standard&amp;rdquo;!&lt;/p>
&lt;h2 id="key-lessons">Key lessons&lt;/h2>
&lt;p>So far, I would give my future self just three clear instructions:&lt;/p>
&lt;ul>
&lt;li>if in doubt write - and the one to really stick to is the daily log, because everything flows from there&lt;/li>
&lt;li>don&amp;rsquo;t worry about sticking to the structure if it doesn&amp;rsquo;t work for a particular thing&lt;/li>
&lt;li>abandon any self-criticism when the stuff you write doesn&amp;rsquo;t hit the lofty goals for &lt;a href="https://notes.andymatuschak.org/Evergreen_notes" target="_blank" rel="noopener">Evergreen notes&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Wordpress Log to Seq</title><link>https://www.synesthesia.co.uk/note/2021/04/28/2021-04-28-wordpress-log-to-seq/</link><pubDate>Wed, 28 Apr 2021 08:52:47 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2021/04/28/2021-04-28-wordpress-log-to-seq/</guid><description>&lt;p>Throwing an idea to the LazyWeb - &lt;a href="https://garden.synesthesia.co.uk/monolog-wordpress-seq-handler" target="_blank" rel="noopener">wordpress plugin to log to Seq&lt;/a>&lt;/p>
&lt;p>&lt;em>Although as I have done some initial research I admit this fails the &lt;a href="https://blog.codinghorror.com/lazyweb-calling/" target="_blank" rel="noopener">full Lazyweb criteria&lt;/a> :-)&lt;/em>&lt;/p></description></item><item><title>Anti-libraries and anti-scholars</title><link>https://www.synesthesia.co.uk/2021/04/25/anti-libraries-and-anti-scholars/</link><pubDate>Sun, 25 Apr 2021 10:58:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/2021/04/25/anti-libraries-and-anti-scholars/</guid><description>&lt;p>In &lt;a href="https://www.worldcat.org/title/black-swan-the-impact-of-the-highly-improbable/oclc/71833470&amp;amp;referer=brief_results" target="_blank" rel="noopener">The Black Swan&lt;/a> Nassim Nicholas Taleb references both Umberto Eco&amp;rsquo;s enormous library of books and his attitude that a personal library is not a badge of honour but rather a collection of tools.&lt;/p>
&lt;p>As Maria Popova explains in &lt;a href="https://www.brainpickings.org/2015/03/24/umberto-eco-antilibrary/" target="_blank" rel="noopener">Umberto Eco’s Antilibrary: Why Unread Books Are More Valuable to Our Lives than Read Ones&lt;/a> Taleb builds from Eco&amp;rsquo;s view to coin the parable of the &lt;strong>Anti-Library&lt;/strong> (the books in your collection that you &lt;em>chose&lt;/em> to collect but &lt;em>haven&amp;rsquo;t&lt;/em> read) and the &lt;strong>Anti-Scholar&lt;/strong> :&lt;/p>
&lt;blockquote>
&lt;p>“Let us call an antischolar - someone who focuses on the unread books, and makes an attempt not to treat his knowledge as a treasure, or even a possession, or even a self-esteem enhancement device - a skeptical empiricist.”&lt;/p>
&lt;/blockquote>
&lt;p>Taleb uses these concepts as part of his overall thesis that our collective vulnerability to &amp;ldquo;Black Swan&amp;rdquo; events is in part driven by an over-focus on what we know, vs what we don&amp;rsquo;t know. The other side of that coin is the proposition that to &lt;em>increase&lt;/em> our exposure to &lt;em>positive&lt;/em> Black Swans we need to tinker around in the edges of our knowledge.&lt;/p>
&lt;p>I find this idea intuitively interesting and at the same a source of both comfort and inspiration. Comfort, because I often feel that compared to many of the people in my knowledge network I am lazy at reading, and even lazier at distilling and sharing insight. Inspiration, because it suggests there is value in understanding why I collect books or other references even if I don&amp;rsquo;t read them immediately - these are &lt;em>weak signals&lt;/em> about the thoughts that might be just beyond my conscious knowledge.&lt;/p>
&lt;p>So how to make use of these weak signals?&lt;/p>
&lt;p>When it comes to creating pragmatic approaches to personal knowledge, Ton Zjilstra is a great source. In &lt;a href="https://www.zylstra.org/blog/2021/02/surfacing-my-anti-library/" target="_blank" rel="noopener">Surfacing my Anti-Library&lt;/a> he considers his own collection of books that he has chosen to acquire (a form of curation) but has not yet read and proposes these approaches:&lt;/p>
&lt;blockquote>
&lt;ul>
&lt;li>Maintaining an index of unread books. I created a collection ‘Anti-library’ in Zotero, which also contains other collections with the references to things I did read. Zotero works well with both books and (academic) papers. I already had in my notes a list called ‘my reading list’ which is an overview of books I think would be useful to read at this moment in time, which I moved to Zotero. And I could make an additional round through my e-ink devices, and our home to add to the list of unreads.&lt;/li>
&lt;li>When adding a new unread book, jotting down why I thought to add it.&lt;/li>
&lt;li>Keep checking out recommendations from peers, and what other books the ones I enjoy currently reading are referencing&lt;/li>
&lt;li>maybe I should [write a blog post] for books I acquired but didn’t yet read, and share the reason I think it might be an interesting book. Have an anti-library stream&lt;/li>
&lt;li>When exploring a new question, consider which unread books may contain relevant insights (next to exploring what my notes already contain on the question at hand&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>I can see things there I could easily adapt for my own practice.&lt;/p>
&lt;p>In a final irony, &lt;em>The Black Swan&lt;/em> has been in my anti-library for a couple of years, sitting in my Kindle at the start of Part One!&lt;/p></description></item><item><title>D365 UK User Group April 2021</title><link>https://www.synesthesia.co.uk/note/2021/04/22/d365-uk-user-group-april-2021/</link><pubDate>Thu, 22 Apr 2021 09:07:04 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2021/04/22/d365-uk-user-group-april-2021/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>&lt;a href="https://d365uguk-22-apr-2021.sessionize.com/schedule" target="_blank" rel="noopener">D365 User Group April Meeting&lt;/a> - another all online event.&lt;/p>
&lt;p>UK group are stepping away from the D356UG site because of changes of direction by the company that run it. Moving to new &lt;a href="https://community.dynamics.com/usergroup/united-kingdom-dynamics-365-user-group/" target="_blank" rel="noopener">Microsoft user group platform&lt;/a> later in 2021. For now staying on &lt;a href="https://meetup.com/d365ppug" target="_blank" rel="noopener">Meetup&lt;/a>&lt;/p>
&lt;p>Another useful list of virtual meetings is &lt;a href="https://www.virtualeventshub.com/" target="_blank" rel="noopener">https://www.virtualeventshub.com/&lt;/a>&lt;/p>
&lt;h2 id="sessions">Sessions&lt;/h2>
&lt;p>This time I didn&amp;rsquo;t attempt to keep detailed session notes, the recordings will be available within a few days on the &lt;a href="https://youtube.com/d365ug" target="_blank" rel="noopener">D365 Youtube channel&lt;/a>.&lt;/p>
&lt;p>Sessions that I &amp;ldquo;attended&amp;rdquo; and which I think merit a second look are:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://d365uguk-22-apr-2021.sessionize.com/session/244190" target="_blank" rel="noopener">What&amp;rsquo;s the deal with DataFlows?&lt;/a> - &lt;a href="https://crmchap.co.uk/" target="_blank" rel="noopener">Joe Griffin&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://d365uguk-22-apr-2021.sessionize.com/session/249151" target="_blank" rel="noopener">Low-code platform - where do the devs fit in?&lt;/a> - &lt;a href="https://www.linkedin.com/in/mattbeard7/" target="_blank" rel="noopener">Matt Beard&lt;/a> / &lt;a href="https://malindonosomartnes.com/" target="_blank" rel="noopener">Malin Martnes&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://d365uguk-22-apr-2021.sessionize.com/session/246041" target="_blank" rel="noopener">Developers: Inside the plugin pipeline&lt;/a> - &lt;a href="https://markcarrington.dev/" target="_blank" rel="noopener">Mark Carrington&lt;/a>&lt;/p>
&lt;p>lots of useful reminders, plus callouts to:&lt;/p>
&lt;ul>
&lt;li>Jonas Rapp&amp;rsquo;s &lt;a href="https://gist.github.com/rappen/b1aa858f0597f7cad0f6e301673a75b8" target="_blank" rel="noopener">CanaryTracer&lt;/a> plugin&lt;/li>
&lt;li>Daryl Lebar &lt;a href="https://dotnetdust.blogspot.com/2017/03/ive-been-doing-plugin-parameters-wrong.html" target="_blank" rel="noopener">I’ve Been Doing Plugin Parameters Wrong For 7 Years&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>As usual the &lt;a href="https://d365uguk-22-apr-2021.sessionize.com/session/250184" target="_blank" rel="noopener">Microsoft Roadmap&lt;/a> session was too packed to follow in detail as &lt;a href="https://docs.microsoft.com/en-us/powerapps/" target="_blank" rel="noopener">Power Apps&lt;/a> continues to grow, although useful to add &lt;a href="https://twitter.com/thatguymarko" target="_blank" rel="noopener">@thatguymarko&lt;/a> / &lt;a href="https://twitter.com/lucyalicebourne" target="_blank" rel="noopener">@lucyalicebourne&lt;/a> / &lt;a href="https://twitter.com/anademeny" target="_blank" rel="noopener">@anademeny&lt;/a> / &lt;a href="https://twitter.com/chris_haley83" target="_blank" rel="noopener">@chris_haley83&lt;/a> to follow lists if they aren&amp;rsquo;t already there.&lt;/p>
&lt;p>The standout things for me were:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>the release of &lt;a href="https://flow.microsoft.com/en-us/robotic-process-automation/" target="_blank" rel="noopener">Robotic Process Automation (RPA)&lt;/a> as a free tool for Windows 10 users (free licence allows local, manually-triggered flows, &lt;a href="https://flow.microsoft.com/en-us/pricing/" target="_blank" rel="noopener">paid licences&lt;/a> needed for company-wide sharing, cloud services, access to AI etc) - see also forthcoming &lt;a href="https://www.microsoftevents.com/profile/web/index.cfm?PKwebID=0x2117456abcd" target="_blank" rel="noopener">technical workshops&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>the closer integration of Teams (including phone calls) within the Dynamics for Sales interface&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://cloudblogs.microsoft.com/dynamics365/bdm/2021/03/02/dynamics-365-and-microsoft-teams-extend-collaboration-across-teams/" target="_blank" rel="noopener">blog post&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://youtu.be/SlS27nOWtsA" target="_blank" rel="noopener">video&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.microsoft.com/en-us/dynamics365/teams-integration/teams-install-app" target="_blank" rel="noopener">install and setup Microsoft Teams integration&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;em>my experience with setting up the Dynamics365 app inside Teams is it takes a couple of goes, and you have to wait for all the permissions to sync&lt;/em>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>the launch of &lt;a href="https://powerapps.microsoft.com/en-us/blog/what-is-microsoft-power-fx/" target="_blank" rel="noopener">Power FX&lt;/a> - the language used in Canvas Power Apps (based on Excel) now has a name, has been open-sourced, and has the beginnings of a pro-dev source-control story too&lt;/p>
&lt;/li>
&lt;li>
&lt;p>other useful links to presentations / events:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.linkedin.com/smart-links/AQFvi9itgoUKiw/a6db6779-9e75-4843-b45e-b1cfc19815c7" target="_blank" rel="noopener">Starting a Power Platform Practice&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.microsoftevents.com/profile/form/index.cfm?PKformID=0x11859136abcd" target="_blank" rel="noopener">Supercharge your Power Platform practice&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.linkedin.com/smart-links/AQFiRBvwLJtt0Q/d44b6e00-bbea-4d31-ac00-af9336ded435" target="_blank" rel="noopener">Move with the cloud&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>New Tools for Note Making</title><link>https://www.synesthesia.co.uk/2021/01/20/new-tools-for-note-making/</link><pubDate>Wed, 20 Jan 2021 16:12:58 +0000</pubDate><guid>https://www.synesthesia.co.uk/2021/01/20/new-tools-for-note-making/</guid><description>&lt;p>This post is part of my wider &lt;a href="https://www.synesthesia.co.uk/project/note-making-practice/">enquiry into my note-making practices&lt;/a>.&lt;/p>
&lt;h2 id="requirements">Requirements&lt;/h2>
&lt;p>The key technical requirements for my new note-taking setup are as follows:&lt;/p>
&lt;ul>
&lt;li>must be based on Markdown text files&lt;/li>
&lt;li>optionally the ability to enhance publishing with mdx&lt;/li>
&lt;li>able to separate publishable files from private&lt;/li>
&lt;li>must support any backup or versioning that will work for text files (e.g. dropbox, GitHub)&lt;/li>
&lt;li>not locked into someone else’s product&lt;/li>
&lt;li>publishing selected notes to static website&lt;/li>
&lt;li>options with scriptability and/or templating to reduce the amount of time taken on basic process tasks&lt;/li>
&lt;/ul>
&lt;h2 id="current-tools">Current tools&lt;/h2>
&lt;p>I started this note last November, and the title implied that I’d settled on a new note-making tools setup. The reality is that a setup is never fixed, and I find an ever-present temptation for yak-shaving.&lt;/p>
&lt;p>The core elements I’m using right now are:&lt;/p>
&lt;ul>
&lt;li>two git repositories, one private for daily working notes, a second one that is published to &lt;a href="https://garden.synesthesia.co.uk" target="_blank" rel="noopener">my digital garden&lt;/a>&lt;/li>
&lt;li>for desktop editing the private, quotidian working notes I have experimented with &lt;a href="https://obsidian.md" target="_blank" rel="noopener">Obsidian&lt;/a> and find it productive. However cost of the notes ecosystem is important, and an Obsidian licence for commercial work is an annual subscription, so I have reverted to using Foam, as below&lt;/li>
&lt;li>desktop editing of the public digital garden is currently edited using the &lt;a href="https://foambubble.github.io/foam/" target="_blank" rel="noopener">Foam plugin&lt;/a> on top of Visual Studio Code&lt;/li>
&lt;li>publishing is a custom Gatsby.js site hosted on Netlify&lt;/li>
&lt;li>Mobile git client is Working Copy&lt;/li>
&lt;li>for mobile quick capture of thoughts I use Drafts (Pro) - including its great dictation feature on Apple Watch&lt;/li>
&lt;li>for detailed editing on mobile I am currently using IA Writer&lt;/li>
&lt;/ul></description></item><item><title>D365 User Group December 2020</title><link>https://www.synesthesia.co.uk/note/2020/12/02/d365-user-group-december-2020/</link><pubDate>Wed, 02 Dec 2020 09:28:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2020/12/02/d365-user-group-december-2020/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>&lt;a href="https://www.d365ug.com/events/event-description?CalendarEventKey=68eb6603-6dd8-4dfb-81df-80561dba6d63&amp;amp;CommunityKey=b62b1779-6dbe-4d1a-8625-745bbfab8716" target="_blank" rel="noopener">D365 User Group December Meeting&lt;/a>. I was originally planning to blog notes from each session as they went along, however that rapidly became impossible.&lt;/p>
&lt;p>For me, one of the key learning points out of this virtual user group day is that live online presentations are a terribly inefficient way of presenting information. I don&amp;rsquo;t think it is the fault of the presenters (&lt;a href="https://www.synesthesia.co.uk/2017/11/17/d365ug/">been there, done that&lt;/a>, and it&amp;rsquo;s clear that time and effort has gone into planning each session). Rather, the medium perhaps focuses too much on the presentation aspect. The strength of an in-person user group day is to hear some interesting stuff and then do some networking.&lt;/p>
&lt;p>Instead I shall wait for the session videos to be published on the &lt;a href="https://www.youtube.com/c/D365UGUK" target="_blank" rel="noopener">D365 UG channel&lt;/a>.&lt;/p>
&lt;h2 id="brief-notes">Brief notes&lt;/h2>
&lt;h3 id="microsoft-roadmap-session">Microsoft Roadmap session&lt;/h3>
&lt;p>&lt;a href="https://twitter.com/lucyalicebourne" target="_blank" rel="noopener">Lucy Bourne&lt;/a> / &lt;a href="https://twitter.com/tattooedcrmguy" target="_blank" rel="noopener">Chris Huntingford&lt;/a> / &lt;a href="https://twitter.com/dyn365princess" target="_blank" rel="noopener">Kaila Bloomfield&lt;/a>&lt;/p>
&lt;p>Not a great session - a lot of reading of very dense slides.&lt;/p>
&lt;p>In short:&lt;/p>
&lt;ul>
&lt;li>everything has a new name&lt;/li>
&lt;li>&amp;ldquo;Dataverse for Teams&amp;rdquo; adds some interesting (but carefully bounded) functionality into the Teams environment&lt;/li>
&lt;li>Lots of new features on Customer Insights, now renamed to Audience Insights (and soon, Engagement Insights).&lt;/li>
&lt;li>Project for the Web is a completely new product&lt;/li>
&lt;/ul>
&lt;h3 id="websites-and-power-virtual-agent">Websites and Power Virtual Agent&lt;/h3>
&lt;p>Danish Naglekar (&lt;a href="https://twitter.com/DanzMaverick" target="_blank" rel="noopener">@Danzmaverick&lt;/a>)&lt;/p>
&lt;p>I missed most of Danish&amp;rsquo;s demo because of a Teams glitch. Demoed using embedded javascript instead of iFrame to allow better visual integration with host site. I think this is as &lt;a href="https://docs.microsoft.com/en-us/power-virtual-agents/customize-default-canvas" target="_blank" rel="noopener">documented here&lt;/a>&lt;/p>
&lt;p>Unfortunately (and this is not the speaker&amp;rsquo;s fault), Microsoft&amp;rsquo;s &lt;a href="https://powervirtualagents.microsoft.com/en-us/pricing/" target="_blank" rel="noopener">pricing&lt;/a> for the service will rule out a lot of potential users. Good question from another attendee about security and protection against brute force DDOS (which could get through your credits very fast) - no answer, but in fairness that&amp;rsquo;s for Microsoft.&lt;/p>
&lt;h3 id="modern-cicd-concepts-for-d365-enterprise-projects">Modern CI/CD Concepts for D365 Enterprise Projects&lt;/h3>
&lt;p>Robert Proll.&lt;/p>
&lt;p>Mostly an explanation of why his company built their tooling to overcome issues with the standard open source CI tools for D365, &lt;a href="https://kuppsoft.com/resources/blogs/power-platform-build-tools-vs-third-party-tooling-technical-review-comparison/" target="_blank" rel="noopener">blog post&lt;/a>. Clearly lots of in-depth thought behind the problems that need to be solved, but the scope that Robert tried to cover could easily fill a day, so 50 minutes online felt very rushed.&lt;/p>
&lt;h3 id="low-code-automated-ui-testing-for-model-driven-apps">Low-code automated UI testing for model-driven apps&lt;/h3>
&lt;p>&lt;a href="https://medium.com/@robertsondavid92" target="_blank" rel="noopener">David Robertson&lt;/a> / &lt;a href="https://medium.com/@max.ewing" target="_blank" rel="noopener">Max Ewing&lt;/a> / &lt;a href="https://medium.com/@markcunningham_68121" target="_blank" rel="noopener">Mark Cunningham&lt;/a>&lt;/p>
&lt;p>Pre-event blurb:&lt;/p>
&lt;blockquote>
&lt;p>This session is to give an overview of powerapps-specflow-bindings, an open-source automated UI testing framework for Power Apps. This framework is being used and maintained by Capgemini and is built on top of the popular open-source EasyRepro library from Microsoft.
This framework drastically reduces the effort required to create automated UI tests that follow best practices. In addition, it handles many common problems, such as: test parallelisation, data setup and clean-up, and user identities.
The repository can be found at &lt;a href="https://github.com/Capgemini/powerapps-specflow-bindings" target="_blank" rel="noopener">https://github.com/Capgemini/powerapps-specflow-bindings&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>I&amp;rsquo;ve played a little bit with the pre-release of this tool, and it certainly makes it much quicker to write UI tests for the Microsoft Unified Interface that are described in Specflow than to directly use EasyRepro. However there are &lt;a href="https://techbeacon.com/app-dev-testing/should-you-write-automated-ui-tests-4-questions-answer-first" target="_blank" rel="noopener">only certain use cases where UI tests make sense&lt;/a> - they tend to be brittle and are always slow.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/ewingjm/development-hub/blob/master/tests/DevelopmentHub.Tests.Ui/Hooks/AfterScenarioHooks.cs" target="_blank" rel="noopener">example of grabbing screenshots in CI&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>An excellent session - very hands on with the developers of a tool I am using - we even discussed a bugfix (to EasyRepro, not their code!)&lt;/p>
&lt;h3 id="implementing-azure-data-solutions-using-dynamics-365--the-common-data-service">Implementing Azure Data Solutions using Dynamics 365 &amp;amp; the Common Data Service&lt;/h3>
&lt;p>&lt;a href="https://crmchap.co.uk/" target="_blank" rel="noopener">Joe Griffin&lt;/a> / &lt;a href="https://markcarrington.dev/" target="_blank" rel="noopener">Mark Carrington&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>Microsoft Azure is your go-to destination whenever you need to start putting your Common Data Service data to good use. Whether you want to perform batch processing activities, automated streaming of datasets or carry out big data analysis, Microsoft offers a multitude of services that are not only easy to set up but, in some cases, integrate straightforwardly alongside Dynamics 365 and Common Data Service.&lt;/p>
&lt;p>Join us, Mark Carrington and Joe Griffin, as we take you on a whistle-stop tour of services such as Data Factory, Data Bricks, Data Lake, Stream Analytics and more. Throughout this, we&amp;rsquo;ll aim to show you how to get the most mileage out of your data and do some pretty amazing things in the process.&lt;/p>
&lt;/blockquote>
&lt;p>Really useful session - I am in the middle of an architecture spike for a reporting infrastructure based on CDS (and other sources) / Data Lake Gen2 / PowerBI.&lt;/p>
&lt;p>Lots of ideas, and interesting to see what could be done with Data Bricks around Machine Learning.&lt;/p>
&lt;h3 id="dataverse-for-teams">Dataverse for Teams&lt;/h3>
&lt;p>&lt;a href="https://www.linkedin.com/in/mattbeard7/?originalSubdomain=uk" target="_blank" rel="noopener">Matt Beard&lt;/a> /
&lt;a href="https://linked365.blog/" target="_blank" rel="noopener">Carl Cookson&lt;/a>&lt;/p>
&lt;p>Pre-event blurb:&lt;/p>
&lt;blockquote>
&lt;p>This session is to demonstrate what Dataverse for Teams actually is, how easy it is to set up and give some examples of what it could be used for.&lt;/p>
&lt;p>This is designed to be a demo type session where both presenters will be showing various components of Dataverse for Teams and how to use it.&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>Security - only 1 business unit&lt;/li>
&lt;li>No API - only access is via Power Automate - so no SSRS or Xrmtoolbox&lt;/li>
&lt;li>no data export&lt;/li>
&lt;li>2GB and 10^6 rows max per Team environment&lt;/li>
&lt;li>simple data types (no customer or currency)&lt;/li>
&lt;li>no rollup or caluclated fields&lt;/li>
&lt;li>Teams only&lt;/li>
&lt;li>no solutions&lt;/li>
&lt;li>UI is canvas only&lt;/li>
&lt;li>no video or mixed reality&lt;/li>
&lt;/ul>
&lt;p>Watch the video when it comes out for a walkthrough.&lt;/p>
&lt;p>I must admit I struggle to see a use case for this service in the absence of data export. At least when workgroups keep their key data in spreadsheets the data is accessible for later manipulation.&lt;/p>
&lt;h2 id="and-finally">And finally&amp;hellip;&lt;/h2>
&lt;p>Although I&amp;rsquo;m a little sceptical about how well some of these topics fit into the online meeting medium, that&amp;rsquo;s the only option right now. The User Group (which is independent of Microsoft) has always taken the position that it values usefulness and community over perfection, and this day illustrated that.&lt;/p>
&lt;p>As always a number of the people presenting are well known &amp;ldquo;faces&amp;rdquo; in the PowerPlatform world, but as always there are people who you had not previously head of. Everyone there (either presenting or not) has in common that we make a chunk of our living from using these powerful tools to help organisations work more effectively. The spirit of mutual learning is very strong in every meeting, and for that reason I will continue to make the time to attend.&lt;/p></description></item><item><title>Note-Making, the starting point</title><link>https://www.synesthesia.co.uk/2020/11/20/note-making-the-starting-point/</link><pubDate>Fri, 20 Nov 2020 10:12:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2020/11/20/note-making-the-starting-point/</guid><description>&lt;p>This post is part of my wider &lt;a href="https://www.synesthesia.co.uk/project/note-making-practice/">enquiry into my note-making practices&lt;/a>.&lt;/p>
&lt;p>In terms of setting a baseline for where I started (and some of the history) I think it&amp;rsquo;s useful to split this into &amp;ldquo;Practice&amp;rdquo; and &amp;ldquo;Tools&amp;rdquo;.&lt;/p>
&lt;h2 id="practice">Practice&lt;/h2>
&lt;p>In my work sphere, although I write a considerable volume, it it is always withn the context of work-based collaboration. So for example position papers, agendas and meeting notes tend to be organised within the shared storage for the relevant working groups or projects. Technical architecture design notes and technical or process documentation tend to be filed in the shared spaces where the work is carried out, and so on.&lt;/p>
&lt;p>Personal working notes tend to be very sporadic - historically I&amp;rsquo;ve tended to keep a rough daily log of any key accomplishments, key points from conversations, issues to raise later, but not in a systematic way. Historically I write very little in terms of explicit knowledge capture - a mixture of tacit knowledge and a faith in a combination of internet search and link-tagging in Diigo have been the mainstay of my day-to-day work.&lt;/p>
&lt;p>Outside of work, or for areas of practice where I feel able to document things publicly, I have maintained this blog for nearly two decades as a &lt;a href="https://garden.synesthesia.co.uk/stream-mode" target="_blank" rel="noopener">Stream mode&lt;/a> note system. Alongside that I have &lt;a href="https://www.synesthesia.co.uk/2004/09/20/how-blog-and-wiki-fit-together-for-me/">long felt the need&lt;/a> for notes which are more &lt;a href="https://garden.synesthesia.co.uk/state-mode" target="_blank" rel="noopener">state mode&lt;/a> but have never had a clear and consistent practice for working with them.&lt;/p>
&lt;p>More recently I have become aware of more structured ways to use and &lt;a href="https://www.synesthesia.co.uk/2020/05/11/how-to-take-smart-notes/">write effective notes&lt;/a> such as &lt;a href="https://zettelkasten.de/" target="_blank" rel="noopener">Zettelkasten&lt;/a>, &lt;a href="https://andymatuschak.org/" target="_blank" rel="noopener">Andy Matuschak&amp;rsquo;s&lt;/a> &lt;a href="https://notes.andymatuschak.org/zVFGpprS64TzmKGNzGxq9FiCDnAnCPwRU5T" target="_blank" rel="noopener">note-taking approach&lt;/a> and the increasingly ubiquitous &lt;a href="https://www.synesthesia.co.uk/2020/05/18/weekend-gardens/">digital gardens&lt;/a>.&lt;/p>
&lt;h2 id="tools">Tools&lt;/h2>
&lt;p>In the work environment, the ubiquitous tools are the Microsoft Office suite. Even work product that gets created in specialist tools (such as UML modelling) nearly always ends up in some kind of Office file to support collaboration. Personal workplace notes such as any kind of work journal have historically spread over a variety of media including paper notebooks and my current preference, Microsoft OneNote.&lt;/p>
&lt;p>For personal note-making, the ubiquitous personal tool is of course the smartphone, for everything from shopping lists upwards. One of the key technical goals from the changes I am making is to enable me to add to any note-system from a mobile device.&lt;/p>
&lt;p>Blogging &lt;a href="https://www.synesthesia.co.uk/2001/09/22/how-the-mind-works/">started&lt;/a> on &lt;a href="https://www.movabletype.org/" target="_blank" rel="noopener">Moveable Type&lt;/a> in 2001, moved to WordPress in about 2004, and stayed on that platform across various hosts until the 2019 &lt;a href="https://www.synesthesia.co.uk/project/wp-to-hugo/">migraton to Hugo&lt;/a>.&lt;/p>
&lt;p>Alongside the blog I have used a variety of tools as a &lt;a href="https://en.wikipedia.org/wiki/Personal_wiki" target="_blank" rel="noopener">personal wiki&lt;/a>, starting in 2003 with some now-unknown software, then moving &lt;a href="https://www.synesthesia.co.uk/2003/01/30/testing-wiki-interface/">the same year&lt;/a> to &lt;a href="http://doc.tiki.org/Wiki" target="_blank" rel="noopener">TikiWiki&lt;/a>. I infer from old posts that something else came next, then I &lt;a href="https://www.synesthesia.co.uk/2007/08/10/site-changes-wikis/">moved&lt;/a> to &lt;a href="https://wikkawiki.org/HomePage" target="_blank" rel="noopener">WikkaWiki&lt;/a> in 2007. That lasted until I started &lt;a href="https://www.synesthesia.co.uk/2016/02/02/federated-wiki/">playing with Smallest Federated Wiki&lt;/a> from 2016.&lt;/p>
&lt;h2 id="points-of-friction">Points of friction&lt;/h2>
&lt;p>From a purely technical point of view the main difference between the &amp;ldquo;old way&amp;rdquo; and the &amp;ldquo;new way&amp;rdquo; is the switch from database-backed websites to plain text files, with optional publishing to static websites. The key that unlocks progress is to separate the writing context from the publishing context.&lt;/p>
&lt;p>The blog made this change last year when I switched to Hugo, as I have started to look at better note-making methods it seems a good idea to look at a similar switch for my main notes.&lt;/p>
&lt;p>The experiment with Federated Wiki has been useful, and it is potentially a very effective way of taking notes - Mike Caulfield has perhaps the &lt;a href="https://hapgood.us/tag/federated-wiki/" target="_blank" rel="noopener">best series of posts about how to use it&lt;/a>. However I found that the following issues became limiting factors:&lt;/p>
&lt;ul>
&lt;li>paragraph-oriented drag and drop&lt;/li>
&lt;li>lack of backlinks&lt;/li>
&lt;li>lack of easy graphical visualisation (although there are some graphvis plugins)&lt;/li>
&lt;/ul>
&lt;p>The second area of friction is the disconnect between personal and work-personal note-taking systems. &lt;em>(I exclude work product which is to be shared as that will need to stay in the right system for colleagues - this is about personal notes)&lt;/em>&lt;/p>
&lt;p>Not only is this a technical friction but also a process restriction - during any given day one switches between &amp;ldquo;personal&amp;rdquo; and &amp;ldquo;work&amp;rdquo; mode frequently, and knowledge itself is not bounded in that way.&lt;/p>
&lt;h2 id="next-steps">Next steps&lt;/h2>
&lt;p>The obvious place to start in terms of my personal content is to continue the move to plain text files that I started with the move from Wordpress to Hugo, and extend that to how I write and edit notes.&lt;/p>
&lt;p>The other area that requires attention to is to build working practices that combine the organisation of work with the capture and refinement of knowledge artifacts.&lt;/p></description></item><item><title>Note-Making Goals</title><link>https://www.synesthesia.co.uk/2020/11/20/note-making-goals/</link><pubDate>Fri, 20 Nov 2020 09:29:48 +0000</pubDate><guid>https://www.synesthesia.co.uk/2020/11/20/note-making-goals/</guid><description>&lt;p>This post is part of my wider &lt;a href="https://www.synesthesia.co.uk/project/note-making-practice/">enquiry into my note-making practices&lt;/a>.&lt;/p>
&lt;h2 id="why-do-i-make-notes">Why do I make notes?&lt;/h2>
&lt;p>One of those questions that seems ridiculously simple on first look, but which pull out more depth as you sit on it for a while.&lt;/p>
&lt;h3 id="recording-and-planning-action">Recording and planning action&lt;/h3>
&lt;ul>
&lt;li>What did I do?&lt;/li>
&lt;li>What have I got to do tomorrow / next month / next quarter?&lt;/li>
&lt;li>What is the plan for any of those future things?&lt;/li>
&lt;/ul>
&lt;h3 id="recording-knowledge">Recording knowledge&lt;/h3>
&lt;ul>
&lt;li>what do I need to remember in order to do this task or project?&lt;/li>
&lt;li>what did I find out?&lt;/li>
&lt;li>who else has something useful to say on this topic?&lt;/li>
&lt;li>what questions are unanswered?&lt;/li>
&lt;/ul>
&lt;h3 id="developing-thought">Developing thought&lt;/h3>
&lt;ul>
&lt;li>what are the possible courses of action?&lt;/li>
&lt;li>what do I think I &lt;em>should&lt;/em> do?&lt;/li>
&lt;li>what are the implications of what I have discovered?&lt;/li>
&lt;/ul>
&lt;h2 id="what-do-i-want-to-improve">What do I want to improve&lt;/h2>
&lt;p>When I considered my own note-making practice I observed that it was mostly short-term, and mostly task-focused. In other words keep just enough records to remember key conversations and decisions, and record just enough knowledge to &lt;strong>satisfice&lt;/strong> for the task in hand. Often those task-focused notes are nothing more than a series of links to relevant online resources.&lt;/p>
&lt;p>In terms of longer-term notes, although I have access to plenty of tools, I found I wasn&amp;rsquo;t using them very much. In particular I noticed that for much of my professional activity I was relying on tacit knowledge, and that my use of explicit tools was somewhat constrained to my &amp;ldquo;hobby&amp;rdquo; activities.&lt;/p>
&lt;p>In part that seems to be about how I manage the perennial balancing act of what I can discuss in public and what is proprietary to my employer. That barrier was in turn reflected in a disconnect of tooling - the more usable tools were the ones I have associated with my public discourse (such as this!).&lt;/p>
&lt;p>I had no over-arching model of practice for my note-making practices which might serve as a scaffolding for improvement.&lt;/p>
&lt;h2 id="goals-for-the-process">Goals for the process&lt;/h2>
&lt;ul>
&lt;li>Develop a frame of practice that can guide my note-making.&lt;/li>
&lt;li>Integrate note-making for knowledge management and note-making for work planning into a single approach&lt;/li>
&lt;li>Harmonise my practices across personal and professional spheres to reduce friction, whilst maintaining appropriate separation of public and confidential notes.&lt;/li>
&lt;li>Simplify (or at least harmonise) the tool-sets I use&lt;/li>
&lt;/ul></description></item><item><title>Note-Making Practice</title><link>https://www.synesthesia.co.uk/project/note-making-practice/</link><pubDate>Fri, 20 Nov 2020 08:31:02 +0000</pubDate><guid>https://www.synesthesia.co.uk/project/note-making-practice/</guid><description>&lt;p>Most of us take notes as some part of our life, either personal or professional.&lt;/p>
&lt;p>Since the summer and autumn of 2020, and now into the spring of 2021, I have been reviewing my note-taking practices (and the technology that supports them) with the goal of reducing friction and giving myself a framework for higher-order learning.&lt;/p>
&lt;p>This project note serves both documentation, by providing a place to structure how I plan to write about my experiments, and later reflection, by providing a central point to index the relevant notes.&lt;/p>
&lt;p>The areas I want to cover are:&lt;/p>
&lt;ul>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> my note-making goals&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> the starting point&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> new tools for note-making&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> reinventing my note-making practice&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> where next&lt;/li>
&lt;/ul></description></item><item><title>Tagging Choice as Expression of Distance</title><link>https://www.synesthesia.co.uk/2020/11/19/tagging-choice-as-expression-of-distance/</link><pubDate>Thu, 19 Nov 2020 07:41:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/2020/11/19/tagging-choice-as-expression-of-distance/</guid><description>&lt;p>How does our choice of words in a &lt;a href="https://en.wikipedia.org/wiki/Folksonomy" target="_blank" rel="noopener">folksonomy&lt;/a> demonstrate our world view?&lt;/p>
&lt;p>In &lt;a href="https://www.zylstra.org/blog/2020/10/new-emergent-tagging-practice/" target="_blank" rel="noopener">New Emergent Tagging Practice&lt;/a>, &lt;a href="https://www.zylstra.org/blog/about-me/" target="_blank" rel="noopener">Ton Zjilstra&lt;/a> writes:&lt;/p>
&lt;blockquote>
&lt;p>The way I look at other people’s tags is how their use of different words than mine for the same things is an expression of socio-professional distance. Others likely will be using their own jargon for things, and the more different that is, the more likely you are part of a different community than the circles I operate in. This lets me &lt;a href="https://www.zylstra.org/blog/2006/07/social_software/" target="_blank" rel="noopener">use tags as a pivot to find other people&lt;/a> and communities of interest and connected to my own current interest&lt;/p>
&lt;/blockquote>
&lt;p>Ton goes on to note that &amp;ldquo;the other&amp;rdquo; might be his own past or future self:&lt;/p>
&lt;blockquote>
&lt;p>With the new tagging practice, adding tags to a note over time based on how/why I found that note will allow me to see how my own language evolves. This leads I think to a similar measure of socio-professional distance, but now between my past, current and future selves&lt;/p>
&lt;/blockquote>
&lt;h2 id="questions">Questions&lt;/h2>
&lt;ul>
&lt;li>what research is there into how choice of language is sensitive to context, education and experience (rabbit hole!)&lt;/li>
&lt;li>are there any studies that show how use of language changes over a lifetime?&lt;/li>
&lt;/ul></description></item><item><title>Taking Stock</title><link>https://www.synesthesia.co.uk/2020/11/13/taking-stock/</link><pubDate>Fri, 13 Nov 2020 06:25:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2020/11/13/taking-stock/</guid><description>&lt;p>You would be forgiven for thinking that I had given up on writing anything.&lt;/p>
&lt;p>Far from it, I&amp;rsquo;m busier than ever, but as a consequence find little time for writing here. In the UK we are in the midst of the second Covid lockdown, and yesterday over 33,000 daily cases were reported - the highest to date. Prospects for lockdown lifting on the 2nd of December look slim, and if this government goes ahead anyway, it must surely be at the price of a further resurgence of the virus.&lt;/p>
&lt;p>I still enjoy working from home every day, but I find I have to keep reminding myself to set boundaries around the working time and not allow the work to entirely take over my life. There&amp;rsquo;s a lot to do, and like many who are fortunate enough to still have a job, it&amp;rsquo;s busier than ever.&lt;/p>
&lt;p>My work has always been a mixture of strategic thinking with senior colleagues and then hands-on creation of systems with a small team, part of the benefit of working in a small company. The circumstances of the last 8 months have merely increased that dichotomy - the strategic decisions have become more significant as we adapt, and the amount of technical change has grown.&lt;/p>
&lt;p>I miss foreign travel - this morning my wife and I were talking about how long it seems since we were in a place where no-one else spoke in English as a first language, and where the food was different. Even when Covid is under control, travel will be different thanks to the almost inevitable no-deal end to Brexit transition in 49 days. And it&amp;rsquo;s 4 more years until another election.&lt;/p>
&lt;p>When I have been writing it&amp;rsquo;s been more in my notes. I&amp;rsquo;ve been slowly making some changes that I really should write up in this site:&lt;/p>
&lt;ul>
&lt;li>starting a move to file-based notes stored locally and selectively published on the web (continuing the trend I started when I moved this blog from WordPress to Hugo)&lt;/li>
&lt;li>migrating my federated wiki content into that notes system&lt;/li>
&lt;li>experimenting with bringing my work-day notes into a text-based system too: to reduce the friction inherent in swapping between a OneNote approach and markdown&lt;/li>
&lt;li>the continual struggle to focus on core PKM disicplines when &amp;ldquo;just learning enough for the immediate challenge&amp;rdquo; is my perennial Achilles&amp;rsquo; Heel.&lt;/li>
&lt;/ul>
&lt;p>So there&amp;rsquo;s a few hints for posts to come.&lt;/p>
&lt;p>To end this, I took some inspiration to break the silence from Matt Webb&amp;rsquo;s &lt;a href="http://interconnected.org/home/2020/09/10/streak" target="_blank" rel="noopener">15 rules for blogging&lt;/a>.&lt;/p></description></item><item><title>The Agility Gap</title><link>https://www.synesthesia.co.uk/note/2020/09/11/the-agility-gap/</link><pubDate>Fri, 11 Sep 2020 13:07:31 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/09/11/the-agility-gap/</guid><description>&lt;p>Some quick notes on &lt;em>&amp;ldquo;The Strategic Agility Gap&amp;rdquo;&lt;/em> by &lt;a href="https://ise.osu.edu/people/woods.2" target="_blank" rel="noopener">David Woods&lt;/a>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;h2 id="summary">Summary&lt;/h2>
&lt;p>The growth of new technologies and new levels of has led to new organisational capabilities. With these new capabilities has come greater levels of complexity and inter-dependence, which in turn lead to unpredicted and unpredictable areas of brittleness / lack of resilience.&lt;/p>
&lt;p>Combine these factors with an increasingly complex world and there can be unpredicted failures and outages. Examples include the impact of ransomware such as Wannacry.&lt;/p>
&lt;p>Coins phrase &lt;em>strategic agility gap&lt;/em> to describe the difference at which an organisation adapts / can adapt to change and the rise of new and unexpected challenges at larger scale.&lt;/p>
&lt;h2 id="exponential-growth-of-problems">Exponential growth of problems&lt;/h2>
&lt;p>Generally organisations are faster to adapt new capabilities than they are to adapt to the risks those capabilities bring e.g. reliance on automated trading and examples of exponential failure: &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/p>
&lt;ul>
&lt;li>small problems interact and cascade in surprising ways&lt;/li>
&lt;li>speed and complexity overwhelms human ability to diagnose the issue&lt;/li>
&lt;li>delays in authorisation to make changes can compound delays&lt;/li>
&lt;li>delays and need for co-ordination have compounding impact&lt;/li>
&lt;li>organisation structures can slow responses to the point where they cannot keep up&lt;/li>
&lt;/ul>
&lt;h2 id="examples-of-success">Examples of success&lt;/h2>
&lt;p>Counter-examples of organisations that have prepared to deal with unpredicatble events, e.g. extreme weather. &lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>&lt;/p>
&lt;ul>
&lt;li>re-prioritisation against conflicting goals&lt;/li>
&lt;li>understand which processes (e.g. cost control) can and must be set aside to deal with imminent threats&lt;/li>
&lt;li>place a value on timely decision-making&lt;/li>
&lt;li>embed horizontal co-ordination with minimal bureaucracy&lt;/li>
&lt;li>enable decisions at lowest possible level of hierarchy&lt;/li>
&lt;/ul>
&lt;h2 id="managing-the-messiness-of-systems">Managing the messiness of systems&lt;/h2>
&lt;p>Systems are messy. Finite resources contrast with a changing environment, therefore all plans are inherently unable to adapt to all possible circumstances.&lt;/p>
&lt;p>Organisations as adaptive systems. Success and growth from adopting new capabilities accelerates the further adoption of those or enhanced capabilities. As a consequence the complexity grows, and therefore the gamut of possible issues grows so the strategic ability gap is unavoidable.&lt;/p>
&lt;p>To manage these scenarios organisations must develop capabilities to continuously adapt.&lt;/p>
&lt;p>Key factors identified:&lt;/p>
&lt;ul>
&lt;li>encourage initiative but ensure the results of initiative are synchronised across roles - need a balance&lt;/li>
&lt;li>stimulate and recognise/reward reciprocity&lt;sup id="fnref:4">&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref">4&lt;/a>&lt;/sup> between different organisation units (e.g. commitment to mutual assistance). Know when to relax targets or compliance requirements in the interests of the wider organisation.&lt;/li>
&lt;li>recognise that unpleasant surprises are an opportunity to learn&lt;/li>
&lt;li>proactively learn from those nasty surprises and adapt systems, procedures &amp;amp; practices, training etc.&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Woods, David. (2018). The Strategic Agility Gap: How Organizations Are Slow and Stale to Adapt in Turbulent Worlds. 10.1007/978-3-030-25639-5_11. &lt;a href="https://www.researchgate.net/publication/330196218_The_Strategic_Agility_Gap_How_Organizations_Are_Slow_and_Stale_to_Adapt_in_Turbulent_Worlds" target="_blank" rel="noopener">source&lt;/a> | &lt;a href="https://www.zotero.org/julianelve/collections/AANLG2WW/items/JN5YK2HK/collection" target="_blank" rel="noopener">Zotero&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://dougseven.com/2014/04/17/knightmare-a-devops-cautionary-tale/" target="_blank" rel="noopener">Knightmare: A DevOps Cautionary Tale (Knight Capital Group Failure)&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>Deary, D. S., Walker, K. E. &amp;amp; Woods, D. D. (2013). &lt;a href="https://doi.org/10.1177/1541931213571072" target="_blank" rel="noopener">Resilience in the Face of a Superstorm: A Transportation Firm Confronts Hurricane Sandy.&lt;/a> In Proceedings of the Human Factors and Ergonomics Society, 57th Annual Meeting (pp. 329-333). Santa Monica, CA: Human Factors and Ergonomics Society&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:4">
&lt;p>Ostrom, E. (2003). Toward a Behavioral Theory Linking Trust, Reciprocity, and Reputation. In E. Ostrom &amp;amp; J. Walker (Eds.), Trust and Reciprocity: Interdisciplinary Lessons from Experimental Research. Russell Sage Foundation, NY.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Antora Local Authoring</title><link>https://www.synesthesia.co.uk/note/2020/09/03/antora-local-authoring/</link><pubDate>Thu, 03 Sep 2020 12:32:31 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/09/03/antora-local-authoring/</guid><description>&lt;h2 id="writing-content-for-your-antora-site">Writing content for your Antora site&lt;/h2>
&lt;p>In &lt;a href="https://www.synesthesia.co.uk/note/2020/09/03/antora-publishing/">the note about publishing&lt;/a> I described how the final published site gets built.&lt;/p>
&lt;p>However in reality you will want to preview your work locally before you push to the published site.&lt;/p>
&lt;p>Antora supports an &lt;a href="https://docs.antora.org/antora/2.3/playbook/author-mode/" target="_blank" rel="noopener">author mode&lt;/a> of working where it builds a site based on local clone(s) of the content project(s) (as opposed to fetching a specified branch or tag from the published repository/repositories at build time.)&lt;/p>
&lt;p>A gulp script is available to produce a local version of the website that rebuilds each time the content is updated.&lt;/p>
&lt;h2 id="configuring-author-mode-in-a-project">Configuring author mode in a project&lt;/h2>
&lt;p>If you are working with an existing documentation project this step will have been done, but it&amp;rsquo;s useful to know how to configure.&lt;/p>
&lt;ol>
&lt;li>install gulp globally
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&amp;gt;~/ $ npm install -g gulp-cli
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>install the dependencies in the root of your publishing project
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&amp;gt;~/ $ npm install --save-dev antora-site-generator-lunr gulp-connect js-yaml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>add &lt;code>gulpfile.js&lt;/code> from this gist in the root of your publishing project
&lt;script src="https://gist.github.com/synesthesia/b2d11154bebb29b1e670fc03c40692bd.js">&lt;/script>
&lt;/li>
&lt;li>create a &lt;code>./workspace&lt;/code> folder and add to &lt;code>.gitignore&lt;/code>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&amp;gt;~/ $ mkdir workspace
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt;~/ $ cat &lt;span class="s1">&amp;#39;workspace/&amp;#39;&lt;/span> &amp;gt;&amp;gt; .gitignore
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>create a local version of the playbook as &lt;code>local-antora-playbook.yml&lt;/code> similar to this gist &lt;em>obviously edit the content sources will match your project&lt;/em>
&lt;script src="https://gist.github.com/synesthesia/5c3cbf35beff0b3e77c2467bac963e81.js">&lt;/script>
&lt;/li>
&lt;li>make local clones of your content projects into the correct directories under &lt;code>./workspace&lt;/code>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&amp;gt;~/ $ git clone git@github.com:myaccount/mycontentproject.git workspace/mycontentproject
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ol>
&lt;h2 id="editing-content-in-author-mode">Editing content in author mode&lt;/h2>
&lt;ol>
&lt;li>make sure you have latest version of your content and open an editor (e.g. VS Code)&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&amp;gt;~/ $ &lt;span class="nb">cd&lt;/span> workspace/mycontentproject
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt;workspace/mycontentproject/ $ git pull origin master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt;workspace/mycontentproject/ $ code .
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt;workspace/mycontentproject/ $ &lt;span class="nb">cd&lt;/span> ../..
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>run the previewer&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&amp;gt;~/ $ gulp
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="3">
&lt;li>access the preview at &lt;code>https://localhost:5000&lt;/code>&lt;/li>
&lt;li>edit the content, refresh the browser to see changes&lt;/li>
&lt;/ol>
&lt;h2 id="pushing-changes">Pushing changes&lt;/h2>
&lt;ol>
&lt;li>stop the previewer&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&amp;gt;~/ $ Ctrl-C
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>commit and push
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&amp;gt;~/ $ &lt;span class="nb">cd&lt;/span> workspace/mycontentproject
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt;workspace/mycontentproject/ $ git add -A &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> git commit -m&lt;span class="s2">&amp;#34;My lovely commit message&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;gt;workspace/mycontentproject/ $ git push
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>wait for the CI build and deployment to finish&lt;/li>
&lt;/ol>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>this assumes you have direct access to the content. In a more complex environment you may need to work with forks of the content repositories and submit changes via pull request.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Antora Publishing</title><link>https://www.synesthesia.co.uk/note/2020/09/03/antora-publishing/</link><pubDate>Thu, 03 Sep 2020 11:34:13 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/09/03/antora-publishing/</guid><description>&lt;h2 id="background">Background&lt;/h2>
&lt;p>As noted in &lt;a href="https://www.synesthesia.co.uk/note/2020/09/03/antora-basics/">Antora basics&lt;/a> the Antora build pipeline generates a static website bundle in &lt;code>./build/site&lt;/code>.&lt;/p>
&lt;p>Although it is possible to manually upload the contents of that directory to any webserver, in a real project we want to have automated publishing triggered by pushing changes to either the &lt;strong>playbook project&lt;/strong> or any of the &lt;strong>content root&lt;/strong> repositories.&lt;/p>
&lt;h2 id="publishing-destinations">Publishing destinations&lt;/h2>
&lt;p>In our real world project we set up a total of three websites - one for our customers, and two restricted sites for internal staff documentation.&lt;/p>
&lt;p>The public site is hosted on &lt;a href="https://www.net" target="_blank" rel="noopener">Netlify&lt;/a>, and the two internal sites hosted on &lt;a href="https://docs.microsoft.com/en-gb/azure/app-service/overview" target="_blank" rel="noopener">Azure App Service&lt;/a> with &lt;a href="https://docs.microsoft.com/en-gb/azure/app-service/overview-authentication-authorization" target="_blank" rel="noopener">authentication&lt;/a> switched on - to visit those sites you have to authenticate with our Azure Active Directory.&lt;/p>
&lt;h2 id="continuous-deployment">Continuous deployment&lt;/h2>
&lt;p>All of our sites are published automatically whenever changes to either the &lt;strong>playbook project&lt;/strong> or any of the relevant &lt;strong>content root&lt;/strong> repositories are pushed to GitHub.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Change&lt;/th>
&lt;th>Site type&lt;/th>
&lt;th>Hosting&lt;/th>
&lt;th>Build engine&lt;/th>
&lt;th>Trigger&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Playbook project&lt;/td>
&lt;td>Public&lt;/td>
&lt;td>Netlify&lt;/td>
&lt;td>Netlify&lt;/td>
&lt;td>Automatic build triggered by GitHub push&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Playbook project&lt;/td>
&lt;td>Restricted&lt;/td>
&lt;td>Azure&lt;/td>
&lt;td>Azure DevOps&lt;/td>
&lt;td>Automatic build triggered by GitHub push&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Content roots&lt;/td>
&lt;td>Public&lt;/td>
&lt;td>Netlify&lt;/td>
&lt;td>Netlify&lt;/td>
&lt;td>GitHub action fires build of associated playbook project via netlify webhook&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Content roots&lt;/td>
&lt;td>Restricted&lt;/td>
&lt;td>Azure&lt;/td>
&lt;td>Azure Devops&lt;/td>
&lt;td>GitHub action fires build of associated playbook project via Azure DevOps API&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="netlify">Netlify&lt;/h3>
&lt;ol>
&lt;li>Ensure &lt;strong>playbook project&lt;/strong> is connected to Netlify&lt;/li>
&lt;li>In &lt;strong>playbook project&lt;/strong> add &lt;code>build-site.sh&lt;/code> &lt;em>(includes addition of search)&lt;/em>:
&lt;script src="https://gist.github.com/synesthesia/83cdf8ad1b9e1a432ce5ddc753b49a2a.js">&lt;/script>
&lt;/li>
&lt;li>In &lt;strong>playbook project&lt;/strong> add &lt;code>netlify.toml&lt;/code>:
&lt;script src="https://gist.github.com/synesthesia/13aae1e92221cc3156fd3c84b2c2ffa9.js">&lt;/script>
&lt;/li>
&lt;li>Log in to Netlify, create a webhook for the &lt;strong>playbook project&lt;/strong>&lt;/li>
&lt;li>In GitHub create an account-level or organisation-level secret called &lt;code>NETLIFY_HOOK_DOCS_PUBLIC&lt;/code> with the value set to the URL of the webhook created in step 1&lt;/li>
&lt;li>In GitHub add the secret to each &lt;strong>content project&lt;/strong> that contains public docs&lt;/li>
&lt;li>In each &lt;strong>content project&lt;/strong> create a GitHub action in &lt;code>./.github/workflows/build-public.yml&lt;/code> that looks like this (we assume content root is always under &lt;code>./public&lt;/code>, edit to suit your setup):&lt;/li>
&lt;/ol>
&lt;script src="https://gist.github.com/synesthesia/5ff026194c1cf75c9ee1c325a79da02e.js">&lt;/script>
&lt;h3 id="azure-app-service--azure-devops">Azure App Service / Azure Devops&lt;/h3>
&lt;ol>
&lt;li>Create a connection in Azure Devops to the relevant Azure subscription&lt;/li>
&lt;li>In the &lt;strong>playbook project&lt;/strong> add &lt;code>./azure-pipelines.yml&lt;/code> as per the gist below (edit values for Azure subscription and website)
&lt;script src="https://gist.github.com/synesthesia/ecb1a4228b954412671753c997bf1e3b.js">&lt;/script>
&lt;/li>
&lt;li>Connect the playbook project to Azure Devops and configure a pipeline based on the &lt;code>./azure-pipelines.yml&lt;/code> file&lt;/li>
&lt;li>Login to Azure Devops and create a &lt;a href="https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&amp;amp;tabs=preview-page" target="_blank" rel="noopener">Personal Access Token&lt;/a>&lt;/li>
&lt;li>In GitHub create an account-level or organisation-level secret called &lt;code>AZURE_DEVOPS_TOKEN&lt;/code> with the value set to the token created in the previous step&lt;/li>
&lt;li>In GitHub add the secret to each &lt;strong>content project&lt;/strong> that contains docs used in this project&lt;/li>
&lt;li>In each &lt;strong>content project&lt;/strong> add a GitHub action in &lt;code>./.github/workflows/build-azure.yml&lt;/code> that looks like the gist below (the version shown assumes content in the &lt;code>./staff&lt;/code> folder, edit to suit your setup )
&lt;script src="https://gist.github.com/synesthesia/0bc37702968ec3752693f7b5ada3500f.js">&lt;/script>
&lt;/li>
&lt;/ol></description></item><item><title>Antora Basics</title><link>https://www.synesthesia.co.uk/note/2020/09/03/antora-basics/</link><pubDate>Thu, 03 Sep 2020 08:33:20 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/09/03/antora-basics/</guid><description>&lt;h2 id="context">Context&lt;/h2>
&lt;p>One of the many tools that has emerged in the &lt;a href="https://www.synesthesia.co.uk/note/2020/09/03/documents-as-code/">documents as code&lt;/a> space is &lt;a href="https://antora.org" target="_blank" rel="noopener">Antora&lt;/a>. Antora is aimed squarely at the production of technical documentation websites with the following features:&lt;/p>
&lt;ul>
&lt;li>source documents written in &lt;a href="https://asciidoctor.org/docs/what-is-asciidoc/" target="_blank" rel="noopener">AsciiDoc&lt;/a>&lt;/li>
&lt;li>integrates with multiple Git repositories&lt;/li>
&lt;li>support for versioning and branching&lt;/li>
&lt;li>generates a static website bundle that can be deployed anywhere using standard techniques&lt;/li>
&lt;/ul>
&lt;h2 id="install-tools">Install tools&lt;/h2>
&lt;ol>
&lt;li>Ensure you have &lt;a href="https://git-scm.com/" target="_blank" rel="noopener">git&lt;/a> installed on your workstation&lt;/li>
&lt;li>If you haven&amp;rsquo;t previously created an SSH key for use with version control, &lt;a href="https://docs.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent" target="_blank" rel="noopener">do so now&lt;/a>&lt;/li>
&lt;li>Create an account on &lt;a href="https://github.com/join" target="_blank" rel="noopener">GitHub&lt;/a> (if you haven&amp;rsquo;t already got one) and &lt;a href="https://docs.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account" target="_blank" rel="noopener">add your SSH public key&lt;/a>&lt;/li>
&lt;li>Install the code editor of your choice, e.g. &lt;a href="https://code.visualstudio.com/" target="_blank" rel="noopener">Visual Studio Code&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://docs.antora.org/antora/2.3/install-and-run-quickstart/" target="_blank" rel="noopener">Install Antora, run the quickstart&lt;/a>&lt;/li>
&lt;/ol>
&lt;p>&lt;em>NB all command line examples assume you are running in the Git Bash terminal&lt;/em>&lt;/p>
&lt;h2 id="planning-out-repositories">Planning out repositories&lt;/h2>
&lt;p>At a bare minimum an Antora-based site needs two code repositories set up&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>:&lt;/p>
&lt;ul>
&lt;li>the publishing repository&lt;/li>
&lt;li>at least one content repository&lt;/li>
&lt;/ul>
&lt;h3 id="publishing-repository">Publishing repository&lt;/h3>
&lt;p>The publishing repository (aka playbook project) contains configuration information for the entire set of documentation (it may also include code to publish the resulting site to a web server, that will be covered later).&lt;/p>
&lt;p>At a minimum the playbook project contains an &lt;a href="https://docs.antora.org/antora/2.3/playbook/set-up-playbook/" target="_blank" rel="noopener">Antora Playbook&lt;/a> file.&lt;/p>
&lt;p>Example Antora Playbook&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">site&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">My Demo Site&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">https://docs.demo.com&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">start_page&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">component-b::index.adoc&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">content&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">sources&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">https://gitlab.com/antora/demo/demo-component-a.git&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">https://gitlab.com/antora/demo/demo-component-b.git&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">branches&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="l">v2.0, v1.0]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">start_path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">docs&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">ui&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">bundle&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/master/raw/build/ui-bundle.zip?job=bundle-stable&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">snapshot&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="content-repository">Content repository&lt;/h3>
&lt;p>Each content repository must contain at least one content root.&lt;/p>
&lt;p>A content root consists of a directory with a specific set of files and sub-directories, the minimum is:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">contentroot/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> antora.yml
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> modules/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ROOT/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> nav.adoc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> pages/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> index.adoc
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The content of the minimum files are as follows:&lt;/p>
&lt;h4 id="component-version-descriptor-antorayml">Component Version Descriptor (antora.yml)&lt;/h4>
&lt;p>The &lt;a href="https://docs.antora.org/antora/2.3/component-version-descriptor/" target="_blank" rel="noopener">antora.yml&lt;/a> file tells Antora that a directory contains a content root, and includes the required and optional component version metadata that Antora assigns to the source files it collects from the standard directories located in the modules folder.&lt;/p>
&lt;p>Example antora.yml:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">docmetatech&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Technical documentation overview&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;1.0&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">nav&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="l">modules/ROOT/nav.adoc&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="navigation-files">Navigation files&lt;/h4>
&lt;p>Each content root must contain one or more navigation files within the module directories. These are listed in the &lt;a href="https://docs.antora.org/antora/2.3/component-navigation/" target="_blank" rel="noopener">navigation configuration&lt;/a> section of the &lt;strong>antora.yml&lt;/strong> file&lt;/p>
&lt;p>A navigation file is a simple Asciidoc file containing an unordered list of cross references to pages which should be linked from the navigation, for example:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">* xref:index.adoc[Introduction]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="page-files">Page files&lt;/h4>
&lt;p>Page files are asciidoc files within the &lt;code>pages&lt;/code> subdirectory of each module, for example&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">= Introduction to our documentation
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1. first
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1. second
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">And another list
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">* blah
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">* blah
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Other forms of content (e.g. images) can be added by adding them to other special directories within the content root - see &lt;a href="https://docs.antora.org/antora/2.3/standard-directories/" target="_blank" rel="noopener">Standard File and Directory set&lt;/a>.&lt;/p>
&lt;h2 id="building-the-site">Building the site&lt;/h2>
&lt;p>Make sure you have committed some content in your content repository and pushed it up to the version control server (e.g. GitHub).&lt;/p>
&lt;p>In the root of the playbook project run:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">antora --fetch antora-playbook.yml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;em>( the &amp;ndash;fetch parameter tells Antora to always fetch the latest version of the content repositories - slower but guarantees latest content )&lt;/em>&lt;/p>
&lt;p>The resulting site should be generated in &lt;code>./build/site&lt;/code>&lt;/p>
&lt;p>The contents of that directory could be manually uploaded to a webserver to make visible (obviously in a real case we would set up some form of Continuous Delivery pipeline - see a later post).&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>technically you could put document source &lt;em>content roots&lt;/em> in your publishing repository, in order to work with just one repository, but Antora advise against this in order to maintain a separation of concerns between authoring and publishing.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Documents as Code</title><link>https://www.synesthesia.co.uk/note/2020/09/03/documents-as-code/</link><pubDate>Thu, 03 Sep 2020 07:00:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/09/03/documents-as-code/</guid><description>&lt;h2 id="the-problem">The problem&lt;/h2>
&lt;p>Technical documentation is often seen as a problem. Everyone needs it, everyone complains if it isn&amp;rsquo;t there, no-one wants to write it.&lt;/p>
&lt;p>The problem escalates when you rely on more than one application, a truism in corporate life. Not only do you need documentation about applications, but even if you only use software produced by other people, you still need documentation about how those applications interact in your unique setup.&lt;/p>
&lt;p>Add the challenge of different audiences (e.g. technical staff, internal users, external users) and the chances of ending up with a &lt;a href="https://en.m.wikipedia.org/wiki/Lernaean_Hydra" target="_blank" rel="noopener">hydra&lt;/a> are near to certain.&lt;/p>
&lt;h2 id="managing-the-beast">Managing the beast&lt;/h2>
&lt;p>Historically there has been a huge market in specialist tools to support documentation requirements, inevitably in themselves often vastly complex (and expensive) applications.&lt;/p>
&lt;p>Whilst there will always be specialist domains such as aerospace where complex applications are needed to manage the version control and auditability requirements, in many places such things are overkill.&lt;/p>
&lt;h2 id="documents-as-code">Documents as Code&lt;/h2>
&lt;p>Over the last decade a movement has been growing alongside the changes in software development that promotes the concept of treating &lt;a href="https://www.writethedocs.org/guide/docs-as-code/" target="_blank" rel="noopener">Documents as Code&lt;/a>:&lt;/p>
&lt;ul>
&lt;li>write document source using simple text editors, with markup (such as &lt;a href="https://en.wikipedia.org/wiki/Markdown" target="_blank" rel="noopener">Markdown&lt;/a>, &lt;a href="https://docutils.sourceforge.io/rst.html" target="_blank" rel="noopener">reStructuredText&lt;/a>, or &lt;a href="https://asciidoctor.org/docs/what-is-asciidoc/" target="_blank" rel="noopener">AsciiDoc&lt;/a>) to create formatting&lt;/li>
&lt;li>store documents in version control systems, often alongside the application code they refer to&lt;/li>
&lt;li>make use of the tools and workflows for distributed team working built in to distributed version control&lt;/li>
&lt;li>automated build of documentation output (e.g. websites, PDF LaTex&lt;/li>
&lt;li>automated testing of documentation builds&lt;/li>
&lt;/ul>
&lt;p>The benefits of this approach include:&lt;/p>
&lt;ul>
&lt;li>cheap or free tooling&lt;/li>
&lt;li>support for distributed working&lt;/li>
&lt;li>potential to split authoring from publishing: enables subject matter experts to easily write about what they know whilst isolating them from the bits of process that need publishing expertise&lt;/li>
&lt;li>encourages developers to write about the features they are building&lt;/li>
&lt;/ul>
&lt;h2 id="introducing-antora">Introducing Antora&lt;/h2>
&lt;p>One of the many tools that has emerged in this space is &lt;a href="https://antora.org" target="_blank" rel="noopener">Antora&lt;/a>. Antora is aimed squarely at the production of technical documentation websites with the following features:&lt;/p>
&lt;ul>
&lt;li>source documents written in &lt;a href="https://asciidoctor.org/docs/what-is-asciidoc/" target="_blank" rel="noopener">AsciiDoc&lt;/a>&lt;/li>
&lt;li>integrates with multiple Git repositories&lt;/li>
&lt;li>support for versioning and branching&lt;/li>
&lt;li>generates a static website bundle that can be deployed anywhere using standard techniques&lt;/li>
&lt;/ul>
&lt;p>Later posts will explain the key points.&lt;/p></description></item><item><title>Publish with Antora</title><link>https://www.synesthesia.co.uk/project/antora/</link><pubDate>Thu, 03 Sep 2020 06:18:50 +0100</pubDate><guid>https://www.synesthesia.co.uk/project/antora/</guid><description>&lt;p>Over the summer I&amp;rsquo;ve created a system of technical documentation websites driven by &lt;a href="https://antora.org/" target="_blank" rel="noopener">Antora&lt;/a>.&lt;/p>
&lt;p>Details in the posts linked below&amp;hellip; (series in progress)&lt;/p></description></item><item><title>Notes on 'Eghbal: Working in Public'</title><link>https://www.synesthesia.co.uk/2020/08/14/notes-on-eghbal-working-in-public/</link><pubDate>Fri, 14 Aug 2020 08:38:46 +0100</pubDate><guid>https://www.synesthesia.co.uk/2020/08/14/notes-on-eghbal-working-in-public/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Just finished &lt;a href="https://www.amazon.co.uk/dp/B08BDGXVK9/ref=nodl_?ref_=k4w_ss_store_rh" target="_blank" rel="noopener">Working in Public: The Making and Maintenance of Open Source Software&lt;/a> by Nadia Eghbal.&lt;/p>
&lt;p>Initially Eghbal focused her research on the lack of funding for Open Source, and started with a research question of &lt;a href="https://medium.com/@nayafia/how-i-stumbled-upon-the-internet-s-biggest-blind-spot-b9aa23618c58" target="_blank" rel="noopener">&amp;ldquo;what is not venture-backable in tech right now?&amp;rdquo;&lt;/a>, later amended by the addition of &amp;ldquo;&lt;em>but that tech needs&lt;/em>&amp;rdquo;.&lt;/p>
&lt;p>As her work progressed she became aware that many open source maintainers were reporting feelings of overwhelm and burnout, so pivoted her investigations in that direction.&lt;/p>
&lt;blockquote>
&lt;p>I started to see the problem is not that there’s a dearth of people who want to contribute to an open source project, but rather that there are too many contributors&amp;ndash;or they’re the wrong kind of contributors.&lt;/p>
&lt;/blockquote>
&lt;p>The main thesis of the book is that our mental models of how open source works are out of step with reality, and until we understand how things have changed there is a risk that a key part of the software industry will stall and regress.&lt;/p>
&lt;h2 id="coases-penguin-revisited">Coase&amp;rsquo;s Penguin revisited&lt;/h2>
&lt;p>Eghbal starts by revisiting the conclusions of Benkler&amp;rsquo;s essay &lt;a href="https://www.benkler.org/CoasesPenguin.PDF" target="_blank" rel="noopener">Coase&amp;rsquo;s Penguin&lt;/a> (see also &lt;a href="https://www.synesthesia.co.uk/2003/01/15/coases-penguin/">my 2003 note&lt;/a> )&lt;/p>
&lt;p>Benkler identified a third form of information asset production (i.e. not via contract or a firm) that he labelled &lt;em>Commons-based Peer Production&lt;/em>, and concluded that the production of information goods where resources are applied through a commons model, without central ownership, is both possible and efficient given:&lt;/p>
&lt;ul>
&lt;li>intrinsic motivation&lt;/li>
&lt;li>modular / granular tasks&lt;/li>
&lt;li>low co-ordination costs&lt;/li>
&lt;/ul>
&lt;p>The last of these is perhaps the most important: as Eghbal notes, co-ordination tasks are less intrinsically motivating for most developers, and if the associated workload increases then it is more likely the project will lose momentum.&lt;/p>
&lt;p>Drawing on earlier work on the Commons by Ostrom, within such communities social sanctions (and therefore reputation) become essential to the maintenance of a healthy project.&lt;/p>
&lt;h2 id="forms-of-open-source-projects">Forms of open source projects&lt;/h2>
&lt;p>Eghbal analyses open source projects against the axes of contributor growth and user growth to identify four broad types:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>High user growth&lt;/th>
&lt;th>Low user growth&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>High developer growth&lt;/td>
&lt;td>Federations&lt;/td>
&lt;td>Clubs&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Low developer growth&lt;/td>
&lt;td>Stadiums&lt;/td>
&lt;td>Toys&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Of these, Clubs come close to an obvious peer community. Federations are large projects with complex governance but still show aspects of a peer commons within the developer community.&lt;/p>
&lt;p>By contrast, Stadiums in particular exhibit 1:N communication patterns between a small number of developers and a large number of users.&lt;/p>
&lt;p>This in turn leads to a situation where developer attention becomes a scarce resource, and user interaction can become onerous for the core group. Eghbal makes the distinction between the &lt;em>use&lt;/em> of open source code and the &lt;em>production&lt;/em> of that code:&lt;/p>
&lt;blockquote>
&lt;p>Open source code, in static state, is a public good, meaning that it is both non-excludable and non-rivalrous.
&amp;hellip;
The production of open source code, however functions more like a commons&amp;ndash;meaning that it is non-excludable and rivalrous&amp;ndash;where attention is the rivalrous resource. Maintainers can’t stop users from bidding for their attention, but their attention can be depleted.&lt;/p>
&lt;/blockquote>
&lt;p>These two economic models within any project lead to two distinct consequences from high participation:&lt;/p>
&lt;blockquote>
&lt;p>Open source code itself is not a common pool resource but a positive externality of its underlying contributor community. Users can consume, or &amp;ldquo;appropriate,&amp;rdquo; code at zero marginal cost, because what the commons actually manages is not code but attention. When developers make contributions, they appropriate this attention from the commons&lt;/p>
&lt;/blockquote>
&lt;h2 id="the-impact-of-platforms">The impact of platforms&lt;/h2>
&lt;p>Eghbal highlights the difference that has been made by the rise of platforms that support the process of open source, in particular GitHub. Ironically tools which facilitate open source working may eventually strangle many projects through the changes to demands on maintainers.&lt;/p>
&lt;h3 id="reduced-friction-in-demands-for-attention">Reduced friction in demands for attention&lt;/h3>
&lt;p>GitHub makes the mechanics of open source co-ordination simple, with support for project plans, issues and pull requests, and to this extent has made open source projects easier to run.&lt;/p>
&lt;p>The downside of these same functions are the ease with which contributors can demand the attention of project maintainers through issues and pull requests. Eghbal distinguishes &lt;em>extractive&lt;/em> and &lt;em>non-extractive&lt;/em> contributions, where extractive contributions are those which require more effort from maintainers to evaluate than they potentially contribute.&lt;/p>
&lt;h3 id="death-of-community">Death of community&lt;/h3>
&lt;p>A second aspect of GitHub is that projects appear to be more homogeneous, to the extent that mechanisms are common and the visual presentation is the same (I.e. a README). This makes it easier to navigate between projects.&lt;/p>
&lt;p>Using Michael Welch&amp;rsquo;s idea of &lt;em>context collapse&lt;/em> Eghbal posits that the result is a reduction in the sense of community within a specific project, and the growth of individual identity.&lt;/p>
&lt;p>This shift reduces the power of the commons - if individuals feel they have little to lose if they break the norms of a given project then there is less incentive to behave in a non-extractive manner.&lt;/p>
&lt;p>As individual identity becomes more central, there are examples of people using association (however tenuous) with a high-profile project to increase their own profile regardless of what they contributed. The mechanistic way in which GitHub reports &amp;ldquo;contributions&amp;rdquo; adds to this.&lt;/p>
&lt;p>An extreme example is reported anecdotally in this tweet from &lt;a href="https://twitter.com/kartikchow/" target="_blank" rel="noopener">@kartikchow&lt;/a>:&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Many college students see open source as an item on their bucket list to FAANG instead of actually being passionate to build. &lt;br>&lt;br>It&amp;#39;s really sad to hear when I get questions like, &lt;br>&amp;quot;Which project would be the most prestigious to contribute to?&amp;quot;&lt;/p>&amp;mdash; Kartik Choudhary (@kartikchow) &lt;a href="https://twitter.com/kartikchow/status/1292499801100005377?ref_src=twsrc%5Etfw">August 9, 2020&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>Inevitably these sort of interventions reduce the available time and motivation from project maintainers.&lt;/p>
&lt;p>More broadly Eghbal discusses a shift in the culture around open-source. Tied in with the platform effects and the change of identity drivers from &amp;ldquo;community&amp;rdquo; to &amp;ldquo;self&amp;rdquo; there is a growing conflation between the concepts of &amp;ldquo;open source&amp;rdquo; and &amp;ldquo;software developed by a community&amp;rdquo; - a sense of entitlement to contribute.&lt;/p>
&lt;h2 id="managing-the-attention-of-creators">Managing the attention of creators&lt;/h2>
&lt;p>It&amp;rsquo;s unsurprising that many project maintainers may feel as one tweeted recently: &amp;ldquo;&lt;a href="https://twitter.com/jevakallio/status/1291411616316248065?s=21" target="_blank" rel="noopener">Open Source: coding for non-fun and non-profit&lt;/a>&amp;rdquo;&lt;/p>
&lt;p>Eghbal surveys approaches that platforms and projects have taken to protect the core maintainers from distraction, and summarises them as the &lt;em>one way mirror&lt;/em>:&lt;/p>
&lt;blockquote>
&lt;p>The public stage increasingly reflects a one-way mirror pattern, where anybody can consume content but interactions with its creator are limited&lt;/p>
&lt;/blockquote>
&lt;p>Some patterns that emerge are:&lt;/p>
&lt;ul>
&lt;li>platform features to turn off or mute social signals such as likes or comments&lt;/li>
&lt;li>add lightweight signals such as emojis and likes that convey a reaction without requiring significant attention from the creator&lt;/li>
&lt;li>recruiting additional participants into moderation and curation roles - the gatekeepers&lt;/li>
&lt;li>using platform permissions to prevent users from creating issues and PRs &lt;em>(as a corollary many larger projects move user support off to forums such as Stack Overflow, where there is often a wider community dynamic with super-users contributing answers)&lt;/em>&lt;/li>
&lt;/ul>
&lt;h2 id="making-money-from-open-source">Making money from open source&lt;/h2>
&lt;p>The content of open source (the code) behaves like a public good, so direct monetisation isn&amp;rsquo;t sustainable, although some larger projects attract corporate sponsorship in order to ensure the continuing viability of tools which the corporates depend upon (often indirectly by employing the creators).&lt;/p>
&lt;p>Eghbal looks at content-producing industries more broadly to consider other forms of monetisation such as:&lt;/p>
&lt;ul>
&lt;li>freemium - some free content and some only for pay&lt;/li>
&lt;li>subscription - not just monetising access to &amp;ldquo;the club&amp;rdquo; but further deterring spurious extractive interactions&lt;/li>
&lt;li>more generally still, finding niches and &amp;ldquo;optimising for fewer people paying more&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>She further suggests that, like journalism, open-source is hampered by inherited models of how things work, but ends on an optimistic tone, seeing potential for continued change.&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>The book is certainly enjoyable and well-annotated. Eghbal&amp;rsquo;s &lt;a href="https://nadiaeghbal.com/oss/" target="_blank" rel="noopener">wider publications on open source&lt;/a> enable drilling down into specific topics raised in the book and visibility into the development of her ideas.&lt;/p>
&lt;p>There is no magic bullet within these pages about open source funding, but there are pointers to directions that platforms in particular might take.&lt;/p>
&lt;p>There&amp;rsquo;s wider coverage of the root causes of creator burnout, and in-depth discussions of both what is possible to motivate that now and what platforms might do to improve support for open source developers.&lt;/p>
&lt;p>Lastly and on a personal level it&amp;rsquo;s made me re-evaluate some of my own interactions with projects: I can perhaps hope that I will be less extractive in my future actions!&lt;/p></description></item><item><title>A simple classification of e-learning methods</title><link>https://www.synesthesia.co.uk/note/2020/08/04/a-simple-classification-of-e-learning-methods/</link><pubDate>Tue, 04 Aug 2020 09:05:19 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/08/04/a-simple-classification-of-e-learning-methods/</guid><description>&lt;p>In order to structure a broad overview of e-learning tools for colleagues I set out a simple two-dimensional grid of cardinality against time:&lt;/p>
&lt;ul>
&lt;li>cardinality - how many learners are working together, simplified to 1 v many&lt;/li>
&lt;li>time - synchronous learning (in real time) v asynchronous learning (each learner chooses when to undertake an activity)&lt;/li>
&lt;/ul>
&lt;figure id="figure-e-learning-activities-in-time-and-group-space">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="e-learning activities in time and group-space" srcset="
/note/2020/08/04/a-simple-classification-of-e-learning-methods/e-learning-cardinality-v-time_hu9ff0f3bb58435fd2ca0c2ae65163d380_26884_b63fcde6e7476cce5b8dab1980288d64.webp 400w,
/note/2020/08/04/a-simple-classification-of-e-learning-methods/e-learning-cardinality-v-time_hu9ff0f3bb58435fd2ca0c2ae65163d380_26884_ba6d2d97540934e63b90ec358a2da642.webp 760w,
/note/2020/08/04/a-simple-classification-of-e-learning-methods/e-learning-cardinality-v-time_hu9ff0f3bb58435fd2ca0c2ae65163d380_26884_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2020/08/04/a-simple-classification-of-e-learning-methods/e-learning-cardinality-v-time_hu9ff0f3bb58435fd2ca0c2ae65163d380_26884_b63fcde6e7476cce5b8dab1980288d64.webp"
width="551"
height="552"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
e-learning activities in time and group-space
&lt;/figcaption>&lt;/figure></description></item><item><title>Five Evidence Informed Uses of Edtech</title><link>https://www.synesthesia.co.uk/note/2020/06/29/five-evidence-informed-uses-of-edtech/</link><pubDate>Mon, 29 Jun 2020 07:56:39 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/06/29/five-evidence-informed-uses-of-edtech/</guid><description>&lt;p>Mark Anderson (&lt;a href="https://twitter.com/ICTEvangelist" target="_blank" rel="noopener">@ICTEvangelist&lt;/a>) writes:&lt;/p>
&lt;blockquote>
&lt;p>I was approached [&amp;hellip;] to deliver a TeachMeet - I thought what better way than to share some evidence-informed approaches to using technology. [&amp;hellip;] I have uploaded the recording of that session to Youtube.&lt;/p>
&lt;/blockquote>
&lt;p>Key points Mark makes:&lt;/p>
&lt;ul>
&lt;li>When you think about using a piece of technology for start with some basic questions to focus your intent - e.g. &amp;ldquo;So what&amp;rdquo;, &amp;ldquo;So that&amp;hellip;&amp;rdquo;&lt;/li>
&lt;li>Think about how technology will improve teaching and learning befopre you use it&lt;/li>
&lt;li>Does it Enhance learning, Support Teaching, Speed up processes? (cf SAMR model)&lt;/li>
&lt;li>References &lt;a href="https://www.learningscientists.org/book" target="_blank" rel="noopener">Understanding How We Learn&lt;/a> &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>, e.g. Retrieval Practice, Dual Coding, Elaboration, Interleaving, Concrete Examples, Spaced Practice, Interleaving&lt;/li>
&lt;li>References &lt;a href="https://educationendowmentfoundation.org.uk/news/new-eef-guidance-report-published-using-digital-technology-to-improve-learning/" target="_blank" rel="noopener">Using Digital technology to Improve Learning&lt;/a> &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> EEF report on use of digitial technology&lt;/li>
&lt;li>References other EEF analyses on Teaching and Learning to identify high-return techniques that can be improved with technology: &lt;a href="https://educationendowmentfoundation.org.uk/evidence-summaries/teaching-learning-toolkit/feedback/" target="_blank" rel="noopener">Feedback&lt;/a> and &lt;a href="https://educationendowmentfoundation.org.uk/evidence-summaries/teaching-learning-toolkit/meta-cognition-and-self-regulation/" target="_blank" rel="noopener">Meta-Cognition &amp;amp; Self-Regulation&lt;/a>&lt;/li>
&lt;li>Use technology (e.g. animations on slides) to shorten feedback loops and improve explanations / models - &amp;ldquo;explain at the point it should be explained&amp;rdquo;&lt;/li>
&lt;li>Improve impact of Retrieval Practice (ref Ebbinghaus Forgetting Curve) e,g, quizzes, forms (e.g. products such as Quizziz)&lt;/li>
&lt;li>Exploit &lt;a href="https://en.wikipedia.org/wiki/Dual-coding_theory" target="_blank" rel="noopener">Dual Coding&lt;/a> e.g. infographics&lt;/li>
&lt;li>Look for copyright free / CC graphics (e.g. thenounproject.com, PixaBay, UnSplash0&lt;/li>
&lt;li>Self Regulation - e.g. tracking screen time, calendars, DND&lt;/li>
&lt;li>Improving assessment and feedback (e.g. OneNote, Office Lens, Flipgrid)&lt;/li>
&lt;/ul>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/EPGydOKDkw0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;em>Understanding How We Learn A Visual Guide&lt;/em> Yana Weinstein and Megan Sumeracki, David Fulton/Routledge, August 2018&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;em>Using Digital technology to Improve Learning&lt;/em>, Eleanor Stringer, Cathy Lewin, and Robbie Coleman, Education Endowment Fund, March 2019&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Flipgrid for Learning</title><link>https://www.synesthesia.co.uk/note/2020/06/09/flipgrid-for-learning/</link><pubDate>Tue, 09 Jun 2020 07:54:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/06/09/flipgrid-for-learning/</guid><description>&lt;h2 id="introduction-to-flipgrid">Introduction to FlipGrid&lt;/h2>
&lt;p>Short video guide from &lt;a href="https://mobile.twitter.com/PhilEdTech" target="_blank" rel="noopener">Phil Whitehead&lt;/a> on using &lt;a href="https://info.flipgrid.com" target="_blank" rel="noopener">FlipGrid&lt;/a> for learning&lt;/p>
&lt;p>FlipGrid is a video-response system, allowing students to respond by video on their mobile device.&lt;/p>
&lt;ul>
&lt;li>choice of authentication methods&lt;/li>
&lt;li>grid per class typically&lt;/li>
&lt;li>multiple topics per grid&lt;/li>
&lt;li>question / resource / response&lt;/li>
&lt;li>sharing codes&lt;/li>
&lt;li>integration to Teams, Google Classroom etc&lt;/li>
&lt;li>response can be edited before submit&lt;/li>
&lt;li>wide range of teacher features&lt;/li>
&lt;li>FlipGrid AR allows viewing responses in AR from scanning QR code - example uses include interactive exhibitions, presenting work to external moderator&lt;/li>
&lt;/ul>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/z3y7BrhLEC8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>Questions to explore further&lt;/p>
&lt;ul>
&lt;li>integration with Teams&lt;/li>
&lt;li>integration with Moodle&lt;/li>
&lt;li>custom auth?&lt;/li>
&lt;/ul></description></item><item><title>Wakelet and MS Teams</title><link>https://www.synesthesia.co.uk/note/2020/06/09/wakelet-and-ms-teams/</link><pubDate>Tue, 09 Jun 2020 07:29:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/06/09/wakelet-and-ms-teams/</guid><description>&lt;p>Useful short video guide from &lt;a href="https://mobile.twitter.com/PhilEdTech" target="_blank" rel="noopener">Phil Whitehead&lt;/a> on using Wakelet within a Teams context:&lt;/p>
&lt;ul>
&lt;li>adding a Wakelet to a channel tab&lt;/li>
&lt;li>posting a Wakelet into a channel conversation&lt;/li>
&lt;li>posting a Wakelet into a chat&lt;/li>
&lt;li>grabbing links from posts into Wakelet&lt;/li>
&lt;/ul>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/0vzvoXlTM6k" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div></description></item><item><title>Notes on 'How to Build Your Personal Learning Plan'</title><link>https://www.synesthesia.co.uk/note/2020/05/18/notes-on-how-to-build-your-personal-learning-plan/</link><pubDate>Mon, 18 May 2020 10:11:35 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/05/18/notes-on-how-to-build-your-personal-learning-plan/</guid><description>&lt;p>A group of Southern Hemisphere Microsoft experts are running a month of live broadcasts under the hashtag &lt;a href="https://mobile.twitter.com/hashtag/M365May" target="_blank" rel="noopener">M365May&lt;/a>, &lt;a href="https://regarding365.com/microsoft-365-may-weeks-1-and-2-m365may-3f4b173267b4" target="_blank" rel="noopener">more info&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://mobile.twitter.com/ActivateLearn" target="_blank" rel="noopener">Helen Blunden&lt;/a> ran a session on &lt;a href="https://www.youtube.com/watch?v=hA0vKYhGQmg" target="_blank" rel="noopener">How to Build Your Personal Learning Plan&lt;/a>&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/hA0vKYhGQmg" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;h2 id="notes">Notes&lt;/h2>
&lt;p>Here are my rough notes and links to resources that Helen mentions:&lt;/p>
&lt;ul>
&lt;li>modelling based on most interesting project you have learned from - apply those ways of learning to your work&lt;/li>
&lt;li>think about filtering content you find using hashtags - in other words the early beginnings of establishing your own trusted sources&lt;/li>
&lt;li>the things we learned at school and university are often not used at all, and when they are the knowledge becomes obsolete more and more quickly - see Buckminster Fuller Knowledge Doubling (as augmented by IBM), see Half Life of Facts&lt;/li>
&lt;li>learning through connections and networks - see Microsoft &amp;ldquo;Where Work Gets Done), see Harold Jarche PKM&lt;/li>
&lt;li>Create personal learning plan (Helen&amp;rsquo;s approach, this bit mostly in her words)
&lt;ul>
&lt;li>what&amp;rsquo;s the problem&lt;/li>
&lt;li>what do you need to achieve? (visualise this - make a rich picture)&lt;/li>
&lt;li>who can help? build a personal learning network, identify trusted sources (cf Jarche &lt;strong>seek&lt;/strong>-sense-share), use tools to help, online communities, twitter lists, look at who in your workplace&lt;/li>
&lt;li>what tools and resources do you have access to?
&lt;ul>
&lt;li>online courses and sources&lt;/li>
&lt;li>curation tools&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>is it safe to learn? (at work) - culture, support, how can you incorporate your learning into a work project?&lt;/li>
&lt;li>what can I test on?&lt;/li>
&lt;li>how do you know you are on track? (feedback)&lt;/li>
&lt;li>how do I create meaning and relevancy? (&lt;a href="https://pkm.wiki.synesthesia.co.uk/view/welcome-visitors/view/sense" target="_blank" rel="noopener">Sensemaking&lt;/a>, reflection, examples of vlogging, blogging, wakelet)&lt;/li>
&lt;li>where can I apply the learning?&lt;/li>
&lt;li>who else needs to know? / how can I help others? (&lt;strong>Share&lt;/strong>)&lt;/li>
&lt;li>how do I record what I learned? (build a portfolio - and make this independent of your employer)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>make a plan - use template?&lt;/li>
&lt;/ul>
&lt;h2 id="references">References&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://learningsolutionsmag.com/articles/2468/marc-my-words-the-coming-knowledge-tsunami" target="_blank" rel="noopener">Marc Rosenberg: The coming knowledge Tsunami&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.amazon.co.uk/Neo-Generalist-Where-you-who-are/dp/1912555395" target="_blank" rel="noopener">The Neo-Generalist: Where You Go is Who You Are, Mikkelsen &amp;amp; Martin&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>To which I will add this as one of the best short articles on knowledge decay:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://spectrum.ieee.org/riskfactor/computing/it/an-engineering-career-only-a-young-persons-game" target="_blank" rel="noopener">An Engineering Career: Only a young person&amp;rsquo;s game?&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Weekend 'Gardens'</title><link>https://www.synesthesia.co.uk/2020/05/18/weekend-gardens/</link><pubDate>Mon, 18 May 2020 08:38:46 +0100</pubDate><guid>https://www.synesthesia.co.uk/2020/05/18/weekend-gardens/</guid><description>&lt;p>The &lt;a href="https://pkm.wiki.synesthesia.co.uk/view/welcome-visitors/view/the-garden-and-the-stream" target="_blank" rel="noopener">Garden Metaphor&lt;/a> seems to have made it&amp;rsquo;s way into the Zeitgeist for a growing number of people.&lt;/p>
&lt;p>Although there are many themes that some of us would recognise from the heady days of &lt;a href="https://www.synesthesia.co.uk/2004/09/22/blogwalk-iv-developing-the-work/">Blogwalk&lt;/a> it&amp;rsquo;s exciting to see how a new generation of thinkers are building tools and recapturing the spirit of the web.&lt;/p>
&lt;p>Via &lt;a href="https://www.zylstra.org/blog/2020/05/14256/" target="_blank" rel="noopener">Ton Zjlstra&lt;/a> I found &lt;a href="https://nesslabs.com/author/annelaure" target="_blank" rel="noopener">Anne-Laure Le Cunff&lt;/a> writing on &lt;a href="https://nesslabs.com/mind-garden" target="_blank" rel="noopener">You and Your Mind Garden&lt;/a>, an approach that is clearly influenced by the &lt;a href="https://pkm.wiki.synesthesia.co.uk/view/welcome-visitors/view/how-to-take-smart-notes" target="_blank" rel="noopener">Taking Smart Notes&lt;/a> approach:&lt;/p>
&lt;blockquote>
&lt;p>A mind garden is not a mind backyard. It’s not about dumping notes in there and forgetting about them. To tend to your garden, you need to plant new ideas. The best way to do this is by replanting stems and cuttings from existing ideas you’ve added to your garden—by consistently taking notes, and combining them together&lt;/p>
&lt;/blockquote>
&lt;p>Anne-Laure links to a colophon on &lt;a href="https://nesslabs.com/digital-garden-tiddlywiki" target="_blank" rel="noopener">how to build a digital garden with TiddlyWiki&lt;/a>, and hosts &lt;a href="https://www.mentalnodes.com/" target="_blank" rel="noopener">her own digital garden&lt;/a>.&lt;/p>
&lt;p>Anne-Laure also links out to another group of people running with the digital garden metaphor (in part derived from &lt;a href="https://twitter.com/Mappletons/status/1250532315459194880" target="_blank" rel="noopener">tweet&lt;/a> by Maggie Appleton):&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://maggieappleton.com/" target="_blank" rel="noopener">Maggie Appleton&lt;/a> - &lt;em>interesting stuff on &lt;a href="https://maggieappleton.com/gatsby-gardens" target="_blank" rel="noopener">using Gatsby to create a digital garden&lt;/a>&lt;/em>&lt;/li>
&lt;li>&lt;a href="https://notes.andymatuschak.org/About_these_notes" target="_blank" rel="noopener">Andy Matuschak&amp;rsquo;s working Notes&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://tomcritchlow.com/2019/02/17/building-digital-garden/" target="_blank" rel="noopener">Tom Critchlow&amp;rsquo;s wiki folder&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://joelhooks.com/digital-garden" target="_blank" rel="noopener">Joel Hooks&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.gwern.net/" target="_blank" rel="noopener">Gwern Branwen&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://meaningness.com/" target="_blank" rel="noopener">Meaningness, David Chapman&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>For now I&amp;rsquo;m sticking with &lt;a href="https://wiki.synesthesia.co.uk" target="_blank" rel="noopener">my approach using Federated Wiki&lt;/a>, but there are always new perspectives to potentially incorporate into one&amp;rsquo;s practice.&lt;/p></description></item><item><title>How to Take Smart Notes</title><link>https://www.synesthesia.co.uk/2020/05/11/how-to-take-smart-notes/</link><pubDate>Mon, 11 May 2020 14:26:35 +0100</pubDate><guid>https://www.synesthesia.co.uk/2020/05/11/how-to-take-smart-notes/</guid><description>&lt;p>My Kindle notes and highlights for &lt;strong>How to Take Smart Notes&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/strong>
&lt;em>(or as Zettelkasten would term it, a literature note)&lt;/em>&lt;/p>
&lt;blockquote>
&lt;p>Page: 2
Writing is not what follows research, learning or studying, it is the medium of all this work.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Page: 2
any improvement in the way we organise the everyday writing, how we take notes of what we encounter and what we do with them, will make all the difference for the moment we do face the blank page/screen&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Page: 3
They struggle because they believe, as they are made to believe, that writing starts with a blank page.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Page: 3
good, productive writing is based on good note-taking. Getting something that is already written into another written piece is incomparably easier than assembling everything in your mind and then trying to retrieve it from there.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Page: 7
Having read more does not automatically mean having more ideas. Especially in the beginning, it means having fewer ideas to work with, because you know that others have already thought of most of them.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Page: 8
Poor students lack insight into their own limitations – as they would have to know about the vast amount of knowledge out there to be able to see how little they know in comparison.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Page: 16
success is not the result of strong willpower and the ability to overcome resistance, but rather the result of smart working environments that avoid resistance in the first place (cf. Neal et al. 2012; Painter et al. 2002; Hearn et al. 1998).&lt;/p>
&lt;/blockquote>
&lt;p>Note | Page: 23
This section contains a step-by-step of the process&lt;/p>
&lt;blockquote>
&lt;p>Page: 29
To have an undistracted brain to think with and a reliable collection of notes to think in is pretty much all we need. Everything else is just clutter.&lt;/p>
&lt;/blockquote>
&lt;p>Note | Page: 35
Writing is key. In academic terms only explicit public ideas “count”. Writing is the medium of research, so act as if only written ideas matter. Acting in this way makes reading more focused, as one’s attention is directed to understand in order to explain, and to think beyond the obvious to find the ideas worth exploring further.&lt;/p>
&lt;blockquote>
&lt;p>Page: 38
Deliberate practice is the only serious way of becoming better at what we are doing (cf. Anders Ericsson, 2008).&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Page: 41
three types of notes: 1.  Fleeting notes, which are only reminders of information, can be written in any kind of way and will end up in the trash within a day or two. 2.  Permanent notes, which will never be thrown away and contain the necessary information in themselves in a permanently understandable way. They are always stored in the same way in the same place, either in the reference system or, written as if for print, in the slip-box. 3.  Project notes, which are only relevant to one particular project. They are kept within a project-specific folder and can be discarded or archived after the project is finished.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Page: 43
Fleeting notes are there for capturing ideas quickly while you are busy doing something else.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Page: 44
Fleeting notes are only useful if you review them within a day or so and turn them into proper notes you can use later.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Page: 44
Permanent notes, on the other hand, are written in a way that can still be understood even when you have forgotten the context they are taken from.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Page: 44
The only permanently stored notes are the literature notes in the reference system and the main notes in the slip-box. The former can be very brief as the context is clearly the text they refer to. The latter need be written with more care and details as they need to be self-explanatory.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Page: 48
Every intellectual endeavour starts from an already existing preconception, which then can be transformed during further inquires and can serve as a starting point for following endeavours. Basically, that is what Hans-Georg Gadamer called the hermeneutic circle (Gadamer 2004).&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Page: 48
By focusing on what is interesting and keeping written track of your own intellectual development, topics, questions and arguments will emerge from the material without force.&lt;/p>
&lt;/blockquote>
&lt;p>Note | Page: 51
Continual process of creating and expanding permanent notes surfaces areas that excite one’s interest, which in turn motivates more exploration. Iterative approach of writing notes, outlines, drafts etc. allows more frequent and lower-stakes feedback.Explicit linking of notes provides exponentially richer set of interconnections between concepts: this both improves memory and facilitaes faster and deeper linking in future. Interaction with &amp;ldquo;Meaning Making&amp;rdquo; functions in brain.&lt;/p>
&lt;p>Note | Page: 64
The importance of embodied practice to support subconscious decision-making whilst writing. Writing is an art, to become an expert requires the author to escape the constraints of the rational and logical parts of the brain.&lt;/p>
&lt;blockquote>
&lt;p>Page: 67
gut feeling is not a mysterious force, but an incorporated history of experience. It is the sedimentation of deeply learned practice through numerous feedback loops on success or failure.[20]&lt;/p>
&lt;/blockquote>
&lt;p>Note | Page: 68
Limitations of working memory.Tendency of &amp;ldquo;open&amp;rdquo; items to occupy working memory (Bluma Zeigarnik). Importance of meaning-making in the transfer of knowledge to long-term memory. Significance of querying new concepts for relatedness to existing knowledge as part of forming linkages in long-term memory.On the other hand, make use of Ziegarnik effect by letting open questions stay in the mind - engaging the subconscious to process them.(side note which writer qas quoted about that process in the book with The Green Man on the cover?)&lt;/p>
&lt;p>Note | Page: 71
Importance of having a consistent and simple process:- less decision-making means less drain on resources of willpower- good process makes it possible to take breaks without losing thread, and breaks are essential to memory formation&lt;/p>
&lt;p>Note | Page: 74
Capturing notes in your own words as you read is the first step in developing your own mental models that are informed by the sources you read.When you read back your literature notes do so with a mind about how the ideas interact with ideas you have already captured as permanent notes.The amount of notes needed will vary by text: not only based on the complexity of the ideas, but also on how extensive are the relevant pre-existing mental models we have with which to contextualise the text.When making liteature notes think about the frame of the work, consider what is NOT said also.Aim for the gist, not a verbatim transcription.&lt;/p>
&lt;blockquote>
&lt;p>Page: 76
The only thing that matters is that these notes provide the best possible support for the next step, the writing of the actual slip-box notes. And what is most helpful is to reflect on the frame, the theoretical background, methodological approach or perspective of the text we read. That often means to reflect as much on what is not mentioned as what is mentioned.&lt;/p>
&lt;/blockquote>
&lt;p>Note | Page: 79
Guard against confirmation bias by selecting information to read/capture based on how it connects to what is already in the permemnent note system, and what new potentials for connection it may open up - REGARDLESS of whether these are confirmatory or opposing thoughts.&lt;/p>
&lt;p>Note | Page: 82
Practice is required to seperate out the relevant parts of a text from the irrelevant.The repetitive writing of permanent notes give us that practice.Practice helps the mind to spot patterns of writing and argument which in turn develops facility in extractign the key points and identifying gaps.The ability to see patterns in texts is essential to develop ctiritcal thinking.&lt;/p>
&lt;p>Note | Page: 85
A good test of understanding is whether you can explain an idea simply to someone to whom it is new.Writing permanent notes is a way of explaining to our future self, who will otherwise have likely forgotten the information.Repeated practice at re-phrasing concepts in our own words exposes lack of understanding.Q: how does this relate to retreival practice?&lt;/p>
&lt;p>Note | Page: 87
Effective reading, in support of learning requires effort, and to learn material requires the retrieval of previous material in order to form new connections.Elaboration of material e.g. by writing smart notes, seeking connections, is a proven method of improved learning.NB - cross ref to Efrat Furst material on Making Meaning and Retrieval Practice&lt;/p>
&lt;p>Note | Page: 90
Critical success factor for PhD candidates is the ability to think beyond the frames of a text.Thinking beyond context and identifying where concepts link to ideas from other contexts is essential for developing an effective research approach.The creation of permanent notes encourages this sort of thinking.Writing ideas down as permanent notes allows us to forget them, freeing up working memory to learn new things.&lt;/p>
&lt;p>Note | Page: 92
Number of permanent notes written per day could serve as a proxy measure for knowledge work&lt;/p>
&lt;blockquote>
&lt;p>Page: 94
11.2&lt;/p>
&lt;/blockquote>
&lt;p>Note:Taking notes allows us to test our understanding.Serious thought requires &amp;ldquo;external scaffolding&amp;quot;Writing a permanent note is a form of dialogue with the other notes in the system.When creating permanent notes consider making explicit the answers to questions such as:How is this relevant to my thinking? Why?&lt;/p>
&lt;blockquote>
&lt;p>Page: 98
By explicitly writing down how something connects or leads to something else, we force ourselves to clarify and distinguish ideas from each other.&lt;/p>
&lt;/blockquote>
&lt;p>Note | Page: 107
Collection of permanent notes as a tool for thinking:- develop ideas- connect ideas- use comparison and differentiation as tools to generate more ideas cf wiki gardening Using the note collection to explore new ideas makes us retrieve old information in a new context, and query it for links to those new ideas cf retrieval practice The constraints of a note system - common format, restricted size, aid creativity by stopping us from wasting energy on irrelevant factors&lt;/p>
&lt;blockquote>
&lt;p>Page: 118
Munger writes: “Well, the first rule is that you can’t really know anything if you just remember isolated facts and try and bang ’em back. If the facts don’t hang together on a latticework of theory, you don’t have them in a usable form.&lt;/p>
&lt;/blockquote>
&lt;p>Note:Charlie Munger, Berkshire Hathaway&lt;/p>
&lt;blockquote>
&lt;p>Page: 120
We learn something not only when we connect it to prior knowledge and try to understand its broader implications (elaboration), but also when we try to retrieve it at different times (spacing) in different contexts (variation), ideally with the help of chance (contextual interference) and with a deliberate effort (retrieval).&lt;/p>
&lt;/blockquote>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Ahrens, Sönke. &lt;a href="https://www.amazon.co.uk/How-Take-Smart-Notes-Nonfiction/dp/1542866502" target="_blank" rel="noopener">How to Take Smart Notes&lt;/a>: One Simple Technique to Boost Writing, Learning and Thinking: For Students, Academics and Nonfiction Book Writers. North Charleston, SC: CreateSpace, 2017. &lt;a href="https://www.zotero.org/julianelve/items/Y3CX8K7X/library" target="_blank" rel="noopener">Zotero&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>WeekNote 2020 W16-19</title><link>https://www.synesthesia.co.uk/note/2020/05/08/weeknote-2020-w16-19/</link><pubDate>Fri, 08 May 2020 15:50:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/05/08/weeknote-2020-w16-19/</guid><description>&lt;p>And then a whole month had gone without publishing a weeknote.&lt;/p>
&lt;p>The lockdown phenomenon of days blending together, combined with deep focus to support colleagues in pivoting to online delivery.&lt;/p>
&lt;p>We&amp;rsquo;re starting to move beyond simple digital replacements of one-day seminars (even though they have been very successful), and have started building out a six week whole-school-staff CPD course into Moodle.&lt;/p>
&lt;p>With a much reduced team, my time has been split between operational support to colleagues practising the mechanics of live seminars, configuring new resources in Moodle, minor software upkeep of a couple of applications (including merging new plugins and upstream changes into our Moodle build) and a bigger technical architecture project.&lt;/p>
&lt;p>In parallel with the immediate tasks I have been thinking ahead to how we might expand platform capacity, and incorporate other tools alongside Moodle to broaden the online experience.&lt;/p>
&lt;p>At a fundamental level this is about the basic building blocks of web servers, resilient file storage, database, load balancers. I want the build to be &amp;ldquo;infrastructure as code&amp;rdquo; for three reasons:&lt;/p>
&lt;ol>
&lt;li>to make it easier to adapt from one cloud to another&lt;/li>
&lt;li>once the design is proven I can tear down the resources until we need them.&lt;/li>
&lt;li>to document the design&lt;/li>
&lt;/ol>
&lt;p>My only previous experience with infrastructure-as-code has been building out AzureRM templates. This challenge needs to be portable so I&amp;rsquo;ve had to learn two new tools:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.terraform.io" target="_blank" rel="noopener">Terraform&lt;/a> for building the infrastructure&lt;/li>
&lt;li>&lt;a href="https://www.ansible.com/resources/get-started" target="_blank" rel="noopener">Ansible&lt;/a> for deploying and configuring system and application software&lt;/li>
&lt;/ul>
&lt;p>Terraform is in general quite straightforward, although I did have to learn a few tricks to resync my state with the remote build after a couple of manual changes.&lt;/p>
&lt;p>Ansible is clearly very powerful, and with that power there&amp;rsquo;s quite a learning curve. Still not quite there with the full stack installation, and after that I want to get some common maintenance operations under playbook control.&lt;/p></description></item><item><title>[idea] Convert HTML to markdown</title><link>https://www.synesthesia.co.uk/note/2020/04/26/2020-04-26-convert-html-to-markdown/</link><pubDate>Sun, 26 Apr 2020 15:30:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/04/26/2020-04-26-convert-html-to-markdown/</guid><description>&lt;p>Initial use case - easily grab Kindle notes and post to markdown blog&lt;/p>
&lt;ul>
&lt;li>read clipboard&lt;/li>
&lt;li>convert HTML to MD&lt;/li>
&lt;li>output md file or paste to clipboard&lt;/li>
&lt;/ul></description></item><item><title>[idea] Export Fed Wiki to static archive</title><link>https://www.synesthesia.co.uk/note/2020/04/26/2020-04-26-export-fed-wiki-to-static-archive/</link><pubDate>Sun, 26 Apr 2020 15:27:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/04/26/2020-04-26-export-fed-wiki-to-static-archive/</guid><description>&lt;p>A tool to create a static archive from a Federated Wiki instance or farm.&lt;/p>
&lt;ul>
&lt;li>pass base url(s) as parameter&lt;/li>
&lt;li>iterate over wikis
&lt;ul>
&lt;li>Retrieve site map&lt;/li>
&lt;li>iterate pages
&lt;ul>
&lt;li>retrieve page json&lt;/li>
&lt;li>convert to HTML&lt;/li>
&lt;li>save as file&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="update">Update&lt;/h2>
&lt;p>Consider &lt;a href="http://about.fed.wiki/view/welcome-visitors/view/curl-this-site" target="_blank" rel="noopener">this&lt;/a> or &lt;a href="http://about.fed.wiki/view/welcome-visitors/view/curl-a-page" target="_blank" rel="noopener">this&lt;/a> for possible retrieval shortcut and insight to json data structure&lt;/p></description></item><item><title>WeekNote 2020 W15</title><link>https://www.synesthesia.co.uk/note/2020/04/09/2020-04-09-weeknote-2020-w15/</link><pubDate>Thu, 09 Apr 2020 13:13:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/04/09/2020-04-09-weeknote-2020-w15/</guid><description>&lt;p>Work-wise we&amp;rsquo;ve been settling in keeping engagement with members through digital channels.&lt;/p>
&lt;p>We&amp;rsquo;ve seen quite an increase in traffic in email forums, and weekly live updates on the education environment are proving popular.&lt;/p>
&lt;p>In this context everyone gets more hands-on, and
I&amp;rsquo;ve been juggling maintenance tasks (such as SSL renewals) whilst supporting colleagues to develop an approach for sync &amp;amp; async delivery of CPD seminars.&lt;/p>
&lt;p>Although MS Teams is a superb tool for in-business collaboration (including external partners) my current view is that the guest sign-up process has too many routes through it - we&amp;rsquo;re not convinced that we can clearly explain to customers how to get to the material.&lt;/p>
&lt;p>Our current working model is a pre-existing instance of Moodle integrated with Zoom. The Moodle is integrated with the same customer identity service we use for our member website and Discourse forums, so we know how to steer people through it and the sorts of issues they might find.&lt;/p>
&lt;p>Very much &amp;ldquo;work in progress&amp;rdquo;.&lt;/p>
&lt;p>More widely, this was the week that the PM was admitted to ICU with Covid-19. Predictably most briefings and some media coverage has now fallen to the level almost of hagiography.&lt;/p>
&lt;p>Serious media are starting to ask probing questions about the lack of testing, the apparent abandonment of care homes, and the emerging sense in the data that the negative impact of Coronavirus is disproportionately felt by the poor (which also means it is disproportionately affecting BAME people).&lt;/p>
&lt;p>And finally&amp;hellip;&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Just a reminder that the question of “do we actually need to have a meeting?” has not stopped being relevant.&lt;/p>&amp;mdash; Matt Waddell (@WaddellMJ) &lt;a href="https://twitter.com/WaddellMJ/status/1247616188890222592?ref_src=twsrc%5Etfw">April 7, 2020&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script></description></item><item><title>Evergreen Notes</title><link>https://www.synesthesia.co.uk/2020/04/07/evergreen-notes/</link><pubDate>Tue, 07 Apr 2020 13:12:35 +0100</pubDate><guid>https://www.synesthesia.co.uk/2020/04/07/evergreen-notes/</guid><description>&lt;p>Via a now-deleted tweet from &lt;a href="https://mobile.twitter.com/therealpaulcook" target="_blank" rel="noopener">Paul Cook&lt;/a> I was led to &lt;a href="https://andymatuschak.org/" target="_blank" rel="noopener">Andy Matuschack&lt;/a>&amp;rsquo;s idea of &lt;a href="https://notes.andymatuschak.org/Evergreen_notes" target="_blank" rel="noopener">Evergreen Notes&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>Evergreen notes are written and organized to evolve, contribute, and accumulate over time, across projects&lt;/p>
&lt;ul>
&lt;li>Evergreen notes should be atomic&lt;/li>
&lt;li>Evergreen notes should be concept-oriented&lt;/li>
&lt;li>Evergreen notes should be densely linked&lt;/li>
&lt;li>Prefer associative ontologies to hierarchical taxonomies&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>As I tweeted in reply, a lot about that reminds me of the &lt;a href="https://pkm.wiki.synesthesia.co.uk/view/welcome-visitors/view/a-fedwiki-style-sheet" target="_blank" rel="noopener">natural writing style of Federated Wiki&lt;/a>, and when you look at &lt;a href="https://notes.andymatuschak.org/" target="_blank" rel="noopener">Andy&amp;rsquo;s site&lt;/a> in a desktop browser and start clicking links, &lt;a href="https://notes.andymatuschak.org/Evergreen_notes?stackedNotes=z4Rrmh17vMBbauEGnFPTZSK3UmdsGExLRfZz1" target="_blank" rel="noopener">concepts open up to the side&lt;/a> in a way reminiscent of the FedWiki approach.&lt;/p>
&lt;figure id="figure-how-andy-matuschaks-notes-tool-opens-up-linked-notes">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="How Andy Matuschak&amp;#39;s notes tool opens up linked notes" srcset="
/2020/04/07/evergreen-notes/stacked-notes_hu367443267188fbb9f96430f2c0ae541e_303891_2545dc456e7e43ed185f07ba6ac02f00.webp 400w,
/2020/04/07/evergreen-notes/stacked-notes_hu367443267188fbb9f96430f2c0ae541e_303891_1c31ec06523583a1643c271261d9ffb3.webp 760w,
/2020/04/07/evergreen-notes/stacked-notes_hu367443267188fbb9f96430f2c0ae541e_303891_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/2020/04/07/evergreen-notes/stacked-notes_hu367443267188fbb9f96430f2c0ae541e_303891_2545dc456e7e43ed185f07ba6ac02f00.webp"
width="760"
height="414"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
How Andy Matuschak&amp;rsquo;s notes tool opens up linked notes
&lt;/figcaption>&lt;/figure>
&lt;p>Another nice feature is the popout summary of another note when you mouseover a link. Notable is the lack of mention of federation, or any concept of multi-user use, however as Andy &lt;a href="https://notes.andymatuschak.org/About_these_notes" target="_blank" rel="noopener">states&lt;/a> &amp;ldquo;it&amp;rsquo;s still an early research environment&amp;rdquo;&lt;/p>
&lt;p>More interesting than the tool is the note-taking approach and it&amp;rsquo;s sources. Andy cites a major influence as &lt;a href="https://en.wikipedia.org/wiki/Niklas_Luhmann" target="_blank" rel="noopener">Niklas Luhmann&lt;/a>&amp;rsquo;s &lt;a href="https://notes.andymatuschak.org/Zettelkasten" target="_blank" rel="noopener">Zettelkasten&lt;/a> approach.&lt;/p>
&lt;p>&lt;a href="https://twitter.com/ctietze" target="_blank" rel="noopener">Christian Tietze&lt;/a> maintains &lt;a href="https://zettelkasten.de/posts/overview/" target="_blank" rel="noopener">The Zettlekasten Project&lt;/a> which contains some interesting material to mine later. Clearly there are links here to &lt;a href="https://en.wikipedia.org/wiki/Vannevar_Bush" target="_blank" rel="noopener">Vannevar Bush&lt;/a>&amp;rsquo;s work in &lt;a href="https://www.theatlantic.com/magazine/archive/1945/07/as-we-may-think/303881/" target="_blank" rel="noopener">As We May Think&lt;/a> but again, something to mine later.&lt;/p></description></item><item><title>A look at Covid-19 Data Journalism - part 1</title><link>https://www.synesthesia.co.uk/2020/04/02/a-look-at-covid-19-data-journalism-part-1/</link><pubDate>Thu, 02 Apr 2020 12:58:06 +0100</pubDate><guid>https://www.synesthesia.co.uk/2020/04/02/a-look-at-covid-19-data-journalism-part-1/</guid><description>&lt;p>One of the best data journalists helping to explain the Coronavirus pandemic is &lt;a href="https://twitter.com/jburnmurdoch" target="_blank" rel="noopener">John Burn-Murdoch&lt;/a> from the Financial Times. The latest version of their reporting is at &lt;a href="https://www.ft.com/coronavirus-latest" target="_blank" rel="noopener">ft.com/coronavirus-latest&lt;/a>. The daily tweets highlighting his latest charts are a must-read, and serve as a factual counter to the increasingly ineffectual bluster from official press conferences.&lt;/p>
&lt;p>Looking in detail at his charts from yesterday, 1st April 2020.&lt;/p>
&lt;h2 id="cases">Cases&lt;/h2>
&lt;p>Although reported case numbers are, of course, impacted by different testing regimes, the first charts are based on cases.&lt;/p>
&lt;figure id="figure-daily-new-cases-ft">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Daily New Cases (FT) " srcset="
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-dailynewcases-2020-04-01_hu42d734083f15946c47a180ed6150617b_163921_034c1fb6c672f59492008a0f9f121f20.webp 400w,
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-dailynewcases-2020-04-01_hu42d734083f15946c47a180ed6150617b_163921_472cb5082ece4906578cbe6eba1f4dfb.webp 760w,
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-dailynewcases-2020-04-01_hu42d734083f15946c47a180ed6150617b_163921_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-dailynewcases-2020-04-01_hu42d734083f15946c47a180ed6150617b_163921_034c1fb6c672f59492008a0f9f121f20.webp"
width="760"
height="543"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Daily New Cases (FT)
&lt;/figcaption>&lt;/figure>
&lt;p>Looking cumulatively since the outbreak began there is further evidence of the difference between countries.&lt;/p>
&lt;figure id="figure-cumulative-new-cases-ft">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Cumulative New Cases (FT) " srcset="
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-cumcases-2020-04-01_hu37805dc7b187e0a332e46cfbe44d2431_211381_67ce53908b129ea8183b30a5fa95f50e.webp 400w,
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-cumcases-2020-04-01_hu37805dc7b187e0a332e46cfbe44d2431_211381_895185ca4049347bddba1fc4ca4e45da.webp 760w,
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-cumcases-2020-04-01_hu37805dc7b187e0a332e46cfbe44d2431_211381_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-cumcases-2020-04-01_hu37805dc7b187e0a332e46cfbe44d2431_211381_67ce53908b129ea8183b30a5fa95f50e.webp"
width="760"
height="543"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Cumulative New Cases (FT)
&lt;/figcaption>&lt;/figure>
&lt;h2 id="deaths">Deaths&lt;/h2>
&lt;p>Similar charts for reported deaths per day:&lt;/p>
&lt;figure id="figure-daily-deaths-ft">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Daily Deaths (FT) " srcset="
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-dailydeaths-2020-04-01_hu0c8b1c6e84a46f3f114fe622dd8689e0_149775_d5e78bcffd8a142c0f7d27e2de1dfc66.webp 400w,
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-dailydeaths-2020-04-01_hu0c8b1c6e84a46f3f114fe622dd8689e0_149775_217a207b58d52320722d8ca194257ac3.webp 760w,
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-dailydeaths-2020-04-01_hu0c8b1c6e84a46f3f114fe622dd8689e0_149775_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-dailydeaths-2020-04-01_hu0c8b1c6e84a46f3f114fe622dd8689e0_149775_d5e78bcffd8a142c0f7d27e2de1dfc66.webp"
width="760"
height="543"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Daily Deaths (FT)
&lt;/figcaption>&lt;/figure>
&lt;p>and cumulatively&lt;/p>
&lt;figure id="figure-cumulative-deaths-ft">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Cumulative Deaths (FT) " srcset="
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-cumdeaths-2020-04-01_hu25e5cde1257e470c313553d21d09ea28_171041_905117f431d5422e1f85f5776ddecd91.webp 400w,
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-cumdeaths-2020-04-01_hu25e5cde1257e470c313553d21d09ea28_171041_5f3f2347a0802f94e27807d0461515ff.webp 760w,
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-cumdeaths-2020-04-01_hu25e5cde1257e470c313553d21d09ea28_171041_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-cumdeaths-2020-04-01_hu25e5cde1257e470c313553d21d09ea28_171041_905117f431d5422e1f85f5776ddecd91.webp"
width="760"
height="543"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Cumulative Deaths (FT)
&lt;/figcaption>&lt;/figure>
&lt;p>From both these sets of charts it is clear that any hint of optimism or complacency from the UK Government is built on sand. The daily case data from China also illustrates the risk of an uptick once restrictions start to be eased.&lt;/p>
&lt;h2 id="a-local-look">A local look&lt;/h2>
&lt;p>John has also started to present figures for cities/regions, both of which show brutally the scenarios in New York, London and parts of Spain:&lt;/p>
&lt;figure id="figure-daily-deaths-by-region-ft">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Daily Deaths by Region (FT) " srcset="
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-dailydeaths-regional-2020-04-01_hu3c56a5e48058d324c7b548a1de51d913_157717_052cada72b36ad17282bb6af4d0971b4.webp 400w,
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-dailydeaths-regional-2020-04-01_hu3c56a5e48058d324c7b548a1de51d913_157717_5872575c4ca02379212f925d748c153f.webp 760w,
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-dailydeaths-regional-2020-04-01_hu3c56a5e48058d324c7b548a1de51d913_157717_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-dailydeaths-regional-2020-04-01_hu3c56a5e48058d324c7b548a1de51d913_157717_052cada72b36ad17282bb6af4d0971b4.webp"
width="760"
height="543"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Daily Deaths by Region (FT)
&lt;/figcaption>&lt;/figure>
&lt;p>and cumulatively&lt;/p>
&lt;figure id="figure-cumulative-deaths-by-region-ft">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Cumulative Deaths by Region (FT) " srcset="
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-cumdeaths-regional-2020-04-01_hu74f3467ce9cc94b790eb275fbfebc37b_186637_a892db78a2fd91e5aa98edabbe2f1b3c.webp 400w,
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-cumdeaths-regional-2020-04-01_hu74f3467ce9cc94b790eb275fbfebc37b_186637_09b7a93614bda8a8ea86e9d32ed45036.webp 760w,
/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-cumdeaths-regional-2020-04-01_hu74f3467ce9cc94b790eb275fbfebc37b_186637_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/2020/04/02/a-look-at-covid-19-data-journalism-part-1/img/FT-cumdeaths-regional-2020-04-01_hu74f3467ce9cc94b790eb275fbfebc37b_186637_a892db78a2fd91e5aa98edabbe2f1b3c.webp"
width="760"
height="543"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Cumulative Deaths by Region (FT)
&lt;/figcaption>&lt;/figure>
&lt;p>As a London resident I think it will be interesting to dig into the &lt;a href="https://www.arcgis.com/apps/opsdashboard/index.html#/f94c3c90da5b4e9f9a0b19484dd4bb14" target="_blank" rel="noopener">data provided by the UK Government down to Local Authority level&lt;/a>.&lt;/p></description></item><item><title>Government briefings</title><link>https://www.synesthesia.co.uk/2020/03/30/government-briefings/</link><pubDate>Mon, 30 Mar 2020 18:57:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/2020/03/30/government-briefings/</guid><description>&lt;p>I&amp;rsquo;ve pretty much stopped watching the official briefings, between shouting at the politicians and urging the journalists to be more probing they aren&amp;rsquo;t good for my peace of mind. Far better to read a considered report in a reputable source later.&lt;/p>
&lt;p>Alistair Campbell nails it with his &lt;a href="https://alastaircampbell.org/2020/03/twenty-phrases-that-should-be-banished-from-covid-19-briefings/" target="_blank" rel="noopener">20 phrases that should be banished from Covid-19 briefings&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;ul>
&lt;li>We’re leaving no stone unturned. (Show don’t tell)&lt;/li>
&lt;li>We’re working round the clock. (Show don’t tell)&lt;/li>
&lt;li>We’re ramping up. (Show don’t tell)&lt;/li>
&lt;li>We’re straining every sinew. (Show don’t tell)&lt;/li>
&lt;li>We’re moving heaven and earth. (Impossible)&lt;/li>
&lt;li>100 percent focused. (Should go without saying)&lt;/li>
&lt;li>110 percent focused. (Even worse)&lt;/li>
&lt;li>Whatever it takes … whether on tests, masks, protective clothing, ventilators, support for new small businesses, charities, Brits stranded abroad, there are too many things on which they have so clearly not done whatever it takes. So drop it. (This will be a major problem for them at the public inquiry.)&lt;/li>
&lt;li>We’re following the science … say this only if you share the science which you are following. (This could be a major problem for them at the public inquiry.)&lt;/li>
&lt;li>We’re putting our arms around you. (Odd thing to say when the message is social distancing.)&lt;/li>
&lt;li>Shoulder to shoulder. (ditto)&lt;/li>
&lt;li>This is unprecedented. (A Rishi Sunak favourite)&lt;/li>
&lt;li>We have been clear all along.&lt;/li>
&lt;li>The Prime Minister has been very clear.&lt;/li>
&lt;li>Let me make this absolutely clear. (Only to be used if followed by genuine clarity.)&lt;/li>
&lt;li>What we have said from the start.&lt;/li>
&lt;li>Nobody is pretending.&lt;/li>
&lt;li>I must level with you. (suggests you don’t normally)&lt;/li>
&lt;li>Absolute top priority. (There can only be one, so if you use this, make sure it is always the same one.)&lt;/li>
&lt;li>Hi folks.&lt;/li>
&lt;/ul>
&lt;/blockquote></description></item><item><title>WeekNote 2020 W13</title><link>https://www.synesthesia.co.uk/note/2020/03/30/weeknote-2020-w13/</link><pubDate>Mon, 30 Mar 2020 18:26:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2020/03/30/weeknote-2020-w13/</guid><description>&lt;p>In terms of work this was the first full week of distributed working.&lt;/p>
&lt;p>I spent a fair bit of time coaching colleagues on how to work more effectively using Teams. I think one of the hardest things for people who are first exposed to the messaging side of the application is to learn a more considered approach when posting in a channel. The difference between a new post and a comment seems very hard for some people to pick up, and I think the app could do more to signal to people that channel chat and messaging chat behave differently.&lt;/p>
&lt;p>This was however a great opportunity to use the &lt;a href="https://teamsbook.info/pages/resources" target="_blank" rel="noopener">10P&amp;rsquo;s framework&lt;/a> to guide a conversation about the design of a new Team and it seems to resonate with people. Even had colleagues suggesting &amp;ldquo;fewer internal emails&amp;rdquo; as a KPI.&lt;/p>
&lt;p>One of the suggestions in &lt;a href="https://teamsbook.info" target="_blank" rel="noopener">the book&lt;/a> is to forward email sent to the team to a channel in the Team. Many of our workgroups have a shared email address that is used both for inbound customer communications and internal collaboration. It&amp;rsquo;s easy enough to set up an Exchange Online mail flow rule to redirect the internal email, but that won&amp;rsquo;t work for incoming external mail. On a redirect Teams sees the email as coming from the external domain and bounces it. This might need Power Automate to do a forward, although that feels like overkill.&lt;/p>
&lt;p>Other areas of work were about moving elements of our CPD offer online.&lt;/p>
&lt;h2 id="life-under-corona">Life under corona&lt;/h2>
&lt;p>This was the first week of lockdown - all non-essential shops closed, finally a clear requirement for pubs and restaurants to close, instructions to minimise trips outside the home and maintain &amp;ldquo;social distancing&amp;rdquo;.&lt;/p>
&lt;p>Within a couple of days shops that remain open were throttling the number in store to keep people apart, and together with purchase restrictions this seems to have eliminated the worst examples of empty shelves.&lt;/p>
&lt;p>It still feels very strange to look out over a near silent city.&lt;/p></description></item><item><title>WeekNote 2020 W12</title><link>https://www.synesthesia.co.uk/note/2020/03/20/weeknote-2020-w12/</link><pubDate>Fri, 20 Mar 2020 11:46:34 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2020/03/20/weeknote-2020-w12/</guid><description>&lt;p>So where did the week notes go?&lt;/p>
&lt;p>There were a couple of weeks where work was so bitty that I lost the will to sit down at the end of the week and write it up - this in itself is a source of learning - I think for me it reinforces the need to grab at least a sentence or two every day so a summary is easy to write.&lt;/p>
&lt;p>Although I still use the Pomodoro app to keep individual bits of work focused, I&amp;rsquo;ve abandoned the focus time experiment. In part because another symptom of those very &amp;ldquo;bitty&amp;rdquo; weeks was a slide of the habit, but more deeply I realised that I was starting to game my own system to make the numbers look &amp;ldquo;good&amp;rdquo;. That is probably the most valuable lesson - any way you measure people that is made public tends to be gamed, even when you are gaming yourself.&lt;/p>
&lt;p>This week has like everyone else been overtaken by the developing coronavirus situation in the UK. At our workplace we declared &amp;ldquo;full distributed working&amp;rdquo; from Monday evening, with a skeleton team going in on Tuesday to close out the office.&lt;/p>
&lt;p>Wednesday and Thursday flew by, and in hindsight it&amp;rsquo;s amazing the progress we made with adapting to the new normal:&lt;/p>
&lt;ul>
&lt;li>Postponing face to face CPD delivery over the next couple of months&lt;/li>
&lt;li>Started exploring options to offer online alternatives based around services we already have - Microsoft Teams, Discourse and Moodle&lt;/li>
&lt;li>Sales and marketing priorities adjusted to focus on services which provide sustained revenue&lt;/li>
&lt;li>Starting work on a free digital offer to support our members - schools are in unprecedented situation&lt;/li>
&lt;li>Supporting staff who are normally office-based make the transition to distributed working&lt;/li>
&lt;li>Working with teams who had only used the chat functions in Microsoft Teams to adopt the more powerful features&lt;/li>
&lt;li>Setting up ad-hoc processes for teams to support each other psychologically whilst distributed&lt;/li>
&lt;li>Ensuring some work was still done on supporting existing application development priorities&lt;/li>
&lt;/ul>
&lt;p>I also took part in a Zoom meetup for Harold Jarche&amp;rsquo;s &lt;a href="https://jarche.com/perpetual-beta-coffee-club/" target="_blank" rel="noopener">Perpetual Beta Coffee Club&lt;/a> - participants from Canada, France, Canary Islands, UK and probably others. Nothing very structured, but a great opportunity to hear how workplaces across a fair section of the West are adapting to the pandemic.&lt;/p>
&lt;p>In terms of personal impact I&amp;rsquo;ve decided to ration news to a couple of times per day. Probably the most emotional moment so far was when a couple of us were locking up the office without any sense of when we might reopen it - that felt like a very definite transition point.&lt;/p>
&lt;p>Personal priorities have been around making sure the extended family all have systems in place - there are 4 generations living within 2 miles, and of course adapting our working world to two professionals working from the same apartment.&lt;/p>
&lt;p>It&amp;rsquo;s been noticeable that the queues outside shops are definitely influenced by customer demographic. We use our local Aldi for much of our shopping, but this week it has been almost unusable because of queues. Luckily we&amp;rsquo;re in the position to use other shops, and by contrast the local M&amp;amp;S food hall had no queues.&lt;/p>
&lt;figure id="figure-queue-outside-aldi-archway-715-am-18032020">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Queue outside Aldi Archway 7:15 am 18/03/2020" srcset="
/note/2020/03/20/weeknote-2020-w12/queue-aldi-archway-20200318_huab8ff83317d891bd917976a987d239b3_2186269_a7d5597a58039839551faeee74b29172.webp 400w,
/note/2020/03/20/weeknote-2020-w12/queue-aldi-archway-20200318_huab8ff83317d891bd917976a987d239b3_2186269_01ef19895279a9cc610d1415726b3b02.webp 760w,
/note/2020/03/20/weeknote-2020-w12/queue-aldi-archway-20200318_huab8ff83317d891bd917976a987d239b3_2186269_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/note/2020/03/20/weeknote-2020-w12/queue-aldi-archway-20200318_huab8ff83317d891bd917976a987d239b3_2186269_a7d5597a58039839551faeee74b29172.webp"
width="570"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Queue outside Aldi Archway 7:15 am 18/03/2020
&lt;/figcaption>&lt;/figure>
&lt;p>And this is probably the first time I have ever seen Islington Council jet washing anything&amp;hellip;&lt;/p>
&lt;figure id="figure-islington-council-workers-jetwash-street-furniture-at-archway-19032020">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Islington council workers jetwash street furniture at Archway 19/03/2020" srcset="
/note/2020/03/20/weeknote-2020-w12/jetwash-archway-20200319_hu1043dea7d9a2b43e7e97389345e3ddb9_1200368_2b5ba9982b66b1fe50e5465888a42873.webp 400w,
/note/2020/03/20/weeknote-2020-w12/jetwash-archway-20200319_hu1043dea7d9a2b43e7e97389345e3ddb9_1200368_dae640db822b3f5b178d845fa27cc704.webp 760w,
/note/2020/03/20/weeknote-2020-w12/jetwash-archway-20200319_hu1043dea7d9a2b43e7e97389345e3ddb9_1200368_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/note/2020/03/20/weeknote-2020-w12/jetwash-archway-20200319_hu1043dea7d9a2b43e7e97389345e3ddb9_1200368_2b5ba9982b66b1fe50e5465888a42873.webp"
width="708"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Islington council workers jetwash street furniture at Archway 19/03/2020
&lt;/figcaption>&lt;/figure></description></item><item><title> Digital Literacy at Work</title><link>https://www.synesthesia.co.uk/2020/03/06/digital-literacy-at-work/</link><pubDate>Fri, 06 Mar 2020 15:55:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2020/03/06/digital-literacy-at-work/</guid><description>&lt;p>Google the term “digital literacy and the workplace” and you will be overwhelmed with the results. A good place to start might be the Adobe blog article &lt;a href="https://theblog.adobe.com/how-digital-literacy-affects-the-modern-workforce/" target="_blank" rel="noopener">How Digital Literacy Affects the Modern Workforce&lt;/a>.&lt;/p>
&lt;p>A &lt;a href="https://twitter.com/ActivateLearn/status/1226950011822362624?s=20" target="_blank" rel="noopener">tweet&lt;/a> by Helen Blunden pointed me at the work of &lt;a href="https://tracyvanderschyff.com/about/" target="_blank" rel="noopener">Tracy Van Der Schyff&lt;/a>, including this post on &lt;a href="https://tracyvanderschyff.com/2017/10/05/digital-literacy-and-the-impact-on-user-adoption/" target="_blank" rel="noopener">Digital literacy and the impact on user adoption&lt;/a>. The model Tracey uses in that post looked slightly familiar, and after a bit of digging I think I have managed to place it as emerging from work done in the early part of the 2010&amp;rsquo;s by &lt;a href="https://www.jisc.ac.uk/" target="_blank" rel="noopener">JISC&lt;/a>, leading a substantial amount of research around the modern digital literacies needed by learners.&lt;/p>
&lt;p>Although the original work was around the needs of learners (of all ages) in education, I think it&amp;rsquo;s reasonable to extrapolate to the needs of people working in a wide range of jobs that handle information and knowledge in some form.&lt;/p>
&lt;p>Tracey&amp;rsquo;s presentation is written specifically from the perspective of encouraging users to make good use of a set of specific digital tools (in her case the Microsoft Office 365 suite) but I think the model is more general than that.&lt;/p>
&lt;p>Capturing here for future reference,&lt;/p>
&lt;figure id="figure-8-facets-of-digital-literacy---adapted-from-jisc-2011">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="8 facets of digital literacy - adapted from JISC 2011" srcset="
/2020/03/06/digital-literacy-at-work/digital-literacy-8_hu7747c05427d1069118f9b4b263c340b5_77620_eea2c9b5d2af1aec4a0eeb6410610bf0.webp 400w,
/2020/03/06/digital-literacy-at-work/digital-literacy-8_hu7747c05427d1069118f9b4b263c340b5_77620_c3568cebf0f0be7f9ad38547702c8187.webp 760w,
/2020/03/06/digital-literacy-at-work/digital-literacy-8_hu7747c05427d1069118f9b4b263c340b5_77620_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/2020/03/06/digital-literacy-at-work/digital-literacy-8_hu7747c05427d1069118f9b4b263c340b5_77620_eea2c9b5d2af1aec4a0eeb6410610bf0.webp"
width="681"
height="501"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
8 facets of digital literacy - adapted from JISC 2011
&lt;/figcaption>&lt;/figure>
&lt;p>Looking for definitions, I found and adapted from &lt;a href="https://www.nfer.ac.uk/publications/FUTL06/FUTL06casestudies.pdf" target="_blank" rel="noopener">Payton and Hague 2010&lt;/a>, giving us:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Creativity&lt;/td>
&lt;td>The ability to think creatively and imaginatively, and to use technology to create outputs and represent knowledge in different formats and modes. Knowing when and how digital technology can support creative processes, and thinking creatively about technology and with technology.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Collaboration&lt;/td>
&lt;td>The ability to work successfully with others to collaboratively create and share meaning and understanding. To develop the skills of team work, to be able to work together when using technology and to understand how technology can support collaboration.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Critical Thinking and Evaluation&lt;/td>
&lt;td>Being able to use reasoning skills to engage with digital media and its content,to question, analyse, scrutinise and evaluate it and to formulate and support arguments about it and the way it is used. Critical thinking involves being reflective, developing insight about underlying assumptions, interpreting meaning and determining significance in order to understand and make sense of the world.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cultural and Social Understanding&lt;/td>
&lt;td>The ability to recognise that there are social, cultural and historical influences that shape the creation of digital content and our understanding of it. This involves understanding how your own and others&amp;rsquo; perspectives have been informed by cultural heritages and being aware of the social and cultural contexts in which digital media is created and used.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Curate Information&lt;/td>
&lt;td>To define what sort of information you need for a task or activity, to know where and how to find information, to critically engage with sources to select relevant, valuable and reliable information and to be aware of intellectual property issues related to plagiarism and copyright.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>E-Safety&lt;/td>
&lt;td>The ability to stay safe when using digital technologies, and to understand what constitutes appropriate use and appropriate content&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Practical &amp;amp; Functional Skills&lt;/td>
&lt;td>Knowing how to use a range of different technologies competently and having the skills and flexibility to adapt this knowledge to learn how to use new technologies&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Proficient Communicator&lt;/td>
&lt;td>Being able to clearly express ideas so that others can understand them. Having an understanding of the different modes in which meaning can be represented and showing an awareness of the needs of particular audiences. Understanding how technology can support this and how to communicate effectively using different types of technology.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>Move a Wiki</title><link>https://www.synesthesia.co.uk/note/2020/03/03/move-a-wiki/</link><pubDate>Tue, 03 Mar 2020 08:00:51 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2020/03/03/move-a-wiki/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>This is a follow-on post to &lt;a href="https://www.synesthesia.co.uk/note/2020/02/28/fedwiki-install-on-64-bit-ubuntu/">FedWiki install on 64 bit Ubuntu&lt;/a>&lt;/p>
&lt;p>The reason I set up a new server for wiki was to enable me to take advantage of recent upgrades which require a 64 bit server.&lt;/p>
&lt;p>This second post documents how to move the wiki.&lt;/p>
&lt;p>The approach I am taking does involve a period of outage for the service, but as it&amp;rsquo;s a personal server that&amp;rsquo;s acceptable. If you wanted to do the swap without an outage you would need a more complex architecture including a load balancer so you could set up the new server while the old one still served requests, then swap when the new one is ready. That would be total overkill for this site!&lt;/p>
&lt;h2 id="reviewing-what-sites-we-are-moving">Reviewing what sites we are moving&lt;/h2>
&lt;p>I have several wiki sites on one farm - at present:&lt;/p>
&lt;ul>
&lt;li>wiki.synesthesia.co.uk&lt;/li>
&lt;li>pkm.wiki.synesthesia.co.uk&lt;/li>
&lt;li>forage.wiki.synesthesia.co.uk&lt;/li>
&lt;li>code.wiki.synesthesia.co.uk&lt;/li>
&lt;li>product.wiki.synesthesia.co.uk&lt;/li>
&lt;/ul>
&lt;h2 id="moving-dns-to-point-to-the-new-server">Moving DNS to point to the new server&lt;/h2>
&lt;p>This is the point at which service to the old installation will be lost, but we need to set up the DNS before we can configure SSL.&lt;/p>
&lt;p>I have sites at &lt;code>wiki.synesthesia.co.uk&lt;/code> and on sub-domains under that, so for convenience I also set a wildcard DNS record - i.e. an A record for &lt;code>*.wiki.synesthesia.co.uk&lt;/code>.&lt;/p>
&lt;p>Once both A records have been edited to point to the new server you need to wait for changes to propagate before moving on, so initially I always use a low TTL setting.&lt;/p>
&lt;p>Because I run wiki in farm mode this wildcard DNS would represent a risk that anyone could create a wiki on my farm just by visiting the correct URL, this is mitigated in the Nginx configuration&lt;/p>
&lt;h2 id="setting-up-ssl">Setting up SSL&lt;/h2>
&lt;p>I use &lt;a href="https://certbot.eff.org/" target="_blank" rel="noopener">Certbot&lt;/a> to create SSL certificates.&lt;/p>
&lt;p>Install certbot:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">wiki@MYSITE.COM&amp;gt; sudo apt-get update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@MYSITE.COM&amp;gt; sudo apt-get install software-properties-common
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@MYSITE.COM&amp;gt; sudo add-apt-repository universe
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@MYSITE.COM&amp;gt; sudo add-apt-repository ppa:certbot/certbot
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@MYSITE.COM&amp;gt; sudo apt-get update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@MYSITE.COM&amp;gt; sudo apt-get install certbot python-certbot-nginx
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Although certbot is able to edit nginx config files, because of the complexity of my setup I choose to just get the certificates, then manually edit the nginx config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">wiki@MYSITE.COM&amp;gt; sudo certbot certonly --nginx -d domain1 -d domain2 -d domainN
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Finally test auto-renewal:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">wiki@MYSITE.COM&amp;gt; sudo certbot renew --dry-run
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Lastly check renewal script has been installed as a cron:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">wiki@MYSITE.COM&amp;gt; sudo systemctl list-timers
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="modifying-the-nginx-configuration">Modifying the Nginx configuration&lt;/h2>
&lt;p>Connect to server and edit the config file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">local&amp;gt; ssh wiki@MYSITE.COM &lt;span class="c1">## your server address will vary!&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@MYSITE.COM&amp;gt; sudo vi /etc/nginx/sites-available/wiki
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The complete contents of my nginx config are:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">map $http_upgrade $connection_upgrade {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default upgrade;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#39;&amp;#39; close;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># Main server block to proxy correct requests
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># through to wiki
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">server {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> server_name wiki.synesthesia.co.uk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> code.wiki.synesthesia.co.uk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> pkm.wiki.synesthesia.co.uk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> product.wiki.synesthesia.co.uk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> forage.wiki.synesthesia.co.uk;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> location / {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_set_header X-Real-IP $remote_addr;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_set_header Host $host;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_set_header X-NginX-Proxy true;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_pass http://127.0.0.1:3000;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_redirect off;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_http_version 1.1;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_set_header Upgrade $http_upgrade;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_set_header Connection $connection_upgrade;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> listen 443 ssl;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ssl_certificate /etc/letsencrypt/live/wiki.synesthesia.co.uk/fullchain.pem;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ssl_certificate_key /etc/letsencrypt/live/wiki.synesthesia.co.uk/privkey.pem;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> include /etc/letsencrypt/options-ssl-nginx.conf;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># Default server block serves two purposes:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># - http requests to recognised sites are redirected to the https URL
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># - requests to unrecognised sites are rejected
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">server {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> listen 80 default_server;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> listen 443 ssl default_server;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> server_name _;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ssl_certificate /etc/letsencrypt/live/wiki.synesthesia.co.uk/fullchain.pem;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ssl_certificate_key /etc/letsencrypt/live/wiki.synesthesia.co.uk/privkey.pem;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> if ($host = product.wiki.synesthesia.co.uk) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> return 301 https://$host$request_uri;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> if ($host = code.wiki.synesthesia.co.uk) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> return 301 https://$host$request_uri;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> if ($host = forage.wiki.synesthesia.co.uk) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> return 301 https://$host$request_uri;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> if ($host = pkm.wiki.synesthesia.co.uk) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> return 301 https://$host$request_uri;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> if ($host = wiki.synesthesia.co.uk) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> return 301 https://$host$request_uri;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> return 444; # &amp;#34;Connection closed without response&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="restoring-the-wiki-content">Restoring the wiki content&lt;/h2>
&lt;p>My wiki data is stored in the directory &lt;code>/home/wiki/.wiki/data&lt;/code> as defined in &lt;code>/home/wiki/.wiki/config.json&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;data&amp;#34;&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;/home/wiki/.wiki/data&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;farm&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;true&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;security_type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;passportjs&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;wikiDomains&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;wiki.synesthesia.co.uk&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;github_clientID&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;MYCLIENTID&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;github_clientSecret&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;MYCLIENTSECRET&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>To restore the wiki content:&lt;/p>
&lt;ul>
&lt;li>from the local backup copy to the server &lt;code>/home/wiki/.wiki/config.json&lt;/code> and &lt;code>/home/wiki/.wiki/data&lt;/code>&lt;/li>
&lt;li>in each wiki directory under &lt;code>/home/wiki/.wiki/data&lt;/code> find and delete &lt;code>./status/sitemap.json&lt;/code> and &lt;code>./status/sitemap.xml&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="checking-that-login-still-works">checking that login still works&lt;/h2>
&lt;ul>
&lt;li>visit any of the wikis&lt;/li>
&lt;li>click the padlock to trigger login&lt;/li>
&lt;li>authenticate with relevant provider (in my case GitHub)&lt;/li>
&lt;li>check that the padlock opens&lt;/li>
&lt;/ul></description></item><item><title>FedWiki Install on 64 bit Ubuntu</title><link>https://www.synesthesia.co.uk/note/2020/02/28/fedwiki-install-on-64-bit-ubuntu/</link><pubDate>Fri, 28 Feb 2020 13:00:24 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2020/02/28/fedwiki-install-on-64-bit-ubuntu/</guid><description>&lt;p>I recently had to migrate my wiki to a 64 bit server in order to deploy the most recent updates. These instructions relate to Ubuntu 18.04 64 bit on Digital Ocean.&lt;/p>
&lt;h2 id="backup-old-wiki-files">Backup old wiki files&lt;/h2>
&lt;p>As this was to support a migration, before setting up anything new I took a local copy of the &lt;code>/home/wiki/.wiki&lt;/code> directory on my existing server.&lt;/p>
&lt;h2 id="create-ssh-key-pair-for-wiki-user">Create SSH key pair for wiki user&lt;/h2>
&lt;p>These instructions assume that you can run shell locally - e.g. via Git bash if on Windows&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">local&amp;gt; &lt;span class="nb">cd&lt;/span> ~
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">local&amp;gt; mkdir wikiuser
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">local&amp;gt; mkdir wikiuser/.ssh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">local&amp;gt; &lt;span class="nb">cd&lt;/span> wikiuser
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">local&amp;gt; ssh-keygen -t rsa
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>When asked where to store the key enter &lt;code>~/wikiuser/.ssh/id_rsa&lt;/code>&lt;/p>
&lt;h2 id="create-new-server">Create new server&lt;/h2>
&lt;p>Log in to Digital Ocean account and create new droplet. The smallest size is more than enough for a personal wiki farm that gets almost zero traffic. I assume you have got an SSH key uploaded to Digital Ocean and you tell Digital Ocean to install this on the new machine&lt;/p>
&lt;p>Make a note of the new machine IP address, I refer to this later as IPADDRESS&lt;/p>
&lt;h2 id="set-up-server">Set up server&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># copy public key for the new user to temp file on new server&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">local&amp;gt; rsync -a ~/wikiuser/.ssh/id_rsa.pub root@IPADDRESS:~/wiki_id_rsa.pub
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># connect to server&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">local&amp;gt; ssh root@IPADDRESS
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># create new user&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">root@IPADDRESS&amp;gt; useradd -s /bin/bash -d /home/wiki/ -m -G sudo wiki
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">root@IPADDRESS&amp;gt; mkdir /home/wiki/.ssh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">root@IPADDRESS&amp;gt; chmod &lt;span class="m">700&lt;/span> /home/wiki/.ssh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">root@IPADDRESS&amp;gt; cat wiki_id_rsa.pub &amp;gt;&amp;gt; /home/wiki/.ssh/authorized_keys
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">root@IPADDRESS&amp;gt; chown -R wiki:wiki /home/wiki
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">root@IPADDRESS&amp;gt; rm wiki_id_rsa.pub
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># set up firewall&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">root@IPADDRESS&amp;gt; ufw allow OpenSSH
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">root@IPADDRESS&amp;gt; ufw &lt;span class="nb">enable&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">root@IPADDRESS&amp;gt; &lt;span class="nb">exit&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="second-phase-of-installation">Second phase of installation&lt;/h2>
&lt;p>From now on we will login remotely as the wiki user.
Do whatever your local SSH software needs to use the key created for the wiki user, then&amp;hellip;&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># connect to server&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">local&amp;gt; ssh wiki@IPADDRESS
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># set up time utilities&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo dpkg-reconfigure tzdata
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo apt-get update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo apt-get install ntp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Setup auto upgrades&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo dpkg-reconfigure --priority&lt;span class="o">=&lt;/span>low unattended-upgrades
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Install node&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; curl -sL https://deb.nodesource.com/setup_12.x &lt;span class="p">|&lt;/span> sudo -E bash -
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo apt-get install -y nodejs
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo apt-get install -y build-essential
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Install nginx&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo apt update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo apt install nginx
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo ufw allow &lt;span class="s1">&amp;#39;Nginx Full&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; systemctl status nginx &lt;span class="c1"># check output to see nginx is running&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># check in browser by visiting http://IPADDRESS&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#Install wiki&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt;sudo npm install -g wiki
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="configure-wiki-to-start-and-stop-correctly">Configure wiki to start and stop correctly&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo vi /etc/systemd/service/wiki.service
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># In vi enter the following contents to the file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># this is /etc/systemd/system/wiki.service&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>Unit&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">Description&lt;/span>&lt;span class="o">=&lt;/span>Federated Wiki
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>Service&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">Type&lt;/span>&lt;span class="o">=&lt;/span>simple
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">ExecStart&lt;/span>&lt;span class="o">=&lt;/span>/usr/bin/sudo -H -u wiki wiki -f
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">[&lt;/span>Install&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">WantedBy&lt;/span>&lt;span class="o">=&lt;/span>multi-user.target
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># &amp;lt;esc&amp;gt;qw to save&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Test wiki install&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo systemctl start wiki
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; curl http://127.0.0.1:3000
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># should return Found. Redirecting to welcome-visitors.html&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo systemctl stop wiki
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="set-up-nginx-proxy">Set up nginx proxy&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo vi /etc/nginx/sites-available/wiki
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># In vi enter the following contents to the file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">map &lt;span class="nv">$http_upgrade&lt;/span> &lt;span class="nv">$connection_upgrade&lt;/span> &lt;span class="o">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> default upgrade&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span> close&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">server &lt;span class="o">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> server_name SERVER_IP_ADDRESS &lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> location / &lt;span class="o">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_set_header X-Real-IP &lt;span class="nv">$remote_addr&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_set_header X-Forwarded-For &lt;span class="nv">$proxy_add_x_forwarded_for&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_set_header Host &lt;span class="nv">$host&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_set_header X-NginX-Proxy true&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_pass http://127.0.0.1:3000&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_redirect off&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_http_version 1.1&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_set_header Upgrade &lt;span class="nv">$http_upgrade&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> proxy_set_header Connection &lt;span class="nv">$connection_upgrade&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> listen 80&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># &amp;lt;esc&amp;gt;qw to save&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; ln -s /etc/nginx/sites-available/wiki /etc/nginx/sites-enabled/wiki
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo systemctl start wiki
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; sudo systemctl restart nginx
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">wiki@IPADDRESS&amp;gt; &lt;span class="nb">exit&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="nest-steps">Nest steps&lt;/h2>
&lt;p>At this point you should have a server running wiki - point your browser at http://IPADDRESS and you should see an empty federated wiki site.&lt;/p>
&lt;p>In the &lt;a href="https://www.synesthesia.co.uk/note/2020/03/03/move-a-wiki/">next post&lt;/a> I will document how to port an existing wiki onto this new server.&lt;/p></description></item><item><title>WeekNote 2020 W07</title><link>https://www.synesthesia.co.uk/note/2020/02/19/weeknote-2020-w07/</link><pubDate>Wed, 19 Feb 2020 13:07:58 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2020/02/19/weeknote-2020-w07/</guid><description>&lt;h2 id="kaizen">Kaizen&lt;/h2>
&lt;p>Compared to the previous week, the reverse trend - higher working hours but lower total focus hours and focus percentage.&lt;/p>
&lt;figure id="figure-pomodoneanalysis-week-2020-w07">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="PomoDoneAnalysis week 2020-W07" srcset="
/note/2020/02/19/weeknote-2020-w07/pomo-2020-W07_huf2dba5015344fc8b3c7d39a075d8bcdf_54667_5d15237a0880bde25ce7803e19350bfa.webp 400w,
/note/2020/02/19/weeknote-2020-w07/pomo-2020-W07_huf2dba5015344fc8b3c7d39a075d8bcdf_54667_2f9aba99d1a8a8c29c6d99e6f12d7dbf.webp 760w,
/note/2020/02/19/weeknote-2020-w07/pomo-2020-W07_huf2dba5015344fc8b3c7d39a075d8bcdf_54667_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/note/2020/02/19/weeknote-2020-w07/pomo-2020-W07_huf2dba5015344fc8b3c7d39a075d8bcdf_54667_5d15237a0880bde25ce7803e19350bfa.webp"
width="760"
height="384"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
PomoDoneAnalysis week 2020-W07
&lt;/figcaption>&lt;/figure>
&lt;p>Looking at the year to date the change from the previous week is striking.&lt;/p>
&lt;figure id="figure-ratio-of-focus-time-to-working-time-2020-weeks-1-7">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Ratio of focus time to working time, 2020 weeks 1-7" srcset="
/note/2020/02/19/weeknote-2020-w07/hours-2020-01-to-07_hu29b9dd4483b8bd5d3b52d4f7205ab1fa_50691_033583f98bf881e3cf9acb1cd2da5c45.webp 400w,
/note/2020/02/19/weeknote-2020-w07/hours-2020-01-to-07_hu29b9dd4483b8bd5d3b52d4f7205ab1fa_50691_8968238c999e2e0de2f8f74f243bb8cd.webp 760w,
/note/2020/02/19/weeknote-2020-w07/hours-2020-01-to-07_hu29b9dd4483b8bd5d3b52d4f7205ab1fa_50691_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/note/2020/02/19/weeknote-2020-w07/hours-2020-01-to-07_hu29b9dd4483b8bd5d3b52d4f7205ab1fa_50691_033583f98bf881e3cf9acb1cd2da5c45.webp"
width="751"
height="483"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Ratio of focus time to working time, 2020 weeks 1-7
&lt;/figcaption>&lt;/figure>
&lt;p>I&amp;rsquo;m clear about the root cause. As I mentioned &lt;a href="https://www.synesthesia.co.uk/note/2020/02/08/weeknote-2020-w06/">last week&lt;/a>, we had an all-day, all-staff meeting on Wednesday. Not only did this take up almost all the day, but I found it really broke my flow in the middle of the week. On Thursday and Friday it was much harder to focus on anything requiring deep thought.&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;ul>
&lt;li>Extending our automation of contact data deletion to the company website, removing a manual compliance task.&lt;/li>
&lt;li>reviewing re-certification readiness for a security accreditation with colleague who is doing the detailed work&lt;/li>
&lt;li>writing a briefing for colleagues on how we might start podcasting&lt;/li>
&lt;/ul></description></item><item><title>We Are All Authors of Each Other</title><link>https://www.synesthesia.co.uk/2020/02/14/we-are-all-authors-of-each-other/</link><pubDate>Fri, 14 Feb 2020 07:49:36 +0000</pubDate><guid>https://www.synesthesia.co.uk/2020/02/14/we-are-all-authors-of-each-other/</guid><description>&lt;p>&lt;a href="https://blogs.harvard.edu/doc/about/" target="_blank" rel="noopener">Doc Searls&lt;/a> Ostrom Memorial Lecture &lt;a href="https://blogs.harvard.edu/doc/2020/02/10/commons/" target="_blank" rel="noopener">Saving the Internet - and all the commons it makes possible&lt;/a>.&lt;/p>
&lt;blockquote>
&lt;p>Consider the word information. It’s a noun derived from the verb to inform, which in turn is derived from the verb to form. When you tell me something I don’t know, you don’t just deliver a sum of information to me. You form me. As a walking sum of all I know, I am changed by that.
This means &lt;strong>we are all authors of each other&lt;/strong>.
In that sense, the word authority belongs to the right we give others to author us: to form us.
Now look at how much more of that can happen on our planet, thanks to the Internet, with its absence of distance and gravity.&lt;/p>
&lt;/blockquote>
&lt;p>Read the rest of the article too&amp;hellip;&lt;/p></description></item><item><title>Sense-making in multiple dimensions</title><link>https://www.synesthesia.co.uk/2020/02/13/sense-making-in-multiple-dimensions/</link><pubDate>Thu, 13 Feb 2020 07:03:49 +0000</pubDate><guid>https://www.synesthesia.co.uk/2020/02/13/sense-making-in-multiple-dimensions/</guid><description>&lt;p>The more I practice the routines of Personal Knowledge Management, the more I notice some of the underlying structures. In particular I am struck by the multi-dimensionality of how I learn.&lt;/p>
&lt;p>Luis Suarez has started blogging again after a three year hiatus, and has posted several reflections on his dissatisfaction with social media (one factor in his withdrawal), combined with a &lt;a href="http://www.elsua.net/2020/02/11/unlearning/" target="_blank" rel="noopener">desire to recapture the conversational essence from the early days of blogs&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>Once you see the light and enjoy it [Conversations on Web2.0 era social media] for a good few years there is no way back into the darkness. And if you do, at your own peril. That’s why, as part of that unlearning process, I’m back to blogging long form&lt;/p>
&lt;/blockquote>
&lt;p>In &lt;a href="http://www.elsua.net/2020/02/11/unlearning/#comment-6582892" target="_blank" rel="noopener">the comments&lt;/a> Luis and I have been discussing the importance within sense-making of allowing for slowness and reflection (e.g. &lt;a href="https://www.synesthesia.co.uk/2019/11/15/two-speeds-of-sense-making/">multi-speed sense-making&lt;/a> or &lt;a href="https://twitter.com/search?q=%23slowsocial&amp;amp;src=typed_query&amp;amp;f=live" target="_blank" rel="noopener">#SlowSocial&lt;/a>).&lt;/p>
&lt;p>For me this cross-links to Mike Caulfield&amp;rsquo;s metaphor of &lt;a href="https://hapgood.us/2015/10/17/the-garden-and-the-stream-a-technopastoral/" target="_blank" rel="noopener">the Garden and the Stream&lt;/a> where he advocates wiki-like media (in particular &lt;a href="http://fed.wiki.org/view/welcome-visitors/view/federated-wiki" target="_blank" rel="noopener">Federated Wiki&lt;/a>) as &lt;em>&amp;ldquo;a different way to think your online activity, no matter what tool you use [and] a different way of collaborating as well&amp;rdquo;&lt;/em>. His key point is that &amp;ldquo;Garden&amp;rdquo; media allow the author to express the inter- relationship of concepts regardless of time:&lt;/p>
&lt;blockquote>
&lt;p>The Garden is the web as topology. The web as space. It’s the integrative web, the iterative web, the web as an arrangement and rearrangement of things to one another&lt;/p>
&lt;/blockquote>
&lt;p>whereas Stream-based media are organised by time. In this category he lumps blogging with social platforms such as Twitter.&lt;/p>
&lt;p>An adaptation of Caulfield&amp;rsquo;s views is offered by &lt;a href="https://frankmcpherson.blog/" target="_blank" rel="noopener">Frank McPherson&lt;/a> who considers the true characteristic of the Stream as being &lt;a href="https://fedwiki.frankmcpherson.net/view/welcome-visitors/view/the-garden-and-the-stream" target="_blank" rel="noopener">ephemerality rather than the fact of it being presented in a time-based way&lt;/a>.&lt;/p>
&lt;p>When you consider these two characteristics, ephemerality and time-based organisation, whilst platforms such as Twitter fit absolutely within the Stream metaphor, a blog can straddle both ends of the spectrum depending on how it is used. Some posts really are throw-aways of the moment, whereas others can show the development of an idea over time; &lt;a href="https://jarche.com/2015/02/my-pkm-story/" target="_blank" rel="noopener">a flowing series of half-baked ideas&lt;/a>.&lt;/p>
&lt;p>For Caulfield there is a deep power in media that allows topological relationships between concepts to emerge, and (perhaps a little rhetorically) he asserts:&lt;/p>
&lt;blockquote>
&lt;p>that our survival as a species depends on us getting past the sweet, salty fat of &amp;rsquo;the web as conversation&amp;rsquo; and on to something more timeless, integrative, iterative, something less personal and less self-assertive, something more solitary yet more connected.&lt;/p>
&lt;/blockquote>
&lt;p>As often happens, when I looked up the Caulfield reference I started looking through some of his other posts relating to different uses for Federated Wiki, and found &lt;a href="https://hapgood.us/2015/02/12/a-portfolio-of-connections/" target="_blank" rel="noopener">this compelling account&lt;/a> of a classic &amp;ldquo;join the dots&amp;rdquo; moment, characterised by Mike as &lt;em>&amp;ldquo;collaboration with ourselves across temporal boundaries&amp;rdquo;&lt;/em>&lt;/p>
&lt;p>Underlying all of these metaphors is a sense of connecting ideas through multiple dimensions:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Self-Other&lt;/strong>&lt;/td>
&lt;td>New ideas are formed by linking to other ideas which may have been expressed by myself or others&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Time&lt;/strong>&lt;/td>
&lt;td>Ideas develop over time, and can reference ideas expressed at different times in the past&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Concept space&lt;/strong>&lt;/td>
&lt;td>Ideas relate to other ideas topologically&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>At least two of these are in themselves multi-dimensional (how do you map the topology of ideas to each other, or the relationships between different actors?) but I leave that for someone with better visual expression to play with. &amp;#x1f609;&lt;/p></description></item><item><title>So lead already</title><link>https://www.synesthesia.co.uk/2020/02/08/so-lead-already/</link><pubDate>Sat, 08 Feb 2020 11:44:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2020/02/08/so-lead-already/</guid><description>&lt;p>Chris Grey is direct as always - &lt;a href="https://chrisgreybrexitblog.blogspot.com/2020/02/brexiters-need-to-stop-campaigning-and.html" target="_blank" rel="noopener">Brexiters need to stop campaigning and start governing&lt;/a>.&lt;/p>
&lt;p>He reminds us all, pro-Remain and pro-Leave alike, that Brexit has formally happened and now there are new priorities.&lt;/p>
&lt;blockquote>
&lt;p>In particular, the issue is whether Brexiters – who now, unequivocally, form the government – are able to shift from campaigning to, indeed, governing.&lt;/p>
&lt;/blockquote>
&lt;p>To underpin his assertion he cites
&lt;a href="http://robertsaunders.wikidot.com" target="_blank" rel="noopener">Robert Saunders&lt;/a> who attempts to place &lt;a href="http://gladstonediaries.blogspot.com/2020/01/brexit-in-historical-perspective-age-of.html" target="_blank" rel="noopener">Brexit in historical perspective&lt;/a> and reviews the failure of British international strategy from 1945 onwards:&lt;/p>
&lt;blockquote>
&lt;p>From 1961 to 2016, every government (whether Conservative or Labour) started from three basic assumptions: that the best way to rebuild Britain’s economic strength was as the entry-point to an integrated, European market; that the surest route to influence in Washington or the Commonwealth was through a leadership role in Europe; and that the best way to maximise British sovereignty was to have a seat at the table where its destiny would be decided.&lt;/p>
&lt;/blockquote>
&lt;p>Saunders makes clear that joining the EU was a strategic response to Britain&amp;rsquo;s reduced power in the world. Leaving the EU is such a fundamental change to the economic, trade and diplomatic position of the UK that nothing less than a fundamental re-think of strategy is required:&lt;/p>
&lt;blockquote>
&lt;p>What is Britain’s economic future, as a medium-sized economy in a world dominated by China and the United States? What is Britain’s diplomatic role, in a world without an empire? How can Britain maximise its sovereignty over its internal decision-making – which is not an unworthy ambition – in a world in which trade rules are set internationally, in which companies like Google and Facebook have larger GDPs than many countries, and in which issues like climate change render national borders irrelevant?&lt;/p>
&lt;/blockquote>
&lt;p>None of the fundamentals of the world have changed. Like it or not (I don&amp;rsquo;t), we are stuck with this Johnson-led coterie of knaves. They need to step up to the prize they have scrabbled so hard to get, show some honesty and come up with some real strategy.&lt;/p>
&lt;p>To quote Saunders again:&lt;/p>
&lt;blockquote>
&lt;p>Achieving that will require more imagination, more humility and a more clear-eyed appreciation of the options than anyone has yet offered in Britain’s tortured Brexit debate.&lt;/p>
&lt;/blockquote></description></item><item><title>WeekNote 2020 W06</title><link>https://www.synesthesia.co.uk/note/2020/02/08/weeknote-2020-w06/</link><pubDate>Sat, 08 Feb 2020 09:44:18 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2020/02/08/weeknote-2020-w06/</guid><description>&lt;h2 id="kaizen">Kaizen&lt;/h2>
&lt;p>Interesting data this week - although I logged fewer &amp;ldquo;at work&amp;rdquo; hours, the focus hours and focus percentage both increased.&lt;/p>
&lt;figure id="figure-pomodoneanalysis-week-2020-w06">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="PomoDoneAnalysis week 2020-W06" srcset="
/note/2020/02/08/weeknote-2020-w06/pomo-2020-W06_hub4198c562a71c5a16e3ed9c3bdfbda4a_54766_22b13fb1895510b5ad6095fda3c1f606.webp 400w,
/note/2020/02/08/weeknote-2020-w06/pomo-2020-W06_hub4198c562a71c5a16e3ed9c3bdfbda4a_54766_e8a7390e3d46fb474e987aac100882ac.webp 760w,
/note/2020/02/08/weeknote-2020-w06/pomo-2020-W06_hub4198c562a71c5a16e3ed9c3bdfbda4a_54766_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/note/2020/02/08/weeknote-2020-w06/pomo-2020-W06_hub4198c562a71c5a16e3ed9c3bdfbda4a_54766_22b13fb1895510b5ad6095fda3c1f606.webp"
width="760"
height="341"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
PomoDoneAnalysis week 2020-W06
&lt;/figcaption>&lt;/figure>
&lt;p>Looking at the year to date the increase in focus percentage is striking.&lt;/p>
&lt;figure id="figure-ratio-of-focus-time-to-working-time-2020-weeks-1-6">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Ratio of focus time to working time, 2020 weeks 1-6" srcset="
/note/2020/02/08/weeknote-2020-w06/hours-2020-01-to-06_hu315337c41117d8248016f4845045fd35_47923_bf267c2d46a7fbbaecfb7a19e0401c75.webp 400w,
/note/2020/02/08/weeknote-2020-w06/hours-2020-01-to-06_hu315337c41117d8248016f4845045fd35_47923_ed03702710dab176dc51e8c34935e169.webp 760w,
/note/2020/02/08/weeknote-2020-w06/hours-2020-01-to-06_hu315337c41117d8248016f4845045fd35_47923_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/note/2020/02/08/weeknote-2020-w06/hours-2020-01-to-06_hu315337c41117d8248016f4845045fd35_47923_bf267c2d46a7fbbaecfb7a19e0401c75.webp"
width="759"
height="484"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Ratio of focus time to working time, 2020 weeks 1-6
&lt;/figcaption>&lt;/figure>
&lt;p>Its tempting to speculate what may have led to this - I suspect it may because I knew at the start of the week that I might have less time available (due to an open-ended family commitment) and so perhaps that drove more focus in the time I &lt;em>was&lt;/em> available. Doug Belshaw has &lt;a href="https://dougbelshaw.com/blog/2020/02/08/weeknote-06-2020/" target="_blank" rel="noopener">expressed something similar&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>There’s less slack time, which is a good thing as it means you’re laser-focused on what needs to be done, and intolerant of distraction.&lt;/p>
&lt;/blockquote>
&lt;p>It will be interesting to see what week 7 brings because I already know much of one day is taken up with an all-hands meeting.&lt;/p>
&lt;h2 id="highlights">Highlights&lt;/h2>
&lt;p>Getting our services ready for the &lt;strong>changes in handling of cookie SameSite options&lt;/strong>&lt;/p>
&lt;p>More work with our sales, marketing and technical teams on improving the usefulness of &lt;strong>customer journeys&lt;/strong> on the website.&lt;/p>
&lt;p>Reviewing progress with the colleague responsible for ensuring our successful renewal of &lt;strong>Cyber Essentials&lt;/strong> certification.&lt;/p>
&lt;p>1:1 meetings with team members, in which I have started asking &lt;strong>how do we learn on a daily basis?&lt;/strong> Early days on that one, curious to see where it might lead&amp;hellip;&lt;/p></description></item><item><title>Bunhill 2</title><link>https://www.synesthesia.co.uk/2020/02/06/bunhill-2/</link><pubDate>Thu, 06 Feb 2020 12:26:16 +0000</pubDate><guid>https://www.synesthesia.co.uk/2020/02/06/bunhill-2/</guid><description>&lt;p>For the last few years the view from my office window has included the construction site for the Bunhill 2 Energy Centre, part of the &lt;a href="https://www.islington.gov.uk/energy-and-pollution/energy/bunhill-heat-network" target="_blank" rel="noopener">Bunhill heat network&lt;/a>. The barricades have finally come down to reveal the nearly-finished item.&lt;/p>
&lt;p>This second phase of the project extracts waste heat from an electricity sub-station and the Northern Line of London Underground via a 1MW heat exchanger. The building in the photos is on the site of the disused &lt;a href="https://en.wikipedia.org/wiki/City_Road_tube_station" target="_blank" rel="noopener">Central Street station&lt;/a>, closed in 1922, and is directly above the tube tunnel.&lt;/p>
&lt;figure id="figure-bunhill-2-energy-centre-view-looking-south-east">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bunhill 2 Energy Centre, view looking south east" srcset="
/2020/02/06/bunhill-2/bunhill-2-a_hua90340a2317b967356b6e413e89be074_62873_9ecdab521264fc395b78addefe10d7a5.webp 400w,
/2020/02/06/bunhill-2/bunhill-2-a_hua90340a2317b967356b6e413e89be074_62873_c7b8122bae12fe42ce9db7ed663e682a.webp 760w,
/2020/02/06/bunhill-2/bunhill-2-a_hua90340a2317b967356b6e413e89be074_62873_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/2020/02/06/bunhill-2/bunhill-2-a_hua90340a2317b967356b6e413e89be074_62873_9ecdab521264fc395b78addefe10d7a5.webp"
width="500"
height="375"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Bunhill 2 Energy Centre, view looking south east
&lt;/figcaption>&lt;/figure>
&lt;p>The lower height part of the building in the photo above is a skin around the remains of the original 1901 structure, now housing an existing sub-station.&lt;/p>
&lt;figure id="figure-bunhill-2-energy-centre-view-looking-north-west">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Bunhill 2 Energy Centre, view looking north west" srcset="
/2020/02/06/bunhill-2/bunhill-2-b_hu34f562b012e0dacfe118e1332c32cd1d_71469_e74ded9a98500ac7c71568e4d7f705e3.webp 400w,
/2020/02/06/bunhill-2/bunhill-2-b_hu34f562b012e0dacfe118e1332c32cd1d_71469_876941bc78a53a7cb0506d202ec2648b.webp 760w,
/2020/02/06/bunhill-2/bunhill-2-b_hu34f562b012e0dacfe118e1332c32cd1d_71469_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/2020/02/06/bunhill-2/bunhill-2-b_hu34f562b012e0dacfe118e1332c32cd1d_71469_e74ded9a98500ac7c71568e4d7f705e3.webp"
width="375"
height="500"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Bunhill 2 Energy Centre, view looking north west
&lt;/figcaption>&lt;/figure>
&lt;p>According to the architects &lt;a href="http://cullinanstudio.com/project/bunhill-2-energy-centre" target="_blank" rel="noopener">Cullinan Studio&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>This phase, which connects to the original network completed in November 2012, brings in low carbon sources of heat to the residents of five communally heated residential blocks (454 dwellings). It is also seeking to supply an additional three new communally heated residential developments (a further 215 homes), a school, a sheltered housing block, a community centre and a nursery.&lt;/p>
&lt;/blockquote>
&lt;p>The engineering design was carried out by the Danish firm &lt;a href="https://uk.ramboll.com/projects/ruk/heating-up-london" target="_blank" rel="noopener">Ramboll&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>The Northern Line, the oldest deep level metro line in the world, will heat 21st century homes, offices and leisure centres. The project will be a European first of its kind, extending what is possible when using waste energy to make for a more liveable, more sustainable society.
The proposed low-carbon heat source was a London Underground ventilation shaft, located on City Road, where 18-28 degrees Celsius air is exhausted to the atmosphere from a long abandoned tube station (City Road, between Old Street and Angel), now part of the Northern Line tunnel ventilation system. Ramboll’s feasibility study confirmed that this source of waste heat could be exploited by heat pumps, which would capture the waste heat and upgrade it to approximately 80 degrees Celsius
Another design innovation was to incorporate two smaller gas-fired CHP engines which, as well as providing heat, also supply electricity directly to the heat pump when the power from the grid is most expensive, helping reduce the cost of the heat&lt;/p>
&lt;/blockquote>
&lt;p>&lt;em>(Photos CC-BY-ND Julian Elve 2020 also on Flickr &lt;a href="https://flic.kr/p/2ipRtF7" target="_blank" rel="noopener">here&lt;/a> and &lt;a href="https://flic.kr/p/2ipRtpv" target="_blank" rel="noopener">here&lt;/a>)&lt;/em>&lt;/p></description></item><item><title>Adventures in music</title><link>https://www.synesthesia.co.uk/2020/02/02/adventures-in-music/</link><pubDate>Sun, 02 Feb 2020 21:04:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2020/02/02/adventures-in-music/</guid><description>&lt;p>Just finished watching the 3-part BBC documentary &amp;ldquo;&lt;a href="https://www.bbc.co.uk/programmes/m000db8k" target="_blank" rel="noopener">Stewart Copeland&amp;rsquo;s Adventures in Music&lt;/a>&amp;rdquo;.&lt;/p>
&lt;p>Copeland&amp;rsquo;s enthusiasm for the subject is engaging but ultimately I found the series frustrating, because it erred too much on the descriptive - e.g. &amp;ldquo;Music can introduce a transcendental state&amp;rdquo; and too light on the explanatory - the interviews with neuroscientists and psychologists were almost reduced to sound bites.&lt;/p>
&lt;p>However one of those scientists is &lt;a href="https://en.m.wikipedia.org/wiki/Daniel_Levitin" target="_blank" rel="noopener">Daniel Levitin&lt;/a>, and I&amp;rsquo;m now reading his recent book &lt;a href="https://amzn.to/36PFicz" target="_blank" rel="noopener">This is Your Brain on Music&lt;/a>, which I hope is going to address some of those questions.&lt;/p></description></item><item><title>A terrible day</title><link>https://www.synesthesia.co.uk/2020/01/31/a-terrible-day/</link><pubDate>Fri, 31 Jan 2020 18:06:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2020/01/31/a-terrible-day/</guid><description>&lt;p>Last day for UK in the EU.&lt;/p>
&lt;p>A terrible act of national self-harm.&lt;/p>
&lt;p>The loss of rights for millions.&lt;/p>
&lt;p>A deeply divided society.&lt;/p>
&lt;p>As much as I admire Keir Starmer insisting that &lt;a href="https://www.theguardian.com/commentisfree/2020/jan/30/labour-leave-remain-divide-brexit" target="_blank" rel="noopener">another future is possible&lt;/a>, today my sentiments are far better expressed by &lt;a href="https://chrisgreybrexitblog.blogspot.com/" target="_blank" rel="noopener">Professor Chris Grey&lt;/a>.&lt;/p>
&lt;p>In the long piece &lt;a href="https://chrisgreybrexitblog.blogspot.com/2020/01/a-day-to-mourn.html" target="_blank" rel="noopener">A day to mourn&lt;/a> he closes this way:&lt;/p>
&lt;blockquote>
&lt;p>So I mourn the country we have already lost, and fear for the one to come. For, dark as today is for so many of us, there may well be far darker days ahead.&lt;/p>
&lt;/blockquote></description></item><item><title>WeekNote 2020 W05</title><link>https://www.synesthesia.co.uk/note/2020/01/31/weeknote-2020-w05/</link><pubDate>Fri, 31 Jan 2020 15:03:12 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2020/01/31/weeknote-2020-w05/</guid><description>&lt;h2 id="kaizen">Kaizen&lt;/h2>
&lt;p>A slight increase in focus time from last week, but still notably below start of the month.&lt;/p>
&lt;figure id="figure-pomodoneanalysis-week-2020-w05">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="PomoDoneAnalysis week 2020-W05" srcset="
/note/2020/01/31/weeknote-2020-w05/pomo-2020-W05_huf74cb4867dc17e2f0e9d99d62ddc5acb_54437_260b048b19ee3d70f658a91fb2fdea3e.webp 400w,
/note/2020/01/31/weeknote-2020-w05/pomo-2020-W05_huf74cb4867dc17e2f0e9d99d62ddc5acb_54437_aa7446971158062057b601c3f91adee6.webp 760w,
/note/2020/01/31/weeknote-2020-w05/pomo-2020-W05_huf74cb4867dc17e2f0e9d99d62ddc5acb_54437_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/note/2020/01/31/weeknote-2020-w05/pomo-2020-W05_huf74cb4867dc17e2f0e9d99d62ddc5acb_54437_260b048b19ee3d70f658a91fb2fdea3e.webp"
width="760"
height="357"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
PomoDoneAnalysis week 2020-W05
&lt;/figcaption>&lt;/figure>
&lt;ul>
&lt;li>Monday was a combination of pre-meeting and meeting about resolving some workplace issues, and further impact of the minor health issue&lt;/li>
&lt;li>Thursday had a couple of notable non-productive highlights. In particular quite a long time crafting an email to some senior colleagues around a compliance issue so that the wording was &amp;ldquo;just right&amp;rdquo;&lt;/li>
&lt;li>Friday in particular suffered from a lot of operational issues covering for a team member who was on leave&lt;/li>
&lt;/ul>
&lt;p>Looking at the cumulative results over the last 5 weeks, it looks like the ratio of &amp;ldquo;focus time&amp;rdquo; to &amp;ldquo;total work time&amp;rdquo; is asymptotic to about 70%.&lt;/p>
&lt;figure id="figure-ratio-of-focus-time-to-working-time-2020-weeks-1-5">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Ratio of focus time to working time, 2020 weeks 1-5" srcset="
/note/2020/01/31/weeknote-2020-w05/hours-2020-01-to-05_hudb724b4779fe1be1dbaa4fb27c87ae51_45092_45fd13fb86eae7a39ffd7b2af3ef7088.webp 400w,
/note/2020/01/31/weeknote-2020-w05/hours-2020-01-to-05_hudb724b4779fe1be1dbaa4fb27c87ae51_45092_d484958d8fec6108dba57fefe3cddd97.webp 760w,
/note/2020/01/31/weeknote-2020-w05/hours-2020-01-to-05_hudb724b4779fe1be1dbaa4fb27c87ae51_45092_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/note/2020/01/31/weeknote-2020-w05/hours-2020-01-to-05_hudb724b4779fe1be1dbaa4fb27c87ae51_45092_45fd13fb86eae7a39ffd7b2af3ef7088.webp"
width="759"
height="473"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Ratio of focus time to working time, 2020 weeks 1-5
&lt;/figcaption>&lt;/figure>
&lt;p>This is probably a good time to document the standards I am trying to adopt in terms of how I am (in practice) classifying time in this experiment. Please note this is about practical measurement and not any kind of attempt to match to contracted hours (like most people I do more than those).&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Item&lt;/th>
&lt;th>Definition&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Total work time&lt;/td>
&lt;td>From when I arrive in the office to when I leave, or when working from home, approximate start and end times of my work session(s)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Excluded from total work time&lt;/td>
&lt;td>Any break away from the workplace for more than the time it takes to go across the road to buy lunch (I eat at my desk mostly). So if I take extra time to go to the shops, or some kind of appointment that gets excluded.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Focus time&lt;/td>
&lt;td>Stuff that I can attach to an output-generating activity. Meetings that are about moving a project forward through co-construction or decision-making. Coaching meetings with team members. Planned handling of emails etc (e.g. morning triage). I include the Pomodoro breaks within this figure (e.g. on standard intervals 5 mins every interval, 20 mins every 4 intervals - the time recorded is the actual break so if I cut a break short that doesn&amp;rsquo;t inflate the result)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Non-focus time&lt;/td>
&lt;td>By definition stuff that doesn&amp;rsquo;t get recorded. Refreshment breaks outside of the Pomodoro breaks.. General ad-hoc checking of email or messages, ad-hoc conversations. Meetings that are mostly about progress reporting rather than co-construction or decision-making.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>In practice the last category will be over-stated - often because I forgot to switch on a timer.&lt;/p>
&lt;h2 id="other-highlights">Other highlights&lt;/h2>
&lt;p>&lt;strong>Starting Phase 2 of our work&lt;/strong> to provide online interaction that is much more responsive to customer interests. Another example of how a prior meeting had missed a key point because one of the main stakeholders was away. So often it&amp;rsquo;s about making sure the right conversations happen.&lt;/p>
&lt;p>Working with a different set of colleagues &lt;strong>teasing out the value proposition&lt;/strong> of a new service we might offer.&lt;/p>
&lt;p>And &lt;strong>lightbulb moment of the week&lt;/strong> - after realising that the planned rework of our Dynamics 365 stack was not moving anywhere near fast enough, we can give our users a much better experience (and stay inside some hard deadlines from Microsoft) by putting a new Unified Interface app on top of the existing customisations. A first alpha was in front of one key group within a day.&lt;/p></description></item><item><title>Through a Glass Darkly</title><link>https://www.synesthesia.co.uk/2020/01/29/through-a-glass-darkly/</link><pubDate>Wed, 29 Jan 2020 06:50:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/2020/01/29/through-a-glass-darkly/</guid><description>&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Functional_magnetic_resonance_imaging" target="_blank" rel="noopener">Functional Magnetic Resonance Imaging (fMRI)&lt;/a> seems to be on every second documentary these days; it&amp;rsquo;s also cropped up in two completely separate strands of reading at the moment.&lt;/p>
&lt;p>Some of that same reading has led me to &lt;a href="https://www.youtube.com/watch?v=JJP-rkilz40" target="_blank" rel="noopener">this video&lt;/a> of a lecture from &lt;a href="https://en.wikipedia.org/wiki/George_Lakoff" target="_blank" rel="noopener">George Lakoff&lt;/a> on the &lt;a href="https://www.youtube.com/watch?v=JJP-rkilz40" target="_blank" rel="noopener">Neuroscience of Thought and Language&lt;/a>.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/JJP-rkilz40" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>I&amp;rsquo;m only part way through, but the first striking thing comes at &lt;a href="https://youtu.be/JJP-rkilz40?t=119" target="_blank" rel="noopener">about 2 minutes in&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>each little pixel (3mm cubed) contains about 125 million neurons, each neuron is connected to between a 1,000 and 10,000 other neurons, so there are 10&amp;rsquo;s of billions of connections in that one little pixel, and that picture doesn&amp;rsquo;t tell you what&amp;rsquo;s going in in that circuitry&amp;hellip;&lt;/p>
&lt;/blockquote>
&lt;p>I&amp;rsquo;ll post notes when I have watched the rest of the video.&lt;/p>
&lt;p>&lt;em>Image credit &lt;a href="https://creativecommons.org/licenses/by/4.0" target="_blank" rel="noopener">OpenStax CC BY&lt;/a>&lt;/em>&lt;/p></description></item><item><title>Weeknote 2020 W04</title><link>https://www.synesthesia.co.uk/note/2020/01/24/weeknote-2020-w04/</link><pubDate>Fri, 24 Jan 2020 17:45:47 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2020/01/24/weeknote-2020-w04/</guid><description>&lt;h2 id="kaizen">Kaizen&lt;/h2>
&lt;p>A huge drop in tracked focused work to compared to the previous work, in the context of fewer hours &amp;ldquo;at the coalface&amp;rdquo; - &amp;ldquo;only&amp;rdquo; 45 this week. Focus to non-focus ratio of 67% which is also a drop.&lt;/p>
&lt;figure id="figure-pomodoneanalysis-week-2020-w04">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="PomoDoneAnalysis week 2020-W04" srcset="
/note/2020/01/24/weeknote-2020-w04/pomo-2020-W04_hu59154363741dedf05ecd6d5bd3e7c9b5_52247_8495b379ab721f853d76dc58cc28eac1.webp 400w,
/note/2020/01/24/weeknote-2020-w04/pomo-2020-W04_hu59154363741dedf05ecd6d5bd3e7c9b5_52247_b16d250d69a3d4d3e0499d0acff0fcaa.webp 760w,
/note/2020/01/24/weeknote-2020-w04/pomo-2020-W04_hu59154363741dedf05ecd6d5bd3e7c9b5_52247_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/note/2020/01/24/weeknote-2020-w04/pomo-2020-W04_hu59154363741dedf05ecd6d5bd3e7c9b5_52247_8495b379ab721f853d76dc58cc28eac1.webp"
width="760"
height="358"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
PomoDoneAnalysis week 2020-W04
&lt;/figcaption>&lt;/figure>
&lt;p>Main causes:&lt;/p>
&lt;ul>
&lt;li>a lot of meetings related to co-ordination (as opposed to decision-making or co-construction)&lt;/li>
&lt;li>time spent generating co-ordination material for those meetings&lt;/li>
&lt;li>lower energy levels due to a niggling health issue&lt;/li>
&lt;/ul>
&lt;p>Possible improvement ideas:&lt;/p>
&lt;ul>
&lt;li>push more co-ordination meetings to async formats&lt;/li>
&lt;li>keep a better log of &amp;ldquo;working time&amp;rdquo; in order to track changes in the focus/non-focus ratio&lt;/li>
&lt;li>keep a log of factors relating to energy level, ability to concentrate etc&lt;/li>
&lt;/ul>
&lt;p>Another thought is around classification of time - conversations which are about building and sustaining professional relationships should probably be classified as focused work. But don&amp;rsquo;t want to get into circular argument about &amp;ldquo;what is waste&amp;rdquo;.&lt;/p>
&lt;h2 id="other-highlights">Other highlights&lt;/h2>
&lt;ul>
&lt;li>delivered proof of concept of our &amp;ldquo;delayed response&amp;rdquo; architecture - next steps are to work with sales and marketing colleagues to pin down where we want to first put into use&lt;/li>
&lt;/ul></description></item><item><title>Cultural Dementia - notes and highlights</title><link>https://www.synesthesia.co.uk/2020/01/20/cultural-dementia-notes-and-highlights/</link><pubDate>Mon, 20 Jan 2020 07:49:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2020/01/20/cultural-dementia-notes-and-highlights/</guid><description>&lt;p>I&amp;rsquo;ve only just discovered where to access the &lt;a href="https://read.amazon.com/kp/notebook" target="_blank" rel="noopener">highlights made while reading a book on Kindle&lt;/a>, so here are the passages I highlighted when &lt;a href="https://www.synesthesia.co.uk/2019/07/02/cultural-dementia/">reading&lt;/a> &lt;strong>Cultural Dementia: How the West has Lost its History, and Risks Losing Everything Else&lt;/strong>&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>.&lt;/p>
&lt;h2 id="chapter-1---roots-of-the-present-crisis">Chapter 1 - Roots of the Present Crisis&lt;/h2>
&lt;blockquote>
&lt;p>Perhaps the most significant paragraph of the ‘white heat’ speech, in historical hindsight, is one near the beginning that takes a very different tone:
There is no more dangerous illusion than the comfortable doctrine that the world owes us a living. One of the dangers of the old-boy network approach to life is the thought that it is international, that whatever we do, whenever we run into trouble, we can always rely on a special relationship with someone or other to bail us out. From now on Britain will have just as much influence in the world as we can earn, as we can deserve. We have no accumulated reserves on which to live.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>The immigration that so enflamed tensions was constantly spoken of in terms of ‘labour shortages’; but, as with the huge influx of Asian workers to the textile towns of the north, it was just as often an attempt to find workers who would settle for wages low enough to keep British employers profitable. Much like immigrants of the twenty-first century who are found sleeping packed into garden sheds, such workers did not do this to themselves but rather were the prey of landlords and employers.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>parallel with the 1960s situation, when post-imperial Britain had been simply incapable of maintaining its global posture without a ludicrous disengagement from the security of its neighbours, which remained critical to its own security and overlapped with the anxious bipartisan effort to join the EEC. Continuously trimming funding for all capabilities while aspiring to maintain them created a looming risk of systemic incapacity.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>A persistent accompaniment to this has been the cultivation of external enemies on whom to project fear and anger.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>The history of the UK, France and the USA since 1945 is marked indelibly by a sense of entitlement to greatness. Throughout the decades since the end of les Trente Glorieuses, an increasingly financialised capitalism has developed, sustaining the wealth of the upper echelons of Western societies while their welfare states, and capacity to generate mass high-quality employment, have steadily diminished.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>our cultures overall reject the claim that we are all part of a homogenous global problem. The politics of the present instead place the greatness that is the electorate’s birthright in an unjustly stolen, explicitly national, and nationalist, past–and increasingly seek to scapegoat others as responsible for the theft.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Donald Trump’s election slogan ‘Make America Great Again’ booms it out with particular vigour, but the logic of the Brexit campaign’s ‘Take Back Control’ is exactly the same. Marine Le Pen’s most recent slogan, ‘On est chez nous’, says more than just ‘We are at home’, its menacing subtext being: ‘This is OUR home (and not yours, immigrant)’.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>All three of these nations’ political cultures are currently beset by ideas that promise a closed national labour market, a wide outflow of trade and the undisputed sovereign power to maintain those things for the benefit of the core, white, population.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Britain, France and the USA never existed as entities that were both closed-off and commanding. Waves of immigration of all kinds shaped their populations even at the height of imperial splendour, while the cost of maintaining that empire, and the resistance to it, was crippling–and indeed, on this side of the Atlantic, this was a strong reason for hastening towards ‘Europe’ as a more rational and attainable form of greatness.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>it is notable that, for example, the slope of support for Brexit rises steeply with age. In France, however, the slope runs the other way:&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>The demands of contemporary ‘populist’ movements make manifest a vision of the past that is the opposite of a coherent history.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>In the individual, this dementia is a symptom of looming fatal decline. We risk the same fate for our societies. The politicians of earlier generations did not try to turn the clock back to what had never been. Even Margaret Thatcher, condemning to death the nationalised heavy industries of postwar Britain, had an understanding (agree with it or not) of why old ways could not continue, and a vision of new opportunities for new economic sectors (not least through helping to drag&lt;/p>
&lt;/blockquote>
&lt;h2 id="chapter-2---current-follies">Chapter 2 - Current Follies&lt;/h2>
&lt;blockquote>
&lt;p>One of the difficulties of living in the present political moment is that you never know what is going to go wrong next.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Amid the daily flow of mind-boggling stupidity, it is necessary to take some steps back–first to recall the general shape of the situation that has overwhelmed conventional politics in the UK, USA and France in the last two years, and then to relate this to the larger shape of the historical context from which it all comes, and which continues to structure the ongoing folly of the present.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Both sides are, in their different ways, mesmerised by visions that have no relationship to how Britain’s economy and society have actually developed in the last generation. The gap between the political chaos that has reigned since the Brexit vote, and the blithe assurances of what the future holds, is staggering. Indeed, a whole array of informed political, economic, legal and social commentators continues to stagger under the awareness of looming folly, yelling into a void from which echoes back an incoherent noise, the dominant note of which sounds a lot like &amp;lsquo;Immigrants&amp;rsquo;&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>The communities in a position to articulate populist sentiments are ones raised up by a history of racial privilege, and by the workings of that privilege as an integral component of social and economic inequality that remains searingly unjust on the global scale.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>What the USA, France and the UK undoubtedly share, at this crisis-wracked point in their history, is the complete failure as societies to meaningfully come to terms with their national pasts.&lt;/p>
&lt;/blockquote>
&lt;h2 id="chapter-3---shadows-of-greatness">Chapter 3 - Shadows of Greatness&lt;/h2>
&lt;blockquote>
&lt;p>Britain cannot look on the French role in Africa with any smugness. It controls a majority of territories the UN lists as ‘non-self-governing’, and three of those–Bermuda, the British Virgin Islands and the Cayman Islands–come close to the top of any list of notorious global tax havens&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>To walk the streets of an elegant French city or a neat British suburb today is to tread on the accumulated advantage of empire.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Of course, if you believe in ideas of national distinctiveness, your only thought about all this may be ‘Good for us!’ But even without dismissing such views as simply racist, we can see that they are also futile and self-defeating.&lt;/p>
&lt;/blockquote>
&lt;h2 id="chapter-4-toxic-legacies">Chapter 4 Toxic Legacies&lt;/h2>
&lt;blockquote>
&lt;p>Yet we will remain paralysed by these kinds of language, if the wider realities they deny are not more fully recognised. The common sense of ‘patriotic’ identity–which is often in practice much closer to a nationalistic pride–embroils people in assumptions that have visible harmful consequences for anyone outside the core of that identity, and where the collective trajectory is towards further exploitation of a historical privilege that is, as much as it is anything else, racial.&lt;/p>
&lt;/blockquote>
&lt;h2 id="chapter-5-who-do-they-think-we-are">Chapter 5 Who Do They Think We Are?&lt;/h2>
&lt;blockquote>
&lt;p>Although in an immediate sense the impact of austerity after 2010 has been dire, the failure to offer actual structural change that would regenerate post-industrial regions and create meaningful prosperity for their inhabitants is the fault of governments, both Labour and Conservative, stretching back for at least a generation.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>That shift is associated with another one, as the Republican vote has piled up higher and higher in states with lower average educational attainment. In 1992 there was almost no statistical relationship between those two things, but by 2012 Republicans dominated the vote in states with low graduate populations, by up to 70 per cent.&lt;/p>
&lt;/blockquote>
&lt;h2 id="chapter-6-what-is-the-past-for">Chapter 6 What is the Past For?&lt;/h2>
&lt;blockquote>
&lt;p>The problem remains what to do when people don’t want to listen, or learn.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;em>(Several pages on role of historians in the abuse of history for the ends of power)&lt;/em>&lt;/p>
&lt;blockquote>
&lt;p>Nicolas Offenstadt: Today, manipulation of historical facts in the public arena, in the more-or-less clear service of xenophobic or reactionary ideologies, has ratcheted upwards. The combat directed by a fraction of the right has taken on a new dimension, unseen for thirty years, and particularly reaches the mass media: television series and prime time shows, the daily press, magazines. In this cultural offensive, history is used as a political weapon, and is mobilised against university historians, described as bien pensants, too intellectual and abstract…&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>As this list, and the dramatic claims about it, show, this is a complex field, where the inconvenient fact of some kinds of history being popular crosses over with the question of how far views on it are promoted by a shadowy elite, and how far the power of the state is engaged with defining acceptable histories, and repressing others.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>[1987] - The government of Prime Minister Margaret Thatcher, supremely self-confident after a third election victory, proposed to empower itself to write a National Curriculum for schools, ending the regime of ‘suggestions’ that had lasted for almost a century. While this covered all subjects, and aroused a variety of concerns about topics and profile, in the field of history it opened an immediately and violently political argument, and one that has rumbled on intermittently ever since.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>It points to a conclusion that the wider historical profession, from schoolteachers to internationally renowned critical scholars, struggles to overcome. People, and especially people from privileged groups, do not want to listen to historians telling them bad things about their treasured identities. They will, indeed, forcefully react against such challenges, when given the political rallying-calls that allow them to do so. In that sense, it must be said, they do not want history. They want what they are increasingly getting: a cosy blanket of half-remembering and convenient forgetting that is cushioning their slide down the slope to full-blown cultural dementia.&lt;/p>
&lt;/blockquote>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;blockquote>
&lt;p>The West’s current relationship to the past is not the passive victimhood of an individual dementia sufferer, but rather an actively constructed, jealously guarded toxic refusal to engage with facts that are well-known but emotionally and politically inconvenient, and with other experiences that are devastating to the collective self-regard of huge segments of societies that have no visible desire to come to terms with reality.&lt;/p>
&lt;/blockquote>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>Andress, D. (2018). &lt;em>Cultural Dementia: How the West has Lost its History, and Risks Losing Everything Else&lt;/em>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Knowledge - Seek Over Share?</title><link>https://www.synesthesia.co.uk/2020/01/20/knowledge-seek-over-share/</link><pubDate>Mon, 20 Jan 2020 06:46:03 +0000</pubDate><guid>https://www.synesthesia.co.uk/2020/01/20/knowledge-seek-over-share/</guid><description>&lt;p>In &lt;a href="http://www.nickmilton.com/2020/01/forget-knowledge-sharing-lets-encourage.html" target="_blank" rel="noopener">Forget knowledge sharing, lets encourage knowledge seeking instead&lt;/a>, &lt;a href="http://www.nickmilton.com/" target="_blank" rel="noopener">Nick Milton&lt;/a> says&lt;/p>
&lt;blockquote>
&lt;p>don&amp;rsquo;t bother [incentivising knowledge sharing]. Incentivise knowledge seeking and re-use instead&amp;hellip;&amp;quot;&lt;/p>
&lt;/blockquote>
&lt;p>Which he justifies by saying:&lt;/p>
&lt;blockquote>
&lt;p>knowledge sharing in itself achieves nothing. Knowledge needs to be sought and re-used before any value has been added, and re-use is often a far bigger barrier than knowledge sharing. The Not Invented Here syndrome is far more prevalent than Knowledge Hoarding.&lt;/p>
&lt;/blockquote>
&lt;p>In other posts he has talked about the market for knowledge within an organisation, and the importance of &lt;a href="http://www.nickmilton.com/2016/06/balancing-knowledge-supply-and-demand.html" target="_blank" rel="noopener">balancing supply and demand&lt;/a>. He suggests that the &lt;a href="http://www.nickmilton.com/search?q=two&amp;#43;questions" target="_blank" rel="noopener">two key questions&lt;/a> that managers should ask are &amp;ldquo;Who did you learn from?&amp;rdquo; and &amp;ldquo;Who have you shared with?&amp;rdquo;, with an emphasis on the former.&lt;/p>
&lt;p>Going to try a little experiment&amp;hellip;&lt;/p></description></item><item><title>WeekNote 2020 W03</title><link>https://www.synesthesia.co.uk/note/2020/01/17/weeknote-2020-w03/</link><pubDate>Fri, 17 Jan 2020 17:57:42 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2020/01/17/weeknote-2020-w03/</guid><description>&lt;h2 id="kaizen">Kaizen&lt;/h2>
&lt;p>A similar amount of time &amp;ldquo;at work&amp;rdquo; to the previous week, but a 10% drop in the amount of focused work I tracked.&lt;/p>
&lt;figure id="figure-pomodoneanalysis-week-2020-w03">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="PomoDoneAnalysis week 2020-W03" srcset="
/note/2020/01/17/weeknote-2020-w03/pomo-2020-W03_hu7d63f9bc5d7ca4c53671282d3bfac0f5_59083_7184759fd7b5387c237f9ab4608a5f11.webp 400w,
/note/2020/01/17/weeknote-2020-w03/pomo-2020-W03_hu7d63f9bc5d7ca4c53671282d3bfac0f5_59083_8f1d3600f40b31e57e31c26f62879d40.webp 760w,
/note/2020/01/17/weeknote-2020-w03/pomo-2020-W03_hu7d63f9bc5d7ca4c53671282d3bfac0f5_59083_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/note/2020/01/17/weeknote-2020-w03/pomo-2020-W03_hu7d63f9bc5d7ca4c53671282d3bfac0f5_59083_7184759fd7b5387c237f9ab4608a5f11.webp"
width="760"
height="376"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
PomoDoneAnalysis week 2020-W03
&lt;/figcaption>&lt;/figure>
&lt;p>The two main causes were a non-core meeting, and losing a large chunk of time to support a colleague with a complex customer-facing issue, so no real Kaizen lessons here.&lt;/p>
&lt;h2 id="other-highlights">Other highlights&lt;/h2>
&lt;p>&lt;strong>Reviewing existing Dynamics 365 customisations&lt;/strong> to see how we would modify them to provide a new type of customer benefit (access to an external service based on job role within a B2B customer).&lt;/p>
&lt;p>&lt;strong>Technical architecture work&lt;/strong> to flesh out an idea to augment &lt;a href="https://www.thunderhead.com/" target="_blank" rel="noopener">customer journey tooling&lt;/a> with an ability to trigger new actions 24 hours after a user last viewed our website.&lt;/p></description></item><item><title>WeekNote 2020-W02</title><link>https://www.synesthesia.co.uk/note/2020/01/11/weeknote-2020-w02/</link><pubDate>Sat, 11 Jan 2020 08:56:55 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2020/01/11/weeknote-2020-w02/</guid><description>&lt;h2 id="kaizen">Kaizen&lt;/h2>
&lt;p>First full week of using Pomodoro again, and tracking focused work into PomoDoneApp.&lt;/p>
&lt;p>One of the nice aspects of the tool are the charts it produces (I&amp;rsquo;ve cropped off the parts of the display that tell you what project is represented by each colour):&lt;/p>
&lt;figure id="figure-pomodoneanalysis-week-2020-w02">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="PomoDoneAnalysis week 2020-W02" srcset="
/note/2020/01/11/weeknote-2020-w02/pomo-2020-W02_hu857bdc3ae6566ee8176f476b7b94dfa9_53483_7f7ebc94ed68d4ba65fd4e04e623b216.webp 400w,
/note/2020/01/11/weeknote-2020-w02/pomo-2020-W02_hu857bdc3ae6566ee8176f476b7b94dfa9_53483_ca7065177ebecfa2df9e281c27c457e2.webp 760w,
/note/2020/01/11/weeknote-2020-w02/pomo-2020-W02_hu857bdc3ae6566ee8176f476b7b94dfa9_53483_1200x1200_fit_q90_h2_lanczos.webp 1200w"
src="https://www.synesthesia.co.uk/note/2020/01/11/weeknote-2020-w02/pomo-2020-W02_hu857bdc3ae6566ee8176f476b7b94dfa9_53483_7f7ebc94ed68d4ba65fd4e04e623b216.webp"
width="760"
height="357"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
PomoDoneAnalysis week 2020-W02
&lt;/figcaption>&lt;/figure>
&lt;p>A few immediate reflections:&lt;/p>
&lt;ul>
&lt;li>on most days I managed to keep focused on just a couple of projects without too much context switching&lt;/li>
&lt;li>those ~42 hours of focused work were spread over approximately 53 hours of time either in the office or working from home (79%)
&lt;ul>
&lt;li>I was aware that sometimes I was forgetting to start the timer - what error % might this be?&lt;/li>
&lt;li>where does the other 21% go? (or at least that part of it which isn&amp;rsquo;t refreshment breaks)&lt;/li>
&lt;li>is it worth trying to track the &amp;ldquo;noise&amp;rdquo; work inherent in any workplace - dealing with emails, ad-hoc conversations, general management meetings etc?&lt;/li>
&lt;li>I know that after 4 days of 10-12 hours in the office I&amp;rsquo;m pretty tired - if I was &amp;ldquo;present&amp;rdquo; less could I deliver the focused work in less overall time?&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="other-highlights">Other highlights&lt;/h2>
&lt;p>A couple of things where I spent quite a bit of time but which were team achievements:&lt;/p>
&lt;p>&lt;strong>Cutting over to a new configuration of the &lt;a href="https://www.thunderhead.com/" target="_blank" rel="noopener">customer journey tooling&lt;/a> we use at SSAT&lt;/strong> - this allows us to amalgamate customer activity on the website, in emails, attending events etc. to generate a unified profile of what individuals seem to be interested in so we can offer them the most appropriate content or services&lt;/p>
&lt;p>&lt;strong>Updating some custom widgets we use within Dynamics 365&lt;/strong> to display customer information from multiple sources - these were dependent on a vendor SDK and written in AngularJS. JavaScript is not our main skillset, and we find React a much easier tool to use, so we have ported these widgets across. Key things we learned:&lt;/p>
&lt;ul>
&lt;li>Using React context providers to address multiple APIs&lt;/li>
&lt;li>Embedding D3 visualisation in React app&lt;/li>
&lt;/ul></description></item><item><title>Weeknote 2020-W01</title><link>https://www.synesthesia.co.uk/note/2020/01/04/weeknote-2020-w01/</link><pubDate>Sat, 04 Jan 2020 16:38:13 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2020/01/04/weeknote-2020-w01/</guid><description>&lt;p>A short week - in fact just one working day.&lt;/p>
&lt;p>I&amp;rsquo;ve decided to get a little bit analytic about where I spend my time and focus at work, to see if I can glean any actionable knowledge about my own habits. I&amp;rsquo;ve decided to experiment with &lt;a href="https://pomodoneapp.com/" target="_blank" rel="noopener">PomoDoneApp&lt;/a>&lt;/p>
&lt;ul>
&lt;li>it is built around the Pomodoro technique, &lt;a href="https://www.synesthesia.co.uk/2010/12/18/blending-pomodoro-and-gtd/">which I have previously found useful&lt;/a>&lt;/li>
&lt;li>it has multiple platform offerings&lt;/li>
&lt;li>it fits with the key task / issue tools I use&lt;/li>
&lt;/ul></description></item><item><title>Britain's Dirty Election</title><link>https://www.synesthesia.co.uk/2019/12/01/britains-dirty-election/</link><pubDate>Sun, 01 Dec 2019 21:23:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2019/12/01/britains-dirty-election/</guid><description>&lt;p>Op- Ed in the &lt;a href="https://www.nytimes.com/2019/11/29/opinion/britain-election-disinformation-johnson.html" target="_blank" rel="noopener">New York Times&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>A serial liar. A campaign of online disinformation. The risk of foreign meddling. Sound familiar?&lt;/p>
&lt;/blockquote></description></item><item><title>Christmas Lights</title><link>https://www.synesthesia.co.uk/2019/11/29/christmas-lights/</link><pubDate>Fri, 29 Nov 2019 06:51:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2019/11/29/christmas-lights/</guid><description>&lt;p>Some evenings our route home takes us past a house in North London that always has a good show of lights at this time of year.&lt;/p>
&lt;p>This year they have surpassed themselves with a scrolling seasonal greeting:&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/BDz2zWCF4g4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;p>Some will look down their noses at such an overt display - it&amp;rsquo;s a long way from the subdued decorations in neighbourhoods such as Mayfair, Beacon Hill or the Upper East Side - but I find these things always give a small boost of positive feeling on a dark and wet evening!&lt;/p>
&lt;p>I tried a quick google search for studies that looked at this positive affect, but mostly the search results are newspaper articles of the &amp;ldquo;experts say&amp;hellip;&amp;rdquo; style - the only studies I could find mostly related to the impact of lighting choices on the workplace.&lt;/p>
&lt;p>Any pointers?&lt;/p></description></item><item><title>Migrating a Dynamics365 solution</title><link>https://www.synesthesia.co.uk/note/2019/11/22/2019-11-22-migrating-a-dynamics365-solution/</link><pubDate>Fri, 22 Nov 2019 18:54:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2019/11/22/2019-11-22-migrating-a-dynamics365-solution/</guid><description>&lt;p>A bit out of order&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> but capturing this week&amp;rsquo;s work to migrate one of our legacy Dynamics solutions into our new architecture.&lt;/p>
&lt;p>The solution in question contained only business logic - about half a dozen plugins, and similar numbers of workflow steps and a similar number of workflows (including custom actions),&lt;/p>
&lt;h2 id="removing-ilmerge">Removing ILMerge&lt;/h2>
&lt;p>Having already moved a few plugins I knew there were some challenges in getting away from the use of ILMerge (one of our goals). In the original source of this solution we use ILMerge for two assemblies:&lt;/p>
&lt;ul>
&lt;li>a service layer abstracted out from the plugins and workflow steps, to allow common code across the plugin and workflow assemblies, and to facilitate testing&lt;/li>
&lt;li>our model assembly, containing earlybound classes and a few entity extension helpers, we distribute this via NuGet to all projects that need it&lt;/li>
&lt;/ul>
&lt;p>Although we are migrating all of our server-side business logic into a single Dynamics solution, we intend to keep multiple assemblies (and therefore multiple VS projects) to provide more manageable encapsulation of code.&lt;/p>
&lt;p>The &amp;ldquo;obvious&amp;rdquo; answer was to replace the shared service and shared model assemblies with &lt;a href="https://dev.to/rionmonster/sharing-is-caring-using-shared-projects-in-aspnet-e17" target="_blank" rel="noopener">shared source projects&lt;/a> linked from the workflow and plugin assemblies.&lt;/p>
&lt;p>That left the challenge of &lt;a href="https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/org-service/create-early-bound-entity-classes-code-generation-tool" target="_blank" rel="noopener">generating the earlybound classes&lt;/a>.&lt;/p>
&lt;p>The approaches tried were:&lt;/p>
&lt;ul>
&lt;li>using the &lt;a href="https://github.com/scottdurow/SparkleXrm/wiki/spkl" target="_blank" rel="noopener">spkl&lt;/a> task runner - we are already using this for scripted deployment and registration of plugins and workflow steps&lt;/li>
&lt;li>using the &lt;a href="https://www.xrmtoolbox.com" target="_blank" rel="noopener">XrmToolBox&lt;/a> &lt;a href="https://www.xrmtoolbox.com/plugins/DLaB.Xrm.EarlyBoundGenerator/" target="_blank" rel="noopener">earlybound generator plugin&lt;/a>&lt;/li>
&lt;li>porting across the technique we use to build our existing NuGet-distributed model - a VS project that builds custom code filters then shells to CrmSvcUtil to generate the classes - a final script copies the generated code to wherever it is needed in the overall solution&lt;/li>
&lt;/ul>
&lt;p>We settled on the last one: spkl has an &lt;a href="https://github.com/scottdurow/SparkleXrm/issues/263" target="_blank" rel="noopener">open issue&lt;/a> that kept breaking our code; the XrmToolBox plugin worked but generated lots of case differences that broke our existing code.&lt;/p>
&lt;h2 id="testing">Testing&lt;/h2>
&lt;p>The second major area of work has been to get our unit tests working correctly, and to start adding some integration tests where appropriate.&lt;/p>
&lt;p>The major task has been refactoring legacy tests to use a consistent approach - we now use xunit, FakeXrmEasy and FluentAssertions as our standard tools, with AutoFixture and XBehave added where needed.&lt;/p>
&lt;p>Some of our legacy tests were using MSTest, Moq and Castle Windsor (as an auto mocking container) in various combinations, so these have been refactored out - not only does this make for consistency but also terser, easier-to-read tests.&lt;/p>
&lt;p>Running tests showed up a couple of issues where the code we were working on called custom actions that we haven&amp;rsquo;t yet ported. On reflection this is a strong &amp;ldquo;smell&amp;rdquo; that our previous split of functionality into separate Dynamics solutions wasn&amp;rsquo;t right. Now we are moving to all back-end logic in a single Dynamics solution the easy refactor is to replace the call to the custom action with a direct call to the service class that backs it.&lt;/p>
&lt;p>This process has also surfaced areas that perhaps have insufficient test coverage - at some point we will need to revisit, especially around the more critical bits of logic.&lt;/p>
&lt;h2 id="reflection">Reflection&lt;/h2>
&lt;p>A task which I thought might take about three days (interspersed with other work) ended up taking five , mainly because of the issues above. The positive outcome is that the common early bound classes problem is resolved. I anticipate the testing issues will continue.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>I haven&amp;rsquo;t yet posted about the context of this project, although there are a few initial notes in &lt;a href="https://code.wiki.synesthesia.co.uk/view/welcome-visitors/view/crm-reboot" target="_blank" rel="noopener">FedWiki&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Fire safety and the de-skilling of the state</title><link>https://www.synesthesia.co.uk/2019/11/17/the-de-skilling-of-the-state-fire-prevention/</link><pubDate>Sun, 17 Nov 2019 12:39:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2019/11/17/the-de-skilling-of-the-state-fire-prevention/</guid><description>&lt;p>In &lt;a href="https://members.tortoisemedia.com/2019/11/16/grenfell-and-fire-regs/content.html?sig=k-K5_XG7DTpEDkYDMz1IBVXVZPTRnXSwPxgFTh8HIgI&amp;amp;utm_source=Twitter&amp;amp;utm_medium=Social&amp;amp;utm_campaign=16Nov2019&amp;amp;utm_content=grenfell" target="_blank" rel="noopener">Fire: an ancient foe&lt;/a>, &lt;a href="https://uk.linkedin.com/in/chriscooktortoise" target="_blank" rel="noopener">Chris Cook&lt;/a> writes a chilling analysis of the historic systemic changes to the safety assurance of building design that made a disaster like Grenfell much more likely.&lt;/p>
&lt;blockquote>
&lt;p>For 22 years, the UK government has had no fire safety laboratory of its own. The decline of the state building inspector, the privatisation of the BRE – and deep cuts to the civil service since 2010 – meant that the state’s understanding of fire had been allowed to wither away. [&amp;hellip;] A central problem is that the British state is too inexpert to follow these issues. No-one is in charge. Its usual method of operation is to commission occasional reports and research, but then to ask the businesses engaged in areas of business to consult on what should happen next. Or designing by disaster: waiting for something horrific to go wrong before anyone takes action.&lt;/p>
&lt;/blockquote></description></item><item><title>Two speeds of sense-making</title><link>https://www.synesthesia.co.uk/2019/11/15/two-speeds-of-sense-making/</link><pubDate>Fri, 15 Nov 2019 11:58:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2019/11/15/two-speeds-of-sense-making/</guid><description>&lt;h2 id="sensemaking">Sensemaking&lt;/h2>
&lt;p>Harold Jarche posted this week about &lt;a href="https://jarche.com/2019/11/the-workflow-of-learning/#comment-333979" target="_blank" rel="noopener">the workflow of learning&lt;/a>, in which he talked a little about his own practice of &lt;a href="https://jarche.com/2019/04/sensemaking-in-a-networked-world/" target="_blank" rel="noopener">sense-making&lt;/a> counter-pointed with a reminder that Personal Knowledge Management has to be personal if it&amp;rsquo;s to stick.&lt;/p>
&lt;p>In the comments I said:&lt;/p>
&lt;blockquote>
&lt;p>There’s definitely a thing about volume and practice.
I have to read, sift, link and synthesise technical stuff voraciously for my work, and it comes very naturally to bang out intermediate notes to contextualise a new piece of knowledge [&lt;em>even if many are behind the firewall&lt;/em>].
My wider interests seem to work on a much longer cycle – it can be weeks until I see a link or pattern of thought I want to express.
I suspect there are also links to self-confidence. I know that I know a lot in my professional sphere but that equally there are always orders of magnitude more I could know – because I am actively thinking about that stuff most waking hours I’m in the flow a lot of the time.
With other areas I’m often conscious that the others in the conversation know far more (e.g. you Harold on this topic!) so I’m sometimes reticent to add my contribution. And I really struggle with the stream-of-consciousness style of blogging outside of work stuff – none of that ever really feels like something I want to share…&lt;/p>
&lt;/blockquote>
&lt;h2 id="reflecting">Reflecting&lt;/h2>
&lt;p>While thinking about this post I checked my FedWiki notes on &lt;a href="https://pkm.wiki.synesthesia.co.uk/view/welcome-visitors/view/recent-changes/view/seek-sense-share/view/sense" target="_blank" rel="noopener">sense-making&lt;/a>, and see the only nugget I&amp;rsquo;ve added there so far is forked from &lt;a href="http://forage.ward.fed.wiki.org/view/welcome-visitors/view/reflection-workflow" target="_blank" rel="noopener">Ward Cunningham&lt;/a> on the topic of &lt;a href="https://pkm.wiki.synesthesia.co.uk/view/welcome-visitors/view/recent-changes/view/seek-sense-share/view/sense/view/reflection-workflow" target="_blank" rel="noopener">Reflection Workflow&lt;/a> :&lt;/p>
&lt;blockquote>
&lt;p>writing and rereading reflections enhances systematic understanding &amp;hellip; Intense and focused work succeeds by keeping many facts and opportunities close at hand in short-term memory. During these episodes write quickly and copy freely addressing mostly your present self. &amp;hellip;
Use quiet periods to reflect on recent activities allowing yourself to summarize and interconnect experiences. Write slowly choosing words carefully. Start new pages and label them to be found later.&lt;/p>
&lt;/blockquote>
&lt;p>There&amp;rsquo;s clearly a link between that and my earlier comment. The experience of sense-making that operates on at least two speeds.&lt;/p>
&lt;figure id="figure-two-speed-sense-making">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Two-speed sense-making" srcset="
/2019/11/15/two-speeds-of-sense-making/two-speed-sensemaking_hufae1fbcc33c1663b2e253768493e82b7_31842_cd13d4da683cf2d9ab9f2bd45efa98ac.webp 400w,
/2019/11/15/two-speeds-of-sense-making/two-speed-sensemaking_hufae1fbcc33c1663b2e253768493e82b7_31842_dedf53bd5bf437871e4c9dc3b469bf0a.webp 760w,
/2019/11/15/two-speeds-of-sense-making/two-speed-sensemaking_hufae1fbcc33c1663b2e253768493e82b7_31842_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2019/11/15/two-speeds-of-sense-making/two-speed-sensemaking_hufae1fbcc33c1663b2e253768493e82b7_31842_cd13d4da683cf2d9ab9f2bd45efa98ac.webp"
width="637"
height="332"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Two-speed sense-making
&lt;/figcaption>&lt;/figure>
&lt;p>The hurly-burly of daily focused work is closely matched by the first paragraph, and that&amp;rsquo;s the form of sense-making I find comes most easily. The emphasis is on speedy seeking of knowledge relevant to the task in hand, and just enough synthesis to inform immediate action and to carry the thought forward to the next day or the next week.&lt;/p>
&lt;p>The second part - quiet reflection and slow writing to interconnect experiences - is the part I find hardest, and that I do least in an explicit form. Clearly some level of integration happens sub-consciously, else my knowledge would be transient, but the point of these practices is to improve through making explicit.&lt;/p>
&lt;p>To some extent this is about forcing practice until it is in the muscle - perhaps I need to develop &lt;strong>katas for slow sense-making&lt;/strong>. For the rest it&amp;rsquo;s not about the techniques, it&amp;rsquo;s about choices I make about a limited resource, time and energy.&lt;/p></description></item><item><title>Serve Json on Azure App Service</title><link>https://www.synesthesia.co.uk/note/2019/11/11/serve-json-on-azure-app-service/</link><pubDate>Mon, 11 Nov 2019 16:29:41 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2019/11/11/serve-json-on-azure-app-service/</guid><description>&lt;p>I have been setting up an internal work site based on &lt;a href="https://gohugo.io/" target="_blank" rel="noopener">Hugo&lt;/a> in &lt;a href="https://azure.microsoft.com/en-gb/services/app-service/" target="_blank" rel="noopener">Azure App Service&lt;/a> (it&amp;rsquo;s in App Service so we can protect it easily with Azure AD).&lt;/p>
&lt;p>Using the Academic theme, I noticed the &lt;a href="https://sourcethemes.com/academic/docs/search/" target="_blank" rel="noopener">local search&lt;/a> wasn&amp;rsquo;t working. This relies on accessing a JSON version of the site content, and a quick look in DevTools showed &lt;code>index.json&lt;/code> was being served as a &lt;code>404&lt;/code> error.&lt;/p>
&lt;p>The fix, via &lt;a href="https://stackoverflow.com/questions/48137750/azure-web-app-does-not-load-json-file/48137869#48137869" target="_blank" rel="noopener">StackOverflow&lt;/a>, is to create a &lt;code>Web.config&lt;/code> file in the root of the site. Specifically, for Hugo, add a file &lt;code>/static/Web.config&lt;/code> with the following content:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&amp;lt;?xml version=&amp;#34;1.0&amp;#34;?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;configuration&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;system.webServer&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;staticContent&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;remove&lt;/span> &lt;span class="na">fileExtension=&lt;/span>&lt;span class="s">&amp;#34;.json&amp;#34;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;mimeMap&lt;/span> &lt;span class="na">fileExtension=&lt;/span>&lt;span class="s">&amp;#34;.json&amp;#34;&lt;/span> &lt;span class="na">mimeType=&lt;/span>&lt;span class="s">&amp;#34;application/json&amp;#34;&lt;/span> &lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/staticContent&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/system.webServer&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/configuration&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>As an aside it&amp;rsquo;s worth noting that with this combination of technologies (plus Azure DevOps to do the CI/CD build) I could set up a good-looking internal-only comms site in under an hour. With such a light payload it could easily sit on an existing App Service Plan, so the marginal resource cost is zero.&lt;/p></description></item><item><title>Leaders or followers?</title><link>https://www.synesthesia.co.uk/2019/10/21/leaders-or-followers/</link><pubDate>Mon, 21 Oct 2019 08:24:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/2019/10/21/leaders-or-followers/</guid><description>&lt;p>With the merest hint of irony &lt;a href="https://lostanddesperate.com/2019/10/14/developing-leadership-capability/" target="_blank" rel="noopener">Andrew Jacobs suggests&lt;/a> that what many organisations really want are not better leaders, but better followers:&lt;/p>
&lt;blockquote>
&lt;ul>
&lt;li>Developing trust with insincere people&lt;/li>
&lt;li>Learning to believe anything/everything someone says&lt;/li>
&lt;li>Being inspired by uninspirational people&lt;/li>
&lt;li>Being passionate in an uncommitted environment&lt;/li>
&lt;li>Understanding mixed messages&lt;/li>
&lt;li>Working with indecisive people&lt;/li>
&lt;li>Taking blame with confidence&lt;/li>
&lt;li>Appreciating the learning points of the excessive workload&lt;/li>
&lt;li>Giving up ideas for the credit of others&lt;/li>
&lt;li>Working without praise&lt;/li>
&lt;li>Being manipulated with appreciation&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>The recent years of UK politics would suggest that there are many faces we see on our screens every day who want the same :-)&lt;/p></description></item><item><title>Filtering Information by Social Distance - 2</title><link>https://www.synesthesia.co.uk/2019/09/25/filtering-information-by-social-distance-2/</link><pubDate>Wed, 25 Sep 2019 12:47:02 +0100</pubDate><guid>https://www.synesthesia.co.uk/2019/09/25/filtering-information-by-social-distance-2/</guid><description>&lt;p>Image credit &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>In &lt;a href="https://www.synesthesia.co.uk/2019/09/19/filtering-information-by-social-distance/">Filtering Information by Social Distance&lt;/a> I referenced an &lt;a href="https://www.zylstra.org/blog/2019/06/feed-reading-by-social-distance/" target="_blank" rel="noopener">article&lt;/a> by Ton Zijlstra describing an approach to categorising RSS feeds in a feedreader.&lt;/p>
&lt;p>Although slightly sceptical I&amp;rsquo;ve now re-arranged my feeds in a similar way:&lt;/p>
&lt;figure id="figure-new-structure-of-folders-in-feedly">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="New structure of folders in Feedly" srcset="
/2019/09/25/filtering-information-by-social-distance-2/feedly-2019-09-25_hu02fcbd15e73462e4e35ad955a609ca2c_7932_95cbe1ed7b89c5a06bc2079cfdb3cca9.webp 400w,
/2019/09/25/filtering-information-by-social-distance-2/feedly-2019-09-25_hu02fcbd15e73462e4e35ad955a609ca2c_7932_720be6940603713826def85efc6e7996.webp 760w,
/2019/09/25/filtering-information-by-social-distance-2/feedly-2019-09-25_hu02fcbd15e73462e4e35ad955a609ca2c_7932_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2019/09/25/filtering-information-by-social-distance-2/feedly-2019-09-25_hu02fcbd15e73462e4e35ad955a609ca2c_7932_95cbe1ed7b89c5a06bc2079cfdb3cca9.webp"
width="221"
height="360"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
New structure of folders in Feedly
&lt;/figcaption>&lt;/figure>
&lt;p>In the process I&amp;rsquo;ve also carried out a serious prune from 708 feeds (277 inactive, 81 unreachable) to 232 feeds (29 still classed as inactive by Feedly, but kept because they still look reasonably fresh).&lt;/p>
&lt;p>An immediate advantage of this layout is that it completely eliminates the momentary pause whole working out what folder(s) to put a feed in - the social distance measure is entirely subjective and I didn&amp;rsquo;t find a single one where I didn&amp;rsquo;t have an immediate sense of where to place it (especially remembering that &lt;a href="https://en.wikipedia.org/wiki/Everything_Is_Miscellaneous" target="_blank" rel="noopener">everything is miscellaneous&lt;/a>, so if in doubt &lt;strong>E999&lt;/strong>!)&lt;/p>
&lt;p>I now wait to see if the reading (and more importantly, the filtering to surface relevant information) is also improved.&lt;/p>
&lt;p>Ton also suggests we get back to the spirit of the original blogroll - I want to build something that will pull my OPML from Feedly and incorporate it into the site - in the meantime here is a static export of my feeds as of today - &lt;a href="https://www.synesthesia.co.uk/.well-known/opml/synesthesia.opml">OPML&lt;/a>.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.flickr.com/photos/ihardlyflickr" target="_blank" rel="noopener">Mason Bryant&lt;/a> &lt;a href="https://creativecommons.org/licenses/by-sa/2.0/" target="_blank" rel="noopener">CC-BY-SA 2.0&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Steve Wheeler</title><link>https://www.synesthesia.co.uk/note/2019/09/24/steve-wheeler/</link><pubDate>Tue, 24 Sep 2019 12:11:37 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2019/09/24/steve-wheeler/</guid><description>&lt;p>Added a new person to my feed-reader - &lt;a href="https://www.plymouth.ac.uk/staff/steve-wheeler" target="_blank" rel="noopener">Dr Steve Wheeler&lt;/a> from University of Plymouth who blogs &lt;a href="http://www.steve-wheeler.co.uk" target="_blank" rel="noopener">over here&lt;/a>.&lt;/p>
&lt;p>From a couple of recent posts:&lt;/p>
&lt;p>&lt;a href="http://www.steve-wheeler.co.uk/2019/09/what-shapes-our-use-of-technology.html" target="_blank" rel="noopener">Contrasting how teachers approach instructional technology&lt;/a> depending on whether they lean towards an &lt;a href="http://www.papert.org/articles/const_inst/const_inst1.html" target="_blank" rel="noopener">Instructionist or Constructionist&lt;/a> approach (referencing a presentation by &lt;a href="http://www.grahambrownmartin.com/" target="_blank" rel="noopener">Graham Brown Martin&lt;/a>):&lt;/p>
&lt;blockquote>
&lt;p>difference between teachers&amp;rsquo; attitudes to technology depending on whether they subscribe to pedagogy that privileges the transmission of knowledge by experts to novices through instruction, against those who espouse knowledge as something that can be constructed by the learner through negotiation, practice, social interaction and reflection.
[&amp;hellip;] the way technology can be deployed is influenced by teacher beliefs, and its success or failure can be influenced by the manner of its deployment [&amp;hellip;]&lt;/p>
&lt;/blockquote>
&lt;p>And in &lt;a href="http://www.steve-wheeler.co.uk/2019/09/schools-and-online-education.html" target="_blank" rel="noopener">Schools and Online Education&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>Some schools have begun to experiment, and a few are well down the road to adopting and using online education as a viable supplement, or even replacement for face to face teaching. We now need to think about learning environments rather than simply &amp;lsquo;classrooms&amp;rsquo;. We now need to consider that geographical distance need no longer be a separator between teachers and students - the distances can be bridged by appropriate use of technology.&lt;/p>
&lt;/blockquote></description></item><item><title>Roundup of links for Microsoft Power Platform Changes</title><link>https://www.synesthesia.co.uk/note/2019/09/23/roundup-of-links-for-microsoft-power-platform-changes/</link><pubDate>Mon, 23 Sep 2019 10:44:54 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2019/09/23/roundup-of-links-for-microsoft-power-platform-changes/</guid><description>&lt;h2 id="licences">Licences&lt;/h2>
&lt;h3 id="current-situation">Current situation&lt;/h3>
&lt;p>&lt;a href="https://mbs.microsoft.com/Files/public/365/Dynamics365LicensingGuide.pdf" target="_blank" rel="noopener">Current Dynamics 365 licencing guide&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://docs.microsoft.com/en-us/power-platform/admin/pricing-billing-skus" target="_blank" rel="noopener">Current Power Apps licencing summary&lt;/a> and full &lt;a href="https://go.microsoft.com/fwlink/?linkid=2085130" target="_blank" rel="noopener">guide&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://docs.microsoft.com/en-us/powerapps/maker/common-data-service/data-platform-restricted-entities" target="_blank" rel="noopener">Entities which currently require Dynamics 365 licence&lt;/a>&lt;/p>
&lt;h3 id="october-1st-changes">October 1st changes&lt;/h3>
&lt;p>&lt;a href="https://powerapps.microsoft.com/en-us/blog/new-licensing-options-for-powerapps-and-flow/" target="_blank" rel="noopener">Microsoft blog post&lt;/a> on the October 1st changes&lt;/p>
&lt;p>&lt;a href="https://ir2019.eventpoint.com/modules/common/downloaddocument.ashx?documenttype=topic&amp;amp;documentID=ec7fc4ca-e564-4d6e-b119-dbd08b9d74bb" target="_blank" rel="noopener">Slide deck from Inspire - Dynamics changes&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://ir2019.eventpoint.com/modules/common/downloaddocument.ashx?documenttype=topic&amp;amp;documentID=79fca32c-9cf0-4561-9f16-b91162e0470b" target="_blank" rel="noopener">Slide deck from Inspire - Power Platform changes&lt;/a>&lt;/p>
&lt;p>Updated &lt;a href="https://docs.microsoft.com/en-us/power-platform/admin/powerapps-flow-licensing-faq" target="_blank" rel="noopener">Microsoft docs page&lt;/a> on the changes&lt;/p>
&lt;p>&lt;a href="https://survivingcrm.com/2019/09/powerapps-licenses-and-a-dynamics-365-environment/" target="_blank" rel="noopener">Informative blog&lt;/a> from &lt;a href="https://survivingcrm.com/about/" target="_blank" rel="noopener">Jukka Niranen&lt;/a> which in turn links to &lt;a href="https://stevemordue.com/steve-has-another-chat-with-charles-lamanna/" target="_blank" rel="noopener">this conversation&lt;/a> between &lt;a href="https://stevemordue.com/" target="_blank" rel="noopener">Steve Mordue&lt;/a> and Microsoft&amp;rsquo;s &lt;a href="https://www.linkedin.com/in/charleslamanna/" target="_blank" rel="noopener">Charles Lamanna&lt;/a> where Lamanna says (my emphasis):&lt;/p>
&lt;blockquote>
&lt;p>So even in a Dynamics instance you can use the new per app per user license, that’s $10 for power apps, as long as you don’t use any of the restricted entities or any of the application IP, like a schedule board or something from field service. The piece of information that’s missing is that list of sales restricted entities as part of the new per app per user license, there’s a few more entities from sales that will be added to that list… I don’t have the exact list off the top of my head, but I mean the intent is exactly as you described with the list that we have. And that is to make sure that if you are using the dynamics for sales application IP, which has a whole giant engineering org working on it, then it’s only fair to pay Dynamics 365 for sales licenses or we’ll go purchase them. So it’s not going to be contact, but the ability to create an opportunity or manage opportunities, that probably should be restricted, if that makes sense&lt;/p>
&lt;/blockquote>
&lt;h2 id="unified-interface">Unified Interface&lt;/h2>
&lt;p>&lt;a href="https://cloudblogs.microsoft.com/dynamics365/it/2019/09/10/announcing-the-timeline-to-move-to-unified-interface/" target="_blank" rel="noopener">Timeline to move to Unified Interface&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://docs.microsoft.com/powerapps/user/unified-interface" target="_blank" rel="noopener">Learn about the Unified Interface&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://docs.microsoft.com/powerapps/maker/model-driven-apps/unified-interface-playbook" target="_blank" rel="noopener">Getting Started Unified Interface Playbook&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www.youtube.com/watch?v=_VPOi_Iq6ko&amp;amp;feature=youtu.be" target="_blank" rel="noopener">Introduction to Unified Interface (video)&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://docs.microsoft.com/powerapps/maker/model-driven-apps/approaching-unified-interface" target="_blank" rel="noopener">Unified Interface Transition white paper &lt;/a>&lt;/p>
&lt;h2 id="common-data-model">Common Data Model&lt;/h2>
&lt;p>&lt;a href="https://docs.microsoft.com/en-us/common-data-model/" target="_blank" rel="noopener">Background on Common Data Model &lt;/a>&lt;/p></description></item><item><title>Notes on CRM Audio 97 - Microsoft Flow with Merwan Hade from Microsoft</title><link>https://www.synesthesia.co.uk/note/2019/09/19/notes-on-crm-audio-97-microsoft-flow-with-merwan-hade-from-microsoft/</link><pubDate>Thu, 19 Sep 2019 10:02:47 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2019/09/19/notes-on-crm-audio-97-microsoft-flow-with-merwan-hade-from-microsoft/</guid><description>&lt;p>Quick notes jotted down while listening to this &lt;a href="https://crm.audio/episode-97-microsoft-flow-with-merwan-hade-from-microsoft/" target="_blank" rel="noopener">podcast&lt;/a> originally published 26/09/2018.&lt;/p>
&lt;p>Podcast guest &lt;a href="https://www.linkedin.com/in/merwan-hade/" target="_blank" rel="noopener">Merwan Hade&lt;/a>, at that time Senior Program Manager for MS Flow (now Director of Product Management at Salesforce).&lt;/p>
&lt;dl>
&lt;dt>Q: Flows inside Dynamics 365 solutions - why?&lt;/dt>
&lt;dd>Solution as a way of packaging dependencies and moving between environments.&lt;/dd>
&lt;dd>Parameterised solutions - e.g. have a generic flow that can be parameterised in different environments&lt;/dd>
&lt;dt>Q: How will connectors be handled when deploying solutions across environments?&lt;/dt>
&lt;dd>When deploying solution then connectors need to be configured for the new environment before solution can be published. Might have to edit flow to make sure it works in new environment?&lt;/dd>
&lt;dd>Define parameters in flow that are the dependencies to tweak - not yet available??&lt;/dd>
&lt;dt>Q: Development of connectors seem to have slowed down?&lt;/dt>
&lt;dd>Focus now is on ISVs building connectors&lt;/dd>
&lt;dd>You must own the underlying service&lt;/dd>
&lt;dd>MS certify that connector works, then published&lt;/dd>
&lt;dt>Q: what about ISVs who do minimal? How can others extend, other than sharing private connectors?&lt;/dt>
&lt;dd>Still something MSFT are thinking about.&lt;/dd>
&lt;dd>Pushing ISVs to contract with the source vendor&lt;/dd>
&lt;dd>Legal constraints on MSFT&lt;/dd>
&lt;dt>Q: Partner programmes?&lt;/dt>
&lt;dd>Still something MSFT are thinking about.&lt;/dd>
&lt;dt>Q: Have MSFT added any restrictions to connectors&lt;/dt>
&lt;dd>Map to underlying provider restrictions&lt;/dd>
&lt;dt>Q: How to determine which fields in Dynamics can be exposed in Flow connector?&lt;/dt>
&lt;dd>If you have issues post to &lt;a href="https://powerusers.microsoft.com/t5/Flow-Ideas/idb-p/FlowIdeas" target="_blank" rel="noopener">Flow Ideas portal&lt;/a>, or tweet at team members&lt;/dd>
&lt;dt>Q: What is process for turning Flow into a template?&lt;/dt>
&lt;dd>MSFT review submitted templates for uniqueness and will publish&lt;/dd>
&lt;dd>Draw MSFT attention via twitter or community forum&lt;/dd>
&lt;dd>MSFT publish lots of patterns in &lt;a href="https://flow.microsoft.com/en-us/blog/category/flow-of-the-week/" target="_blank" rel="noopener">Flow of the week&lt;/a>&lt;/dd>
&lt;dt>Q: Dynamics developers choosing Action, Business Process Flow, traditional Process (sync or async) - now Flows inside Dynamics - how to choose?&lt;/dt>
&lt;dd>Flow v Business Process - think of Flow as workflow management tool with minimal human intervention, whereas Business Process is a guide to human interaction.&lt;/dd>
&lt;dd>(as at 2018) choose Flow v Workflow based on familiarity and case-by-case &lt;em>(this advice is changing now)&lt;/em>&lt;/dd>
&lt;dt>Q: what about rogue flows that hog resources?&lt;/dt>
&lt;dd>currently case-by-case, if they spot circular dependencies etc MSFT will turn it off&lt;/dd>
&lt;dd>focused on Flow Checker to try and avid problems up front&lt;/dd>
&lt;dt>Q: dividing line between Flow and Logic Apps? What are scale perspectives?&lt;/dt>
&lt;dd>if you have Azure sub, Logic apps is the way to go, if Office365 or Dynamics365 use Flow&lt;/dd>
&lt;dd>Flow is built on top of Logic apps, so only differences may be polling intervals etc based on licence&lt;/dd>
&lt;dd>Logic apps faster polling options.&lt;/dd>
&lt;dt>Q: Security and governance - control who can use Flow in which environments? Control over connectors?&lt;/dt>
&lt;dd>Data Loss Prevention policies. Classify connectors into two groups - business-data-only and no-business-data-allowed. Can be applied per-environment.&lt;/dd>
&lt;dt>Q: other services such as IFTTT are better for personal devices e.g Alexa, Cortana etc&lt;/dt>
&lt;dd>Do see some more consumer connectors&lt;/dd>
&lt;dt>Q: e.g. approvals - will we see customisation of page etc&lt;/dt>
&lt;dd>yes - looking at more scope to brand approvals etc&lt;/dd>
&lt;dt>Q: Flow tools for admins?&lt;/dt>
&lt;dd>flow admin centre - can see all flows in environment, DLP etc&lt;/dd>
&lt;dd>Power Platform admin - analytics&lt;/dd>
&lt;dd>Powershell cmdlets&lt;/dd>
&lt;/dl>
&lt;p>See also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://flow.microsoft.com/en-us/blog/" target="_blank" rel="noopener">Flow product blog&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://powerusers.microsoft.com/t5/Flow-Ideas/idb-p/FlowIdeas" target="_blank" rel="noopener">Flow Ideas portal&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://flow.microsoft.com/en-us/blog/solutions-in-microsoft-flow/" target="_blank" rel="noopener">Solutions in Flow&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://dreamingincrm.com/2019/03/01/flowception-creating-solution-enabled-flow-with-flow/" target="_blank" rel="noopener">Flowception: Creating solution enabled Flow with Flow&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://us.hitachi-solutions.com/blog/dynamics-365-workflow-vs-microsoft-flow/" target="_blank" rel="noopener">Dynamics 365 Workflow vs. Microsoft Flow&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Filtering Information by Social Distance</title><link>https://www.synesthesia.co.uk/2019/09/19/filtering-information-by-social-distance/</link><pubDate>Thu, 19 Sep 2019 06:56:26 +0100</pubDate><guid>https://www.synesthesia.co.uk/2019/09/19/filtering-information-by-social-distance/</guid><description>&lt;p>I was delighted to be tweeted by Ton Zijlstra, an old blogging contact from the Triassic era of blogs&amp;hellip;&lt;/p>
&lt;p>&lt;em>(2023-07-11 - Tweet reference deleted as Ton has now deleted his twitter account)&lt;/em>&lt;/p>
&lt;p>Thanks to Ton&amp;rsquo;s little prompt I realise I remember &lt;a href="https://www.synesthesia.co.uk/2004/09/18/blogwalk-iv/">Blogwalk IV&lt;/a>, and reading back over the posts here and elsewhere I&amp;rsquo;m struck by how much is still relevant 15 years later - but that&amp;rsquo;s for another post (as is an update on IndieWeb).&lt;/p>
&lt;h2 id="a-different-approach-to-organising-web-feeds">A different approach to organising web feeds&lt;/h2>
&lt;p>Inevitably following links to revisit &lt;a href="https://www.zylstra.org/blog/" target="_blank" rel="noopener">Ton&amp;rsquo;s blog&lt;/a> I found &lt;a href="https://www.zylstra.org/blog/2019/06/feed-reading-by-social-distance/" target="_blank" rel="noopener">Feed reading by Social Distance&lt;/a>&lt;/p>
&lt;blockquote>
&lt;ul>
&lt;li>There is no way you can take in all available information, there’s simply too much, it’s always been that way. Internet amped up the volume of course. [&amp;hellip;]&lt;/li>
&lt;li>Filtering also needs attention as it is a key part of what information you share and propagate yourself [&amp;hellip;]&lt;/li>
&lt;li>My filtering is not a stand alone thing in isolation, it is part of a network of filters, yours, mine, and other people’s [&amp;hellip;]&lt;/li>
&lt;li>Who you are as a person is an essential piece of context in how to judge information. [&amp;hellip;] So what I know socially about you helps me interpret what you share, as it will be coloured by who you are. Let’s call this social filtering. [&amp;hellip;]&lt;/li>
&lt;li>I follow people, not sources [&amp;hellip;]&lt;/li>
&lt;li>I order the feeds I follow in folders roughly by social distance&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>Which has obvious resonances with Harold Jarche&amp;rsquo;s &lt;a href="https://jarche.com/2014/02/the-seek-sense-share-framework/" target="_blank" rel="noopener">Seek Sense Share&lt;/a> and also Luis Suarez&amp;rsquo;s approach to &lt;a href="http://www.elsua.net/2015/09/23/is-twitter-where-connections-go-to-die-the-unfollowing-experiment/" target="_blank" rel="noopener">Twitter filtering&lt;/a> I mentioned &lt;a href="https://www.synesthesia.co.uk/2016/02/11/breaking-the-ubiquity-of-stream-mode/">here&lt;/a> and &lt;a href="https://www.synesthesia.co.uk/2016/02/11/gripping-twitter-gently-by-the-throat/">here&lt;/a>.&lt;/p>
&lt;h2 id="looking-back-at-similar-ideas-with-twitter">Looking back at similar ideas with Twitter&lt;/h2>
&lt;p>Looking back at the earlier Twitter-based idea, I slipped back fairly quickly. Although I still have the original lists I set up, I don&amp;rsquo;t garden them very often, and I&amp;rsquo;ve followed a lot more new people than I unfollowed as part of the experiment. Thinking about why that might be:&lt;/p>
&lt;ul>
&lt;li>generally my PKM practice is &lt;a href="https://www.synesthesia.co.uk/2015/04/13/pkm40-what-have-i-learned-so-far/">over-biased to &amp;ldquo;Seek&amp;rdquo; vs &amp;ldquo;Sense&amp;rdquo; and &amp;ldquo;Share&amp;rdquo;&lt;/a>&lt;/li>
&lt;li>The signal-to-noise of Twitter gets worse (and yes that should push towards using some filtering, but in practice means it becomes less attractive as a PKM tool)&lt;/li>
&lt;li>Brexit - not only a VAST source of the increased noise, but sadly I find myself glued to Twitter in a less and less useful way&lt;/li>
&lt;li>I found that the lists were rapidly becoming &lt;a href="https://en.wikipedia.org/wiki/Echo_chamber_%28media%29" target="_blank" rel="noopener">echo chambers&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="moving-beyond-twitter">Moving beyond Twitter&lt;/h2>
&lt;p>I still use web feeds as a major source, although mine are in &lt;a href="feedly.com">Feedly&lt;/a>. Although Feedly is a closed garden these days (they used to make public feeds possible), the affordances of the product work well for me, in particular the mobile client. I do most of my feed catchup on buses or when otherwise waiting, with IFTTT processes set up to route things of interest for later exploration.&lt;/p>
&lt;p>Feed gardening, like Twitter list gardening, is very much in the category of &amp;ldquo;things I know I should do more of&amp;rdquo;. Feedly currently reports that I have 708 sources of which 277 are inactive and 81 unreachable.&lt;/p>
&lt;p>Like Twitter, I find my use of feedreaders is quite hybrid. There are sources that I follow for specific information that can be applied in my working life (usually corporate) which wouldn&amp;rsquo;t fit into the social distance categorisation. Then there are the feeds which might be applicable to day-to-day work, or might well be more related to broader ideas that interest me - these may well fit into the social distance model if I wanted to use it, although given the rather wide range of things I find interesting, some kind of topic-based organisation seems likely too.&lt;/p>
&lt;h2 id="dealing-with-echo-chambers">Dealing with Echo Chambers&lt;/h2>
&lt;p>Echo chambers are present everywhere, including online.&lt;/p>
&lt;p>As an example, the &lt;a href="https://twitter.com/hashtag/ListGate" target="_blank" rel="noopener">#ListGate&lt;/a> meme from summer 2019 exposed the cliqueish thinking amongst a significant number of popular educational tweeters / bloggers, expertly &lt;a href="https://twitter.com/ssbfathers/status/1162260315691601921" target="_blank" rel="noopener">dissected by (amongst others) DaN McKee in this thread&lt;/a>.&lt;/p>
&lt;p>Ton &lt;a href="https://www.zylstra.org/blog/2019/06/feed-reading-by-social-distance/" target="_blank" rel="noopener">addresses&lt;/a> the issue of &lt;a href="https://en.wikipedia.org/wiki/Echo_chamber_%28media%29" target="_blank" rel="noopener">echo chambers&lt;/a> thus:&lt;/p>
&lt;blockquote>
&lt;p>When social distance and social filtering are key elements in filtering information, preventing echo chambers is a key concern. This translates into purposefully seeking out divergence and diversity in your network. All your favourite enemies need to be in your information filter as well. And you need to extend your network periodically, while monitoring its health in terms of variety.&lt;/p>
&lt;/blockquote>
&lt;p>It&amp;rsquo;s a sound approach if you are seeking to use social media or web feeds for any kind of knowledge source. I think however that in current times this called for a balanced strategy. In terms of the main timeline, and the vast amounts of gaslighting, bots, trolls and shills then robust blocking and unfollowing is almost essential. I think this supports using lists etc for the more professional aspects of platform use in order to balance.&lt;/p>
&lt;h2 id="would-i-use-this-approach-more">Would I use this approach more?&lt;/h2>
&lt;p>The gist of the idea makes sense to me - &lt;a href="https://en.wikipedia.org/wiki/Social_constructivism" target="_blank" rel="noopener">social constructivism&lt;/a> is a key facet of PKM.&lt;/p>
&lt;p>The hybrid approach, as I mention for both Twitter and web feeds essential. I use both of these sources for more than one thing, so it make sense that I should apply more than one technique to using them.&lt;/p>
&lt;p>Practically, will I do the work? I could see it happening slowly, provided I&amp;rsquo;m pragmatic about what I expect to get from it. And the hybrid approach means there is no success or failure, only more or less personal utility, which makes this much lower stakes&amp;hellip;&lt;/p></description></item><item><title>Fixing Data With Flow</title><link>https://www.synesthesia.co.uk/note/2019/09/18/fixing-data-with-flow/</link><pubDate>Wed, 18 Sep 2019 10:34:24 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2019/09/18/fixing-data-with-flow/</guid><description>&lt;p>If you work in any way with systems or data, you will know the situation, where some records have ended up with missing or wrong values. This is particularly irritating when to fix the problem means pulling data from more than one place in order to set things right.&lt;/p>
&lt;p>As we have fully adopted Office 365 at work, Microsoft Flow is rapidly becoming my favourite tool for basic low-volume data manipulation. A case in point came up today&amp;hellip;&lt;/p>
&lt;h2 id="scenario">Scenario&lt;/h2>
&lt;p>We run a federated identity system for our customer-facing sites to provide a single login (SSO) across all services. When a new user registers we fire some external logic that looks them up in our CRM (Dynamics 365), and then sends some key data back to the identity server where it is added as claims. These claims are then available to downstream systems that use the SSO, so (for example) can be used to retrieve further data from the CRM - a good example would be a website retrieving a list of content groups for a user in order to control what they can see.&lt;/p>
&lt;p>Today we found that for approximately 100 users this process had failed because an authentication key had expired. We fixed the key in moments, but then needed to fix the data. With a little SQL manipulation a colleague was easily able to extract a CSV list of user Ids that were missing the claims, but to fix the records we would need to mimic the action of the integration code:&lt;/p>
&lt;ul>
&lt;li>iterate over the list of user Ids, and for each:
&lt;ul>
&lt;li>lookup the user record in CRM&lt;/li>
&lt;li>query two records to get the relevant data keys&lt;/li>
&lt;li>write back the updated user record to a custom REST API on the SSO service (secured by bearer token)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="creating-a-tool">Creating a tool&lt;/h2>
&lt;p>If the problem had been a couple of records the fastest solution would have been to look up the information manually and inject it in to the SSO database by hand. However with just over a 100 items to fix this wasn&amp;rsquo;t practical.&lt;/p>
&lt;p>Writing a console app in code to do the task would have been straightforward, but would take a developer off more productive work, so I decided to pick up the issue and try to fix it with Flow.&lt;/p>
&lt;h2 id="key-points-of-the-resulting-flow">Key points of the resulting Flow&lt;/h2>
&lt;p>I&amp;rsquo;m not going to replicate the entire Flow here - the screenshots rapidly become unwieldy, and it also contains proprietary information. Similarly, I&amp;rsquo;m not going into the basics of how to use Flow, nor the details of how you protect APIs with Azure AD and register client applications: those topics are beyond the scope of a short note (and Microsoft provide a ton of documentation).&lt;/p>
&lt;p>Here though is how I solved the key problems:&lt;/p>
&lt;h3 id="reading-source-data">Reading source data&lt;/h3>
&lt;p>For this I made use of a Manual Trigger (aka &amp;ldquo;Manually trigger a flow&amp;rdquo;) and the &lt;a href="https://docs.microsoft.com/en-us/connectors/excelonlinebusiness/" target="_blank" rel="noopener">Excel Online (Business) connector&lt;/a> connector &lt;a href="https://docs.microsoft.com/en-us/connectors/excelonlinebusiness/#list-rows-present-in-a-table" target="_blank" rel="noopener">List Rows present in a Table&lt;/a> action.&lt;/p>
&lt;p>I converted the source CSV into an Excel sheet with a data table, and saved it in OneDrive.&lt;/p>
&lt;p>A limitation that later emerged was that this connector will only read the first 256 rows - if your data set is larger than this you will need to split into multiple sheets and edit the source between runs.&lt;/p>
&lt;h3 id="getting-an-authentication-token">Getting an authentication token&lt;/h3>
&lt;p>The SSO API is secured with Azure AD, so our flow needs an access token in order to write back the updated record. Getting a token is straightforward if you know what data values you need:&lt;/p>
&lt;ul>
&lt;li>&lt;code>SUBSCRIPTIONID&lt;/code> - this is the Office 365 / Azure tenant Id within which your Azure AD lives.&lt;/li>
&lt;li>&lt;code>ClientId&lt;/code> - this is the Id of an app registered in Azure AD that has the permission to access the protected API. In our case as we already had a registration for the service that normally carries out this operation we re-used that registration.&lt;/li>
&lt;li>&lt;code>ClientSecret&lt;/code> - a secret key for the application represented by &lt;code>ClientId&lt;/code>&lt;/li>
&lt;li>&lt;code>Token Endpoint&lt;/code> - &lt;a href="https://login.microsoftonline.com/SUBSCRIPTIONID/oauth2/token" target="_blank" rel="noopener">https://login.microsoftonline.com/SUBSCRIPTIONID/oauth2/token&lt;/a>&lt;/li>
&lt;li>&lt;code>Audience&lt;/code> - this is found in the app registration for the protected API, also known as &amp;ldquo;Application ID URL&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>As part of the flow you need to Url Encode the secret - this is best done in a compose block using the built-in &lt;a href="https://docs.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference#uriComponent" target="_blank" rel="noopener">&lt;code>uriComponent()&lt;/code>&lt;/a> function.&lt;/p>
&lt;p>To get a token you need to post an HTTP request to the &lt;code>Token Endpoint&lt;/code> with a correctly formed body:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">grant_type=client_credentials&amp;amp;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">client_id=CLIENTID&amp;amp;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">resource=AUDIENCE&amp;amp;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">client_secret=CLIENTSECRET
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The HTTP action then looks like:&lt;/p>
&lt;figure id="figure-example-http-action-to-retrieve-access-token-from-azure-ad">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt=" Example HTTP action to retrieve access token from Azure AD" srcset="
/note/2019/09/18/fixing-data-with-flow/gettoken_hu23369dd78b2dace97b6c5f3599506375_15515_07f3bdd35b1624a7ad09cc89179e1ed7.webp 400w,
/note/2019/09/18/fixing-data-with-flow/gettoken_hu23369dd78b2dace97b6c5f3599506375_15515_5307d2d00c84126bf7c0192c4afea246.webp 760w,
/note/2019/09/18/fixing-data-with-flow/gettoken_hu23369dd78b2dace97b6c5f3599506375_15515_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2019/09/18/fixing-data-with-flow/gettoken_hu23369dd78b2dace97b6c5f3599506375_15515_07f3bdd35b1624a7ad09cc89179e1ed7.webp"
width="400"
height="351"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Example HTTP action to retrieve access token from Azure AD
&lt;/figcaption>&lt;/figure>
&lt;p>For convenience I then composed the token result with the &amp;ldquo;Bearer&amp;rdquo; label to make up content I would need to include in a requst header later:&lt;/p>
&lt;figure id="figure-compose-token-value-into-required-header-value">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt=" Compose token value into required header value" srcset="
/note/2019/09/18/fixing-data-with-flow/token_huc3c082d3aad0c77c6109404b56cebc25_9085_69c802cfcf10ebb60f9606f9ff53a64f.webp 400w,
/note/2019/09/18/fixing-data-with-flow/token_huc3c082d3aad0c77c6109404b56cebc25_9085_7779da46930b80c8c1767d8ca0a8203d.webp 760w,
/note/2019/09/18/fixing-data-with-flow/token_huc3c082d3aad0c77c6109404b56cebc25_9085_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2019/09/18/fixing-data-with-flow/token_huc3c082d3aad0c77c6109404b56cebc25_9085_69c802cfcf10ebb60f9606f9ff53a64f.webp"
width="400"
height="173"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Compose token value into required header value
&lt;/figcaption>&lt;/figure>
&lt;h3 id="iterating-over-the-data">Iterating over the data&lt;/h3>
&lt;p>After the &lt;a href="https://docs.microsoft.com/en-us/connectors/excelonlinebusiness/#list-rows-present-in-a-table" target="_blank" rel="noopener">List Rows present in a Table&lt;/a> action place an &amp;ldquo;Apply to Each&amp;rdquo; action from the &lt;code>New Step&lt;/code> dialog:&lt;/p>
&lt;figure id="figure-add-apply-to-each-action">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt=" Add &amp;#39;Apply to Each&amp;#39; action" srcset="
/note/2019/09/18/fixing-data-with-flow/foreach_huf034a9eb867ead5d4aa482c9e990f3e7_10037_52a8df5c962f1d2c1cd6030bce4f8cd6.webp 400w,
/note/2019/09/18/fixing-data-with-flow/foreach_huf034a9eb867ead5d4aa482c9e990f3e7_10037_2e8f9e93cdf060e98b8e49382a5ba39d.webp 760w,
/note/2019/09/18/fixing-data-with-flow/foreach_huf034a9eb867ead5d4aa482c9e990f3e7_10037_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2019/09/18/fixing-data-with-flow/foreach_huf034a9eb867ead5d4aa482c9e990f3e7_10037_52a8df5c962f1d2c1cd6030bce4f8cd6.webp"
width="400"
height="236"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Add &amp;lsquo;Apply to Each&amp;rsquo; action
&lt;/figcaption>&lt;/figure>
&lt;p>All the subsequent actions are placed within the Apply To Each block.&lt;/p>
&lt;h3 id="reading-data-from-dynamics">Reading data from Dynamics&lt;/h3>
&lt;p>In our example we had to query two records to collect the data we needed.&lt;/p>
&lt;h4 id="querying-a-list-of-records">Querying a list of records&lt;/h4>
&lt;p>The first one holds the remote SSO Id (our source data) in a text field, so although there is a 1:1 match between the two systems we needed to use a query to find the relevant record. This is done using a &lt;a href="https://docs.microsoft.com/en-us/connectors/dynamicscrmonline/#list-records" target="_blank" rel="noopener">&amp;ldquo;List records&amp;rdquo;&lt;/a> action with a suitable filter expression.&lt;/p>
&lt;figure id="figure-query-list-of-records-in-dynamics">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt=" Query list of records in Dynamics" srcset="
/note/2019/09/18/fixing-data-with-flow/listrecords_hu975ba548ee03610211fae7c2b6d40c5f_20259_5cd5e11bc9a264b0da151f85ae7f426f.webp 400w,
/note/2019/09/18/fixing-data-with-flow/listrecords_hu975ba548ee03610211fae7c2b6d40c5f_20259_aadda77e620aa8934d6e8667ac4ec582.webp 760w,
/note/2019/09/18/fixing-data-with-flow/listrecords_hu975ba548ee03610211fae7c2b6d40c5f_20259_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2019/09/18/fixing-data-with-flow/listrecords_hu975ba548ee03610211fae7c2b6d40c5f_20259_5cd5e11bc9a264b0da151f85ae7f426f.webp"
width="400"
height="321"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Query list of records in Dynamics
&lt;/figcaption>&lt;/figure>
&lt;p>Because this action returns an array of records, in subsequent processing remember to select the first record, e.g.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">outputs(&amp;#39;list_step&amp;#39;)?[&amp;#39;body&amp;#39;]?[&amp;#39;value&amp;#39;][0]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="retrieving-a-specific-record">Retrieving a specific record&lt;/h4>
&lt;p>The record we obtained from the first step contains a lookup field to the second record we need. The Dynamics REST API returns the foreign key Id of lookups with a special attribute name:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Lookup field&lt;/th>
&lt;th>Attribute in response holding Id value&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>mylookupfield&lt;/code>&lt;/td>
&lt;td>&lt;code>_mylookupfield_value&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>We can then use that value as the record Id in a standard &lt;a href="https://docs.microsoft.com/en-us/connectors/dynamicscrmonline/#get-record" target="_blank" rel="noopener">Get Record&lt;/a> action:&lt;/p>
&lt;figure id="figure-retrieve-a-single-record-from-dynamics">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt=" Retrieve a single record from Dynamics" srcset="
/note/2019/09/18/fixing-data-with-flow/getrecord_hu2d0cf7cfca28d2f99bdf5625bc9843d1_11050_b93995308945514ca3f30c6454cd023c.webp 400w,
/note/2019/09/18/fixing-data-with-flow/getrecord_hu2d0cf7cfca28d2f99bdf5625bc9843d1_11050_0c3c8e0653289026178a2ff702f4cb6d.webp 760w,
/note/2019/09/18/fixing-data-with-flow/getrecord_hu2d0cf7cfca28d2f99bdf5625bc9843d1_11050_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2019/09/18/fixing-data-with-flow/getrecord_hu2d0cf7cfca28d2f99bdf5625bc9843d1_11050_b93995308945514ca3f30c6454cd023c.webp"
width="400"
height="206"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Retrieve a single record from Dynamics
&lt;/figcaption>&lt;/figure>
&lt;h3 id="posting-back-to-the-sso-system">Posting back to the SSO system&lt;/h3>
&lt;h4 id="composing-response">Composing response&lt;/h4>
&lt;p>The SSO API requires data in a format very loosely based on &lt;a href="http://www.simplecloud.info/" target="_blank" rel="noopener">SCIM&lt;/a> so I used a &lt;a href="https://docs.microsoft.com/en-us/flow/data-operations#use-the-compose-action" target="_blank" rel="noopener">Compose&lt;/a> action to build the request:&lt;/p>
&lt;figure id="figure-compose-body-of-update-request">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt=" Compose body of update request" srcset="
/note/2019/09/18/fixing-data-with-flow/compose-sso-request_hue3db5b4efa8f62c6a2f897021665726e_14199_fd55af330695e1642bfdc3f36abf3ef2.webp 400w,
/note/2019/09/18/fixing-data-with-flow/compose-sso-request_hue3db5b4efa8f62c6a2f897021665726e_14199_bc295aca5796dd89a0ef0bf0e973ab57.webp 760w,
/note/2019/09/18/fixing-data-with-flow/compose-sso-request_hue3db5b4efa8f62c6a2f897021665726e_14199_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2019/09/18/fixing-data-with-flow/compose-sso-request_hue3db5b4efa8f62c6a2f897021665726e_14199_fd55af330695e1642bfdc3f36abf3ef2.webp"
width="400"
height="344"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Compose body of update request
&lt;/figcaption>&lt;/figure>
&lt;h4 id="sending-updated-data">Sending updated data&lt;/h4>
&lt;p>The final step was to assemble the API endpoint, the request body and the authorization token into an HTTP request:&lt;/p>
&lt;figure id="figure-send-update-request">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt=" Send update request" srcset="
/note/2019/09/18/fixing-data-with-flow/sso-update_hue46c30f30189d536dfac518b3d23dbc9_17414_77656e69e516a1217797ab36848118d0.webp 400w,
/note/2019/09/18/fixing-data-with-flow/sso-update_hue46c30f30189d536dfac518b3d23dbc9_17414_c427d1d8717da9fa2431978f4dfa8fb0.webp 760w,
/note/2019/09/18/fixing-data-with-flow/sso-update_hue46c30f30189d536dfac518b3d23dbc9_17414_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2019/09/18/fixing-data-with-flow/sso-update_hue46c30f30189d536dfac518b3d23dbc9_17414_77656e69e516a1217797ab36848118d0.webp"
width="400"
height="343"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Send update request
&lt;/figcaption>&lt;/figure>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>The flow took me approximately half an hour to build, then was left running while I got on with other work - a review of the SSO application log showed that the records had been updated successfully.&lt;/p>
&lt;p>If you have questions, or your own examples to share, please do so in the comments, or you can reach me via the routes on the &lt;a href="https://www.synesthesia.co.uk/#contact">Contact page&lt;/a>&lt;/p></description></item><item><title>Top 10 tools For learning 2019</title><link>https://www.synesthesia.co.uk/2019/08/23/top-10-tools-for-learning-2019/</link><pubDate>Fri, 23 Aug 2019 09:25:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/2019/08/23/top-10-tools-for-learning-2019/</guid><description>&lt;p>Every year Jane Hart runs a &lt;a href="http://modernworkplacelearning.com/magazine/janes-top-ten-2019/" target="_blank" rel="noopener">survey of learning tools&lt;/a>&lt;/p>
&lt;p>Here&amp;rsquo;s my entry for 2019:&lt;/p>
&lt;h2 id="drafts">Drafts&lt;/h2>
&lt;p>Incredibly versatile tool for creating and re-purposing text on iOS devices. Custom actions written in JavaScript allow me to push, pull and manipulate text pretty much as I need. A core part of my personal / professional learning. This post created in Drafts.&lt;/p>
&lt;h2 id="hugo">Hugo&lt;/h2>
&lt;p>Earlier this year I &lt;a href="https://www.synesthesia.co.uk/project/wp-to-hugo/" target="_blank" rel="noopener">migrated my blog from WordPress to Hugo&lt;/a> and I&amp;rsquo;m extremely happy with the result. Malware -resistant, and if you are prepared to learn Markdown, a much faster way of capturing thoughts.&lt;/p>
&lt;h2 id="fedwiki">Fedwiki&lt;/h2>
&lt;p>I got my teeth back into &lt;a href="https://wiki.synesthesia.co.uk/view/welcome-visitors" target="_blank" rel="noopener">Federated Wiki&lt;/a> this year, and it&amp;rsquo;s a great tool for building out concepts as part of note-taking or reflection&lt;/p>
&lt;h2 id="feedly">Feedly&lt;/h2>
&lt;p>Feedly is my key tool for keeping up to date across a range of personal and professional interests.&lt;/p>
&lt;h2 id="diigo">Diigo&lt;/h2>
&lt;p>Probably the single tool I use the most - pretty much any page I find interesting or have to look at for work gets bookmarked into Diigo. The highlighting and annotation tools are usually the first step in sense-making.&lt;/p>
&lt;h2 id="ifttt">IFTTT&lt;/h2>
&lt;p>If This Then That provides the essential glue to connect tools together and make the information flow through my learning process&lt;/p>
&lt;h2 id="microsoft-teams">Microsoft Teams&lt;/h2>
&lt;p>Rapidly becoming the focal point of my work collaboration. Replacing Skype for business, but also as an integration point that allows an ad-hoc group to see all the information they use on their joint work in a single place&lt;/p>
&lt;h2 id="twitter">Twitter&lt;/h2>
&lt;p>Usually my first source for information from selected parts of my network. Use of lists is essential to filter the firehouse.&lt;/p>
&lt;h2 id="onenote">OneNote&lt;/h2>
&lt;p>Still has a place for work note-taking that sits within our Office365 environment.&lt;/p>
&lt;h2 id="github">Github&lt;/h2>
&lt;p>For the parts of my personal and professional learning that relate to code, Github is key. Whether it&amp;rsquo;s reading other people&amp;rsquo;s code, sharing my own ideas or collaborating on open source this tool is essential.&lt;/p></description></item><item><title>Running Federated Wiki locally as Windows Service</title><link>https://www.synesthesia.co.uk/note/2019/07/16/running-federated-wiki-locally-as-windows-service/</link><pubDate>Tue, 16 Jul 2019 10:03:40 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2019/07/16/running-federated-wiki-locally-as-windows-service/</guid><description>&lt;p>Smallest Federated Wiki is the brainchild of Ward Cunningham - the &amp;ldquo;Father of Wiki&amp;rdquo;&lt;/p>
&lt;p>Although the main feature is the ability to fork content from other wikis, and to allow other wiki users to fork your content, many people also want to run a local copy as a private notebook or commonplace book.&lt;/p>
&lt;p>The most stable distribution of wiki is written in node, so will run anywhere that node will. It&amp;rsquo;s really useful to have wiki run continuously, so in this approach we use &lt;a href="http://github.com/coreybutler/node-windows" target="_blank" rel="noopener">node-windows&lt;/a> to install wiki as a windows service.&lt;/p>
&lt;h2 id="preparation">Preparation&lt;/h2>
&lt;ul>
&lt;li>install &lt;a href="https://nodejs.org/en/download/" target="_blank" rel="noopener">node and npm&lt;/a>&lt;/li>
&lt;li>&lt;code>npm install -g wiki&lt;/code>&lt;/li>
&lt;li>&lt;code>npm install -g node-windows&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="test-that-wiki-works">Test that wiki works&lt;/h2>
&lt;p>&lt;code>cd ~&lt;/code>&lt;/p>
&lt;p>&lt;code>wiki&lt;/code>&lt;/p>
&lt;p>Visit http://localhost:3000, you should see a wiki page.&lt;/p>
&lt;figure id="figure-fedwiki-default-start-page">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="FedWiki default start page" srcset="
/note/2019/07/16/running-federated-wiki-locally-as-windows-service/fedwiki-initial-home_huef4396fc72d4d73286e48795d6604e5a_71608_8449a9b703ce36af6f5ce315eed068e9.webp 400w,
/note/2019/07/16/running-federated-wiki-locally-as-windows-service/fedwiki-initial-home_huef4396fc72d4d73286e48795d6604e5a_71608_48990858c5d8c90b1ce34bc5473e0bef.webp 760w,
/note/2019/07/16/running-federated-wiki-locally-as-windows-service/fedwiki-initial-home_huef4396fc72d4d73286e48795d6604e5a_71608_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2019/07/16/running-federated-wiki-locally-as-windows-service/fedwiki-initial-home_huef4396fc72d4d73286e48795d6604e5a_71608_8449a9b703ce36af6f5ce315eed068e9.webp"
width="455"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
FedWiki default start page
&lt;/figcaption>&lt;/figure>
&lt;h2 id="customise-wiki-setup">Customise wiki setup&lt;/h2>
&lt;ul>
&lt;li>create &lt;code>config.json&lt;/code> in &lt;code>~/.wiki&lt;/code>&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;security_type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;friends&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cookieSecret&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;SECRET&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;session_duration&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">900&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>optionally, customise data location&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;data&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="s2">&amp;#34;d:/Dropbox/fedwiki/localhost/data&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="run-wiki-and-claim">Run wiki and claim&lt;/h2>
&lt;ul>
&lt;li>start wiki as above&lt;/li>
&lt;li>in browser, click the padlock icon&lt;/li>
&lt;/ul>
&lt;p>A new file &lt;code>owner.json&lt;/code> will be created in the status subdirectory of the wiki data directory.&lt;/p>
&lt;p>Contents will look something like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;randomname&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;friend&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;secret&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;AVERYLONGKEY&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If you ever get locked out then the value of AVERYLONGKEY is what you will need to paste in the popup that wiki shows you&lt;/p>
&lt;p>You can edit the name to something else (like your own name)&lt;/p>
&lt;h2 id="create-windows-service-to-run-wiki-automatically">Create windows service to run wiki automatically&lt;/h2>
&lt;ul>
&lt;li>create a directory for the scripts that will create a windows service&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">mkdir ~&lt;span class="se">\w&lt;/span>ikisvc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>copy wiki config file&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">cp ~/.wiki/config.json .
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>In the new directory create the following scripts:&lt;/li>
&lt;/ul>
&lt;p>&lt;em>wikiservice.js&lt;/em>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="k">var&lt;/span> &lt;span class="n">Service&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">require&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;node-windows&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Service&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">var&lt;/span> &lt;span class="n">svc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">new&lt;/span> &lt;span class="n">Service&lt;/span> &lt;span class="p">({&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s1">&amp;#39;Wiki&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">description&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;FedWiki as windows service&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">script&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;C:/bin/Nodist/bin/node_modules/wiki/index.js&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">svc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">on&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;install&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">function&lt;/span>&lt;span class="p">(){&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">svc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">start&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">svc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">install&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;em>wikiservice-uninstall.js&lt;/em>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="k">var&lt;/span> &lt;span class="n">Service&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">require&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;node-windows&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Service&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">var&lt;/span> &lt;span class="n">svc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">new&lt;/span> &lt;span class="n">Service&lt;/span> &lt;span class="p">({&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s1">&amp;#39;Wiki&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">description&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;FedWiki as windows service&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">script&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;C:/bin/Nodist/bin/node_modules/wiki/index.js&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">svc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">on&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;uninstall&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">function&lt;/span>&lt;span class="p">(){&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">console&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;uninstalled&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">svc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">uninstall&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>in the new directory run:&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">npm link node-windows
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">node wikiservice.js
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>open Windows Service Manager and check for the new service:&lt;/li>
&lt;/ul>
&lt;figure id="figure-windows-services-manager">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Windows Services Manager" srcset="
/note/2019/07/16/running-federated-wiki-locally-as-windows-service/fedwiki-in-windows-service-manager_hu62ab7a34c5569fcce53ab38a3945134a_2528_456bbe1d7d7909cf2927ea629c143a15.webp 400w,
/note/2019/07/16/running-federated-wiki-locally-as-windows-service/fedwiki-in-windows-service-manager_hu62ab7a34c5569fcce53ab38a3945134a_2528_5aa6975a72e1dfaaa7e63d67b026f7f6.webp 760w,
/note/2019/07/16/running-federated-wiki-locally-as-windows-service/fedwiki-in-windows-service-manager_hu62ab7a34c5569fcce53ab38a3945134a_2528_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2019/07/16/running-federated-wiki-locally-as-windows-service/fedwiki-in-windows-service-manager_hu62ab7a34c5569fcce53ab38a3945134a_2528_456bbe1d7d7909cf2927ea629c143a15.webp"
width="543"
height="21"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption>
Windows Services Manager
&lt;/figcaption>&lt;/figure>
&lt;ul>
&lt;li>
&lt;p>if it isn&amp;rsquo;t started, start it&lt;/p>
&lt;/li>
&lt;li>
&lt;p>visit the wiki page in a browser to confirm all works&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>EA Addons</title><link>https://www.synesthesia.co.uk/project/ea-uml-addons/</link><pubDate>Mon, 15 Jul 2019 15:51:53 +0100</pubDate><guid>https://www.synesthesia.co.uk/project/ea-uml-addons/</guid><description>&lt;p>I&amp;rsquo;ve been a user of &lt;a href="https://sparxsystems.com/" target="_blank" rel="noopener">Sparx Enterprise Architect&lt;/a> for many years - when you need to put together a model of some project it&amp;rsquo;s really useful. Although there are plenty of other UML tools around, one of the features I really like is the ability to extend the modelling language to suit your own requirements.&lt;/p>
&lt;p>This project pulls together notes about small customisations I have made.&lt;/p></description></item><item><title>Posting to Hugo from Drafts</title><link>https://www.synesthesia.co.uk/note/2019/07/12/2019-07-12-posting-to-hugo-from-drafts/</link><pubDate>Fri, 12 Jul 2019 15:08:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2019/07/12/2019-07-12-posting-to-hugo-from-drafts/</guid><description>&lt;p>&lt;a href="https://getdrafts.com" target="_blank" rel="noopener">Drafts&lt;/a> is a genuinely useful text creation tool for iOS devices.&lt;/p>
&lt;p>With the Pro version you can extend the tool with custom actions, either from the &lt;a href="http://actions.getdrafts.com" target="_blank" rel="noopener">community&lt;/a>, or written yourself (Javascript).&lt;/p>
&lt;p>Collecting / writing / adapting useful scripts for working with this blog from my phone &lt;a href="https://github.com/synesthesia/drafts-scripts/blob/master/README.md" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>To complete the setup, I recommend the &lt;a href="https://workingcopyapp.com" target="_blank" rel="noopener">Working Copy&lt;/a> git client.&lt;/p></description></item><item><title>Random observations about online writing</title><link>https://www.synesthesia.co.uk/2019/07/12/random-observations-about-online-writing/</link><pubDate>Fri, 12 Jul 2019 13:50:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/2019/07/12/random-observations-about-online-writing/</guid><description>&lt;p>Noting down a few interesting uses/modes of blogging that have caught my eye this week&lt;/p>
&lt;p>For &lt;a href="http://davewiner.com" target="_blank" rel="noopener">Dave Winer&lt;/a> pretty much every form of writing text is an outline - as a result he has created some interesting tools, the ubiquitous glue of &lt;a href="https://cyber.harvard.edu/rss/rss.html" target="_blank" rel="noopener">RSS&lt;/a>, and a distinctive &lt;a href="http://scripting.com" target="_blank" rel="noopener">blogging style&lt;/a>.&lt;/p>
&lt;p>By contrast &lt;a href="https://michelleockers.com/blog/" target="_blank" rel="noopener">Michelle Ockers&lt;/a> mixes a blog with &amp;ldquo;Daily Dispatches&amp;rdquo; (a similar show-your-work concept to the &lt;a href="https://www.synesthesia.co.uk/note/">Notes&lt;/a> here), but really stands out for her use of video, including on her &lt;a href="https://michelleockers.com" target="_blank" rel="noopener">introduction&lt;/a>&lt;/p>
&lt;p>Then there&amp;rsquo;s the whole &lt;a href="https://weeknot.es/publishing-your-weeknotes-to-weeknot-es-289ab12076ac" target="_blank" rel="noopener">weeknotes&lt;/a> thing - like a slightly longer show-your-work post (although that site loses IMHO by being Medium-only)&lt;/p></description></item><item><title>Interesting combination of Flow and cognitive services</title><link>https://www.synesthesia.co.uk/note/2019/07/12/2019-07-12-interesting-combination-of-flow-and-cognitive-services/</link><pubDate>Fri, 12 Jul 2019 03:22:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2019/07/12/2019-07-12-interesting-combination-of-flow-and-cognitive-services/</guid><description>&lt;p>Using Flow to process emails is fairly standard stuff - &lt;a href="https://powerusers.microsoft.com/t5/Microsoft-Flow-Community-Blog/Handling-Company-Invoices-amp-Bills-With-Microsoft-Flow/ba-p/319695" target="_blank" rel="noopener">this example&lt;/a> extends the idea by using &lt;a href="https://www.luis.ai/home" target="_blank" rel="noopener">LUIS&lt;/a> to parse content and select emails for processing.&lt;/p></description></item><item><title>A Lesson From History?</title><link>https://www.synesthesia.co.uk/2019/07/05/a-lesson-from-history/</link><pubDate>Fri, 05 Jul 2019 16:11:05 +0100</pubDate><guid>https://www.synesthesia.co.uk/2019/07/05/a-lesson-from-history/</guid><description>&lt;p>Several commentators, dismayed at the recent antics of the Brexit party MEPs, have been tweeting variants of a quote from Josef Goebbels in the Nazi paper &lt;a href="https://en.wikipedia.org/wiki/Der_Angriff" target="_blank" rel="noopener">&lt;em>Der Angriff&lt;/em>&lt;/a> &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> :&lt;/p>
&lt;blockquote>
&lt;p>We enter the Reichstag to arm ourselves with democracy’s weapons. If democracy is foolish enough to give us free railway passes and salaries, that is its problem. It does not concern us. Any way of bringing about the revolution is fine by us.
If we succeed in getting sixty or seventy of our party’s agitators and organizers elected to the various parliaments, the state itself will pay for our fighting organization. That is amusing and entertaining enough to be worth trying&lt;/p>
&lt;/blockquote>
&lt;p>Among the tweeters, Otto English, who used the quote in his &lt;a href="https://bylinetimes.com/2019/07/03/defeating-democracy-with-its-own-weapons-a-warning-from-history/" target="_blank" rel="noopener">article&lt;/a> for Byline Times &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>:&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">My piece on the childish stunt the Brexit party pulled at &lt;a href="https://twitter.com/hashtag/Strasbourg?src=hash&amp;amp;ref_src=twsrc%5Etfw">#Strasbourg&lt;/a> yesterday and why it&amp;#39;s wholly appropriate to compare it to Nazism&lt;a href="https://t.co/CTw7nD18bs">https://t.co/CTw7nD18bs&lt;/a>&lt;/p>&amp;mdash; Otto English (@Otto_English) &lt;a href="https://twitter.com/Otto_English/status/1146408406829412352?ref_src=twsrc%5Etfw">July 3, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>and the academic, diplomat and author Dr Jennifer Cassidy:&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Read this. Do not look away. These are the words of Joseph Goebbels. You make the connection as you see fit. But read it. Save it. Share it. Read it again. I have never known of this quote &amp;amp; have shivers as I read each word. Thank &lt;a href="https://twitter.com/fascinatorfun?ref_src=twsrc%5Etfw">@fascinatorfun&lt;/a> for exposing this imperative read. &lt;a href="https://t.co/R6M1BNLUPk">pic.twitter.com/R6M1BNLUPk&lt;/a>&lt;/p>&amp;mdash; Dr. Jennifer Cassidy (@OxfordDiplomat) &lt;a href="https://twitter.com/OxfordDiplomat/status/1146112460828631040?ref_src=twsrc%5Etfw">July 2, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>Is this justified alarm, or is it another example of &lt;a href="https://en.wikipedia.org/wiki/Godwin%27s_law" target="_blank" rel="noopener">Godwin&amp;rsquo;s law&lt;/a>? &lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup> &lt;em>(&amp;ldquo;As an online discussion grows longer, the probability of a comparison involving Nazis or Hitler approaches 1&amp;rdquo;)&lt;/em>&lt;/p>
&lt;p>My gut feel is that this is just another piece in the bizarre take over of British politics by the populist right since 2016 - each event on it&amp;rsquo;s own seems almost laughable, but when they are taken together it becomes something entirely different.&lt;/p>
&lt;p>We need our historians now&amp;hellip;&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://research.calvin.edu/german-propaganda-archive/angrif06.htm" target="_blank" rel="noopener"> Joseph Goebbels, Der Angriff. Aufsätze aus der Kampfzeit (Munich: Zentralverlag der NSDAP., 1935), pp. 71-73&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://bylinetimes.com/2019/07/03/defeating-democracy-with-its-own-weapons-a-warning-from-history/" target="_blank" rel="noopener">Defeating Democracy with its Own Weapons – A Warning from History, Byline Times (2019)&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Godwin%27s_law" target="_blank" rel="noopener">Godwin&amp;rsquo;s Law (Wikipedia)&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Cultural Dementia</title><link>https://www.synesthesia.co.uk/2019/07/02/cultural-dementia/</link><pubDate>Tue, 02 Jul 2019 07:29:31 +0100</pubDate><guid>https://www.synesthesia.co.uk/2019/07/02/cultural-dementia/</guid><description>&lt;p>I have just finished reading &lt;a href="https://amzn.to/2RRUCiX" target="_blank" rel="noopener">Cultural Dementia&lt;/a> by &lt;a href="https://twitter.com/ProfDaveAndress" target="_blank" rel="noopener">Prof. David Andress&lt;/a>. &lt;a href="https://www.amazon.co.uk/gp/product/1788540050/ref=as_li_tl?ie=UTF8&amp;amp;camp=1634&amp;amp;creative=6738&amp;amp;creativeASIN=1788540050&amp;amp;linkCode=as2&amp;amp;tag=synesthesia-21&amp;amp;linkId=8281681bf5b0a897fdf8898983eb3581" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="//ws-eu.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;amp;MarketPlace=GB&amp;amp;ASIN=1788540050&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL250_&amp;amp;tag=synesthesia-21" alt="Book cover image" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/p>
&lt;p>The book both places current populism (in the UK, USA and France) in an historical context, and highlights the distorted and partial view of national history peddled by such as the Trumpists, the Front National, and the Brexit Party and their allies..&lt;/p>
&lt;p>In Andress&amp;rsquo;s own words: &lt;strong>&amp;ldquo;The demands of contemporary &amp;lsquo;populist&amp;rsquo; movements make manifest a vision of the past that is the opposite of a coherent history.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>The tone is set by an early quotation from Harold Wilson&amp;rsquo;s &lt;a href="http://nottspolitics.org/wp-content/uploads/2013/06/Labours-Plan-for-science.pdf" target="_blank" rel="noopener">1963 &amp;ldquo;White Heat&amp;rdquo; speech&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>There is no more dangerous illusion than the comfortable doctrine that the world owes us a living. [&amp;hellip;] From now on Britain will have just as much influence in the world as we can earn, as we can deserve. We have no accumulated reserves on which to live.&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>current follies (ch2) - racist links, the creaiton of the other, nationalism from a base of racial entitlement&lt;/li>
&lt;li>ch3 shadows of greatness - legacy of empire&lt;/li>
&lt;li>ch4 toxic legacies rewriting history of empire&lt;/li>
&lt;li>ch5 divided societies and the left-behind&lt;/li>
&lt;li>ch6 the interpretation of history to suit political ends&lt;/li>
&lt;/ul>
&lt;p>As a final summary I quote the author&amp;rsquo;s conclusion:&lt;/p>
&lt;blockquote>
&lt;p>The West’s current relationship to the past is not the passive victimhood of an individual dementia sufferer, but rather an actively constructed, jealously guarded toxic refusal to engage with facts that are well-known but emotionally and politically inconvenient, and with other experiences that are devastating to the collective self-regard of huge segments of societies that have no visible desire to come to terms with reality.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;em>As an aside, I was ever-so-slightly surprised to be able to write a sentence that started &amp;ldquo;I have just finished reading&amp;rdquo; - normally the only time I can say that is on holiday - it&amp;rsquo;s a credit to the author (and the benefit of a long train journey) that this was a book I actually completed&amp;hellip;&lt;/em>&lt;/p>
&lt;p>&lt;em>Update 20/01/2020 - have now discovered how to pull out all the highlights I grabbed in Kindle - you can read them &lt;a href="https://www.synesthesia.co.uk/2020/01/20/cultural-dementia-notes-and-highlights/">in this later post&lt;/a>&lt;/em>&lt;/p></description></item><item><title>Cognitive benefit of hand-written notes</title><link>https://www.synesthesia.co.uk/note/2019/07/02/2019-07-02-cognitive-benefit-of-hand-written-notes/</link><pubDate>Tue, 02 Jul 2019 06:11:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2019/07/02/2019-07-02-cognitive-benefit-of-hand-written-notes/</guid><description>&lt;blockquote>
&lt;p>Across three experiments, Mueller and Oppenheimer had students take notes in a classroom setting and then tested students on their memory for factual detail, their conceptual understanding of the material, and their ability to synthesize and generalize the information.  Half of the students were instructed to take notes with a laptop, and the other half were instructed to write the notes out by hand.  As in other studies, students who used laptops took more notes.  In each study, however, those who wrote out their notes by hand had a stronger conceptual understanding and were more successful in applying and integrating the material than those who used took notes with their laptops.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;a href="https://www.scientificamerican.com/article/a-learning-secret-don-t-take-notes-with-a-laptop/" target="_blank" rel="noopener">A Learning Secret: Don&amp;rsquo;t Take Notes with a Laptop - Scientific American&lt;/a>&lt;/p></description></item><item><title>Everything You Need to Know About Twitter</title><link>https://www.synesthesia.co.uk/2019/06/19/everything-you-need-to-know-about-twitter/</link><pubDate>Wed, 19 Jun 2019 16:28:11 +0100</pubDate><guid>https://www.synesthesia.co.uk/2019/06/19/everything-you-need-to-know-about-twitter/</guid><description>&lt;p>Everything you need to know about Twitter in one Tweet:&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">Somebody tweeted something that could be interpreted in a range of ways. &lt;br>Some people took offence.&lt;br>Some people then took offence that someone had taken offence.&lt;br>Some then snarkilly tweeted other stuff.&lt;br>Semantic games and nonsense ahoy&lt;br>&lt;br>It’s not a good look on any side.&lt;/p>&amp;mdash; Simon Smith (@smithsmm) &lt;a href="https://twitter.com/smithsmm/status/1139998942077366272?ref_src=twsrc%5Etfw">June 15, 2019&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>
&lt;p>via &lt;a href="https://mobile.twitter.com/smithsmm" target="_blank" rel="noopener">@smithsmm&lt;/a>&lt;/p></description></item><item><title>Deploying a Hugo project to both Netlify and Github Pages</title><link>https://www.synesthesia.co.uk/note/2019/06/13/hugo-netlify-and-github-pages/</link><pubDate>Thu, 13 Jun 2019 11:58:58 +0100</pubDate><guid>https://www.synesthesia.co.uk/note/2019/06/13/hugo-netlify-and-github-pages/</guid><description>&lt;p>Configuring a Hugo project so it can deploy to both Netlify and GitHub Pages&lt;/p>
&lt;!-- more -->
&lt;p>As the &lt;a href="https://gohugo.io/hosting-and-deployment/hosting-on-github/#github-user-or-organization-pages" target="_blank" rel="noopener">Hugo documentation explains&lt;/a> it&amp;rsquo;s incredibly easy to deploy a Hugo-based site to &lt;a href="https://pages.github.com/" target="_blank" rel="noopener">GitHub Pages&lt;/a>.&lt;/p>
&lt;p>The essence of their approach is to create a git submodule in the &lt;code>/public&lt;/code> directory that is linked to the relevant publish repository &lt;code>NAME.github.io&lt;/code>.&lt;/p>
&lt;p>They even give an example shell script:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> -e &lt;span class="s2">&amp;#34;\033[0;32mDeploying updates to GitHub...\033[0m&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Build the project.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">hugo &lt;span class="c1"># if using a theme, replace with `hugo -t &amp;lt;YOURTHEME&amp;gt;`&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Go To Public folder&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> public
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Add changes to git.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git add .
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Commit changes.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">msg&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;rebuilding site `date`&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="o">[&lt;/span> &lt;span class="nv">$#&lt;/span> -eq &lt;span class="m">1&lt;/span> &lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">then&lt;/span> &lt;span class="nv">msg&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$1&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git commit -m &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$msg&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Push source and build repos.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git push origin master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Come Back up to the Project Root&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> ..
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This works perfectly if you only want to publish to GitHub, but for this site I publish to two locations:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://app.netlify.com/" target="_blank" rel="noopener">Netlify&lt;/a> for the &lt;a href="https://www.synesthesia.co.uk" target="_blank" rel="noopener">main site&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://synesthesia.gitgub.io" target="_blank" rel="noopener">GitHub Pages&lt;/a> as secondary backup of my published site&lt;/li>
&lt;/ul>
&lt;p>If you add the published GitHub Pages repo as a submodule in the site source (as suggested in the Hugo docs) then the Netlify build falls over with permission errors.&lt;/p>
&lt;p>Even if you give Netlify access to the second repository it still fails, but as can be seen from &lt;a href="https://github.com/settings/installations" target="_blank" rel="noopener">Github Applicaiton settings&lt;/a>, Netlify only secures read access to code:
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Netlify Github Permissions" srcset="
/note/2019/06/13/hugo-netlify-and-github-pages/netlify-github-permissions_hub322801d3a8db3493e79e902a650dff8_20634_ac82d794ae6d90d79d2baa00b055f869.webp 400w,
/note/2019/06/13/hugo-netlify-and-github-pages/netlify-github-permissions_hub322801d3a8db3493e79e902a650dff8_20634_80936ab7ff24535dead7046395c5e442.webp 760w,
/note/2019/06/13/hugo-netlify-and-github-pages/netlify-github-permissions_hub322801d3a8db3493e79e902a650dff8_20634_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/note/2019/06/13/hugo-netlify-and-github-pages/netlify-github-permissions_hub322801d3a8db3493e79e902a650dff8_20634_ac82d794ae6d90d79d2baa00b055f869.webp"
width="620"
height="356"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>I found a way to make this work, by &lt;strong>not&lt;/strong> adding a submodule for the GitHub pages repo:&lt;/p>
&lt;p>First, make sure &lt;code>/content&lt;/code> is ignored:&lt;/p>
&lt;script src="https://gist.github.com/synesthesia/839078d6c4519fb3d48ad4d59584f3e2.js?file=.gitignore">&lt;/script>
&lt;p>Secondly add the following script at the root of your Hugo project:&lt;/p>
&lt;script src="https://gist.github.com/synesthesia/839078d6c4519fb3d48ad4d59584f3e2.js?file=deploy-github.sh">&lt;/script>
&lt;p>Now you can run &lt;code>./deploy-github.sh&lt;/code> to build the site and push to GitHub pages&amp;hellip;&lt;/p></description></item><item><title>Update on Content Rework</title><link>https://www.synesthesia.co.uk/2019/06/12/update-on-content-rework/</link><pubDate>Wed, 12 Jun 2019 13:05:43 +0100</pubDate><guid>https://www.synesthesia.co.uk/2019/06/12/update-on-content-rework/</guid><description>&lt;p>As I am doing a fair bit of content pruning and editing as part of the transfer from &lt;a href="https://www.synesthesia.co.uk/project/wp-to-hugo/">WordPress to Hugo&lt;/a> I&amp;rsquo;ll keep this post updated with what has changed:&lt;/p>
&lt;ul>
&lt;li>tagging done back to 2014, plus a few earlier posts&lt;/li>
&lt;li>have deleted all the auto-generated linklog posts which came from del.icio.us&lt;/li>
&lt;li>have added a link to &lt;a href="https://www.diigo.com/profile/synesthesia" target="_blank" rel="noopener">my public shared bookmarks on Diigo&lt;/a> to my about page&lt;/li>
&lt;/ul></description></item><item><title>Hugo hosting and deployment</title><link>https://www.synesthesia.co.uk/2019/06/12/moving-wp-to-hugo-05/</link><pubDate>Wed, 12 Jun 2019 08:30:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/2019/06/12/moving-wp-to-hugo-05/</guid><description>&lt;p>Part 5 of &lt;a href="https://www.synesthesia.co.uk/project/wp-to-hugo/">Moving from WordPress to Hugo&lt;/a>&lt;/p>
&lt;p>Probably the easiest place to start hosting Hugo for free is &lt;a href="https://www.netlify.com/" target="_blank" rel="noopener">Netlify&lt;/a>&lt;/p>
&lt;p>Deployment is simply:&lt;/p>
&lt;ul>
&lt;li>create account on Netlify&lt;/li>
&lt;li>connect Github repo for the site definition&lt;/li>
&lt;li>press deploy&lt;/li>
&lt;/ul>
&lt;p>In part it is this easy because the Academic Kickstarter comes pre-configured with a &lt;code>netlify.toml&lt;/code> file in the project root that contains the necessary configuration for Netlify. Once Netlify has read the repository the configuraiton values are read from this file&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-TOML" data-lang="TOML">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">build&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">command&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;hugo --gc --minify -b $URL&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">publish&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;public&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">build&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">environment&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">HUGO_VERSION&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;0.55.6&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">HUGO_ENABLEGITINFO&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;true&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">context&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">production&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">environment&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">HUGO_ENV&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;production&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">context&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">deploy-preview&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">command&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">context&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">branch-deploy&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">command&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;hugo --gc --minify -b $DEPLOY_PRIME_URL&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Once I was happy the site was building and deploying I set the domain in Netlify to my proper domain, then edited the DNS settings on my DNS host to point to the new site.&lt;/p>
&lt;p>After the usual wait for DNS to propagate, the site went live&amp;hellip;&lt;/p></description></item><item><title>Cleaning up content for Hugo version of site</title><link>https://www.synesthesia.co.uk/2019/06/12/moving-wp-to-hugo-04/</link><pubDate>Wed, 12 Jun 2019 08:20:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/2019/06/12/moving-wp-to-hugo-04/</guid><description>&lt;p>Part 4 of &lt;a href="https://www.synesthesia.co.uk/project/wp-to-hugo/">Moving from WordPress to Hugo&lt;/a>&lt;/p>
&lt;h2 id="adding-the-unmodified-content-to-hugo-site">Adding the unmodified content to Hugo site&lt;/h2>
&lt;p>Adopting the export process documented in &lt;a href="https://www.synesthesia.co.uk/2019/06/12/moving-wp-to-hugo-03/">part 3&lt;/a> yielded an exported data structure with all of the exported posts (of all types) in one folder.&lt;/p>
&lt;p>I copied the contents of this folder into &lt;code>/content/post&lt;/code> folder and ran &lt;code>hugo server -D&lt;/code>.&lt;/p>
&lt;p>There were a few (&amp;lt;1%) errors due to malformed YAML in front matter where the posts had been imported to WrodPress from an external RSS feed, but after correcting those the site built correctly (but with wrong metadata on posts).&lt;/p>
&lt;h2 id="examining-the-exported-wordpress-data">Examining the exported WordPress data&lt;/h2>
&lt;p>The front matter in the exported content varied depending on data type:&lt;/p>
&lt;p>&lt;strong>Posts&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Only Humans&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">author&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Julian&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">post&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">date&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="ld">2017-02-13T12:28:57&lt;/span>&lt;span class="m">+00&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="m">00&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/2017/02/13/only-humans/&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Notes (custom type &lt;em>syn_worknote&lt;/em>)&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Interesting uses of Linux “find” command&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">author&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Julian&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">syn_worknote&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">date&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="ld">2019-05-31T08:36:37&lt;/span>&lt;span class="m">+00&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="m">00&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/worknotes/interesting-uses-of-linux-find-command/&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="goals-of-content-cleanup">Goals of content cleanup&lt;/h2>
&lt;ul>
&lt;li>reinstate the split between normal posts and working notes &lt;br/>
(because I use them for different things)
&lt;ul>
&lt;li>change the type of working notes to &lt;code>note&lt;/code>&lt;/li>
&lt;li>selectively move the notes to the correct Hugo folder &lt;code>/content/post/&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>change the author tag to match the &lt;a href="https://sourcethemes.com/academic/docs/managing-content/#introduction" target="_blank" rel="noopener">Academic theme&lt;/a> and the author I had set up on the new site&lt;/li>
&lt;li>change the hard-coded urls to aliases (so I can put a new url scheme on this site but still serve requests to the old URLS )&lt;/li>
&lt;li>extract the last part of the hard-coded url into post slug to give me more flexibility in devising the url scheme for this site&lt;/li>
&lt;/ul>
&lt;h3 id="tools">Tools&lt;/h3>
&lt;p>Although I work on a Windows machine locally, I did this work using the Git bash shell to give me access to unix text and file manipulation.&lt;/p>
&lt;p>All commands run from inside the &lt;code>/content&lt;/code> directory unless otherwise noted.&lt;/p>
&lt;h3 id="reinstate-the-split-between-normal-posts-and-working-notes">Reinstate the split between normal posts and working notes&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">find . -name &lt;span class="s2">&amp;#34;*.md&amp;#34;&lt;/span> -exec sed -i &lt;span class="s1">&amp;#39;s|syn_worknote|note|g&amp;#39;&lt;/span> &lt;span class="o">{}&lt;/span> &lt;span class="se">\;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">grep -iRl &lt;span class="s2">&amp;#34;type: note&amp;#34;&lt;/span> ./post &lt;span class="p">|&lt;/span> &lt;span class="k">while&lt;/span> &lt;span class="nb">read&lt;/span> f&lt;span class="p">;&lt;/span> &lt;span class="k">do&lt;/span> mv &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> note&lt;span class="p">;&lt;/span> &lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="change-author-tags">Change author tags&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">find . -name &lt;span class="s2">&amp;#34;*.md&amp;#34;&lt;/span> -exec sed -i &lt;span class="s1">&amp;#39;s|author: Julian|authors: [\&amp;#34;synesthesia\&amp;#34;]|g&amp;#39;&lt;/span> &lt;span class="o">{}&lt;/span> &lt;span class="se">\;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="remove-url-tag-create-slug-and-aliases">Remove url tag, create slug and aliases&lt;/h3>
&lt;p>&lt;strong>Posts&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">find ./post -type f -exec sed -i -E -e &lt;span class="s2">&amp;#34;s/url: \/([[:digit:]]*\/[[:digit:]]*\/[[:digit:]]*\/)([a-zA-Z0-9\-]*)/slug: \2 \naliases: [\&amp;#34;\/\1\2\&amp;#34;]&amp;#34;&lt;/span> &lt;span class="o">{}&lt;/span> &lt;span class="se">\;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">find ./post -type f -exec sed -i -E -e &lt;span class="s2">&amp;#34;s/]\//]&amp;#34;&lt;/span> &lt;span class="o">{}&lt;/span> &lt;span class="se">\;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Notes&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">find ./note -type f -exec sed -i -E -e &lt;span class="s2">&amp;#34;s/url: (\/worknotes\/)([a-zA-Z0-9\-]*)/slug: \2 \naliases: [\&amp;#34;\1\2\&amp;#34;]/&amp;#34;&lt;/span> &lt;span class="o">{}&lt;/span> &lt;span class="se">\;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">find ./note -type f -exec sed -i -E -e &lt;span class="s2">&amp;#34;s/]\//]/&amp;#34;&lt;/span> &lt;span class="o">{}&lt;/span> &lt;span class="se">\;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="example-metadata-after-changes">Example metadata after changes&lt;/h3>
&lt;p>&lt;strong>Posts&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Only Humans&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">authors&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;synesthesia&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">post&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">date&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="ld">2017-02-13T12:28:57&lt;/span>&lt;span class="m">+00&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="m">00&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">slug&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">only-humans &lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">aliases&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;/2017/02/13/only-humans&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Notes&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Interesting uses of Linux &amp;#34;find&amp;#34; command&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">authors&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;synesthesia&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">note&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">date&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="ld">2019-05-31T08:36:37&lt;/span>&lt;span class="m">+00&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="m">00&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">slug&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">interesting-uses-of-linux-find-command &lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">aliases&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;/worknotes/interesting-uses-of-linux-find-command&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="setup-new-permalink-structure">Setup new permalink structure&lt;/h2>
&lt;p>To create the desired permalink structure, edit &lt;code>/config/_default/config.toml&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-TOML" data-lang="TOML">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">permalinks&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">post&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;/:year/:month/:day/:slug/&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">note&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;/note/:year/:month/:day/:slug/&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Exporting content from WordPress for Hugo</title><link>https://www.synesthesia.co.uk/2019/06/12/moving-wp-to-hugo-03/</link><pubDate>Wed, 12 Jun 2019 08:10:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/2019/06/12/moving-wp-to-hugo-03/</guid><description>&lt;p>Part 3 of &lt;a href="https://www.synesthesia.co.uk/project/wp-to-hugo/">Moving from WordPress to Hugo&lt;/a>&lt;/p>
&lt;p>The starting point is &lt;a href="https://cyrillschumacher.com/" target="_blank" rel="noopener">Cyrill Schumacher&lt;/a>&amp;rsquo;s &lt;a href="https://github.com/SchumacherFM/wordpress-to-hugo-exporter" target="_blank" rel="noopener">WordPress to Hugo exporter&lt;/a>.&lt;/p>
&lt;p>This WordPress plugin isn&amp;rsquo;t in the WordPress plugin gallery, so needs to be installed directly to your WordPress site either via FTP or by SSH and a git clone.&lt;/p>
&lt;p>There are clear &lt;a href="https://github.com/SchumacherFM/wordpress-to-hugo-exporter/blob/master/README.md" target="_blank" rel="noopener">usage instructions&lt;/a> in the README, it&amp;rsquo;s worth noting that the time to run is very dependent on how much content you have in your site, and how much processor capacity you have. I found when running it via the web browser that I got a couple of 504 timeout errors until it finally worked and downloaded a zip file of the exported content. If you have SSH access to your web server there is also a CLI option to avoid running through the web request pipeline.&lt;/p>
&lt;p>I have previously customised my WordPress site with a couple of &lt;a href="https://developer.wordpress.org/reference/functions/register_post_type/" target="_blank" rel="noopener">custom post types&lt;/a>. Obviously Cyrill&amp;rsquo;s code doesn&amp;rsquo;t know about those, so they were missing from the first download.&lt;/p>
&lt;p>The code is fairly straightforward, and it&amp;rsquo;s possible to add custom post types to the export by &lt;a href="https://github.com/synesthesia/wordpress-to-hugo-exporter/commit/5156e968022d4cfd5537a240e7e8ee1f0a6a5cd6?diff=unified" target="_blank" rel="noopener">modifying one line&lt;/a>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-patch" data-lang="patch">&lt;span class="line">&lt;span class="cl">&lt;span class="gs">---
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gs">&lt;/span> hugo-export.php | 2 +-
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 1 file changed, 1 insertion(+), 1 deletion(-)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gh">diff --git a/hugo-export.php b/hugo-export.php
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gh">index 1e008e0..36bdd03 100644
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gh">&lt;/span>&lt;span class="gd">--- a/hugo-export.php
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gd">&lt;/span>&lt;span class="gi">+++ b/hugo-export.php
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gi">&lt;/span>&lt;span class="gu">@@ -99,7 +99,7 @@ function get_posts()
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gu">&lt;/span> {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> global $wpdb;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gd">- return $wpdb-&amp;gt;get_col(&amp;#34;SELECT ID FROM $wpdb-&amp;gt;posts WHERE post_status in (&amp;#39;publish&amp;#39;, &amp;#39;draft&amp;#39;, &amp;#39;private&amp;#39;) AND post_type IN (&amp;#39;post&amp;#39;, &amp;#39;page&amp;#39; )&amp;#34;);
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gd">&lt;/span>&lt;span class="gi">+ return $wpdb-&amp;gt;get_col(&amp;#34;SELECT ID FROM $wpdb-&amp;gt;posts WHERE post_status in (&amp;#39;publish&amp;#39;, &amp;#39;draft&amp;#39;, &amp;#39;private&amp;#39;) AND post_type IN (&amp;#39;post&amp;#39;, &amp;#39;page&amp;#39;, &amp;#39;syn_worknote&amp;#39;, &amp;#39;syn_linklog&amp;#39; )&amp;#34;);
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gi">&lt;/span> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> /**
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Uploading this edited version of the plugin and repeating the export process yielded a zip file with the missing content now added.&lt;/p></description></item><item><title>Setting up Hugo locally and choosing a theme</title><link>https://www.synesthesia.co.uk/2019/06/12/moving-wp-to-hugo-02/</link><pubDate>Wed, 12 Jun 2019 08:00:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/2019/06/12/moving-wp-to-hugo-02/</guid><description>&lt;p>Part 2 of &lt;a href="https://www.synesthesia.co.uk/project/wp-to-hugo/">Moving from WordPress to Hugo&lt;/a>&lt;/p>
&lt;h2 id="setting-up-hugo">Setting up Hugo&lt;/h2>
&lt;p>Very little to add to the &lt;a href="https://gohugo.io/getting-started/installing/" target="_blank" rel="noopener">official instructions&lt;/a>&lt;/p>
&lt;p>I use a Windows laptop, so at first I tried the &lt;a href="https://gohugo.io/getting-started/installing/#chocolatey-windows" target="_blank" rel="noopener">Chocolatey installation&lt;/a>, however this only installs standard Hugo. The &lt;a href="#choosing-a-theme">theme I chose&lt;/a> requires the extended version of Hugo, so I uninstalled the Chocolatey build and re-installed as a &lt;a href="https://github.com/gohugoio/hugo/releases" target="_blank" rel="noopener">direct download&lt;/a>.&lt;/p>
&lt;p>Add the install directory to the path environment variable, reboot, and you&amp;rsquo;re ready to go.&lt;/p>
&lt;h2 id="choosing-a-theme">Choosing a theme&lt;/h2>
&lt;p>A quick browse around the Hugo &lt;a href="https://gohugo.io/templates/" target="_blank" rel="noopener">templates&lt;/a> and &lt;a href="https://gohugo.io/themes/creating/" target="_blank" rel="noopener">theme creation&lt;/a> documentation convinced me that if I started trying to write a theme from scratch it would extend this project significantly.&lt;/p>
&lt;p>Luckily there&amp;rsquo;s a &lt;a href="https://themes.gohugo.io/" target="_blank" rel="noopener">large choice of community themes&lt;/a> already available for Hugo. After bit of clicking around, and trying a couple locally, I decided to go for the &lt;a href="https://sourcethemes.com/academic/" target="_blank" rel="noopener">Academic&lt;/a> theme from &lt;a href="https://georgecushen.com/" target="_blank" rel="noopener">George Cushen&lt;/a> because it seemed to be both full-featured yet very flexible.&lt;/p>
&lt;p>Again, there are &lt;a href="https://sourcethemes.com/academic/docs/install/" target="_blank" rel="noopener">excellent installation instructions&lt;/a> for the theme and the provided &lt;a href="https://github.com/sourcethemes/academic-kickstart" target="_blank" rel="noopener">kickstart&lt;/a> site so I won&amp;rsquo;t document the detail here.&lt;/p>
&lt;p>The initial configuration tasks were &lt;a href="https://sourcethemes.com/academic/docs/get-started/#customize-it" target="_blank" rel="noopener">based on the instructions&lt;/a>:&lt;/p>
&lt;ol>
&lt;li>Edit the files in &lt;code>/config&lt;/code>&lt;/li>
&lt;li>Edit the &lt;code>/content/home/about.md&lt;/code> page&lt;/li>
&lt;li>Edit the &lt;code>/content/authors&lt;/code> settings&lt;/li>
&lt;li>Create some test content&lt;/li>
&lt;li>Copy the contents of &lt;code>/themes/academic/archetypes&lt;/code> to &lt;code>/archetypes&lt;/code> &lt;br />
(didn&amp;rsquo;t see this one in the instructions but without it the archetypes don&amp;rsquo;t get picked up on &lt;code>hugo new -kind post post/mypost&lt;/code>)&lt;/li>
&lt;/ol>
&lt;p>Then&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">hugo server -D
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>and check the site at http://localhost:1313&lt;/p></description></item><item><title>Why Hugo?</title><link>https://www.synesthesia.co.uk/2019/06/11/moving-wp-to-hugo-01/</link><pubDate>Tue, 11 Jun 2019 12:00:00 +0100</pubDate><guid>https://www.synesthesia.co.uk/2019/06/11/moving-wp-to-hugo-01/</guid><description>&lt;p>Part 1 of &lt;a href="https://www.synesthesia.co.uk/project/wp-to-hugo/">Moving from WordPress to Hugo&lt;/a>&lt;/p>
&lt;p>I&amp;rsquo;ve been lucky with my WordPress installations - only a couple of malware infections in 15+ years. But the last one was extremely painful to fix - after I had re-installed every file in the deployment I finally found that the attack had manged to rewrite every post in the database with a link to an adware injector script.&lt;/p>
&lt;p>Half a day of personal time to rebuild a site that I don&amp;rsquo;t want to close, but which hasn&amp;rsquo;t had a lot of use in the last couple of years, is just too much: the time had come!&lt;/p>
&lt;p>This is not a novel idea - quite a few people have blogged &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> about moving off WordPress to static generators, especially Hugo.&lt;/p>
&lt;p>For me the key benefits are:&lt;/p>
&lt;ul>
&lt;li>much less vulnerable to malware&lt;/li>
&lt;li>lower hosting costs for a faster site&lt;/li>
&lt;li>simple text-editor creation of content&lt;/li>
&lt;li>content in Git (the code always has been)&lt;/li>
&lt;li>easy to keep multiple copies of content to avoid vendor lock-in&lt;/li>
&lt;li>Hugo is fast to generate the site, and very simple (single executable)&lt;/li>
&lt;li>free high-performance hosting from &lt;a href="https://www.netlify.com/" target="_blank" rel="noopener">Netlify&lt;/a>, &lt;a href="https://pages.github.com/" target="_blank" rel="noopener">GitHubPages&lt;/a> and probably others&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>These are some of the sources I found researching this:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.smashingmagazine.com/2019/05/switch-wordpress-hugo/" target="_blank" rel="noopener">Switching from WordPress to Hugo - Smashing Magazine&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://julienrenaux.fr/2019/02/14/from-wordpress-to-hugo/" target="_blank" rel="noopener">I finally migrated my blog from WordPress to Hugo&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://gomakethings.com/migrating-from-wordpress-to-hugo/" target="_blank" rel="noopener">Migrating from WordPress to Hugo - GoMakeThings&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://regisphilibert.com/blog/2019/01/from-wordpress-to-hugo-a-mindset-transition/" target="_blank" rel="noopener">Moving from Wordpress to Hugo - Régis Philibert&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://phauer.com/2017/moving-wordpress-hugo/" target="_blank" rel="noopener">Moving from Wordpress to Hugo - Philipp Hauer&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hackernoon.com/wordpress-to-static-site-generator-hugo-migration-and-deployment-788a69b93e66" target="_blank" rel="noopener">WordPress to Static Site Generator (Hugo) Migration and Deployment - HackerNoon&lt;/a>&lt;/li>
&lt;/ul>
&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>From WordPress to Hugo</title><link>https://www.synesthesia.co.uk/project/wp-to-hugo/</link><pubDate>Sun, 09 Jun 2019 16:18:50 +0100</pubDate><guid>https://www.synesthesia.co.uk/project/wp-to-hugo/</guid><description>&lt;p>That was it.&lt;/p>
&lt;p>Yet another WordPress malware attack on my personal site that managed to place an adware script in every single post.&lt;/p>
&lt;p>Took half a day to cleanup.&lt;/p>
&lt;p>Time to take seriously the idea of a static site generator.&lt;/p>
&lt;p>Details in the posts linked below&amp;hellip;&lt;/p></description></item><item><title>Removing malicious content from WordPress posts</title><link>https://www.synesthesia.co.uk/note/2019/06/07/removing-malicious-content-from-wordpress-posts/</link><pubDate>Fri, 07 Jun 2019 10:43:49 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2019/06/07/removing-malicious-content-from-wordpress-posts/</guid><description>&lt;p>Sometimes malware will corrupt the database, inserting malicious script tags.&lt;/p>
&lt;p>Here’s the quick removal approach if you have access to your database directly:&lt;/p>
&lt;p>&lt;code>&amp;lt;br /&amp;gt; UPDATE wp_posts SET post_content = REPLACE ( post_content, 'BAD SCRIPT TAG', '' );&amp;lt;br /&amp;gt; &lt;/code>&lt;/p></description></item><item><title>Interesting uses of Linux “find” command</title><link>https://www.synesthesia.co.uk/note/2019/05/31/interesting-uses-of-linux-find-command/</link><pubDate>Fri, 31 May 2019 08:36:37 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2019/05/31/interesting-uses-of-linux-find-command/</guid><description>&lt;p>Find all files for given user and change ownership&lt;/p>
&lt;p>&lt;code>sudo find . -user OLDUSER -exec chown NEWUSER:NEWGROUP “{}” \;&lt;/code>&lt;/p>
&lt;p>Find all files with given permissions&lt;/p>
&lt;p>&lt;code>find -perm mode&lt;/code>&lt;/p></description></item><item><title>Extended SSO for Discourse with IdentityServer3</title><link>https://www.synesthesia.co.uk/2018/10/02/extended-sso-for-discourse-with-identityserver3/</link><pubDate>Tue, 02 Oct 2018 18:30:40 +0000</pubDate><guid>https://www.synesthesia.co.uk/2018/10/02/extended-sso-for-discourse-with-identityserver3/</guid><description>&lt;p>&lt;strong>Background&lt;/strong>&lt;/p>
&lt;p>In our business we operate a number of customer-facing web services which use an &lt;a href="https://identityserver.github.io/Documentation/" rel="noopener" target="_blank">IdentityServer3 identity provider&lt;/a> as the single source of identity. We have customised our setup to allow two sources of federated identity, and to pull certain claims from our CRM.&lt;/p>
&lt;p>We have a new requirement to integrate a hosted instance of the excellent &lt;a href="https://www.discourse.org/" rel="noopener" target="_blank">Discourse&lt;/a> discussion forum, also using the same single source of identity.&lt;/p>
&lt;p>Discourse does not support OpenId Connect, rather its &lt;a href="https://meta.discourse.org/t/official-single-sign-on-for-discourse-sso/13045" rel="noopener" target="_blank">own particular form of SSO&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Using IdentityServer3 as SSO source for Discourse&lt;/strong>&lt;/p>
&lt;p>John Korsnes wrote the core of this approach, documented in his &lt;a href="https://blogg.blank.no/enabling-sso-for-discourse-with-identityserver3-7da2aca64bab" rel="noopener" target="_blank">Medium article&lt;/a> and &lt;a href="https://github.com/blankoslo/idsrv.discourse" rel="noopener" target="_blank">on Github&lt;/a>. In his article he gives a good overview of how the Discourse SSO works, and explains his approach:&lt;/p>
&lt;ul>
&lt;li>a custom endpoint on the IdentityServer, running in the same Owin context as the main IdP&lt;/li>
&lt;li>configure Discourse to redirect a login to the custom endpoint&lt;/li>
&lt;li>in the custom endpoint check if the user has a current authenticated session with IdentityServer&lt;/li>
&lt;li>if they have, generate a Discourse SSO payload from the user properties, and return to Discourse&lt;/li>
&lt;li>if they haven’t, display a simple login form, and once they have authenticated, generate and return the Discourse SSO payload as before&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Our modifications&lt;/strong>&lt;/p>
&lt;p>From our perspective the only drawback of John’s approach was that it only allowed for user authentication against the local IdentityServer accounts (username / password). Although that covers most of our customer accounts, we have extended our IdP with federated identity against our own company Office365 (Azure AD), and against Google, as some of our customers use Google Apps corporately.&lt;/p>
&lt;p>To extend John’s approach we modified it so that instead of displaying a local login form we:&lt;/p>
&lt;ul>
&lt;li>register an application in our IdentityServer as a proxy for Discourse&lt;/li>
&lt;li>carry out an (almost) standard Authorization Code authentication process from our custom controller against the Identity Server&lt;/li>
&lt;li>the only difference is that because we are running inside the IdentityServer web pipeline we don’t need to redeem the authorization code against the token endpoint, but can ignore any generated tokens and query the OWIN Context in the same way John does.&lt;/li>
&lt;/ul>
&lt;p>Our version is shown below&lt;/p>
&lt;script src="https://gist.github.com/synesthesia/5b32cc3f43d414a2a41030571c36381e.js?file=DiscourseController.cs">&lt;/script></description></item><item><title>Dynamics 365 User Group Reading 14/11/2017</title><link>https://www.synesthesia.co.uk/2017/11/17/d365ug/</link><pubDate>Fri, 17 Nov 2017 10:28:49 +0000</pubDate><guid>https://www.synesthesia.co.uk/2017/11/17/d365ug/</guid><description>&lt;p>This week I made my first visit as a new member to the &lt;a href="https://www.crmug.com/home" rel="noopener" target="_blank">Dynamics 365 User Group&lt;/a> UK chapter meeting.&lt;/p>
&lt;p>I’d been invited to speak about our experiences in using Dynamics 365 and Thunderhead ONE together – my slides embedded below.&lt;/p>
&lt;p>Overall I found the day valuable and enjoyable, especially the review of new features in Dynamics Version 9 from &lt;a href="https://crm.fueledbysleep.com/" rel="noopener" target="_blank">Sarah Critchley&lt;/a>, and &lt;a href="https://blogs.it.ox.ac.uk/benwalker/" rel="noopener" target="_blank">Ben Walker&lt;/a> detailing his experience with setting up a CI/CD environment for Dynamics.&lt;/p>
&lt;p>Secondly as someone speaking at a CRMUG event for the first time I found the atmosphere welcoming and the facilities excellent.&lt;/p>
&lt;p>Other highlight – finally meeting &lt;a href="https://www.develop1.net/public/" rel="noopener" target="_blank">Scott Durow&lt;/a>, the man whose blogs have saved us hours of work with the more arcane aspects of Dynamics!&lt;/p>
&lt;p>&lt;ins datetime="2020-11-18T08:150:57+00:00">Update - moved slides to speakerstack.net&lt;/ins>&lt;/p>
&lt;div class="speaker-stack-responsive-embed" style="position:relative;display:block;width:100%;padding:0;padding-bottom:56.25%;">
&lt;iframe src="https://beta.speakerstack.net/presentation/understanding-our-customers-thunderhead-and-dynamics/" webkitallowfullscreen mozallowfullscreen allowfullscreen style="position:absolute;top:0;left:0;width:100%;height:100%;border:none;">
&lt;/iframe>
&lt;/div></description></item><item><title>Only Humans</title><link>https://www.synesthesia.co.uk/2017/02/13/only-humans/</link><pubDate>Mon, 13 Feb 2017 12:28:57 +0000</pubDate><guid>https://www.synesthesia.co.uk/2017/02/13/only-humans/</guid><description>&lt;p>&lt;a href="https://jarche.com/" target="_blank" rel="noopener">Harold Jarche&lt;/a> has posted a brief &lt;a href="https://jarche.com/2017/02/only-humans-need-apply-review/" target="_blank" rel="noopener">review&lt;/a> of “&lt;a href="https://amzn.to/2lGcjk8" target="_blank" rel="noopener">Only Humans Need Apply&lt;/a>” by  Thomas H Davenport &lt;a href="https://www.amazon.co.uk/Only-Humans-Need-Apply-Machines/dp/0062438611/ref=as_li_ss_il?_encoding=UTF8&amp;ie=UTF8&amp;message=&amp;ref_=nav_custrec_signin&amp;riskType=expiredCard&amp;successUpdatingPreference=1&amp;updatePaymentsPortalPreferenceSuccess=true&amp;linkCode=li2&amp;tag=synesthesia-21&amp;linkId=a0ae4d6f6b9e1660e10428c2426557e5" target="_blank">&lt;img class="alignleft" src="//ws-eu.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;ASIN=0062438611&amp;Format=_SL160_&amp;ID=AsinImage&amp;MarketPlace=GB&amp;ServiceVersion=20070822&amp;WS=1&amp;tag=synesthesia-21" border="0" />&lt;/a>&lt;img style="border: none !important; margin: 5px 5px 5px 0px !important;" src="https://ir-uk.amazon-adsystem.com/e/ir?t=fivegocrazyinmid&amp;l=li2&amp;o=2&amp;a=0062438611" alt="" width="1" height="1" border="0" />.&lt;/p>
&lt;p>In his review Harold has added the main attributes that he sees as being needed to meet the book’s criteria for human adaptation to a world of automation:&lt;/p>
&lt;blockquote cite="https://jarche.com/2017/02/only-humans-need-apply-review/">
&lt;ul>
&lt;li>
Step-up: directing the machine-augmented world (&lt;strong>creativity&lt;/strong>)
&lt;/li>
&lt;li>
Step-in: using machines to augment work (&lt;strong>deep thinking&lt;/strong>)
&lt;/li>
&lt;li>
Step-aside: doing human work that machines are not suited for (&lt;strong>empathy&lt;/strong>)
&lt;/li>
&lt;li>
Step narrowly: specializing narrowly in a field too small for augmentation (&lt;strong>passion&lt;/strong>)
&lt;/li>
&lt;li>
Step forward: developing new augmentation systems (&lt;strong>curiosity&lt;/strong>)
&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>I challenge any UK-based educator or politician to identify where we are systematatically encouraging those attributes in our young people.&lt;/p>
&lt;p> &lt;/p></description></item><item><title>Week Note: w/e 10/02/2017</title><link>https://www.synesthesia.co.uk/note/2017/02/10/weeknote-20170210/</link><pubDate>Fri, 10 Feb 2017 18:00:57 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2017/02/10/weeknote-20170210/</guid><description>&lt;ul>
&lt;li>fortnightly business review&lt;/li>
&lt;li>reviewing linked sources to &lt;a href="https://www.elsua.net/2016/12/07/stop-blaming-the-tools-when-collaboration-fails/" target="_blank" rel="noopener">Stop blaming the tools when Collaboration fails&lt;/a>&lt;/li>
&lt;li>working with a team member on date culture issues in Azure Webjobs&lt;/li>
&lt;li>working with HR on recruitment for a senior role in my team&lt;/li>
&lt;li>improve our integration code that posts web form data to service bus for downstream integrations&lt;/li>
&lt;li>blog post “&lt;a href="https://www.synesthesia.co.uk/2017/02/07/machines-will-eat-your-job/" target="_blank" rel="noopener">The machines may eat your job, but that might not be a bad thing – are any politicians acknowledging this?&lt;/a>“&lt;/li>
&lt;li>minor development tweaks on our website&lt;/li>
&lt;li>some planning work around GDPR compliance&lt;/li>
&lt;/ul></description></item><item><title>The rise of the machines (continued)</title><link>https://www.synesthesia.co.uk/2017/02/10/the-rise-of-the-machines-continued/</link><pubDate>Fri, 10 Feb 2017 08:00:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2017/02/10/the-rise-of-the-machines-continued/</guid><description>&lt;p>Following on from &lt;a href="https://www.synesthesia.co.uk/2017/02/07/machines-will-eat-your-job/" target="_blank" rel="noopener">The machines may eat your job, but that might not be a bad thing&lt;/a>, I notice that &lt;a href="https://www.joannejacobs.com/about" target="_blank" rel="noopener">Joanne Jacobs&lt;/a>  has written &lt;a href="https://www.joannejacobs.com/archives/62221" target="_blank" rel="noopener">Who will work? Education, automation and jobs&lt;/a>  in which she references the (Obama) White House report “&lt;a href="https://obamawhitehouse.archives.gov/sites/whitehouse.gov/files/documents/Artificial-Intelligence-Automation-Economy.PDF" target="_blank" rel="noopener">Artificial Intelligence, Automation, and the Economy&lt;/a>” , which in turn was informed by the &lt;a href="https://www.oxfordmartin.ox.ac.uk/downloads/academic/future-of-employment.pdf" target="_blank" rel="noopener">Frey and Osborne paper&lt;/a> I referenced.&lt;/p>
&lt;p>Joanne goes on to highlight from that White House report that an increasing proportion of US high-school students are not “college-ready” at the end of high school.,&lt;/p>
&lt;p>She also quotes &lt;a href="https://uk.businessinsider.com/author/andrew-yang" target="_blank" rel="noopener">Andrew Yang&lt;/a>‘s call to action in Quartz “&lt;a href="https://qz.com/895681/silicon-valley-is-right-our-jobs-are-already-disappearing-due-to-automation/" target="_blank" rel="noopener">Silicon Valley is right – our jobs are already disappearing&lt;/a>” :&lt;/p>
&lt;blockquote cite="https://qz.com/895681/silicon-valley-is-right-our-jobs-are-already-disappearing-due-to-automation/">
&lt;p>
&amp;#8220;Unprecedented things are happening in real-time and starting to wreak havoc on lives and communities around the country, particularly on those least able to adapt and adjust.&amp;#8221;
&lt;/p>
&lt;/blockquote>
&lt;h3 id="how-does-that-map-to-the-uk">How does that map to the UK?&lt;/h3>
&lt;p>My own, nascent, thoughts about what we should be doing as  matter of policy to address these changes mirror those set out in the Obama administraiton report:&lt;/p>
&lt;blockquote cite="https://obamawhitehouse.archives.gov/sites/whitehouse.gov/files/documents/Artificial-Intelligence-Automation-Economy.PDF">
&lt;ul>
&lt;li>
Invest in and develop AI for its many benefits
&lt;/li>
&lt;li>
Educate and train [citizens] for jobs of the future.
&lt;/li>
&lt;li>
Aid workers in the transition and empower workers to ensure broadly shared growth
&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>How do those ideas translate to a UK perspective?&lt;/p>
&lt;p>&lt;strong>Investment in AI&lt;/strong> is critical – &lt;a href="https://www.vox.com/2015/7/27/9038829/automation-myth" target="_blank" rel="noopener">without it our society will not have the wealth&lt;/a>  to support the changes thatare needed. That suggests  a legal environment that is pro-competition and without the &lt;a href="https://www.economicshelp.org/trade/benefits_free_trade/" target="_blank" rel="noopener">negative impact of protectionism&lt;/a> (whether enacted by UKGOV or potential trading partners).&lt;/p>
&lt;p>Doesn’t sound much like the Brexit-tainted future we are currently looking at!&lt;/p>
&lt;p>Alongside investment, we need a &lt;strong>&lt;a href="https://en.wikipedia.org/wiki/Progressive_tax" target="_blank" rel="noopener">progressive&lt;/a> tax system&lt;/strong>, and a government that is committed to spending the tax take in the areas that are needed.&lt;/p>
&lt;p>&lt;strong>Investment in education&lt;/strong>, and an &lt;strong>adaptation of education to reflect the reality of a world in which many jobs are automated&lt;/strong>&lt;/p>
&lt;p>.The country appears to be disinvesting in education, certainly when considered per-capita. The &lt;a href="https://www.theguardian.com/education/2016/dec/14/ministers-have-failed-to-explain-where-schools-will-find-savings-watchdog-says" target="_blank" rel="noopener">National Audit Office&lt;/a>  has challenged ministers on the matter, and &lt;a href="https://www.theguardian.com/education/2017/jan/17/cuts-headteachers-schools-funding-crisis" target="_blank" rel="noopener">headteachers&lt;/a> from &lt;a href="https://www.bbc.co.uk/news/education-37680090" target="_blank" rel="noopener">across the country&lt;/a>  are highlighting the challenges they face.&lt;/p>
&lt;p>Even &lt;a href="https://www.bbc.co.uk/news/education-38854271" target="_blank" rel="noopener">much-trumpeted plans about addressing regional school issues as part of the “Northern Powerhouse”&lt;/a> seem doomed to be a further example of re-arranging the deckchairs unless additional funds are injected.&lt;/p>
&lt;p>In this environment it seems foolishly optimistic to talk about adapting education to the future, not least because there is no national debate I can see about the need for a changed social contract in response to the predicted changes.&lt;/p>
&lt;p>Yet the people who will be entering the workforce in 2030 are those children starting school now.&lt;/p>
&lt;p>Without a national dialogue around the social contract, how will our political debate ever begin to address the prospect of large swathes of the population structurally precluded from employment as we know it now?&lt;/p>
&lt;p>When debate around benefits is locked into old positions about deserving/undeserving, scroungers v safety net, and coercion to take any job at any price, how likely is it that we will have a reasoned discussion around profound changes such as universal basic income?&lt;/p>
&lt;p>I’d love it if someone could point me to a UK politician, of any party, who is articulating any of these issues.&lt;/p>
&lt;p>Or are we lost in a morass of protectionism and xenophobia?&lt;/p>
&lt;h3 id="update">Update&lt;/h3>
&lt;p>I see that the &lt;a href="https://www.parliament.uk/business/committees/committees-a-z/commons-select/science-and-technology-committee/publications/" target="_blank" rel="noopener">Science and Technology Select Committee&lt;/a> &lt;a href="https://www.parliament.uk/business/committees/committees-a-z/commons-select/science-and-technology-committee/news-parliament-2015/robotics-ai-report-published-16-17/" target="_blank" rel="noopener">reported in October on this topic&lt;/a>:&lt;/p>
&lt;blockquote cite="https://www.publications.parliament.uk/pa/cm201617/cmselect/cmsctech/145/14503.htm">
&lt;p>
Advances in robotics and AI also hold the potential to reshape, fundamentally, the way we live and work. Improvements in productivity and efficiency, driven by the spread of these technologies, were widely predicted, yet there is no consensus about what this will mean for the UK workforce. Some expect rising unemployment as labour is substituted for AI-enabled robots and machines. Others foresee a transformation in the type of employment available—with the creation of new jobs compensating for those that were lost—and the prospect of robotics and AI augmenting existing roles, and enabling humans to achieve more than they could on their own.
&lt;/p>
&lt;p class="ParaContinued">
Despite these differing views, there is general agreement that a much greater focus is needed on adjusting our education and training systems to deliver the skills that will enable people to adapt, and thrive, as new technology comes on stream. Government leadership in this area, however, has been lacking. It is disappointing that the Government still has not published its Digital Strategy nor set out its plans for equipping the future workforce with the digital skills it needs to flourish. The Government must commit to addressing the digital skills crisis through a Digital Strategy, published without delay.
&lt;/p>
&lt;/blockquote>
&lt;p class="ParaContinued">
One for my reading list!
&lt;/p></description></item><item><title>Account based Marketing and Dynamics CRM</title><link>https://www.synesthesia.co.uk/note/2017/02/09/account-based-marketing-and-dynamics-crm/</link><pubDate>Thu, 09 Feb 2017 09:31:52 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2017/02/09/account-based-marketing-and-dynamics-crm/</guid><description>&lt;p>Some useful notes and links &lt;a href="https://stevemordue.com/dynamics-365-pivoting-sales-for-account-based-marketing/" target="_blank" rel="noopener">here&lt;/a>  from &lt;a href="https://stevemordue.com/" target="_blank" rel="noopener">Steve Mordue&lt;/a> , CEO of ForceWorks on &lt;a href="https://en.wikipedia.org/wiki/Account-based_marketing" target="_blank" rel="noopener">Account-Based Marketing&lt;/a>, and ways to adapt the native behaviour of Dynamics 365 to support it.&lt;/p>
&lt;p>Beyond his suggestions I think the following are key in terms of building and information base about your target accounts:&lt;/p>
&lt;ul>
&lt;li>acquire as much contextual information about accounts as possible, via both automated and human sources&lt;/li>
&lt;li>whilst acquiring as much data as possible about individual customer interactions on touchpoints, put significant effort into linking those individuals to an account&lt;/li>
&lt;li>when customising the touchpoint experiecne for an individual, take into consideration their account context, including other recognised individuals&lt;/li>
&lt;/ul>
&lt;p> &lt;/p></description></item><item><title>The machines may eat your job, but that might not be a bad thing – are any politicians acknowledging this?</title><link>https://www.synesthesia.co.uk/2017/02/07/machines-will-eat-your-job/</link><pubDate>Tue, 07 Feb 2017 08:38:53 +0000</pubDate><guid>https://www.synesthesia.co.uk/2017/02/07/machines-will-eat-your-job/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>There are a growing number of indicators that the nature of employment will change radically in our lifetimes, but politicians are all ignoring this.&lt;/p>
&lt;h2 id="background">Background&lt;/h2>
&lt;p>On BBC Breakfast this morning there was a piece about robots, themed on the &lt;a href="https://beta.sciencemuseum.org.uk/robots" target="_blank" rel="noopener">forthcoming exhibiton at the Science Museum&lt;/a>,&lt;/p>
&lt;p>In the piece they interviewed  &lt;a href="https://twitter.com/maosbot" target="_blank" rel="noopener">Michael A. Osborne&lt;/a> , &lt;a href="https://www.robots.ox.ac.uk/~mosb/" target="_blank" rel="noopener">Associate Professor in Machine Learning, University of Oxford&lt;/a> in which he repeated the research estimate that robots would replace 35% of UK employment by 2030, e.g .transport, taxis, processing invoices etc.&lt;/p>
&lt;p>That in turn is highlighted in this &lt;a href="https://www.bbc.co.uk/news/technology-34066941" target="_blank" rel="noopener">2015 BBC story&lt;/a>, extrapolated from &lt;a href="https://www.oxfordmartin.ox.ac.uk/downloads/academic/future-of-employment.pdf" target="_blank" rel="noopener">this 2013 paper&lt;/a> by &lt;a href="https://www.oxfordmartin.ox.ac.uk/people/453" target="_blank" rel="noopener">Frey&lt;/a> and Osborne which examined the US jobs market and concluded that estimated 47% of total employment was at risk.&lt;/p>
&lt;p>Also this week in “&lt;a href="https://www.nytimes.com/2017/01/30/education/edlife/factory-workers-college-degree-apprenticeships.html" target="_blank" rel="noopener">Wanted: Factory Workers, Degree Required&lt;/a>” the NYT quoted Eric Spiegel, the recently-retired president and chief executive of Siemens USA:&lt;/p>
&lt;blockquote>
&lt;p>“In our factories, there’s a computer about every 20 or 30 feet. People on the plant floor need to be much more skilled than they were in the past. There are no jobs for high school graduates at Siemens today.”&lt;/p>
&lt;/blockquote>
&lt;p>Although the Frey and Osbourne paper does not put firm time horizons on their predictions, instead saying “We refer to these jobs as at risk – i.e. jobs we expect could be automated relatively soon, perhaps over the next decade or two”, some of the notable occupations with a predicted probability of replacement by machines of &amp;gt; 75% include:&lt;/p>
&lt;ul>
&lt;li>painters, construction and maintenance&lt;/li>
&lt;li>locksmiths&lt;/li>
&lt;li>electric motor and power tool repairers&lt;/li>
&lt;li>bartenders&lt;/li>
&lt;li>archivists&lt;/li>
&lt;li>barbers&lt;/li>
&lt;li>fast food cooks&lt;/li>
&lt;li>property managers and estate agents&lt;/li>
&lt;li>electronics technicians&lt;/li>
&lt;li>executive assistants&lt;/li>
&lt;li>technical writers&lt;/li>
&lt;li>pharmacy technicians&lt;/li>
&lt;li>accountants and auditors&lt;/li>
&lt;li>budget analysts&lt;/li>
&lt;li>paralegals and legal assistants&lt;/li>
&lt;li>credit authorisers&lt;/li>
&lt;li>drivers&lt;/li>
&lt;li>telemarketers&lt;/li>
&lt;/ul>
&lt;h2 id="a-counter-view">A counter view&lt;/h2>
&lt;p>By contrast, Matthew Yglesias puts forward a counter view – that &lt;a href="https://www.vox.com/2015/7/27/9038829/automation-myth" target="_blank" rel="noopener">we should be worried if we don’t automate lots of jobs, because of the dramatic negative impact on productivity&lt;/a>.&lt;/p>
&lt;p>In his view if societies do not embrace increasing automation (which by implication means finding the ways to invest in it) then they are doomed to a low-income, low living standard future, with a fatal combination of low productivity and spiralling healthcare and social care costs.&lt;/p>
&lt;h2 id="and8230">And…?&lt;/h2>
&lt;p>There is a clear message in this research – the very nature of employment is already changing far beyond the increased casualisation that is highest on most debates. Many forms of employment will disappear within the working lifetime of children now in schools.&lt;/p>
&lt;p>At the same time we need to ensure that we can invest in the technology that will bring high productivity comemrce to the country.&lt;/p>
&lt;p>Some questions for the politicians:&lt;/p>
&lt;ul>
&lt;li>how will the UK attract investment in the technology needed to operate efficiently in the 2030’s?&lt;/li>
&lt;li>what changes do we need to be planning NOW to the education system to prepare people for that world?&lt;/li>
&lt;li>how will our society support the people who cannot reach the levels of education needed to get the jobs that will be available?&lt;/li>
&lt;li>or is the UK doomed to slump to being a low income, low employment sweat shop?&lt;/li>
&lt;/ul>
&lt;h4 id="acknowledgements">Acknowledgements&lt;/h4>
&lt;p>New York Times link via &lt;a href="https://dougbelshaw.com/" target="_blank" rel="noopener">Doug Belshaw&lt;/a>&lt;/p>
&lt;p>Featured image &lt;a href="https://pixabay.com/en/robot-artificial-intelligence-woman-507811/" target="_blank" rel="noopener">CC0 Pixabay&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://twitter.com/mattyglesias" target="_blank" rel="noopener">Matthew Yglesias&lt;/a> link via &lt;a href="https://twitter.com/ryanavent" target="_blank" rel="noopener">Ryan Avent&lt;/a> via &lt;a href="https://twitter.com/maosbot" target="_blank" rel="noopener">Michael Osborne&lt;/a>&lt;/p>
&lt;p> &lt;/p></description></item><item><title>Comment on “Stop Blaming the Tools when Collaboration Fails”</title><link>https://www.synesthesia.co.uk/2017/02/06/comment-on-stop-blaming-the-tools-when-collaboration-fails/</link><pubDate>Mon, 06 Feb 2017 10:27:24 +0000</pubDate><guid>https://www.synesthesia.co.uk/2017/02/06/comment-on-stop-blaming-the-tools-when-collaboration-fails/</guid><description>&lt;p>Another “down the rabbit hole” &lt;a href="https://www.elsua.net/2016/12/07/stop-blaming-the-tools-when-collaboration-fails/" target="_blank" rel="noopener">post and comment stream&lt;/a> from &lt;a href="https://www.elsua.net/" target="_blank" rel="noopener">Luis Suarez&lt;/a> with a great contribution in the comments from &lt;a href="https://twitter.com/IntranetFocus" target="_blank" rel="noopener">Martin White&lt;/a>&lt;/p>
&lt;p>There are some interesting papers to follow up in the comments (as an aside, shame how much of academic publishing is still locked behind paywalls)&lt;/p>
&lt;p>Martin comments:&lt;/p>
&lt;blockquote>
&lt;p>I think it is more about a view that academic research is not of value together with an inability or unwillingness to find the research. It’s certainly out there. A search for collaboration in Google Scholar comes up with 4 million references, albeit many are more about scientific collaboration than business collaboration. Because academic research is almost always technology-neutral the outcomes can be translated into current practice.&lt;/p>
&lt;/blockquote>
&lt;p>Luis responds&lt;/p>
&lt;blockquote>
&lt;p>it’s always been said how far apart from each other both the academic and the business worlds have been all along, to the point where they remain irreconcilable, it’s going to become an on-going challenge unless either one of them, or both!, would concede, give in and decides to get closer. I think it’s very much needed, because I certainly agree with you there are tons of superb research done out there around sociology and it would have a tremendous impact if it were injected, applied, adapted and iterated in a business context.&lt;/p>
&lt;p>On the other hand, the academic world also needs to get closer to the business world vs. continuing to live in a bubble (if they ever have). I think it’s down to us, practitioners, to bridge both worlds and get them to understand each other&lt;/p>
&lt;/blockquote>
&lt;p>From personal experience I would suggest some of those barriers to deeper adoption of academic insight in the business world (apart from simple prejudice) are:&lt;/p>
&lt;ul>
&lt;li>access to the material (see comment about paywalls above)&lt;/li>
&lt;li>accessiblity of the material – reading formal academic material effectively and efficiently is an acquired skill&lt;/li>
&lt;li>the mismatch between the narrowly specialized nature of most academic research and the broader nature of most people’s skills in the commercial world&lt;/li>
&lt;/ul>
&lt;p>Of these, in many ways I think the biggest is that last mismatch. I’m not convinced that we have ‘&lt;a href="https://en.wikipedia.org/wiki/T-shaped_skills" target="_blank" rel="noopener">T-shaped&lt;/a>‘ professionals any more, or if we have the ‘T’ has several legs, and the cross-bar is of quite varying thicknesses, with some very long tails (mixed metaphor alert!!))&lt;/p>
&lt;p>&lt;em>(Aside, I did leave this as a comment, but for some reason my comments are not appearing – perhaps I’ve been moderated!)&lt;/em>&lt;/p></description></item><item><title>Another first</title><link>https://www.synesthesia.co.uk/2017/02/03/another-first/</link><pubDate>Fri, 03 Feb 2017 12:08:44 +0000</pubDate><guid>https://www.synesthesia.co.uk/2017/02/03/another-first/</guid><description>&lt;p>Contributed my first-ever &lt;a href="https://github.com/michaelarthurcaulfield/wikity-zero/pull/6" target="_blank" rel="noopener">pull-request&lt;/a> to a public open-source project  – &lt;a href="https://hapgood.us/?s=wikity" target="_blank" rel="noopener">Mike Caulfield’s Wikity&lt;/a> theme….&lt;/p></description></item><item><title>Dynamics CRM entity status weirdness</title><link>https://www.synesthesia.co.uk/note/2017/02/03/dynamics-crm-entity-status-weirdness/</link><pubDate>Fri, 03 Feb 2017 11:46:33 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2017/02/03/dynamics-crm-entity-status-weirdness/</guid><description>&lt;h2 id="background">Background&lt;/h2>
&lt;p>Since upgrade of CRM Online to 8.2, we have noticed some strange issues around workflow triggers that are supposed to be fired by the change of a record status.&lt;/p>
&lt;p>We have a workflow associated with the Invoice entity that is set to trigger on change of record status:&lt;figure id="attachment_96811" aria-describedby="caption-attachment-96811" style="width: 269px" class="wp-caption alignnone">&lt;/p>
&lt;p>&lt;img class="size-full wp-image-96811" src="https://www.synesthesia.co.uk/wp/wp-content/uploads/2017/02/wf-status-trigger.png" alt="" width="269" height="134" />&lt;figcaption id="caption-attachment-96811" class="wp-caption-text">Workflow trigger settings&lt;/figcaption>&lt;/figure>&lt;/p>
&lt;p>The workflow is responsible for setting up various bits of data when we issue an invoice, then flagging to an external integration that the invoice is ready to send to Finance.&lt;/p>
&lt;p>We trigger the workflow in a couple of places – in C# code that runs during various automated operations, and in Javascript in response to a manual button click.&lt;/p>
&lt;h2 id="updating-the-invoice-status-8211-the-old-way">Updating the invoice status – the old way&lt;/h2>
&lt;p>Traditionally we would fire this using a SetStateRequest (C#, Javascript):&lt;/p>
&lt;h2 id="updating-the-invoice-status-8211-the-new-way">Updating the invoice status – the new way&lt;/h2>
&lt;p>However as that call has been &lt;a href="https://msdn.microsoft.com/en-gb/library/microsoft.crm.sdk.messages.setstaterequest.aspx" target="_blank" rel="noopener">deprecated&lt;/a>, we took the opportunity of some other refactorings to migrate to using Update requests.&lt;/p>
&lt;h3 id="using-c-and-iorganizationserviceupdate">Using C# and IOrganizationService.Update&lt;/h3>
&lt;p>First attempt in C# was:&lt;/p>
&lt;p>However we found that the workflow was being triggered twice!&lt;/p>
&lt;p>The only way we found to stop this happening was to adjust the code so we only update the statuscode attribute:&lt;/p>
&lt;h3 id="using-javascript-and-rest-api-put">Using Javascript and REST API PUT&lt;/h3>
&lt;p>Our first attempt in Javascript mirrored what we had found in C#:&lt;/p>
&lt;p>However we found that although this appears to change the entity fields correctly:&lt;figure id="attachment_96812" aria-describedby="caption-attachment-96812" style="width: 300px" class="wp-caption alignnone">&lt;/p>
&lt;p>&lt;img class="size-medium wp-image-96812" src="https://www.synesthesia.co.uk/wp/wp-content/uploads/2017/02/invoice-status-after-REST-PUT-status-only-300x35.png" alt="" width="300" height="35" srcset="https://www.synesthesia.co.uk/wp-content/uploads/2017/02/invoice-status-after-REST-PUT-status-only-300x35.png 300w, https://www.synesthesia.co.uk/wp-content/uploads/2017/02/invoice-status-after-REST-PUT-status-only.png 542w" sizes="(max-width: 300px) 100vw, 300px" />&lt;figcaption id="caption-attachment-96812" class="wp-caption-text">Invoice status set correctly after REST PUT call just with status code&lt;/figcaption>&lt;/figure>&lt;/p>
&lt;p>… the workflow is just not being triggered&lt;/p>
&lt;p>So then we tried in javascript settiing the statecode as well, and the workflow triggers twice again! We restored the javascript to only update status (as per the gist above), and moved on to look at other settings for the process trigger.&lt;/p>
&lt;h3 id="changing-the-process-trigger">Changing the process trigger&lt;/h3>
&lt;p>We changed the process trigger for the workflow to be “When record fields change” (i.e. update), and filtered only on statuscode&lt;figure id="attachment_96813" aria-describedby="caption-attachment-96813" style="width: 300px" class="wp-caption alignnone">&lt;/p>
&lt;p>&lt;img class="size-medium wp-image-96813" src="https://www.synesthesia.co.uk/wp/wp-content/uploads/2017/02/wf-update-trigger-300x104.png" alt="" width="300" height="104" srcset="https://www.synesthesia.co.uk/wp-content/uploads/2017/02/wf-update-trigger-300x104.png 300w, https://www.synesthesia.co.uk/wp-content/uploads/2017/02/wf-update-trigger.png 369w" sizes="(max-width: 300px) 100vw, 300px" />&lt;figcaption id="caption-attachment-96813" class="wp-caption-text">Worflow update trigger&lt;/figcaption>&lt;/figure> &lt;figure id="attachment_96814" aria-describedby="caption-attachment-96814" style="width: 300px" class="wp-caption alignnone">&lt;img class="size-medium wp-image-96814" src="https://www.synesthesia.co.uk/wp/wp-content/uploads/2017/02/wf_update_trigger_filter-300x241.png" alt="" width="300" height="241" srcset="https://www.synesthesia.co.uk/wp-content/uploads/2017/02/wf_update_trigger_filter-300x241.png 300w, https://www.synesthesia.co.uk/wp-content/uploads/2017/02/wf_update_trigger_filter.png 537w" sizes="(max-width: 300px) 100vw, 300px" />&lt;figcaption id="caption-attachment-96814" class="wp-caption-text">Worflow update trigger filter attribute&lt;/figcaption>&lt;/figure>&lt;/p>
&lt;p>I half expected that this might fire initially but that later steps where the workflow calls itself recursively by changing status of the invoice would fail.&lt;/p>
&lt;p>First experiment was triggered by using the Javascript button(sending a PUT with only the statuscode). This ran correctly all the way through.&lt;/p>
&lt;p>&lt;del>Second experiment was triggered from C# code based on other system actions. That too ran correctly all the way through, with the process only triggered once.&lt;/del>&lt;/p>
&lt;p>UPDATE – later in testing we started seeing random double triggers on this when the invoice status was changed using Update. Reverting to legacy SetStateRequest (but with the process still triggered on Update) corrected this behaviour. As none of this fits with documentation we assume it is an obscure bug in the platform&lt;/p>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>Microsoft have made changes to the way entity status interacts with processes.&lt;/p>
&lt;p>The Microsoft recommendation is that all code which changes record status should do using updates, not the deprecated SetStateRequest&lt;/p>
&lt;p>UPDATE: however from our later tests we consider SetStateREquest to be the safer option on the IOrganizationService&lt;/p>
&lt;p>For workflows which are set to trigger on “Record status changes” there appears to be inconsistent behaviour depending on the source of the update (SOAP via the IOrganizationService, or directly to the newer REST API )&lt;/p>
&lt;p>From our tests, any workflows which are triggered from “Record status changes” should be modified to fire on “Record fields change”, filtered down to just the status field.&lt;/p>
&lt;p>Worflow steps created in the Workflow Designer which call “Set record status” still work, and will still fire triggers that have been modifed as above&lt;/p></description></item><item><title>Tools updates</title><link>https://www.synesthesia.co.uk/2017/01/30/tools-updates/</link><pubDate>Mon, 30 Jan 2017 14:48:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/2017/01/30/tools-updates/</guid><description>&lt;p>I realised that I wasn’t going to have the time to both write my own theme that I liked and update the site content, and the ugliness of the part-built theme was putting me off using the site – so I’ve grabbed the new &lt;a href="https://2017.wordpress.net/" target="_blank" rel="noopener">Twenty Seventeen&lt;/a> theme, and will run with that…&lt;/p>
&lt;p>Notwithstanding what I wrote about &lt;a href="https://www.synesthesia.co.uk/2016/02/11/breaking-the-ubiquity-of-stream-mode/" target="_blank" rel="noopener">Breaking the Ubiquity of Stream Mode&lt;/a>  I pretty much gave up on &lt;a href="https://fed.wiki.org/view/welcome-visitors" target="_blank" rel="noopener">Smallest Federated Wiki&lt;/a>  when I realised that Yahoo! Passport was going away. Now the &lt;a href="https://github.com/fedwiki/" target="_blank" rel="noopener">software&lt;/a> has been &lt;a href="https://github.com/fedwiki/wiki-security-passportjs/blob/master/docs/configuration.md" target="_blank" rel="noopener">updated to use social logins&lt;/a> I have revived it, and my copy is &lt;a href="https://wiki.synesthesia.co.uk/" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>I was hugely pleased when &lt;a href="https://hapgood.us/about/" target="_blank" rel="noopener">Mike Caulfield&lt;/a> released &lt;a href="https://hapgood.us/?s=wikity" target="_blank" rel="noopener">his work&lt;/a> on the &lt;a href="https://github.com/michaelarthurcaulfield/wikity-zero" target="_blank" rel="noopener">Wikity theme to github&lt;/a>, and I’m running an instance &lt;a href="https://wikity.synesthesia.co.uk/" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>Let’s see which of the two &lt;a href="https://en.wikipedia.org/wiki/Personal_wiki" target="_blank" rel="noopener">personal wiki&lt;/a> tools gets most use!&lt;/p>
&lt;p>Lastly, although I still have an instance of &lt;a href="https://fargo.io/" target="_blank" rel="noopener">Fargo.io&lt;/a> that gets  syndicated into the &lt;a href="https://www.synesthesia.co.uk/worknotes/">Work Notes&lt;/a> section here, Dave Winer has given &lt;a href="https://scripting.com/2016/08/24/fargoTimesOutOnJune2017.html" target="_blank" rel="noopener">clear notice&lt;/a> that it will cease to work in June due to Dropbox API deprecations. He does have a migration path for a self-hosted outliner using a combination of &lt;a href="https://github.com/scripting/nodeStorage" target="_blank" rel="noopener">S3 storage via an API&lt;/a> and the &lt;a href="https://littleoutliner.com/" target="_blank" rel="noopener">Little Outliner 2&lt;/a> tool, so a future project will be to set up a storage backend for that.&lt;/p>
&lt;p> &lt;/p>
&lt;p> &lt;/p>
&lt;p> &lt;/p></description></item><item><title>AutoFac and factory interfaces</title><link>https://www.synesthesia.co.uk/note/2016/02/11/autofac-and-factory-interfaces/</link><pubDate>Thu, 11 Feb 2016 15:46:13 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2016/02/11/autofac-and-factory-interfaces/</guid><description>&lt;p>It’s different from Windsor – just working out exactly how&lt;/p></description></item><item><title>WorkNotes 2016-02-11 15:24:52</title><link>https://www.synesthesia.co.uk/note/2016/02/11/worknotes-2016-02-11-152452/</link><pubDate>Thu, 11 Feb 2016 15:24:52 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2016/02/11/worknotes-2016-02-11-152452/</guid><description>&lt;p>Getting back on the blog wagon&lt;/p></description></item><item><title>Gripping Twitter gently by the throat</title><link>https://www.synesthesia.co.uk/2016/02/11/gripping-twitter-gently-by-the-throat/</link><pubDate>Thu, 11 Feb 2016 09:05:52 +0000</pubDate><guid>https://www.synesthesia.co.uk/2016/02/11/gripping-twitter-gently-by-the-throat/</guid><description>&lt;p>In &lt;a href="https://www.synesthesia.co.uk/2016/02/11/breaking-the-ubiquity-of-stream-mode/" target="_blank">Breaking the Ubiquity of Stream Mode&lt;/a> I wrote that, inspired by &lt;a href="https://www.elsua.net/2015/09/23/is-twitter-where-connections-go-to-die-the-unfollowing-experiment/" target="_blank">“Is Twitter Where Connections Go to Die? – The Unfollowing Experiment”&lt;/a>,  I would start taking overt control of my Twitter use.&lt;/p>
&lt;p>I shall use this post to both plan and report progress&lt;/p>
&lt;p>&lt;strong>Updated 12 Feb 2016&lt;/strong>&lt;/p>
&lt;p>First part is to decide on the lists I want. I can’t disagree with the initial triumvirate described by Luis –  “&lt;a href="https://www.elsua.net/2015/09/24/collaborators-cooperators-and-people-i-learn-from/" target="_blank">Collaborators, Cooperators and People I Learn From&lt;/a>”&lt;/p>
&lt;p>I also think I need a couple more public lists that reflect my other uses of Twitter – probably one for local / London accounts.&lt;/p>
&lt;p>I also think I need some private lists – certainly for friends/family.&lt;/p>
&lt;p>And during the migration process I will probably put up a temporary public list for “People I used to follow” – this will be a good place to link to this post to explain what is happening.&lt;/p>
&lt;p>&lt;strong>Updated 15 Feb 2016&lt;/strong>&lt;/p>
&lt;p>Moving people to lists and unfollowing through a normal Twitter client is SLOW – I estimated about 6 weeks work.&lt;/p>
&lt;p>There doesn’t seem to be a tool that will do it all in one go, so I have split the task:&lt;/p>
&lt;p style="padding-left: 30px;">
for updating list membership &lt;a href="https://twitlistmanager.com/">TwitListManager&lt;/a>&amp;nbsp;seems to do the trick, with a simple tabular display:
&lt;/p>
&lt;p style="padding-left: 30px;">
&lt;img class="alignnone size-medium wp-image-96779" src="https://www.synesthesia.co.uk/wp/wp/uploads/2016/02/twitlistmanager-300x196.png" alt="TwitListManager" srcset="https://www.synesthesia.co.uk/wp-content/uploads/2016/02/twitlistmanager-300x196.png 300w, https://www.synesthesia.co.uk/wp-content/uploads/2016/02/twitlistmanager-768x501.png 768w, https://www.synesthesia.co.uk/wp-content/uploads/2016/02/twitlistmanager.png 938w" sizes="(max-width: 300px) 100vw, 300px" />
&lt;/p>
&lt;p style="padding-left: 30px;">
&lt;p>
&lt;b>Update 16 Feb 2016&lt;/b>
&lt;/p>
&lt;p>
From a couple of comments it&amp;#8217;s clear that some people didn&amp;#8217;t get beyond the title of the list &amp;#8220;People I used to follow&amp;#8221;, so I&amp;#8217;ve renamed it to the (perhaps) clearer &amp;#8220;Moving from follow to lists&amp;#8221;.
&lt;/p>
&lt;p>
Interesting as well to see the people for whom Twitter is only about the follower count. I&amp;#8217;ve even been accused of being &amp;#8220;passive aggressive&amp;#8221; by a follower of one of the people I unfollowed 🙂 &amp;nbsp;I suppose I shouoldn&amp;#8217;t be surprised that a change which is designed to emphasise Twitter as conversation will seem odd to those who think of it as a broadcast channel.
&lt;/p>
&lt;p>
To be continued&amp;#8230;..
&lt;/p></description></item><item><title>Breaking the ubiquity of Stream Mode</title><link>https://www.synesthesia.co.uk/2016/02/11/breaking-the-ubiquity-of-stream-mode/</link><pubDate>Thu, 11 Feb 2016 09:00:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2016/02/11/breaking-the-ubiquity-of-stream-mode/</guid><description>&lt;p>A &lt;a href="http://www.elsua.net/2015/10/20/10th-year-blogiversary-the-unfinished-journey-of-blogging-and-why-it-matters/" target="_blank">blog post&lt;/a> by &lt;a href="https://www.elsua.net/" target="_blank" rel="noopener">Luis Suarez&lt;/a> has served nicely as a catalyst to start crystallizing some thoughts from the last couple of weeks.&lt;/p>
&lt;h3 id="discomfort">Discomfort&lt;/h3>
&lt;p>I’ve become increasingly aware of tensions I feel when I think about how I manage my &lt;a href="https://jarche.com/pkm/" target="_blank" rel="noopener">personal sense-making&lt;/a>. In hindsight the seeds were sown when taking Harold Jarche’s &lt;a href="https://jarche.com/pkm-in-40-days" target="_blank" rel="noopener">PKM in 40 days&lt;/a> course. During that study &lt;a href="https://www.synesthesia.co.uk/2015/04/13/pkm40-what-have-i-learned-so-far/" target="_blank" rel="noopener">I realised that although I “talk the talk” around PKM, mostly what I do is the “Seek”&lt;/a> part of &lt;a href="https://jarche.com/2010/02/seek-sense-share/" target="_blank" rel="noopener">Seek-Sense-Share&lt;/a>, with sharing only at the level of filtering a set of &lt;a href="https://www.diigo.com/user/synesthesia" target="_blank" rel="noopener">public bookmarks&lt;/a>. My approach to sense-making is opportunistic, driven by the needs of the moment, and often quite ephemeral – knowledge is cast away to the depths of memory when not needed for the task in hand.&lt;/p>
&lt;p>I’ve noticed a number of things, which I now suspect are related:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>I become more and more convinced that &lt;a href="https://www.synesthesia.co.uk/2015/02/27/email-makes-you-stupid-so-what-can-we-do-about-it/" target="_blank" rel="noopener">email is toxic&lt;/a>, yet find myself dragged back into using it by the unhealthy habits of those I work with. Although I find the collaboration in &lt;a href="https://plus.google.com/&amp;#43;LuisSuarezElsua/posts/BB9GthyZLTS" target="_blank" rel="noopener">Luis’s #no-email Slack group&lt;/a> to be a great support, I spent much of last year not participating&lt;/p>
&lt;/li>
&lt;li>
&lt;p>I’m increasingly aware of tensions whenever I think about long-form writing and thinking – a whole blog post feels like a lot of pressure! 🙂&lt;/p>
&lt;p>&lt;em>As an aside, I wonder if in fact my long-form thinking is being expressed in a different medium – code – although the &lt;a href="https://www.linkedin.com/in/julianelve" target="_blank">job title&lt;/a> might mislead you, I write quite a bit of code these days  – and “&lt;a href="https://www.smashingmagazine.com/2010/05/the-poetics-of-coding/" target="_blank" rel="noopener">code is poetry&lt;/a>” after all!&lt;/em>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>I find myself attracted to &lt;a href="https://www.synesthesia.co.uk/2016/02/02/federated-wiki/" target="_blank">Federated Wiki&lt;/a> – the combined timelessness of wiki ( = “no pressure”) with it being “my site”. The ability to quickly bang together related thoughts on pages which are never “finished” feels more accessible than the blank page, dated post, tyranny of the blog&lt;/p>
&lt;/li>
&lt;li>
&lt;p>I like the speed of &lt;a href="https://fargo.io/" target="_blank">Fargo&lt;/a> (although the default blog style with dates is a bit reminiscent of timelines). Publishing via &lt;a href="https://synesthesiaworknotes.smallpict.com/" target="_blank">smallpict.com&lt;/a> is baked in, if I plan to use this tool more I want my own server, and not just &lt;a href="https://www.synesthesia.co.uk/worknotes/" target="_blank">syndicate&lt;/a> it.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Regardless of anything I say in this post, I’m still quite attracted by the immediacy of a Twitter timeline, the frequent updates on Facebook, the serendipitous comments that arise when I post the name of the film I am about to watch – I’ve realised that acknowledging that attraction is a key step in starting to build something else into my practice&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="analysis">Analysis&lt;/h3>
&lt;p>Part of recognising an issue is to be aware of the feelings of discomfort, and part is having the right concepts to categorise what is happening.&lt;/p>
&lt;p>I came across &lt;a href="https://hapgood.us/" target="_blank" rel="noopener">Mike Caulfield&lt;/a>‘s multifarious online presences when I started looking into Federated Wiki. The ones that have seemed most useful in this context are where he has drawn out the definition of &lt;a href="https://www.diigo.com/user/synesthesia/StreamMode" target="_blank" rel="noopener">StreamMode&lt;/a>, contrasted with &lt;a href="https://www.diigo.com/user/synesthesia/StateMode" target="_blank" rel="noopener">StateMode&lt;/a>  (&lt;a href="https://hapgood.us/2014/09/07/peak-streammode/" target="_blank" rel="noopener">blog&lt;/a>, &lt;a href="https://diigo.com/08cqtq" target="_blank" rel="noopener">highlighted version&lt;/a>). In his words,&lt;/p>
&lt;blockquote>
&lt;p>“You know that you are in StreamMode if you never return to edit the things you are posting on the web”&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>(&lt;a href="https://diigo.com/08cquk" target="_blank">context&lt;/a>, &lt;a href="https://hapgood.us/2014/10/14/what-iterative-writing-looks-like-and-why-its-important/" target="_blank">src&lt;/a>)&lt;/p>
&lt;/blockquote>
&lt;p>Mike recognises that StreamMode may have &lt;span style="text-decoration: underline;">some&lt;/span> advantages, and &lt;a href="https://webseitz.fluxent.com/wiki/BillSeitz" target="_blank">Bill Seitz&lt;/a> makes &lt;a href="https://webseitz.fluxent.com/wiki/StreamMode" target="_blank">an interesting contrast link&lt;/a> to &lt;a href="https://timkastelle.org/theblog/" target="_blank">Tim Kastelle&lt;/a>  on &lt;a href="https://timkastelle.org/blog/2010/06/manage-knowledge-flow-not-knowledge-stocks-for-innovation-success/" target="_blank">Managing Knowledge Flow, not Knowledge Stocks&lt;/a>&lt;/p>
&lt;p>But….&lt;/p>
&lt;blockquote cite="https://hapgood.us/2014/10/14/what-iterative-writing-looks-like-and-why-its-important/">
&lt;p>
&amp;#8220;We end up hitting Twitter refresh like sad Skinner-boxed lab rats looking for the next pellet instead of collaborating to extend and enhance the scope of human knowledge.&amp;#8221;&lt;br /> (&lt;a href="https://www.diigo.com/annotated/8b252682d99b01f74538d86013bf7847?annId=5dfacd98d217496a49282d0ee172170e">context&lt;/a>, &lt;a href="https://hapgood.us/2014/10/14/what-iterative-writing-looks-like-and-why-its-important/" target="_blank">src&lt;/a>)
&lt;/p>
&lt;/blockquote>
&lt;p>Or in the words of Jack Dorsey – “&lt;a href="https://twitter.com/jack/status/696081671293001728" target="_blank">Twitter is live, Twitter is real-time&lt;/a>” – both its strength and its weakness.&lt;/p>
&lt;p>&lt;strong>The Firehose is addictive – it makes us feel “in touch with the pulse” at the same time as it weakens our ability to pause and take stock – it is the refined white sugar of the knowledge world.&lt;/strong>&lt;/p>
&lt;h3 id="what8217s-next">What’s Next&lt;/h3>
&lt;p>Change relies on motivation and a plan.&lt;/p>
&lt;p>So you have an addiction – do you really want to fix it?&lt;/p>
&lt;p>Why would I want to reduce the hold that StreamMode has over my online interactions?&lt;/p>
&lt;p>Put very simply, if I’m going to spend time online, I want it to be useful in some way – personally, professionally.&lt;/p>
&lt;p>And the plan? Reinforce positive behaviours, and manage those which are inefficient, unhelpful or not-fun.&lt;/p>
&lt;p>Although I complained above about being dragged back into the toxicity of email I have had some success with “&lt;a href="https://johnstepper.com/2014/01/04/the-5-elements-of-working-out-loud/" target="_blank">Working Out Loud&lt;/a>“:&lt;/p>
&lt;ul>
&lt;li>Using a &lt;a href="https://www.aha.io/" target="_blank">product management toolset&lt;/a> that within the scope of a single user licence allows me to make my planning work visible across the company, and for colleagues to comment, and create their own &lt;a href="https://www.aha.io/product/features/ideas" target="_blank">ideas&lt;/a> for change (&lt;em>sorry for the plug, but I really like the tool&lt;/em>)&lt;/li>
&lt;li>With internal and external technical teams, reinforcing the use of &lt;a href="https://bitbucket.org/" target="_blank">DVCS repositories&lt;/a>, and using comments and &lt;a href="https://confluence.atlassian.com/bitbucket/work-with-pull-requests-223220593.html" target="_blank">pull requests&lt;/a> as a way of documenting our design discussions&lt;/li>
&lt;li>Wherever I can, moving more general internal discussions to a combination of &lt;a href="https://www.yammer.com" target="_blank">Yammer&lt;/a> and &lt;a href="https://products.office.com/en-GB/sharepoint?legRedir=true&amp;CorrelationId=effcfe6c-23dc-4bb4-8e9d-1b5929c32adb" target="_blank">internal blogs&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>So a big part of my strategy is to keep using these, and move more and more of my “inside the firewall” conversations to them.&lt;/p>
&lt;p>Outside the firewall, in many ways I feel I have been going backwards, not least because outside the firewall is where the stream is so pervasive.&lt;/p>
&lt;p>I think the first step is to take back some control, and of all the things I have read, Luis’s approach to &lt;a href="https://www.elsua.net/2015/09/23/is-twitter-where-connections-go-to-die-the-unfollowing-experiment" target="_blank">gripping Twitter by the throat and bending it to his will&lt;/a> is the most appealing.&lt;/p>
&lt;p>So I’m &lt;a href="https://www.synesthesia.co.uk/2016/02/11/gripping-twitter-gently-by-the-throat/" target="_blank">planning my own version of the “&lt;strong>&lt;em>Great Unfollowing&lt;/em>&lt;/strong>“&lt;/a>&lt;/p>
&lt;p>That will do for a start. There will be more on evolving practices, but another secret to making a change is not to try too many things at once.&lt;/p>
&lt;p>And change often needs a public commitment – here it is!&lt;/p>
&lt;p> &lt;/p></description></item><item><title>Federated Wiki</title><link>https://www.synesthesia.co.uk/2016/02/02/federated-wiki/</link><pubDate>Tue, 02 Feb 2016 14:22:44 +0000</pubDate><guid>https://www.synesthesia.co.uk/2016/02/02/federated-wiki/</guid><description>&lt;p>Started playing with &lt;a href="https://fed.wiki.org/view/welcome-visitors" target="_blank" rel="noopener">Federated Wiki&lt;/a> &lt;a href="https://wiki.synesthesia.co.uk/" target="_blank" rel="noopener">over here&lt;/a>&lt;/p>
&lt;p>I’ll update this post with some conclusions when I have them….&lt;/p></description></item><item><title>WorkNotes 2016-02-02 09:27:22</title><link>https://www.synesthesia.co.uk/note/2016/02/02/worknotes-2016-02-02-092722/</link><pubDate>Tue, 02 Feb 2016 09:27:22 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2016/02/02/worknotes-2016-02-02-092722/</guid><description>&lt;p>Now playing with Federated Wiki &lt;a href="https://wiki.synesthesia.co.uk" target="_blank" rel="noopener">here&lt;/a>&lt;/p></description></item><item><title>A weirdness with xunit</title><link>https://www.synesthesia.co.uk/note/2015/10/01/a-weirdness-with-xunit/</link><pubDate>Thu, 01 Oct 2015 15:31:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2015/10/01/a-weirdness-with-xunit/</guid><description>&lt;p>Today was rebuilding a solution that had been updated to xunit2, and kept getting random test failures, usually with some kind of conflict with Rhino Mocks. The fix seemed to be to turn off the &lt;a href="https://xunit.github.io/docs/running-tests-in-parallel.html" target="_blank" rel="noopener">parallel testing&lt;/a>. A little googling turned up &lt;a href="https://xunit.github.io/docs/running-tests-in-parallel.html" target="_blank" rel="noopener">this&lt;/a> which suggests Rhino Mocks does indeed have a problem in a multi-threaded test environment&lt;/p></description></item><item><title>Finding out about Content Security Policy</title><link>https://www.synesthesia.co.uk/note/2015/09/21/finding-out-about-content-security-policy/</link><pubDate>Mon, 21 Sep 2015 12:31:28 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2015/09/21/finding-out-about-content-security-policy/</guid><description>&lt;p>Had some issues when adding custom fonts to &lt;a href="https://identityserver.github.io/" target="_blank" rel="noopener">IdentityServer&lt;/a> – which is when I found in the &lt;a href="https://identityserver.github.io/Documentation/docs/advanced/csp.html" target="_blank" rel="noopener">docs&lt;/a> that by default it implements &lt;a href="https://content-security-policy.com/" target="_blank" rel="noopener">Content Security Policy&lt;/a>&lt;/p>
&lt;p>Also found some issues with trying to override the builtin Bootstrap with the CDN version…&lt;/p>
&lt;p>Found &lt;a href="https://rehansaeed.com/content-security-policy-for-asp-net-mvc/" target="_blank" rel="noopener">this&lt;/a> useful reference on &lt;a href="https://rehansaeed.com/content-security-policy-for-asp-net-mvc/" target="_blank" rel="noopener">CSP and ASP.net&lt;/a>&lt;/p>
&lt;p>This resource looks useful too – &lt;a href="https://www.cspplayground.com/" target="_blank" rel="noopener">CSP Playground&lt;/a>&lt;/p></description></item><item><title>CRM plugin hard won learnings</title><link>https://www.synesthesia.co.uk/note/2015/06/18/crm-plugin-hard-won-learnings/</link><pubDate>Thu, 18 Jun 2015 10:25:57 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2015/06/18/crm-plugin-hard-won-learnings/</guid><description>&lt;p>If you need to use ILMerge, you must use an unencrypted strong name key for your assembly&lt;/p>
&lt;p>If you change the strong name key for your assembly, CRM thinks it’s a whole new assembly, so it might pay to create new ones explicitly&lt;/p>
&lt;p>If you are now including the generated CRM early-bound classes through ILMerge instead of as a source include, remember to add &lt;em>[assembly: Microsoft.Xrm.Sdk.Client.ProxyTypesAssemblyAttribute()]&lt;/em> to all deployed assemblies&lt;/p></description></item><item><title>Copyright, Creative Commons, and attribution on the web</title><link>https://www.synesthesia.co.uk/2015/04/27/copyright-creative-commons-and-attribution-on-the-web/</link><pubDate>Mon, 27 Apr 2015 15:39:47 +0000</pubDate><guid>https://www.synesthesia.co.uk/2015/04/27/copyright-creative-commons-and-attribution-on-the-web/</guid><description>&lt;p>&lt;em>Some colleagues were asking about Creative Commons, so I pulled together these notes. I am not a lawyer, and this post is based on a brief overview of published sources. Do not rely on this information as a substitute for legal advice&lt;/em>&lt;/p>
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/History_of_copyright_law" target="_blank" rel="noopener">Copyright&lt;/a> &lt;span style="color: black;">is a broad term covering the legal protections given to the creators of written and other work, allowing them the sole right to reproduce or exploit the work for a set period, after which the work transfers to the &lt;a href="https://en.wikipedia.org/wiki/Public_domain">public domain&lt;/a>. Philosophically it is a trade-off between allowing individuals or companies to profit from their ideas, whilst ensuring that eventually ideas become part of the intellectual and cultural commons from which all humanity benefits, and thus ensuring that in the long run there is general progress in the “sciences and arts”.&lt;br /> &lt;/span>&lt;/p>
&lt;p>&lt;span style="color: black;">In 2014 a number of &lt;a href="https://www.gov.uk/government/publications/changes-to-copyright-law">changes were introduced to English law&lt;/a> to clarify the “fair use” provisions, and to extend the law to treat digital media in a manner consistent with older forms in which copyright work are expressed. Nevertheless, the position remains that &lt;a href="https://www.gov.uk/copyright/overview">the majority of uses of copyright materials continue to require permission from copyright owners&lt;/a>.&lt;br /> &lt;/span>&lt;/p>
&lt;p>&lt;span style="color: black;">After a &lt;a href="https://en.wikipedia.org/wiki/Eldred_v._Ashcroft">landmark legal case&lt;/a> in the USA that retrospectively extended the term of copyrights by 20 years, Stanford Law School (now Harvard) professor Lawrence Lessig published “&lt;a href="https://www.free-culture.cc/">&lt;span style="color: #252525; font-size: 10pt; background-color: white;">&lt;em>Free Culture: How Big Media Uses Technology and the Law to Lock Down Culture and Control Creativity&lt;/em>&lt;/span>&lt;/a>“.&lt;br /> &lt;/span>&lt;/p>
&lt;p>&lt;span style="color: black;">The core argument of the book was that as large media corporations used their political and financial muscle to lobby for ever-longer copyright periods, and lock down media with anti-copying technology, they were increasing their profits at the expense of cultural freedom and the future creativity of the USA.&lt;br /> &lt;/span>&lt;/p>
&lt;p>&lt;span style="color: black;">At about the same time, the &lt;a href="https://creativecommons.org/about/history">Creative Commons Foundation&lt;/a> started to create new forms of copyright licences that creators could choose to apply to their work. These new licences allow the creator of a work to choose exactly which copyright protections they wish to retain, and which they wish to set aside, in the interests of a wider usability of their work. The vision of Creative Commons is:&lt;br /> &lt;/span>&lt;/p>
&lt;blockquote>
&lt;p>&lt;span style="color: black;">&lt;em>“realizing the full potential of the Internet — universal access to research and education, full participation in culture — to drive a new era of development, growth, and productivity”&lt;br /> &lt;/em>&lt;/span>&lt;span style="color: #595959; font-size: 9pt;">From &amp;laquo;a href=&amp;ldquo;&lt;a href="https://creativecommons.org/about%22%3ehttps://creativecommons.org/about" target="_blank" rel="noopener">https://creativecommons.org/about">https://creativecommons.org/about&lt;/a>&lt;/a>&amp;gt;&lt;br /> &lt;/span>&lt;/p>
&lt;/blockquote>
&lt;p>&lt;span style="color: black;">The main protections that &lt;a href="https://creativecommons.org/licenses/">Creative Commons (CC) licences&lt;/a> allow creators to release or keep, as they choose, are:&lt;br /> &lt;/span>&lt;/p>
&lt;p> &lt;/p>
&lt;div>
&lt;table style="border-collapse: collapse;" border="0">
&lt;colgroup> &lt;col style="width: 64px;" /> &lt;col style="width: 125px;" /> &lt;col style="width: 428px;" />&lt;/colgroup> &lt;tr>
&lt;td style="border: solid #a3a3a3 1.0pt; padding: 5px;">
&lt;a href="https://creativecommons.org/characteristic/by">&lt;img src="https://www.synesthesia.co.uk/wp/wp/uploads/2015/04/042715_1539_CopyrightCr1.gif" alt="" />&lt;/a>&lt;span style="font-family: Times New Roman; font-size: 12pt;">&lt;br /> &lt;/span>&lt;/p>
&lt;pre>&lt;code> &amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td style=&amp;quot;border-top: solid #a3a3a3 1.0pt; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 5px;&amp;quot;&amp;gt;
&amp;lt;strong&amp;gt;Attribution&amp;lt;/strong&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td style=&amp;quot;border-top: solid #a3a3a3 1.0pt; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 5px;&amp;quot;&amp;gt;
All CC licences require you to attribute the work to the original author
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&amp;quot;border-top: none; border-left: solid #a3a3a3 1.0pt; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 5px;&amp;quot;&amp;gt;
&amp;lt;a href=&amp;quot;https://creativecommons.org/characteristic/sa&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;https://www.synesthesia.co.uk/wp/wp/uploads/2015/04/042715_1539_CopyrightCr2.gif&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td style=&amp;quot;border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 5px;&amp;quot;&amp;gt;
&amp;lt;strong&amp;gt;Share-Alike&amp;lt;/strong&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td style=&amp;quot;border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 5px;&amp;quot;&amp;gt;
This characteristic, if applied, means that any derivative works must be licenced on the same terms as the original work
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&amp;quot;border-top: none; border-left: solid #a3a3a3 1.0pt; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 5px;&amp;quot;&amp;gt;
&amp;lt;a href=&amp;quot;https://creativecommons.org/characteristic/nd&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;https://www.synesthesia.co.uk/wp/wp/uploads/2015/04/042715_1539_CopyrightCr3.gif&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td style=&amp;quot;border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 5px;&amp;quot;&amp;gt;
&amp;lt;strong&amp;gt;NoDerivs&amp;lt;/strong&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td style=&amp;quot;border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 5px;&amp;quot;&amp;gt;
This characteristic means that the creator is NOT licensing the creation of derivative works from their work
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td style=&amp;quot;border-top: none; border-left: solid #a3a3a3 1.0pt; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 5px;&amp;quot;&amp;gt;
&amp;lt;a href=&amp;quot;https://creativecommons.org/characteristic/nc&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;https://www.synesthesia.co.uk/wp/wp/uploads/2015/04/042715_1539_CopyrightCr4.gif&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td style=&amp;quot;border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 5px;&amp;quot;&amp;gt;
&amp;lt;strong&amp;gt;NonCommercia&amp;lt;/strong&amp;gt;l
&amp;lt;/td&amp;gt;
&amp;lt;td style=&amp;quot;border-top: none; border-left: none; border-bottom: solid #a3a3a3 1.0pt; border-right: solid #a3a3a3 1.0pt; padding: 5px;&amp;quot;&amp;gt;
This characteristic means that you cannot re-use or re-purpose the work for commercial purposes, although you may be allowed to do so for non-commercial purposes if the other characteristics of the licence allow it
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;&amp;lt;/tbody&amp;gt; &amp;lt;/table&amp;gt; &amp;lt;/div&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;span style=&amp;quot;color: black;&amp;quot;&amp;gt;Earlier versions of Creative Commons licences have been ported into over 50 legal systems. The legal documents underpinning the latest (4.0) licences are adapted to be universally usable.&amp;lt;br /&amp;gt; &amp;lt;/span&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;span style=&amp;quot;color: black;&amp;quot;&amp;gt;A key point when using CC material is proper attribution &amp;amp;#8211; see &amp;lt;a href=&amp;quot;https://wiki.creativecommons.org/Marking/Users&amp;quot;&amp;gt;the CC guidance&amp;lt;/a&amp;gt;. There is similar advice on &amp;lt;a href=&amp;quot;https://wiki.creativecommons.org/Marking_your_work_with_a_CC_license&amp;quot;&amp;gt;marking your work&amp;lt;/a&amp;gt; to indicate that it is released under a CC licence.&amp;lt;br /&amp;gt; &amp;lt;/span&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;span style=&amp;quot;color: black;&amp;quot;&amp;gt;The last word on attribution, in cartoon form, should go to &amp;lt;a href=&amp;quot;https://ninapaley.com/&amp;quot;&amp;gt;Nina Paley&amp;lt;/a&amp;gt;, via &amp;lt;a href=&amp;quot;https://questioncopyright.org/minute-memes/credit-is-due&amp;quot;&amp;gt;QuestionCopyright.org&amp;lt;/a&amp;gt; (found via &amp;lt;a href=&amp;quot;https://jarche.com/2015/04/proper-citation-will-make-you-a-star/&amp;quot;&amp;gt;Harold Jarche&amp;lt;/a&amp;gt;).&amp;lt;br /&amp;gt; &amp;lt;/span&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;!-- iframe plugin v.4.4 wordpress.org/plugins/iframe/ --&amp;gt;
&amp;lt;iframe src=&amp;quot;https://www.youtube.com/embed/dPtH2KPuQbs&amp;quot; width=&amp;quot;75%&amp;quot; height=&amp;quot;500&amp;quot; scrolling=&amp;quot;yes&amp;quot; class=&amp;quot;iframe-class&amp;quot; frameborder=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;
&amp;lt;p&amp;gt;
&amp;amp;nbsp;
&amp;lt;/p&amp;gt;
&lt;/code>&lt;/pre></description></item><item><title>PKM40 – what have I learned so far?</title><link>https://www.synesthesia.co.uk/2015/04/13/pkm40-what-have-i-learned-so-far/</link><pubDate>Mon, 13 Apr 2015 08:15:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/2015/04/13/pkm40-what-have-i-learned-so-far/</guid><description>&lt;p>I’m currently following &lt;a href="https://jarche.com/" target="_blank" rel="noopener">Harold Jarche&lt;/a>‘s “&lt;a href="https://jarche.com/pkm-in-40-days/" target="_blank" rel="noopener">Personal Knowledge Management in 40 days&lt;/a>” course. We’re just over half way through, and Harold recently challenged us to reflect on what we have learned so far, and what we would like to achieve.&lt;/p>
&lt;p>At the start of the course I thought that I was fairly familiar with the material, and that this was really just a refresher. Much of what has been presented is familiar, but looking at it again, with specific exercises, has made me look closer. I’m recognising (perhaps not for the first time) that my particular challenge is that professionally I tend to need to know “quite a lot about quite a lot”, and this seems to fit my learning preferences. (aka “butterfly brain”!)&lt;/p>
&lt;p>In practice this means that I tend to have fairly broad nets for the “&lt;a href="https://jarche.com/2014/02/the-seek-sense-share-framework/" target="_blank" rel="noopener">Seek&lt;/a>” part of PKM, but my sense-making tends to be fairly limited in the public arena – usually limited to annotations in &lt;a href="https://www.diigo.com/user/synesthesia" target="_blank" rel="noopener">Diigo&lt;/a>. Certainly in professional terms sense-making seems to be something that takes place in the production of specific work products, and then discarded as we move on. Although I have had a blog since 2002, little sharing happens here at the moment – in fact the bulk of my sharing is implicit (via Diigo), combined with some rather “noise like” retweeting from time to time.&lt;/p>
&lt;h2 id="so-what-do-i-want-to-do-differently">So what do I want to do differently?&lt;/h2>
&lt;p>In common with at least one other person on the course, I’ve started to see that my knowledge-seeking has become a bit too unfocused, a bit too broad. I’m starting to refine &lt;a href="https://twitter.com/Synesthesia/lists" target="_blank" rel="noopener">Twitter lists&lt;/a>, and hone the collection structure in my feed.ly. I’ve experimented a bit with converting Twitter searches to RSS feeds (using &lt;a href="https://www.labnol.org/internet/twitter-rss-feed/28149/" target="_blank" rel="noopener">this technique&lt;/a>), although at the moment I don’t think I’ve found the right combination of search terms to give me usable filtered streams.&lt;/p>
&lt;p>In terms of overt sense-making and sharing, I’ve started being more attentive to “&lt;a href="https://johnstepper.com/2012/05/26/working-out-loud-your-personal-content-strategy/" target="_blank" rel="noopener">working out loud&lt;/a>“, especially the combination of “Narrating your work + Observable work”, although that takes different forms depending on the work. I’m paying more attention to blogging inside the firewall, and I’m looking for more opportunities to write about what I am doing for work in a non-compromising way on my public blog. The main challenge is the amount of time a blog post can take, so again trying to make that part of my process rather than an addition.&lt;/p>
&lt;p>I’m very interested in the concept of &lt;a href="https://jarche.com/2014/01/pkm-roles/" target="_blank" rel="noopener">roles in PKM&lt;/a>, not just in terms of seeking out those people for my network, but in terms of identifying and filling the gaps, and the overlap with roles in action-based networks.&lt;/p></description></item><item><title>Starting the Journey to a Social Business</title><link>https://www.synesthesia.co.uk/2015/03/31/starting-the-journey-to-a-social-business/</link><pubDate>Tue, 31 Mar 2015 08:52:41 +0000</pubDate><guid>https://www.synesthesia.co.uk/2015/03/31/starting-the-journey-to-a-social-business/</guid><description>&lt;h2 id="what-benefit-are-companies-getting-from-social">What benefit are companies getting from social?&lt;/h2>
&lt;p>A recent &lt;a href="https://www.mckinsey.com/Insights/High_Tech_Telecoms_Internet/Transforming_the_business_through_social_tools" target="_blank" rel="noopener">McKinsey survey&lt;/a> found that use and integration of social tools have had most impact, perhaps unsurprisingly, on customer-facing activities. Based on the responses of the companies that were most committed to the use of social technology, there are also large benefits to be found in the more operational and back-office functions, but that to get there, companies “&lt;a href="https://www.mckinsey.com/Insights/High_Tech_Telecoms_Internet/Transforming_the_business_through_social_tools" target="_blank" rel="noopener">&lt;em>must become better at engaging more employees, customers, and external partners through social tools, then capturing new benefits and measuring them in a systematic way&lt;/em>&lt;/a>“.&lt;/p>
&lt;p>It was noticeable across their survey that the companies which were “&lt;em>fully networked&lt;/em>” saw significantly greater gains from internal and external social interactions across all processes:&lt;/p>
&lt;p>&lt;a href="https://www.mckinsey.com/Insights/High_Tech_Telecoms_Internet/Transforming_the_business_through_social_tools" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://www.mckinsey.com/Insights/High_Tech_Telecoms_Internet/%27/~/media/McKinsey/dotcom/Insights/High%20Tech%20Internet/Transforming%20the%20business%20through%20social%20tools/SVGWeb20srvyex2.ashx" alt="" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/p>
&lt;p> &lt;/p>
&lt;h2 id="what8217s-behind-this">What’s behind this?&lt;/h2>
&lt;p>&lt;a href="https://plus.google.com/&amp;#43;WalterAdamson?prsrc=5" target="_blank" rel="noopener">Walter Adamson&lt;/a>, writing at Kinship Enterprise commented on these McKinsey results, and his opinion, the reason &lt;a href="https://www.kinshipenterprise.com/_blog/Blog/post/how-fully-networked-companies-get-better-roi-from-social-technologies" target="_blank" rel="noopener">fully networked companies get better ROI from social technologies&lt;/a> is fundamentally about the way they view the world – “&lt;a href="https://www.kinshipenterprise.com/_blog/Blog/post/how-fully-networked-companies-get-better-roi-from-social-technologies" target="_blank" rel="noopener">&lt;em>Companies that are using social technologies just internally have a different mindset about the value of social technologies than those using them internally &lt;strong>and&lt;/strong> externally&lt;/em>&lt;/a>”&lt;/p>
&lt;p>As Walter says, mindset is hard to change, but by embracing &lt;em>communities of purpose&lt;/em> that transcend the organisation boundary in the service of collaboration towards a shared vision, then there is possibility to co-create social good. On a more cautionary note he says that before companies can reach for that goal, they have to make sure that the processes that are built around social technologies are the way the work is done, and not something glued on the side&lt;/p>
&lt;p>&lt;a href="https://dionhinchcliffe.com/" target="_blank" rel="noopener">Dion Hinchcliffe&lt;/a> has a not-dissimilar stance on &lt;a href="https://dionhinchcliffe.com/2015/02/05/the-strategic-value-of-social-business-what-weve-learned/" target="_blank" rel="noopener">the strategic value of social business&lt;/a> , classifying the benefits into:&lt;/p>
&lt;ul>
&lt;li>Tactical improvements on ways of working&lt;/li>
&lt;li>Supporting tacit interactions&lt;/li>
&lt;li>Re-imagining institutional practices&lt;/li>
&lt;/ul>
&lt;h2 id="challenges">Challenges&lt;/h2>
&lt;p>Looking across these ideas, there’s a common starting point, in terms of changing basic business processes to make full use of social technology – Hinchcliffe classifies the likely benefits as “&lt;em>finding needed information faster, lowering operational expenditures, higher customer satisfaction/retention, increased productivity, more successful innovation, and reduced travel/communications costs&lt;/em>“.&lt;/p>
&lt;p>However both Hinchcliffe and &lt;a href="https://twitter.com/stoweboyd" target="_blank" rel="noopener">Stowe Boyd&lt;/a> (&lt;a href="https://research.gigaom.com/2015/02/understanding-the-failed-promise-of-social-collaboration/" target="_blank" rel="noopener">Understanding the failed promise of ‘social collaboration’&lt;/a>) warn that the real benefit will come from processes and tools that support “&lt;a href="https://calnewport.com/blog/2012/11/21/knowledge-workers-are-bad-at-working-and-heres-what-to-do-about-it/" target="_blank" rel="noopener">deep work&lt;/a>” – “&lt;em>Cognitively demanding activities that leverage our training to generate rare and valuable results, and that push our abilities to continually improve&lt;/em>“. It may be that this is the area where &lt;a href="https://twitter.com/hjarche" target="_blank" rel="noopener">Harold Jarche&lt;/a>‘s approach to &lt;a href="https://jarche.com/category/pkm/" target="_blank" rel="noopener">Personal Knowledge Management&lt;/a> has most to offer in an organisational context.&lt;/p>
&lt;p>The third level of benefit, the transformation of a business into something that transcends the organisation boundary, is clearly the furthest target of all. Hinchcliffe offers &lt;a href="https://dionhinchcliffe.com/2015/02/05/the-strategic-value-of-social-business-what-weve-learned/" target="_blank" rel="noopener">some clues&lt;/a> though – using social as the starting point for digital transformation, &lt;a href="https://www.zdnet.com/article/twenty-two-power-laws-of-the-emerging-social-economy/" target="_blank" rel="noopener">understanding the 22 power laws underneath social business&lt;/a>, and letting go and &lt;a href="https://dionhinchcliffe.com/2014/08/04/let-the-network-do-the-work/" target="_blank" rel="noopener">letting the network do the work&lt;/a>&lt;/p>
&lt;h3 id="footnote">Footnote&lt;/h3>
&lt;p>Links to annotated versions of the sources via &lt;a href="https://www.diigo.com/user/synesthesia" target="_blank" rel="noopener">my Diigo library&lt;/a>:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://diigo.com/07h9dc" target="_blank" rel="noopener">McKinsey survey&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://diigo.com/07h9f1" target="_blank" rel="noopener">Why fully networked companies get better ROI from social technologies&lt;/a> – Walter Adamson&lt;/li>
&lt;li>&lt;a href="https://diigo.com/07h9h4" target="_blank" rel="noopener">The strategic value of social business&lt;/a> – &lt;a href="https://dionhinchcliffe.com/" target="_blank" rel="noopener">Dion Hinchcliffe&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://diigo.com/07h9i9" target="_blank" rel="noopener">Understanding the failed promise of social collaboration&lt;/a> – &lt;a href="https://twitter.com/stoweboyd" target="_blank" rel="noopener">Stowe Boyd&lt;/a> (via &lt;a href="https://twitter.com/hjarche" target="_blank" rel="noopener">@hjarche&lt;/a>)&lt;/li>
&lt;li>&lt;a href="https://diigo.com/07h9iy" target="_blank" rel="noopener">Knowledge Workers are bad at working&lt;/a> (the ‘deep work’ philosophy)&lt;/li>
&lt;li>&lt;a href="https://diigo.com/07h9k9" target="_blank" rel="noopener">Twenty-two power laws of the emerging social economy&lt;/a> – Dion Hinchcliffe for ZdNet&lt;/li>
&lt;li>&lt;a href="https://diigo.com/07h9kl" target="_blank" rel="noopener">Let the Network do the work&lt;/a> – Dion Hinchcliffe&lt;/li>
&lt;/ul></description></item><item><title>Living without email – quick update</title><link>https://www.synesthesia.co.uk/2015/03/24/living-without-email-quick-update/</link><pubDate>Tue, 24 Mar 2015 20:23:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2015/03/24/living-without-email-quick-update/</guid><description>&lt;p>For quite some time &lt;a href="https://twitter.com/elsua" target="_blank" rel="noopener">Luis Suarez&lt;/a> has been championing a &lt;a href="https://www.elsua.net/tag/life-without-email/" target="_blank" rel="noopener">Life Without Email&lt;/a>, not just on his &lt;a href="https://www.elsua.net/tag/life-without-email/" target="_blank" rel="noopener">blog&lt;/a>, but (amongst other places) in the &lt;a href="https://plus.google.com/communities/112379942033795190661" target="_blank" rel="noopener">Google+ community of the same name&lt;/a>.&lt;/p>
&lt;p>Last month, he &lt;a href="https://plus.google.com/&amp;#43;LuisSuarezElsua/posts/BB9GthyZLTS" target="_blank" rel="noopener">announced a new community in Slack&lt;/a> around the same topic. Why two communities? As he brings out in that G+ post, while the G+ community is very much a Community of Interest, the Slack team is for those people who are both interested and driving initiatives (large or small) to reduce the inefficiencies we all suffer through an over-use of email – a &lt;a href="https://en.wikipedia.org/wiki/Community_of_practice" target="_blank" rel="noopener">Community of Practice&lt;/a>.&lt;/p>
&lt;p>The nature of a practice-based community that’s working well is that people share real experiences, and I’m reticent to copy even my own stuff verbatim. If you are interested, Luis opens the group to all – although as he says with a true sense of irony, he needs an email address to let people in! See the &lt;a href="https://plus.google.com/&amp;#43;LuisSuarezElsua/posts/BB9GthyZLTS" target="_blank" rel="noopener">G+ post for more information&lt;/a>.&lt;/p>
&lt;p>One minor experiment of my own that I’m happy to share, as a quick test of how well it’s going, has been to leave Outlook closed this week. I’ve been aiming to only use webmail and web calendar – and so far it’s working OK – I’ve also noticed that my browser tabs for SharePoint, Yammer and the other services I use during my working day have been open far more often than the mail tabs.&lt;/p>
&lt;p>A long way from the sort of metrics that would be needed at an organisation level, but nevertheless a good quick test…&lt;/p></description></item><item><title>Personal Knowledge Management – why and what</title><link>https://www.synesthesia.co.uk/2015/03/16/personal-knowledge-management-why-and-what/</link><pubDate>Mon, 16 Mar 2015 09:26:06 +0000</pubDate><guid>https://www.synesthesia.co.uk/2015/03/16/personal-knowledge-management-why-and-what/</guid><description>&lt;p>I’m refocusing my study and practice around &lt;a href="https://en.wikipedia.org/wiki/Personal_knowledge_management" target="_blank" rel="noopener">Personal Knowledge Management&lt;/a> (and taking Harold Jarche’s &lt;a href="https://jarche.com/pkm-in-40-days/" target="_blank" rel="noopener">Personal Knowledge mastery in 40 days&lt;/a> course).&lt;/p>
&lt;p>A few short points on the “why and what” of PKM – this is a placeholder post that I will expand with more links over time.&lt;/p>
&lt;h2 id="why-is-personal-knowledge-management-important">Why is Personal Knowledge Management important?&lt;/h2>
&lt;p>In very simple terms, we all need to earn a living, and in the modern workplace some of the most important facets contributing to that are:&lt;/p>
&lt;ul>
&lt;li>what we know&lt;/li>
&lt;li>who we know&lt;/li>
&lt;li>how well we acquire, internalise and apply new knowledge&lt;/li>
&lt;/ul>
&lt;p>Beyond that, there is the change in the nature of work – more and more work is being automated, and not just at the level of manual labour or transaction processing. The jobs that are left will be those where work cannot be standardised, and this sort of work relies heavily on tacit knowledge.&lt;/p>
&lt;p>Harold Jarche has done the homework, here’s his post on “&lt;a href="https://diigo.com/07fhir" target="_blank" rel="noopener">Why mastering personal knowledge is critical to success&lt;/a>”&lt;/p>
&lt;h2 id="what-is-personal-knowledge-management">What is Personal Knowledge Management?&lt;/h2>
&lt;p>In 2009, &lt;a href="https://www.linkedin.com/profile/view?id=30448454" target="_blank" rel="noopener">Jo Smedley&lt;/a>, Newport Business School published “&lt;a href="https://diigo.com/07fh4n" target="_blank" rel="noopener">Modelling Personal Knowledge Management&lt;/a>” which links PKM to experiential learning and communities of practice.&lt;/p>
&lt;p>Harold Jarche offers the &lt;a href="https://jarche.com/2014/02/the-seek-sense-share-framework/" target="_blank" rel="noopener">Seek-Sense-Share&lt;/a> framework as a way of framing and embedding practice. He &lt;a href="https://jarche.com/2012/06/in-networks-cooperation-trumps-collaboration/" target="_blank" rel="noopener">draws the distinction&lt;/a> between &lt;a href="https://jarche.com/2009/06/co-operation-for-networks/" target="_blank" rel="noopener">collaboration (working together on a shared goal) and co-operation (sharing information and knowledge)&lt;/a>, and notes that PKM bridges the gap between work teams, communities of practice and social networks.&lt;/p>
&lt;p>Seeking is about choosing the right sources, and using the right tools to select high quality information. One of the best ways of doing this is to use human filters – people whose views you trust and who share knowledge.&lt;/p>
&lt;p>Sensing is about internalisation and action&lt;/p>
&lt;p>Sharing is the giving back, the act that establishes you as a valuable member of the network in your own right.&lt;/p></description></item><item><title>Twitter List Upkeep</title><link>https://www.synesthesia.co.uk/2015/03/13/twitter-list-upkeep/</link><pubDate>Fri, 13 Mar 2015 10:29:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/2015/03/13/twitter-list-upkeep/</guid><description>&lt;p>Deleted Knowledge and Learning – seemed broken in that Twitter consistently reports 0 members&lt;/p>
&lt;p>Replaced with &lt;a href="https://twitter.com/Synesthesia/lists/km-learning-network" target="_blank" rel="noopener">km+learning+network&lt;/a>&lt;/p>
&lt;p>Created &lt;a href="https://twitter.com/Synesthesia/lists/bi-and-data" target="_blank" rel="noopener">BI and Data&lt;/a>&lt;/p>
&lt;p>Created &lt;a href="https://twitter.com/Synesthesia/lists/devops" target="_blank" rel="noopener">DevOps&lt;/a>&lt;/p>
&lt;p>Created &lt;a href="https://twitter.com/Synesthesia/lists/cloud" target="_blank" rel="noopener">Cloud&lt;/a>&lt;/p>
&lt;p>Created &lt;a href="https://twitter.com/Synesthesia/lists/id-accessmanagement" target="_blank" rel="noopener">ID+AccessManagement&lt;/a>&lt;/p></description></item><item><title>Whole new month!</title><link>https://www.synesthesia.co.uk/note/2015/03/02/whole-new-month/</link><pubDate>Mon, 02 Mar 2015 07:23:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2015/03/02/whole-new-month/</guid><description>&lt;p>Looking at &lt;a href="https://openid.net/connect/" target="_blank" rel="noopener">identity&lt;/a>&lt;/p></description></item><item><title>Email makes you stupid – so what can we do about it?</title><link>https://www.synesthesia.co.uk/2015/02/27/email-makes-you-stupid-so-what-can-we-do-about-it/</link><pubDate>Fri, 27 Feb 2015 08:48:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/2015/02/27/email-makes-you-stupid-so-what-can-we-do-about-it/</guid><description>&lt;p style="text-align: justify;">
&lt;a href="https://www.elsua.net/">Luis Suarez&lt;/a> (&lt;a href="https://twitter.com/elsua">@elsua&lt;/a>), curator of the &lt;a href="https://plus.google.com/communities/112379942033795190661">Life without eMail&lt;/a> G+ community, has posted a Vodcast co-presented with &lt;a href="https://claireburge.com/">Claire Burge&lt;/a> (&lt;a href="https://twitter.com/claireburge">@claireburge&lt;/a>)
&lt;/p>
&lt;p>Here’s the full video:&lt;/p>
&lt;p>&lt;span style="font-size: 12pt;">30)&lt;/span> &lt;!-- iframe plugin v.4.4 wordpress.org/plugins/iframe/ -->&lt;/p>
&lt;iframe src="https://www.youtube.com/embed/cWJ_kiD2dUc" width="60%" height="500" scrolling="yes" class="iframe-class" frameborder="0">&lt;/iframe>
&lt;p>Here are my notes on the highlights of what Luis and Claire think is wrong with email:&lt;/p>
&lt;p>“&lt;a href="https://www.youtube.com/watch?v=cWJ_kiD2dUc&amp;amp;feature=youtu.be&amp;amp;t=3m02s" target="_blank" rel="noopener">Email creates a dumber workforce&lt;/a>” (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=3m02s" target="_blank" rel="noopener">3:02&lt;/a>), because (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=4m02s" target="_blank" rel="noopener">4:02&lt;/a>) the structure of email forces an obsession with emptying the inbox without action.&lt;/p>
&lt;p>&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=4m59s" target="_blank" rel="noopener">Email is a selfish tool&lt;/a> (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=4m59s" target="_blank" rel="noopener">4:59&lt;/a>) – centred around individual, not team or company goals (because you cannot see the impact of your email on the other person’s workload).&lt;/p>
&lt;p>&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=7m20s" target="_blank" rel="noopener">Email doesn’t help people focus&lt;/a> on work (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=7m20s" target="_blank" rel="noopener">7:20&lt;/a>) – it misdirects focus and attention. Stuff just flows in, recipient is expected to filter and sort (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=7m45s" target="_blank" rel="noopener">7:45&lt;/a>). People don’t have time, so fall back to just emptying the inbox and treating their email as a task list. This leads to &lt;a href="https://youtu.be/cWJ_kiD2dUc?t=8m10s" target="_blank" rel="noopener">inefficiency through constant task-switching&lt;/a> (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=8m10s" target="_blank" rel="noopener">8:10&lt;/a>).&lt;/p>
&lt;p>The inefficiencies are not about the technology, but about the human behaviours it engenders (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=8m58s" target="_blank" rel="noopener">8:58&lt;/a>).&lt;/p>
&lt;p>[more and more] people justify their workload by how many emails they process (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=9m22s" target="_blank" rel="noopener">9:22&lt;/a>) – so if we take away the email you they have nothing to do. The implication (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=10m27s" target="_blank" rel="noopener">10:27&lt;/a>) is that &lt;a href="https://youtu.be/cWJ_kiD2dUc?t=10m27s" target="_blank" rel="noopener">all the company knowledge, contacts, content and tasks are locked in email&lt;/a>&lt;/p>
&lt;p>Email gets used as a tool for covertly managing staff (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=10m45s" target="_blank" rel="noopener">10:45&lt;/a>) – yes some interactions need to be confidential, but most aren’t.&lt;/p>
&lt;p>Knowledge is power (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=11m25s" target="_blank" rel="noopener">11:25&lt;/a>) – share as little as possible. Which means (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=12m09s" target="_blank" rel="noopener">12:09&lt;/a>) that &lt;a href="https://youtu.be/cWJ_kiD2dUc?t=12m09s" target="_blank" rel="noopener">when someone leaves the company, much of the knowledge they created is lost&lt;/a>.&lt;/p>
&lt;p>In an increasingly-complex world, &lt;a href="https://youtu.be/cWJ_kiD2dUc?t=12m48s" target="_blank" rel="noopener">email is no longer an effective productivity tool&lt;/a> (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=12m48s" target="_blank" rel="noopener">12:48&lt;/a>) – nowadays the environment is complex – multi-project, multi-team, multi-geo – this means companies need open collaboration (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=13m36s" target="_blank" rel="noopener">13:36&lt;/a>) which email cannot provide. Email has been around so long (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=13m50s" target="_blank" rel="noopener">13:50&lt;/a>) that people are scared to try other things. &lt;a href="https://youtu.be/cWJ_kiD2dUc?t=15m08s" target="_blank" rel="noopener">Email doesn’t engender the behaviours we need to be effective in the modern business world&lt;/a> (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=15m08s" target="_blank" rel="noopener">15:08&lt;/a>).&lt;/p>
&lt;p>Some behaviours need to be unlearned, some need to be taken from email to a new environment (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=15m27s" target="_blank" rel="noopener">15:27&lt;/a>):&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=15m40s" target="_blank" rel="noopener">Email is used to manage people in a bad way&lt;/a> (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=15m40s" target="_blank" rel="noopener">15:40&lt;/a>), and this is getting carried through into a collaborative environment (“big brother”). Example of team who put completed work on their task list so management don’t think they have been idle.&lt;/li>
&lt;li>Social networks expose the underlying behaviours (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=17m38s" target="_blank" rel="noopener">17:38&lt;/a>) (ref &lt;a href="https://twitter.com/hjarche/status/567769267501006848" target="_blank" rel="noopener">@hjarche&lt;/a>), and will help identify a dysfunctional corporate culture – some are threatened by this, but (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=18m15s" target="_blank" rel="noopener">18:15&lt;/a>) it’s an opportunity to surface issues which the leadership need to tackle&lt;/li>
&lt;li>Bad behaviour stems from leadership (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=20m34s" target="_blank" rel="noopener">20:34&lt;/a>) – and the behaviour of leaders on social tools will determine how the rest of the company behave&lt;/li>
&lt;li>Collaborative platforms make people accountable to each other, but allows people to expose their vulnerabilities (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=21m34s" target="_blank" rel="noopener">21:34&lt;/a>) – which &lt;a href="https://youtu.be/cWJ_kiD2dUc?t=22m40s" target="_blank" rel="noopener">takes courage from (especially) the senior people&lt;/a> (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=22m40s" target="_blank" rel="noopener">22:40&lt;/a>)&lt;/li>
&lt;li>The critical importance of leadership behaviours (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=24m25s" target="_blank" rel="noopener">24:25&lt;/a> onwards), the &lt;a href="https://youtu.be/cWJ_kiD2dUc?t=26m10s" target="_blank" rel="noopener">importance of active engaged (and engaging) managers&lt;/a> (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=26m10s" target="_blank" rel="noopener">26:10&lt;/a>), and &lt;a href="https://youtu.be/cWJ_kiD2dUc?t=26m26s" target="_blank" rel="noopener">heroic leadership&lt;/a> that can expose their own flaws (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=26m26s" target="_blank" rel="noopener">26:25&lt;/a>)&lt;/li>
&lt;/ul>
&lt;p>Deep parallel between closed inbox mindset and static fixed job descriptions. What results is a series of blockages to the flow of work. (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=27m30s" target="_blank" rel="noopener">27:30&lt;/a>)&lt;/p>
&lt;p>Collaborative environment &lt;a href="https://youtu.be/cWJ_kiD2dUc?t=27m56s" target="_blank" rel="noopener">exposes the blocks&lt;/a>, (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=27m56s" target="_blank" rel="noopener">27:56&lt;/a>) but this leads to enquiry into the root causes of blockages, making it &lt;a href="https://youtu.be/cWJ_kiD2dUc?t=28m24s" target="_blank" rel="noopener">about the flow of work rather than about the person&lt;/a> (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=28m24s" target="_blank" rel="noopener">28:24&lt;/a>)&lt;/p>
&lt;p>&lt;span style="font-size: 12pt;">But, &lt;a href="https://youtu.be/cWJ_kiD2dUc?t=29m08s">if you keep evolving the process to make the work better, then the job descriptions have to keep evolving too&lt;/a> (&lt;a href="https://youtu.be/cWJ_kiD2dUc?t=29m08s">29:08&lt;/a>)&lt;br /> &lt;/span>&lt;/p></description></item><item><title>Social Bookmarking</title><link>https://www.synesthesia.co.uk/2015/02/23/social-bookmarking/</link><pubDate>Mon, 23 Feb 2015 09:05:21 +0000</pubDate><guid>https://www.synesthesia.co.uk/2015/02/23/social-bookmarking/</guid><description>&lt;p>Going back to basics, but on the principle of &lt;a href="https://scripting.com/stories/2009/08/09/narrateYourWork.html" target="_blank" rel="noopener">narrating my work&lt;/a>, here’s a short post I published today inside the firewall…&lt;/p>
&lt;h2 id="what-is-it">What is it?&lt;/h2>
&lt;p>Most people will be familiar with the idea of “bookmarks” (aka “favourites”) in a web browser – the menu option on &lt;a href="https://windows.microsoft.com/en-gb/internet-explorer/add-view-organize-favorites" target="_blank" rel="noopener">IE&lt;/a>, &lt;a href="https://support.google.com/chrome/answer/95739" target="_blank" rel="noopener">Chrome&lt;/a>, &lt;a href="https://www.wikihow.com/Add-a-Bookmark-in-Safari" target="_blank" rel="noopener">Safari&lt;/a>, &lt;a href="https://support.mozilla.org/en-US/kb/create-bookmarks-save-your-favorite-webpages" target="_blank" rel="noopener">Firefox&lt;/a> etc. to save the site links that I use most often, or find most interesting.&lt;/p>
&lt;p>Social Bookmarking tools take this idea and extend it in ways that are not only useful to me as an individual, but which also make it simple to share links with other people.&lt;/p>
&lt;p>At their simplest they are a web application to which you can add links (and they mostly provide little browser plugins that mean you can do it inside your browser). Two of the best known examples are &lt;a href="https://www.diigo.com/" target="_blank" rel="noopener">Diigo&lt;/a> and &lt;a href="https://delicious.com/" target="_blank" rel="noopener">Delicious&lt;/a>, and each of these also allow options such as tagging, marking links as private etc.&lt;/p>
&lt;p>Beyond that, different services off different features, for example Diigo provides extended capabilities to annotate and highlight web pages&lt;/p>
&lt;h2 id="why-would-i-want-to-use-it">Why would I want to use it?&lt;/h2>
&lt;p>At a personal level, keeping links in a social bookmark service means that I can:&lt;/p>
&lt;ul style="margin-left: 38pt;">
&lt;li>
access my bookmarks wherever I am,
&lt;/li>
&lt;li>
access my bookmarks on whatever device I am using to browse the web
&lt;/li>
&lt;li>
use tagging to organise my bookmarks
&lt;/li>
&lt;/ul>
&lt;p>Beyond the personal use, these tools have even more value when I work as part of a group or team:&lt;/p>
&lt;ul>
&lt;li>choosing to follow other people’s bookmarks, as a way of using their knowledge as an intelligent filter of the “firehose” of information on the web&lt;/li>
&lt;li>choosing to use specific tags for sharing information within a team&lt;/li>
&lt;li>on some platforms, forming groups (private or open) into which I can post bookmarks and comments&lt;/li>
&lt;/ul>
&lt;h2 id="social-bookmarking-in-a-learning-context">Social Bookmarking in a learning context&lt;/h2>
&lt;p>One model for thinking about how individuals can best manage and create knowledge in a networked environment is &lt;a href="https://jarche.com/about/" target="_blank" rel="noopener">Harold Jarche&lt;/a>‘s “&lt;a href="https://jarche.com/2014/02/the-seek-sense-share-framework/" target="_blank" rel="noopener">Seek Sense Share&lt;/a>” framework.&lt;/p>
&lt;p>Social Bookmarking is a key part of &lt;strong>Seeking&lt;/strong> – “finding things out and keeping up to date”. The social aspect supports the practice of finding colleagues or commentators whose judgement I trust, and who I can use as “information filters”.&lt;/p>
&lt;h2 id="other-resources">Other Resources&lt;/h2>
&lt;p>&lt;a href="https://www.diigo.com/about" target="_blank" rel="noopener">Diigo About Page&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://delicious.com/help" target="_blank" rel="noopener">Delicous.com FAQ page&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/Social_bookmarking" target="_blank" rel="noopener">Social Bookmarking on Wikipedia&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www.diigo.com/user/synesthesia" target="_blank" rel="noopener">My public links on Diigo&lt;/a>&lt;/p></description></item><item><title>Aha!</title><link>https://www.synesthesia.co.uk/note/2015/02/19/a-mixture-of-stuff/</link><pubDate>Thu, 19 Feb 2015 09:24:49 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2015/02/19/a-mixture-of-stuff/</guid><description>&lt;p>Contract review and markup with potential new supplier&lt;/p>
&lt;p>word, sharepoint still good tools for that sort of thing!&lt;/p>
&lt;p>setting up some sample products in &lt;a href="https://aha.io/" target="_blank" rel="noopener">Aha!&lt;/a>&lt;/p>
&lt;p>so far really liking the structure and the UI of the product&lt;/p></description></item><item><title>Today seems to be about knowledge management</title><link>https://www.synesthesia.co.uk/note/2015/02/18/today-seems-to-be-about-knowledge-management/</link><pubDate>Wed, 18 Feb 2015 09:00:45 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2015/02/18/today-seems-to-be-about-knowledge-management/</guid><description>&lt;p>Talking &lt;a href="https://jarche.com/category/pkm/" target="_blank" rel="noopener">PKM&lt;/a> with my CEO…&lt;/p>
&lt;p>Talking to a colleague about their experience with &lt;a href="https://www.curatr3.com/" target="_blank" rel="noopener">Curatr&lt;/a>&lt;/p>
&lt;p>Signing up to &lt;a href="https://jarche.com/pkm-in-40-days/" target="_blank" rel="noopener">PKM in 40 days&lt;/a>&lt;/p></description></item><item><title>An experiment in working aloud</title><link>https://www.synesthesia.co.uk/2015/02/17/an-experiment-in-working-aloud/</link><pubDate>Tue, 17 Feb 2015 15:25:21 +0000</pubDate><guid>https://www.synesthesia.co.uk/2015/02/17/an-experiment-in-working-aloud/</guid><description>&lt;p>As part of the site revamp, I wanted a place where I could put “&lt;a href="https://scripting.com/stories/2009/08/09/narrateYourWork.html" target="_blank">narrating my work&lt;/a>” type posts that were outside of the main site flow – the nature of these are that they are often quick and partial, and I find having them in the main flow inhibits my writing.&lt;/p>
&lt;p>The obvious place to start, was with a Custom Post Type, but unfortunately most of the things I use to write to this site (Word and the WordPress iOS app) don’t support CPTs.&lt;/p>
&lt;p>A bit of digging, and I think I may have a workflow – certainly something I’m willing to try for a while:&lt;/p>
&lt;ul>
&lt;li>writing in &lt;a href="https://fargo.io/" target="_blank">Fargo&lt;/a> – &lt;a href="https://twitter.com/davewiner" target="_blank">Dave Winer&lt;/a>‘s nifty in-browser outliner&lt;/li>
&lt;li>import of posts via RSS using &lt;a href="https://feedwordpress.radgeek.com/" target="_blank">FeedWordpress&lt;/a>, posting as a custom post type (I love that you can choose a different CPT per feed if you wish)&lt;/li>
&lt;li>a simplified theme design for the &lt;a href="https://www.synesthesia.co.uk/worknotes/">Working Aloud&lt;/a> area of the site&lt;/li>
&lt;/ul>
&lt;p>Now I just need to use it….&lt;/p>
&lt;p> &lt;/p></description></item><item><title>Trying out Fargo</title><link>https://www.synesthesia.co.uk/note/2015/02/17/trying-out-fargo/</link><pubDate>Tue, 17 Feb 2015 09:18:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/note/2015/02/17/trying-out-fargo/</guid><description>&lt;p>Fargo is an outliner in the cloud&lt;/p>
&lt;p>Uses Dropbox for data persistence&lt;/p>
&lt;p>You can publish a document as a web site via &lt;a href="https://synesthesiaworknotes.smallpict.com/2015/02/17/smallpict.com" target="_blank" rel="noopener">smallpict.com&lt;/a>&lt;/p>
&lt;p>I’m using FeedPress to insert the RSS feed of the published site as custom post types in my WordPress site&lt;/p>
&lt;p>Have set up through workflow that publishes on my site&lt;/p>
&lt;p>TODO investigate &lt;a href="https://github.com/scripting/fargoPublisher" target="_blank" rel="noopener">Fargo Publisher&lt;/a> – does this potentially let me run the toolchain independently of the (generously, free) service at Small Picture?&lt;/p>
&lt;p>See &lt;a href="https://fargo.io/docs/contentManagement/runningYourOwnServer.html" target="_blank" rel="noopener">this&lt;/a>&lt;/p></description></item><item><title>Email – what’s right with it?</title><link>https://www.synesthesia.co.uk/2015/02/06/email-whats-right-with-it/</link><pubDate>Fri, 06 Feb 2015 12:58:19 +0000</pubDate><guid>https://www.synesthesia.co.uk/2015/02/06/email-whats-right-with-it/</guid><description>&lt;p>No tool is all good or all bad, so following on from “&lt;a href="https://www.synesthesia.co.uk/2015/02/06/email-whats-wrong-with-it/" target="_blank" rel="noopener">Email – what’s wrong with it?&lt;/a>“, here are some of the reasons why it is useful:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Email is almost ubiquitous&lt;/p>
&lt;/li>
&lt;li>
&lt;p>… has been around a long time, so almost everyone (in a work world) knows how to use it (or &lt;a href="https://www.wsj.com/articles/SB105405850262272400" target="_blank" rel="noopener">thinks&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www.shoosmiths.co.uk/client-resources/legal-updates/Going-viral-misuse-of-work-emails-4789.aspx" target="_blank" rel="noopener">they&lt;/a> do)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>… allows asynchronous communication, especially with offline workers (actually so do other technologies)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>… is well-suited to notification-type communications&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>I’ve run out of ideas – please feel free to add comments…&lt;/p></description></item><item><title>Email – what’s wrong with it?</title><link>https://www.synesthesia.co.uk/2015/02/06/email-whats-wrong-with-it/</link><pubDate>Fri, 06 Feb 2015 12:37:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2015/02/06/email-whats-wrong-with-it/</guid><description>&lt;p>Many have written on the issues that email causes, here are some highlights:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Email soaks up time – e.g. McKinsey in 2012 reckoned 30% of average office worker’s week was spent &lt;a href="https://www.mckinsey.com/insights/high_tech_telecoms_internet/the_social_economy" target="_blank" rel="noopener">reading and answering email&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>… makes people &lt;a href="https://99u.com/workbook/16527/why-emailing-gives-you-a-false-sense-of-progress" target="_blank" rel="noopener">feel they are being productive (when they are not)&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>… locks up information in &lt;a href="https://www.forbes.com/sites/brentgleeson/2013/10/02/the-silo-mentality-how-to-break-down-the-barriers/" target="_blank" rel="noopener">silos&lt;/a> – a lot of company knowledge creation is carried out in email threads visible only to those involved, and almost impossible for anyone else to discover, leading to duplication of work,&lt;/p>
&lt;/li>
&lt;li>
&lt;div>
… is exclusive, with conversations only open to those who the sender sought to include
&lt;/div>
&lt;ul>
&lt;li>which can lead to lower quality work, because the conversation does not necessarily include the right people&lt;/li>
&lt;li>and which completely prevents&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>… is intrusive – when you send me an email you force my attention to your issue, interrupting my thoughts&lt;/p>
&lt;/li>
&lt;li>
&lt;p>… is a terrible way to share lists of actions (especially if they are buried in an email chain&lt;/p>
&lt;/li>
&lt;li>
&lt;p>… spawns and propagates some of the worst forms of office politics with the use of &lt;a href="https://www.wsj.com/articles/SB105405850262272400" target="_blank" rel="noopener">cc and bcc&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Lastly, no list of the things wrong with email would be a complete without a reference to &lt;a href="https://www.elsua.net/tag/life-without-email/" target="_blank" rel="noopener">Luis Suarez&lt;/a> and his six+ year experiment on living and working without email. A good place to start is his summary post “&lt;a href="https://www.elsua.net/2013/07/17/life-without-email-year-6-weeks-21-to-24-newcomer-challenging-for-king-emails-crown/" target="_blank" rel="noopener">Life without email – year 6, weeks 21 to 24&lt;/a>“&lt;/p></description></item><item><title>Communication, Collaboration and Community</title><link>https://www.synesthesia.co.uk/2015/02/03/communication-collaboration-and-community/</link><pubDate>Tue, 03 Feb 2015 14:30:02 +0000</pubDate><guid>https://www.synesthesia.co.uk/2015/02/03/communication-collaboration-and-community/</guid><description>&lt;p> &lt;/p>
&lt;p>A placeholder for some areas where I want to refresh my knowledge of current thinking&lt;/p>
&lt;ul>
&lt;li>Communication, collaboration and community in online networks – what builds social capital? And what else?&lt;/li>
&lt;li>Gamification as a tool for motivating productive behaviour in online networks&lt;/li>
&lt;li>The factors that balance individual skill / knowledge with social capital within organisations and professions&lt;/li>
&lt;/ul>
&lt;p> &lt;/p></description></item><item><title>Back to basics</title><link>https://www.synesthesia.co.uk/2014/01/06/back-to-basics/</link><pubDate>Mon, 06 Jan 2014 09:29:45 +0000</pubDate><guid>https://www.synesthesia.co.uk/2014/01/06/back-to-basics/</guid><description>&lt;p>A blog redesign, and a metaphor for 2014…&lt;/p>
&lt;p>I decided a while ago that my blog theme had become just too &lt;em>complicated&lt;/em> – over the years I had added more and more “good ideas” until the page was utterly swamped in widgets.&lt;/p>
&lt;p>So I’m trying to get back to basics with a stripped down theme. Perhaps it will stimulate me to write a bit more?&lt;/p>
&lt;p>The complete lack of posts in 2013, and almost complete lack in 2012, are a reflection of what was going on in my professional life. During 2012 the organisation I had been with for two years folded, only to rise again in the form of a management buyout. We’ve had a great start, and are thriving now. My personal challenge has been to bootstrap an information infrastructure from almost nothing – we started with a legacy database and the laptops we bought from the administrators, nothing else, not even an internet connection for the first  month.&lt;/p>
&lt;p>Thanks to a cloud-first strategy we have made huge leaps forward, and the business is doing well. Basic collaboration tooling has all been delivered using public cloud offerings, and we are in the middle of migrating our core line of business app to a SAAS platform.&lt;/p>
&lt;p>“Back to basics” has become a mantra, as we seek to deliver as much as we can with a close eye on costs. it’s also become something of a personal theme – in the face of necessity I have had to get closer to the technology than I had been for years in other management jobs. I have found that writing code is deeply satisfying, I have rediscovered my inner Builder. (In the spirit of “cobbler’s children”, that also means this site will be highly-lacking in fancy code-ness!).&lt;/p>
&lt;p>In a more reflective mood this has led me to wonder why we so often associate “seniority” with becoming distant from the tools of the job? In large organisations it makes sense that as the volume of resources you have to manage becomes larger you spend time managing teams of teams of teams. But I’d argue that in the SME world a different sort of technology leader is needed – I think it’s much more like being the Chief Engineer of a ship – you have limited resources, but you still have to make the thing work, and keep working. Sometimes that’s about finding the right partners, and managing them well, but sometimes you have to roll up your sleeves and write the thing yourself!&lt;/p>
&lt;p>“Back to basics” is also a reminder to myself of the simple processes that keep work flowing and a sense of control – Kanban and GTD in particular.&lt;/p></description></item><item><title>Can paragogy help technology production?</title><link>https://www.synesthesia.co.uk/2012/01/30/can-paragogy-help-technology-production/</link><pubDate>Mon, 30 Jan 2012 15:10:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/2012/01/30/can-paragogy-help-technology-production/</guid><description>&lt;p>&lt;strong>A sticky idea…&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://www.rheingold.com/" target="_blank" rel="noopener">Howard Rheingold&lt;/a> has thrown up a new idea – &lt;a href="https://socialmediaclassroom.com/host/peeragogy/" target="_blank" rel="noopener">Peeragogy&lt;/a> – which has found a sticky resting place in my brain.&lt;/p>
&lt;p>In a &lt;a href="https://dmlcentral.net/blog/howard-rheingold/toward-peeragogy" target="_blank" rel="noopener">blog post&lt;/a> written as a pre-cursor to his &lt;a href="https://vimeo.com/35685124" target="_blank" rel="noopener">2011 Regents’ Lecture at the University of California, Berkeley&lt;/a> he reflects on his experience to date with collaborative learning, and sets out the stall for his next project – to collaboratively create a guide to collaborative peer-to-peer learning:&lt;/p>
&lt;blockquote cite="https://dmlcentral.net/blog/howard-rheingold/toward-peeragogy">
&lt;p>
I&amp;#8217;m calling it &amp;#8220;peeragogy.&amp;#8221; While &amp;#8220;paragogy&amp;#8221; is more etymologically correct, &amp;#8220;peeragogy&amp;#8221; is self-explanatory. In my lecture, I&amp;#8217;ll explain the evolution of my own pedagogy and reveal some of what I&amp;#8217;ve discovered in the world of online self-organized learning. Then I will invite volunteers to join me in a two week hybrid of face-to-face seminars and online discussion. Can we self-organize our research, discover, summarize, and prioritize what is known through theory and practice, then propose, argue, and share a tentative resource guide for peeragogical groups? In theory, those who use our guide to pursue their own explorations can edit the guide to reflect new learning.
&lt;/p>
&lt;/blockquote>
&lt;p>This idea has definitely struck a chord with me – and slightly tongue in cheek I &lt;a href="https://twitter.com/#!/Synesthesia/status/162805877710143488" target="_blank" rel="noopener">tweeted&lt;/a>:&lt;/p>
&lt;blockquote cite="https://twitter.com/#!/Synesthesia/status/162805877710143488">
&lt;p>
Is it me, or is &lt;a href="https://twitter.com/#!/search?q=%23peeragogy">#peeragogy&lt;/a> about doing learning in the way a lot of &amp;#8220;real&amp;#8221; work is done?
&lt;/p>
&lt;/blockquote>
&lt;p>&lt;strong>More going on&lt;/strong>&lt;/p>
&lt;p>As is so often the way, I then read further to discover that someone else had not only spotted the connection but grounded it with references. Rheingold acknowledges the work of &lt;a href="https://metameso.org/~joe/" target="_blank" rel="noopener">Joe Corneli&lt;/a> and &lt;a href="https://mr.danoff.org/" target="_blank" rel="noopener">Charles Danoff&lt;/a>, who have termed this area of study Paragogy, have co-authored a &lt;a href="https://metameso.org/~joe/docs/paragogy-final.pdf" target="_blank" rel="noopener">paper&lt;/a> on it, and are &lt;a href="https://paragogy.net/" target="_blank" rel="noopener">writing a book&lt;/a>. In their paper Corneli and Danoff make an explicit link between Paragogy and Peer Production.&lt;/p>
&lt;p>&lt;strong>Relating this to technology production&lt;/strong>&lt;/p>
&lt;p>When I &lt;a href="https://twitter.com/#!/Synesthesia/status/162805877710143488" target="_blank" rel="noopener">tweeted&lt;/a>, what I had in mind were the complex loops of idea exchange implicit in any kind of technical product development (either for external customers or internal company users):&lt;/p>
&lt;p> &lt;/p>
&lt;div id="creately-container-gy1jxwd72-VzEoUElf2ZSTXW0IQ3mzpbBcn7M=">
&lt;/div>
&lt;p>Most, if not all, of these conversations imply some sort of mutual learning:&lt;/p>
&lt;ul>
&lt;li>what sorts of things might surprise, delight or downright disappoint the customer/user&lt;/li>
&lt;li>what sort of product and business model might work&lt;/li>
&lt;li>what are the technical options&lt;/li>
&lt;li>what does the industry provide&lt;/li>
&lt;li>how can we adapt the current technology to meet the needs&lt;/li>
&lt;li>what would we like the industry to develop next&lt;/li>
&lt;li>and so on…..&lt;/li>
&lt;/ul>
&lt;p>If &lt;a href="https://socialenterprisetoday.com/blog/posts/The-Future-of-Work-Is-Learning/" target="_blank" rel="noopener">the future of work is learning&lt;/a>, or more bluntly &lt;a href="https://www.jarche.com/2010/10/work-is-learning-so-what/" target="_blank" rel="noopener">work is learning- so what&lt;/a>, how can we exploit the developments in paragogical theory and practice to make such work work better?&lt;/p>
&lt;p>&lt;strong>My questions&lt;/strong>&lt;/p>
&lt;p>it’s &lt;a href="https://en.wikipedia.org/wiki/Turtles_all_the_way_down" target="_blank" rel="noopener">turtles all the way down&lt;/a>, but a few starter questions that spring to mind are:&lt;/p>
&lt;ul>
&lt;li>does treating these processes as learning exercises lead to better performance? (and how might we measure that?)&lt;/li>
&lt;li>what support do teams need to surface learning goals around their work?&lt;/li>
&lt;li>what team and organisation culture will best support rapid learning?&lt;/li>
&lt;li>how beneficial is it to make the learning explicit?&lt;/li>
&lt;/ul>
&lt;p>Right now this is mostly a “lightbulb” – I need to do more thinking and have some dialogue to explore further.&lt;/p>
&lt;p>if any of this strikes a chord with you, please comment.&lt;/p>
&lt;div class="zemanta-pixie" style="margin-top: 10px; height: 15px;">
&lt;img class="zemanta-pixie-img" style="border: none; float: right;" src="https://img.zemanta.com/pixy.gif?x-id=d0c617e7-0be2-4439-bfc3-b3dad1250ca9" alt="" />
&lt;/div></description></item><item><title>DWP Process Failure</title><link>https://www.synesthesia.co.uk/2012/01/23/dwp-process-failure/</link><pubDate>Mon, 23 Jan 2012 13:47:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/2012/01/23/dwp-process-failure/</guid><description>&lt;p>How many times do you have to tell the Government something?&lt;figure style="width: 300px" class="wp-caption aligncenter">&lt;/p>
&lt;p>&lt;a href="https://commons.wikipedia.org/wiki/File:Westminster_palace.jpg" target="_blank" rel="noopener">&lt;img class="zemanta-img-inserted zemanta-img-configured " title="English: Westminster Palace in London, The Gre..." src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Westminster_palace.jpg/300px-Westminster_palace.jpg" alt="English: Westminster Palace in London, The Gre..." width="300" height="225" />&lt;/a>&lt;figcaption class="wp-caption-text">Image via Wikipedia&lt;/figcaption>&lt;/figure>&lt;/p>
&lt;p>Recently, my mother died, so it fell to me to inform a number of organisations, including the &lt;a href="https://www.dwp.gov.uk/" target="_blank">Department of Work and Pensions&lt;/a> (&lt;a href="https://www.dwp.gov.uk/" target="_blank">DWP&lt;/a>).&lt;/p>
&lt;p>I knew that I would also need statements from them of any benefits that had been over-paid, as these would become a debt of her estate, something you need to list when seeking &lt;a href="https://www.direct.gov.uk/en/Governmentcitizensandrights/Death/Preparation/DG_10029799" target="_blank">probate&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Encounter One&lt;/strong>&lt;/p>
&lt;p>The registrar told me about a new government service “&lt;a href="https://www.direct.gov.uk/en/Nl1/Newsroom/DG_188740" target="_blank">Tell Us Once&lt;/a>”, it seemed someone had (at last) had a good idea. I phoned them that evening, and they were polite and efficient in taking all the details.&lt;/p>
&lt;p>I explained that I wanted a written statement of any overpaid benefits, and they suggested that if I wanted to move things along, I should speak to the DWP Bereavement Service – another “&lt;a href="https://www.direct.gov.uk/en/Nl1/Newsroom/DG_188740" target="_blank">good idea&lt;/a>” which Pensions Minister &lt;a href="https://www.dwp.gov.uk/about-dwp/ministers/#sw" target="_blank">Steve Webb&lt;/a> is quoted as saying will “&lt;a href="https://www.dwp.gov.uk/newsroom/press-releases/2011/mar-2011/dwp029-11.shtml" target="_blank">cut all unnecessary red tape&lt;/a>”.&lt;/p>
&lt;p>The Bereavement Service were also polite and helpful, and they said a letter showing what benefits had been overpaid would be sent within a week.&lt;/p>
&lt;p>&lt;strong>Encounter Two&lt;/strong>&lt;/p>
&lt;p>****Of course, a week later, no letter, so I phoned them again. They apologised and said the letter would be out within a week.&lt;/p>
&lt;p>This time a letter arrived, but it only mentioned two of the three benefits that I knew my mother had been receiving. The letter instructed me to call them back with any questions, and said that “later” i would get a letter from the Debt Management department telling me how to repay.&lt;/p>
&lt;p>&lt;strong>Encounter Three&lt;/strong>&lt;/p>
&lt;p>I phoned back, only to be told that the team only dealt with “new” deaths, so I would need to speak to the main DWP contact centre.&lt;/p>
&lt;p>I phoned them, to be told that they only dealt with State Pension and Pension Credit and that Attendance Allowance was an entirely different part of the DWP, on a different number.&lt;/p>
&lt;p>So I phoned the new number, listened to yet another &lt;a href="https://en.wikipedia.org/wiki/Interactive_voice_response" target="_blank">IVR&lt;/a> telling me this was the number for Attendance Allowance, selected the option for “Talk to us about a death” and got routed ….. to the original Bereavement Service.&lt;/p>
&lt;p>They helpfully told me to ring the same number but “choose option 3”, which I did, and spoke to someone who could tell me the exact amount of the overpayment, but who could not produce a letter for me, as that was “the job of the Debt Management department”. They did tell me the number to phone, and told me the matter was referred by them to the Debt Management department on the 5th of January (this conversation was on the 19th).&lt;/p>
&lt;p>So I made the 5th successive call to the DWP, to speak to the Debt Management department. They were very polite, but could not find any trace of the information on their computer. I told them that it had been referred to them on the 5th, so surely there must be a record of that? Oh no – that was “far too soon” for it to have been put onto their system.&lt;/p>
&lt;p>They offered to email the team that “put things on the computer” (presumably by copying from another computer). I asked how long I should leave it before chasing again, to be told a week would be sensible to allow before it might be on their system&lt;/p>
&lt;p>And after that, how long to get what I wanted, a simple letter showing how much overpayment had been made? About another month apparently.&lt;/p>
&lt;p>&lt;strong>This way, madness lies&lt;/strong>&lt;/p>
&lt;p>This whole process has been (of course) irritating and frustrating, but also symptomatic of terrible waste.&lt;/p>
&lt;p>Hard to tell from the outside of course, but this feels like over-specialisation, and a system drowning in &lt;a href="https://en.wikipedia.org/wiki/Failure_demand" target="_blank">failure demand&lt;/a>&lt;/p>
&lt;p>Has anyone else had similar experiences?&lt;/p>
&lt;p>More interestingly, has anyone had any experience on the inside who is prepared to comment?&lt;/p>
&lt;p>I wonder what &lt;a href="https://en.wikipedia.org/wiki/John_Seddon" target="_blank">John Seddon&lt;/a> would make of this?&lt;/p>
&lt;div class="zemanta-pixie" style="margin-top: 10px; height: 15px;">
&lt;img class="zemanta-pixie-img" style="border: none; float: right;" src="https://img.zemanta.com/pixy.gif?x-id=c68dac5e-2dc3-4857-ba4d-69a609ae9eb0" alt="" />
&lt;/div></description></item><item><title>Cloud Security Conference – The Cloud Circle</title><link>https://www.synesthesia.co.uk/2011/12/03/cloud-security-conference-the-cloud-circle/</link><pubDate>Sat, 03 Dec 2011 09:35:19 +0000</pubDate><guid>https://www.synesthesia.co.uk/2011/12/03/cloud-security-conference-the-cloud-circle/</guid><description>&lt;div class="mceTemp">
&lt;dl class="wp-caption zemanta-img aligncenter" style="width: 310px;">
&lt;dt class="wp-caption-dt">
&lt;a href="https://commons.wikipedia.org/wiki/File:Cloud_computing.jpg">&lt;img class="zemanta-img-inserted zemanta-img-configured" title="English: Diagram showing overview of cloud com..." src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/Cloud_computing.jpg/300px-Cloud_computing.jpg" alt="English: Diagram showing overview of cloud com..." width="300" height="203" />&lt;/a>
&lt;/dt>
&lt;/dl>
&lt;/div>
&lt;p>I spent a mind-stretching few hours yesterday at the &lt;a href="https://www.thecloudcircle.com/event/2nd-cloud-circle-security-conference" target="_blank">Cloud Security Conference&lt;/a> organised by &lt;a href="https://www.thecloudcircle.com/" target="_blank">The Cloud Circle&lt;/a>.&lt;/p>
&lt;p>Summing up the whole day into a few points is hard, but these were the key things I took away:&lt;/p>
&lt;ul>
&lt;li>Security for the Cloud is mostly “just” security, with a few new architectures and contract models&lt;/li>
&lt;li>Know what data you collect and use, and the associated risks&lt;/li>
&lt;li>Know where your data goes, how it gets there and how it might be exposed&lt;/li>
&lt;li>Cloud delivery usually gives you less control&lt;/li>
&lt;li>But sometimes less control is also less risk&lt;/li>
&lt;li>Different landscapes give you different control &amp;amp; risk profiles (IaaS / PaaS / SaaS)&lt;/li>
&lt;li>The importance of knowing about data location and what jurisdictions apply – remember services are often composites from many sub-providers&lt;/li>
&lt;li>if it’s important to you, talk about it with the vendor and get it in the contract – and involve the legal advisors early&lt;/li>
&lt;li>But don’t expect a custom contract for 5p/hr computing bought on a credit card!&lt;/li>
&lt;li>The importance of standards (but this is still an immature market, so not everything has a standard)&lt;/li>
&lt;li>Plan for something to fail, because it will&lt;/li>
&lt;li>&lt;a href="https://www.osborneclarke.com/publications/sectors/digital-business/update/2011/digital-business-update-november-2011/what-is-it-about-cloud-that-makes-business-ask-questions-they-should-already-be-asking.aspx" target="_blank">Cloud makes you ask questions you should already be asking&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>I can say with absolute certainty that I am not doing full service to the depth of presentations – I recommend looking for the slides on The Cloud Circle’s website.&lt;/p>
&lt;p>&lt;strong>Key References&lt;/strong>&lt;/p>
&lt;p>Some key reference sources cited by one or more speakers&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://cloudsecurityalliance.org/research/initiatives/security-guidance/" target="_blank">Security Guidance for Critical Areas of Focus in Cloud Computing&lt;/a> v3 published by &lt;a href="https://cloudsecurityalliance.org/" target="_blank">Cloud Security Alliance&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.enisa.europa.eu/" target="_blank">European Network and Information Security Agency&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.microsoft.com/security/sdl/" target="_blank">Secure Development Lifecycle&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/ISO/IEC_27001" target="_blank">ISO27001&lt;/a>, &lt;a href="https://www.ssae-16.com/" target="_blank">SSAE-16&lt;/a>, &lt;a href="https://vericode.com/" target="_blank">Vericode&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://info.mobileiron.com/forrester-15-mobile-policy-best-practices.html" target="_blank">Fifteen Mobile Policy Best Practices&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.google.com/apps/intl/en/business/infrastructure_security.html" target="_blank">Google Apps Security&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Speakers&lt;/strong>&lt;/p>
&lt;p align="left">
&lt;a href="https://blogs.msdn.com/b/plankytronixx/" target="_blank">Steve Plank&lt;/a>, Microsoft
&lt;/p>
&lt;p>&lt;a href="https://www.linkedin.com/profile/view?id=2295244" target="_blank">Rashmi Knowles&lt;/a>, RSA&lt;/p>
&lt;p>&lt;a href="https://twitter.com/#!/jamesmsnow" target="_blank">James Snow&lt;/a>, Google&lt;/p>
&lt;p>&lt;a href="https://www.osborneclarke.com/contact-us/people-finder/people/vwx/w/webber-mark.aspx" target="_blank">Mark Webber&lt;/a>, Osborne Clarke&lt;/p>
&lt;p>&lt;a href="https://www.linkedin.com/in/georgeanderson" target="_blank">George Anderson&lt;/a>, Webroot&lt;/p>
&lt;p>&lt;a href="https://scribe.twitter.com/#!/KrisMeule" target="_blank">Kris Meulemans&lt;/a>, Mozy&lt;/p>
&lt;p>&lt;strong>The Cloud Circle&lt;/strong>&lt;/p>
&lt;p>I’ve been to a few events organised by The Cloud Circle, and I whole-heartedly recommend them. The events are sponsored, and free for delegates. The organisers are pretty good at keeping speakers relatively agnostic and avoiding overt sales pitches, regardless there are always a good mix of vendors, so with care you can pick out the common threads.&lt;/p>
&lt;p>The delegates are a good mix, and I always learn something from the questions from the floor.&lt;/p>
&lt;div class="zemanta-pixie" style="margin-top: 10px; height: 15px;">
&lt;img class="zemanta-pixie-img" style="border: none; float: right;" src="https://img.zemanta.com/pixy.gif?x-id=7b6ea53f-f3c3-4807-a3ea-b02f8bb4d24a" alt="" />
&lt;/div></description></item><item><title>Happy (belated) Tenth Birthday</title><link>https://www.synesthesia.co.uk/2011/10/11/happy-tenth-birthday/</link><pubDate>Tue, 11 Oct 2011 07:00:28 +0000</pubDate><guid>https://www.synesthesia.co.uk/2011/10/11/happy-tenth-birthday/</guid><description>&lt;div class="zemanta-img" style="margin: 1em; display: block;">
&lt;p>
&lt;a href="https://www.flickr.com/photos/23334460@N00/3273518391">&lt;img title="birthday cake" src="https://www.synesthesia.co.uk/uploads/2011/10/3273518391_c98d57e3bd_m.jpg" alt="birthday cake" width="240" height="224" />&lt;/a>
&lt;/p>
&lt;/div>
&lt;p>This blog turned ten years old a couple of weeks ago.&lt;/p>
&lt;p>Looking back at how I used to blog &lt;a href="https://www.synesthesia.co.uk/blog/archives/2001/09/" target="_blank" rel="noopener">back then&lt;/a> I see that it was mostly comment on current events.&lt;/p>
&lt;p>My first post was about a book – &lt;a href="https://www.amazon.co.uk/gp/product/0140244913?ie=UTF8&amp;amp;tag=fivegocrazyinmid&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=0140244913" target="_blank" rel="noopener">How the Mind Works&lt;/a> &lt;img style="border: none !important; margin: 0px !important;" src="https://www.assoc-amazon.co.uk/e/ir?t=fivegocrazyinmid&amp;#038;l=as2&amp;#038;o=2&amp;#038;a=0140244913" border="0" alt="" width="1" height="1" />by &lt;a href="https://www.mit.edu/~pinker/" target="_blank" rel="noopener">Steven Pinker&lt;/a>. I think I still have that book somewhere, although it may have been one of the many that I parted company with during the course of four house moves since that time. Of course, if I really wanted, I could buy it again, and start reading it within minutes thanks to the wonders of pervasive internet retailing and e-books.&lt;/p>
&lt;p>In the intervening years there have been several lean periods, where the only posts have been automated linklogs from delicious – as far as I can see I &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/01/05/links/" target="_blank" rel="noopener">started doing that in January 2004&lt;/a>, so the basics of &lt;a href="https://www.synesthesia.co.uk/blog/lifestream/" target="_blank" rel="noopener">lifestreaming&lt;/a> are pretty old now!&lt;/p>
&lt;p>I started on Moveable Type, but &lt;a href="synesthesia.co.uk">migrated to WordPress in May 2004&lt;/a>&lt;/p>
&lt;div class="zemanta-pixie" style="margin-top: 10px; height: 15px;">
&lt;img class="zemanta-pixie-img" style="border: none; float: right;" src="https://img.zemanta.com/pixy.gif?x-id=2f19fa7c-e647-4fb3-a75d-ba19c71ad851" alt="" />&lt;span class="zem-script more-info pretty-attribution">&lt;/span>
&lt;/div>
&lt;p>These days most content here is aggregated from other sources: links I have captured, comments on other blogs, tweets I have made; but I still think there is a place for the personal site, often with blog-like features. The role of a site like this is still, I think, to be a personal hub, reflecting the flow of online engagement, learning and co-creation.&lt;/p>
&lt;p>Here’s to the next 10 years!&lt;/p></description></item><item><title>Why SLAs smell of waste</title><link>https://www.synesthesia.co.uk/2011/07/12/why-slas-smell-of-waste/</link><pubDate>Tue, 12 Jul 2011 07:36:45 +0000</pubDate><guid>https://www.synesthesia.co.uk/2011/07/12/why-slas-smell-of-waste/</guid><description>&lt;div class="zemanta-img" style="margin: 1em; display: block;">
&lt;figure style="width: 300px" class="wp-caption aligncenter">&lt;a href="https://commons.wikipedia.org/wiki/File:SLA_2.JPG">&lt;img title="SLA 2" src="uploads/2011/07/300px-SLA_21.jpg" alt="SLA 2" width="300" height="187" />&lt;/a>&lt;figcaption class="wp-caption-text">Image via Wikipedia&lt;/figcaption>&lt;/figure>
&lt;/div>
&lt;h4 id="heading">&lt;/h4>
&lt;h4 id="devops">DevOps&lt;/h4>
&lt;p>There’s quite a lot now on the internet about “devops” – combining development and operations work to increase flow and reduce problems&lt;/p>
&lt;ul>
&lt;li>Google search for &lt;a href="https://www.google.co.uk/search?sourceid=chrome&amp;ie=UTF-8&amp;q=kanban+devops" target="_blank">Kanban + Devops&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.delicious.com/synesthesia/devops" target="_blank">Links I’ve tagged “devops”&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>One of the key features of this approach is the idea that above a certain threshold of estimated duration, all operations work has to be included in the kanban board for visibility and flow management.&lt;/p>
&lt;p>For example see these &lt;a href="https://docs.google.com/document/d/1gN-MZylxh72m9mCNo5oUCoWZXme4VtMIFf2ft3q1n7s/mobilebasic?authkey=CN_w1lo&amp;pli=1&amp;hl=en_US" target="_blank">meeting notes from a DevOps conference in Ocean View, June 2011&lt;/a>, where Lonely Planet shared their experience of this, with a threshold of 30 mins – i.e. any servicedesk issue which takes more than 30 mins gets moved to Kanban&lt;/p>
&lt;p>I had a &lt;a href="https://twitter.com/#!/dominicad/status/90507189810233344" target="_blank">brief exchange on Twitter&lt;/a> with &lt;a href="https://twitter.com/#!/dominicad" target="_blank">Dominica DeGrandis&lt;/a>, one of the DevOps leading lights, in which she confirmed that in her experience 1 hour was the most common point where teams found that the visibility and sharing was worth more than the overhead of putting into Kanban. This happens to be the pragmatic transition point adopted by the team I am coaching.&lt;/p>
&lt;h4 id="slas-are-a-problem">SLAs are a Problem!&lt;/h4>
&lt;p>Intuitively a follow up step will be to look at how this approach affects traditional service desk SLAs. I’m not a great fan of SLAs, as they tend to focus on failure and what happens after a failure – I’d rather that a service “just worked” and that resources went into keeping it that way.&lt;/p>
&lt;p>I’m particularly disenchanted with the idea of SLAs when they are applied between two departments of the same business, not least because they stimulate the wrong sort of behaviour, in particular the chasing of local optima. The SLA-driven approach also encourages managers on the “consumer” side of the agreement to pay no attention whatsoever to systemic problems of their own making, to the ultimate detriment of the overall firm.&lt;/p>
&lt;p>Having just read &lt;a href="https://twitter.com/#!/@flowchainsensei" target="_blank" rel="noopener">Bob Marshall&lt;/a>’s &lt;a href="https://www.fallingblossoms.com/opinion/content?id=1006" target="_blank" rel="noopener">Marshall Model of Organisational Evolution&lt;/a> I can see that the frustrations I am expressing are a factor of the transition zone between the Analytic and Synergistic organisational mindsets.&lt;/p>
&lt;p>I find &lt;a href="https://www.systemsthinking.co.uk/home.asp" target="_blank" rel="noopener">John Seddon&lt;/a> another source of stimulating ideas, and his piece on “&lt;a href="https://www.thesystemsthinkingreview.co.uk/index.php?pg=18&amp;amp;utwkstoryid=266" target="_blank" rel="noopener">Why do we believe in economies of scale&lt;/a>?”  has some particular insights to how the SLA mentality creates organisational waste.&lt;/p>
&lt;p>I humbly offer a few more thoughts to the debate:&lt;/p>
&lt;ul>
&lt;li>“Incident management” as a process is focused on failure, and managing the impact of failure rather than removing the causes (and yes I know there is a whole other ITIL process of “Problem Management”)&lt;/li>
&lt;li>SLAs focus resource on local optima (fix this incident for this user) rather than on the “best value for the whole firm at this time”&lt;/li>
&lt;li>Incident management systems tend to accumulate backlogs of failure demand which represent inherent waste, and which also clog flow making the work to address underlying causes inherently less efficient&lt;/li>
&lt;li>Efforts to create a synergistic “OneTeam” approach focused on flow are undermined by too much interrupt-driven work. Integrating the interrupt-driven work into the flow gives a much better sense of how to “add the most value possible right now”&lt;/li>
&lt;/ul>
&lt;p>The way I explain this to colleagues is usually along these lines:&lt;/p>
&lt;p>The business has invested a fixed amount into IT development &amp;amp; support&lt;/p>
&lt;p>Usually (especially in small / medium business) there is  a constraint within the technology team&lt;/p>
&lt;p>Therefore the best value to the business from that investment is through:&lt;/p>
&lt;ul>
&lt;li>elevation and exploitation of the constraint&lt;/li>
&lt;li>reducing lead time&lt;/li>
&lt;li>prioritising based on economic cost of delay&lt;/li>
&lt;/ul>
&lt;p>All of which are delivered by a tuned Kanban system.&lt;/p>
&lt;p>To make sense of this we need to educate ourselves and our colleagues about the systemic dysfunctions caused by trying to force a system to work faster than the constraints allow. It often takes time – for far too many people from the Analytic mindset the first response is “they just have to work harder”&lt;/p>
&lt;h4 id="how-about-you">How about you?&lt;/h4>
&lt;p>I’d love to hear from other people grappling with these issues – please comment here or tweet me (&lt;a href="https://twitter.com/#!/@synesthesia" target="_blank" rel="noopener">@Synesthesia&lt;/a>)&lt;/p>
&lt;p> &lt;/p>
&lt;div class="zemanta-pixie" style="margin-top: 10px; height: 15px;">
&lt;img class="zemanta-pixie-img" style="border: none; float: right;" src="https://img.zemanta.com/pixy.gif?x-id=22db7d7d-2ec3-492f-ada6-24f0d5f74856" alt="" />
&lt;/div></description></item><item><title>Can Kaizen be part of Standard Work – notes and observations</title><link>https://www.synesthesia.co.uk/2011/06/23/can-kaizen-be-part-of-standard-work-notes-and-observations/</link><pubDate>Thu, 23 Jun 2011 12:01:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2011/06/23/can-kaizen-be-part-of-standard-work-notes-and-observations/</guid><description>&lt;p>&lt;a title="JOe Dager's website" href="https://business901.com/" target="_blank">Joe Dager&lt;/a> (&lt;a title="Joe Dager's Twitter profile" href="https://twitter.com/#!/business901" target="_blank">@business901&lt;/a>) has posted a video interview with &lt;a href="https://www.lean.org/balle" target="_blank" rel="noopener">Dr. Michael Balle, the Gemba Coach at the Lean Enterprise Institute&lt;/a> about &lt;a href="https://business901.com/blog1/kaizen-teams-without-kaizen-events/" target="_blank" rel="noopener">Kaizen Teams without Kaizen Events&lt;/a>, or &lt;a href="https://business901.com/blog1/kaizen-teams-without-kaizen-events/" target="_blank" rel="noopener">Can Kaizen be part of Standard Work&lt;/a>?&lt;/p>
&lt;p>[slideshare id=8394746&amp;amp;doc=kaizenpartofstdwork-110623020735-phpapp01-video]&lt;/p>
&lt;p>&lt;span style="text-decoration: underline;">&lt;strong>Summary&lt;/strong>&lt;/span>&lt;/p>
&lt;p>Balle makes some key points:&lt;/p>
&lt;p>Standard work is about routine v non-routine, prescribed v non-prescribed&lt;/p>
&lt;p>Standards are not the same as saying everything the same for everyone everywhere&lt;/p>
&lt;p>Standards = a scientific process&lt;/p>
&lt;ul>
&lt;li>the few things we know “mountains of certainty” – standards are very useful here&lt;/li>
&lt;li>“the islands of we believe so” – standards are looser and we need to understand if the standard applies – need to do kaizen to understand why situation is different&lt;/li>
&lt;li>“the oceans” of “we just don’t know” – need to do kaizen to see if we can find a starting standard&lt;/li>
&lt;/ul>
&lt;p>Dager makes the point – how do we make this real for the busy middle-manager?&lt;/p>
&lt;p>Balle’s view is that it is about a change of mindset, from “too many fires for Kaizen” to “the fires are in a state where I can live with them, I have to do the Kaizen first to reduce the number of fires”.&lt;/p>
&lt;p>What is the first step of the 100 steps? What can you do in 1 minute every day?&lt;/p>
&lt;p>Aligning the steps with the strategy, but break it down into small steps.&lt;/p>
&lt;p>Typically takes five or ten  Kaizen to understand a topic.&lt;/p>
&lt;p>&lt;strong>&lt;span style="text-decoration: underline;">Thoughts&lt;/span>&lt;/strong>&lt;/p>
&lt;p>For me this was a very timely post – in my last post on making a &lt;a href="https://www.synesthesia.co.uk/blog/archives/2011/06/23/kanban-team-weekly-review-and-retrospective/" target="_blank" rel="noopener">Kanban Review and Retrospective&lt;/a> part of  Standard Work with the team I am coaching I describe our first steps to standardise the process of reflection – which should enable a bootstrapping to a more effective process.&lt;/p>
&lt;p>It always helps to have a conceptual framework for what you do, and I sense  the differentiation between “mountains of certainty”, “islands of  we believe so” and “oceans of we just don’t know” will be most useful.&lt;/p>
&lt;p> &lt;/p>
&lt;div class="zemanta-pixie" style="margin-top: 10px; height: 15px;">
&lt;img class="zemanta-pixie-img" style="border: none; float: right;" src="https://img.zemanta.com/pixy.gif?x-id=ef5eb218-4fdd-418b-92f7-de1355e116e6" alt="" />
&lt;/div></description></item><item><title>Kanban team weekly Review and Retrospective</title><link>https://www.synesthesia.co.uk/2011/06/23/kanban-team-weekly-review-and-retrospective/</link><pubDate>Thu, 23 Jun 2011 07:10:06 +0000</pubDate><guid>https://www.synesthesia.co.uk/2011/06/23/kanban-team-weekly-review-and-retrospective/</guid><description>&lt;div class="zemanta-img" style="margin: 1em; display: block;">
&lt;figure style="width: 300px" class="wp-caption aligncenter">&lt;a href="https://commons.wikipedia.org/wiki/File:PDCA-Two-Cycles.svg">&lt;img title="A diagram to show the two PDCA cycles. The fir..." src="https://www.synesthesia.co.uk/blog/wp/uploads/2011/06/300px-PDCA-Two-Cycles.svg_.png" alt="A diagram to show the two PDCA cycles. The fir..." width="300" height="127" />&lt;/a>&lt;figcaption class="wp-caption-text">Image via Wikipedia&lt;/figcaption>&lt;/figure>
&lt;/div>
&lt;p> &lt;/p>
&lt;p>I’m coaching  a cross-functional team working across IT operations, application support and development, using &lt;a class="zem_slink" title="Kanban" rel="wikipedia" href="https://en.wikipedia.org/wiki/Kanban">Kanban&lt;/a> to manage everything larger than the most immediate support requests.&lt;/p>
&lt;p>They already appreciate the importance of reviewing their work and process, so we’ve been trying to make this into  Standard Work.&lt;/p>
&lt;p>Our first attempt is the &lt;strong>30 Minute Review and Retrospective&lt;/strong>&lt;/p>
&lt;p>&lt;strong>&lt;span style="text-decoration: underline;">Review (max 10 minutes total)&lt;/span>&lt;/strong>&lt;/p>
&lt;p>Look at every story completed this week, for each (so ~1 min per story):&lt;/p>
&lt;ul>
&lt;li>What did we plan to do?&lt;/li>
&lt;li>What actually happened?&lt;/li>
&lt;li>Why?&lt;/li>
&lt;li>What would we do next time?&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>&lt;span style="text-decoration: underline;">Retrospective (max 20 mins total)&lt;/span>&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>What do we want to do more of, what do we want to change or stop? (5 mins max)&lt;/li>
&lt;li>Go round the group – what have we done for the improvement actions we committed to last week? (5 mins max)&lt;/li>
&lt;li>Look at Cumulative Flow, Cycle Time and Lead Time – what issues do we see, what actions can we take? (5 mins max)&lt;/li>
&lt;li>Go round the group – each individual commits to an improvement action for next week (5 mins max)&lt;/li>
&lt;/ul>
&lt;p>Based on the initial couple of goes at this process, 30 minutes is very very tight. This week I am going to run an hour with them, and although an hour per week is quite a large percentage of the working week, I suspect that the volume of &lt;a class="zem_slink" title="Kaizen" rel="wikipedia" href="https://en.wikipedia.org/wiki/Kaizen">Kaizen&lt;/a> opportunities we are finding warrants it.&lt;/p>
&lt;p>What’s your experience of introducing reflective practice within a Kanban environment?&lt;/p>
&lt;div class="zemanta-pixie" style="margin-top: 10px; height: 15px;">
&lt;img class="zemanta-pixie-img" style="border: none; float: right;" src="https://img.zemanta.com/pixy.gif?x-id=7e196b1a-f050-4a24-86b5-aba08dd93958" alt="" />
&lt;/div></description></item><item><title>UML Profile for Benefits Realisation Management – 2</title><link>https://www.synesthesia.co.uk/2010/12/30/uml-profile-for-benefits-realisation-management-2/</link><pubDate>Thu, 30 Dec 2010 16:07:32 +0000</pubDate><guid>https://www.synesthesia.co.uk/2010/12/30/uml-profile-for-benefits-realisation-management-2/</guid><description>&lt;p>This is a follow on from &lt;a href="https://www.synesthesia.co.uk/2010/12/21/uml-profile-for-benefits-realisation-management-1">UML Profile for Benefits Realisation Management – 1&lt;/a>. In  that post I described the basic UML profile I have created for modelling project benefits in line with [Bradley][2] and [Ward &amp;amp; Daniels][3]&lt;/p>
&lt;p>Having started to apply the profile successfully, I wanted to extend it to model &lt;a href="https://books.google.co.uk/books?id=2IfFQY_XrfAC&amp;amp;lpg=PA113&amp;amp;ots=r5fdUWFy3k&amp;amp;pg=PA133&amp;amp;redir_esc=y#v=onepage&amp;amp;q=measure&amp;amp;f=false" target="_blank" rel="noopener">measures&lt;/a>,&lt;/p>
&lt;p>These were modelled by meta-classing Class&lt;/p>
&lt;figure id="figure-extending-benefits-model-with-measures">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Extending Benefits Model with Measures" srcset="
/2010/12/30/uml-profile-for-benefits-realisation-management-2/brm-profile-3_huf4827fa3a0b706818f755374625889b2_15061_acc3e3461b321c0fd6eca85683653c6f.webp 400w,
/2010/12/30/uml-profile-for-benefits-realisation-management-2/brm-profile-3_huf4827fa3a0b706818f755374625889b2_15061_a3b2ae1e8869b91fcc2e9930b3453c52.webp 760w,
/2010/12/30/uml-profile-for-benefits-realisation-management-2/brm-profile-3_huf4827fa3a0b706818f755374625889b2_15061_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2010/12/30/uml-profile-for-benefits-realisation-management-2/brm-profile-3_huf4827fa3a0b706818f755374625889b2_15061_acc3e3461b321c0fd6eca85683653c6f.webp"
width="242"
height="327"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Extending Benefits Model with Measures
&lt;/figcaption>&lt;/figure>
&lt;p>As can be seen from this diagram, I have added a number of tagged values (which are modelled as attributes in the UML profile) to cover off the typical data that needs to be captured in relation to a measure.&lt;/p></description></item><item><title>UML Profile for Benefits Realisation Management – 1</title><link>https://www.synesthesia.co.uk/2010/12/21/uml-profile-for-benefits-realisation-management-1/</link><pubDate>Tue, 21 Dec 2010 11:57:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/2010/12/21/uml-profile-for-benefits-realisation-management-1/</guid><description>&lt;p>I wrote yesterday about &lt;a href="https://www.synesthesia.co.uk/2010/12/20/modelling-benefits-in-uml/">using a general purpose UML modelling tool to create project Benefit Maps&lt;/a>.&lt;/p>
&lt;p>In that &lt;a href="https://www.synesthesia.co.uk/2010/12/20/modelling-benefits-in-uml/">post&lt;/a> I described using Enterprise Architect&amp;rsquo;s ability to &lt;a href="https://sparxsystems.com/enterprise_architect_user_guide/14.0/modeling_tools/umlprofiles_2.html" target="_blank" rel="noopener">create custom UML profiles&lt;/a> to create the beginnings of a &lt;a href="https://sparxsystems.com/enterprise_architect_user_guide/14.0/modeling_tools/umlprofiles_2.html" target="_blank" rel="noopener">custom modelling language&lt;/a> for project benefits management.&lt;/p>
&lt;p>In this article I walk through the basics of that UML profile.&lt;/p>
&lt;h3 id="classes">Classes&lt;/h3>
&lt;p>The first task was to model the core objects of the benefits model – Objectives, Benefits, Disbenefits, Business Changes and Enablers.&lt;/p>
&lt;p>These are all modelled as &lt;a href="http://www.uml-diagrams.org/profile-diagrams.html#stereotype" target="_blank" rel="noopener">stereotypes&lt;/a> of the Requirement &lt;a href="http://www.uml-diagrams.org/profile-diagrams.html#metaclass" target="_blank" rel="noopener">metaclass&lt;/a>:&lt;/p>
&lt;figure id="figure-benefits-model">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Benefits Model" srcset="
/2010/12/21/uml-profile-for-benefits-realisation-management-1/brm-profile-01_hu42785fbf3389bec5f106aaf2b17c2740_49452_f70c2fb73e240da5500ac3fdaa5633e1.webp 400w,
/2010/12/21/uml-profile-for-benefits-realisation-management-1/brm-profile-01_hu42785fbf3389bec5f106aaf2b17c2740_49452_8a42dcfe20e48cfaff7c34d2b52f5c8e.webp 760w,
/2010/12/21/uml-profile-for-benefits-realisation-management-1/brm-profile-01_hu42785fbf3389bec5f106aaf2b17c2740_49452_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2010/12/21/uml-profile-for-benefits-realisation-management-1/brm-profile-01_hu42785fbf3389bec5f106aaf2b17c2740_49452_f70c2fb73e240da5500ac3fdaa5633e1.webp"
width="727"
height="516"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Benefits Model
&lt;/figcaption>&lt;/figure>
&lt;p>The more observant of you will have noticed that there is also an &lt;a href="https://sparxsystems.com/enterprise_architect_user_guide/14.0/modeling_tools/addingenumerationstagstost.html" target="_blank" rel="noopener">enumeration&lt;/a> called &lt;strong>BenefitvalueType&lt;/strong>. this, together with the attributes on the &lt;strong>Benefit&lt;/strong> and &lt;strong>Disbenefit&lt;/strong> classes create a tagged value named “Value Type” in the final model, constrained to the different &lt;a href="https://books.google.co.uk/books?id=2IfFQY_XrfAC&amp;amp;lpg=PA113&amp;amp;ots=r5fdUWFy3k&amp;amp;pg=PA113&amp;amp;redir_esc=y#v=onepage&amp;amp;q=sigma%20benefit%20value%20types&amp;amp;f=false" target="_blank" rel="noopener">Sigma Value Types&lt;/a>.&lt;/p>
&lt;p>The &lt;a href="https://books.google.co.uk/books?id=2IfFQY_XrfAC&amp;amp;lpg=PA113&amp;amp;ots=r5fdUWFy3k&amp;amp;pg=PA113&amp;amp;redir_esc=y#v=onepage&amp;amp;q=sigma%20benefit%20value%20types&amp;amp;f=false" target="_blank" rel="noopener">Sigma Value Types&lt;/a> are used as a way of classifying benefits - this aids with the identification of measures, and also stimulates a conversation with stakeholders about missing benefits.&lt;/p>
&lt;h3 id="relationships">Relationships&lt;/h3>
&lt;p>The second part of the profile contains the relationships needed for the Benefits model. As I &lt;a href="https://www.synesthesia.co.uk/2010/12/20/modelling-benefits-in-uml/">noted before&lt;/a>, I have decided to use &lt;a href="https://www.uml-diagrams.org/abstraction.html" target="_blank" rel="noopener">realisation&lt;/a> and &lt;a href="https://www.uml-diagrams.org/dependency.html?context=class-diagrams" target="_blank" rel="noopener">dependency&lt;/a> links to model different aspects of the Benefits model. These are included in the profile by creating new classes of the same name that redefine the relevant metaclasses, thus picking up all the default behaviour.&lt;/p>
&lt;figure id="figure-benefits-model-relationships">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Benefits Model Relationships" srcset="
/2010/12/21/uml-profile-for-benefits-realisation-management-1/brm-profile-02_hud75a8a214422d829a57968683c86a625_11486_1f28ae6be537892e876442e6780e8134.webp 400w,
/2010/12/21/uml-profile-for-benefits-realisation-management-1/brm-profile-02_hud75a8a214422d829a57968683c86a625_11486_8950cedbd11c4207f5908800370b2556.webp 760w,
/2010/12/21/uml-profile-for-benefits-realisation-management-1/brm-profile-02_hud75a8a214422d829a57968683c86a625_11486_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2010/12/21/uml-profile-for-benefits-realisation-management-1/brm-profile-02_hud75a8a214422d829a57968683c86a625_11486_1f28ae6be537892e876442e6780e8134.webp"
width="726"
height="241"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Benefits Model Relationships
&lt;/figcaption>&lt;/figure>
&lt;p>The profile also includes a redefinition of &lt;a href="https://www.uml-diagrams.org/association.html?context=class-diagrams" target="_blank" rel="noopener">Association&lt;/a>, which I will use in the next part of the model, modelling Measures.&lt;/p>
&lt;p>As always, I welcome comments!&lt;/p>
&lt;p>&lt;ins datetime="2019-07-15">(2019-07-15) updated links and diagrams&lt;/ins>&lt;/p></description></item><item><title>Modelling Benefits in UML</title><link>https://www.synesthesia.co.uk/2010/12/20/modelling-benefits-in-uml/</link><pubDate>Mon, 20 Dec 2010 14:14:33 +0000</pubDate><guid>https://www.synesthesia.co.uk/2010/12/20/modelling-benefits-in-uml/</guid><description>&lt;p>&lt;a href="http://www.pmis.co.uk/benefits_realisation.htm" target="_blank" rel="noopener">Benefits Realisation Management&lt;/a> is one of those classic programme / project disciplines that &amp;ldquo;everyone&amp;rdquo; agrees is a great idea, which in my experience is more overlooked than observed.&lt;/p>
&lt;p>The main sources in the literature I’m aware of are books by &lt;a href="http://www.amazon.co.uk/gp/product/1409400948?ie=UTF8&amp;amp;tag=fivegocrazyinmid&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=1409400948" target="_blank" rel="noopener">Bradley&lt;/a> and &lt;a href="http://www.amazon.co.uk/gp/product/047009463X?ie=UTF8&amp;amp;tag=fivegocrazyinmid&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=047009463X" target="_blank" rel="noopener">Ward &amp;amp; Daniels&lt;/a>. I’ve also had the privilege of learning directly from &lt;a href="http://www.sigma-uk.com/about/history.html" target="_blank" rel="noopener">Gerald Bradley&lt;/a>, so my own approach is very much influenced by his work.&lt;/p>
&lt;p>A key tool is the use of visual maps, both interactively with stakeholders to discover benefits, and then as a way of presenting and communicating the complex causal links between an IT investment and the benefits it allegedly supports.&lt;/p>
&lt;p>Interactive mapping works best with tactile materials – Post-It notes, sticky card etc. But for analysis and presentation some kind of tool is needed – drawing tools may work for smaller maps, but it very quickly becomes impractical, and something model-based is required.&lt;/p>
&lt;p>&lt;a href="http://www.changedirector.com/Solutions/Benefits-%20Management" target="_blank" rel="noopener">Specialised tools&lt;/a> are available, but they are just that, specialised tools: a good investment perhaps, but nevertheless a substantial outlay. The lack of affordable tools might, I suggest, be a block to wider adoption of these methods.&lt;/p>
&lt;p>I’ve blogged before about using &lt;a href="https://www.synesthesia.co.uk/2009/12/14/lean-programme-shaping-models/">general purpose UML modelling tools to help programme shaping&lt;/a>, so it was natural that I looked at extending this approach to benefits mapping.&lt;/p>
&lt;p>An example benefits map using the UML approach is shown here, produced using &lt;a href="http://www.sparxsystems.com/" target="_blank" rel="noopener">Sparx Enterprise Architect&lt;/a>:&lt;/p>
&lt;figure id="figure-example-benefits-model-in-uml">
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Example Benefits Model in UML" srcset="
/2010/12/20/modelling-benefits-in-uml/example-uml-benefits-map_hubdf5245303fdf144bf47b95eb3ca5109_19481_3933139233e18dac8a4d45b9d76ca75e.webp 400w,
/2010/12/20/modelling-benefits-in-uml/example-uml-benefits-map_hubdf5245303fdf144bf47b95eb3ca5109_19481_6809d10e77783e1eaa937fb9e1bdbcb1.webp 760w,
/2010/12/20/modelling-benefits-in-uml/example-uml-benefits-map_hubdf5245303fdf144bf47b95eb3ca5109_19481_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2010/12/20/modelling-benefits-in-uml/example-uml-benefits-map_hubdf5245303fdf144bf47b95eb3ca5109_19481_3933139233e18dac8a4d45b9d76ca75e.webp"
width="759"
height="474"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;figcaption data-pre="Figure&amp;nbsp;" data-post=":&amp;nbsp;" class="numbered">
Example Benefits Model in UML
&lt;/figcaption>&lt;/figure>
&lt;p>I have created a &lt;a href="http://www.uml-diagrams.org/profile-diagrams.html#profile" target="_blank" rel="noopener">UML Profile&lt;/a> (which I will write more about later), which extends the Requirement metaclass provided in Enterprise Architect by stereotyping to create the five core Benefits Realisation Management objects:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Element&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Objectives&lt;/td>
&lt;td>Why are we doing this?&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Benefits&lt;/td>
&lt;td>A measurable indicator of a change which is perceived as positive by at least one stakeholder group&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Disbenefits&lt;/td>
&lt;td>A measurable indicator of a change which is perceived as negative by at least one stakeholder group&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Business Changes&lt;/td>
&lt;td>Any change in the way a business operates, for example in terms of resourcing, behaviours, skills, processes etc.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Enablers&lt;/td>
&lt;td>Typically something that can be built or bought&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Readers familiar with Benefits maps will have spotted something different about the arrows. Most graphical presentations use an arrow from the precursor enabler, change  or benefit to the subsequent change, benefit or objective.&lt;/p>
&lt;p>Unfortunately this is not UML compliant, so  I have chosen to model using UML dependency and realisation relationships:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Relationship&lt;/th>
&lt;th>Meaning&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/2010/12/20/modelling-benefits-in-uml/dependency_hub3188ea97479eddeddabcf6a96e12194_920_830c4148f05370268631c0d9b0ace8e1.webp 400w,
/2010/12/20/modelling-benefits-in-uml/dependency_hub3188ea97479eddeddabcf6a96e12194_920_2d0836d2e72a13e324c1fdce8163acf0.webp 760w,
/2010/12/20/modelling-benefits-in-uml/dependency_hub3188ea97479eddeddabcf6a96e12194_920_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2010/12/20/modelling-benefits-in-uml/dependency_hub3188ea97479eddeddabcf6a96e12194_920_830c4148f05370268631c0d9b0ace8e1.webp"
width="104"
height="23"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/td>
&lt;td>This objective or benefit depends on that benefit&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="" srcset="
/2010/12/20/modelling-benefits-in-uml/realization_hu0e4e0706d4acd080e28c7dd6bb30cca7_991_fc0381cedeca444ef90abac63e6c4d70.webp 400w,
/2010/12/20/modelling-benefits-in-uml/realization_hu0e4e0706d4acd080e28c7dd6bb30cca7_991_bcd3f788febfd7e9a8c1fc199877cf3a.webp 760w,
/2010/12/20/modelling-benefits-in-uml/realization_hu0e4e0706d4acd080e28c7dd6bb30cca7_991_1200x1200_fit_q90_h2_lanczos_3.webp 1200w"
src="https://www.synesthesia.co.uk/2010/12/20/modelling-benefits-in-uml/realization_hu0e4e0706d4acd080e28c7dd6bb30cca7_991_fc0381cedeca444ef90abac63e6c4d70.webp"
width="103"
height="23"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/td>
&lt;td>This change or enabler implements that change or benefit&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Using the language constructs in this way means that it is possible to use the traceability features within the tool to identify all the chains of dependencies.&lt;/p>
&lt;p>Later posts will cover the development of the UML Profile, including the addition of attributes to the benefits and the modelling of measures.&lt;/p>
&lt;p>I’m in the middle of a review cycle with a group of stakeholders who are used to talking about project benefits, but who perhaps have not used visual maps before – I shall blog how it goes!&lt;/p>
&lt;p>What approaches have you used to document project benefits in a graphical format? Please leave a comment…&lt;/p></description></item><item><title>Blending Pomodoro and GTD</title><link>https://www.synesthesia.co.uk/2010/12/18/blending-pomodoro-and-gtd/</link><pubDate>Sat, 18 Dec 2010 14:14:05 +0000</pubDate><guid>https://www.synesthesia.co.uk/2010/12/18/blending-pomodoro-and-gtd/</guid><description>&lt;div class="zemanta-img" style="margin: 1em; display: block;">
&lt;div>
&lt;dl class="wp-caption alignright" style="width: 310px;">
&lt;dt class="wp-caption-dt">
&lt;a href="https://commons.wikimedia.org/wiki/File:Il_pomodoro.jpg">&lt;img title="Pomodoro Timer" src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Il_pomodoro.jpg/300px-Il_pomodoro.jpg" alt="Pomodoro Timer" width="300" height="300" />&lt;/a>
&lt;/dt>
&lt;/dl>
&lt;/div>
&lt;/div>
&lt;p>I’ve been using variants of the &lt;a href="http://en.wikipedia.org/wiki/Getting_Things_Done" target="_blank" rel="noopener">Getting Things Done (GTD)&lt;/a> technique for a few years, and I find it’s a safe haven when work is turbulent. The simple rules of the GTD workflow help create forward motion on the most overwhelming of days. As I &lt;a href="https://www.synesthesia.co.uk/2010/12/18/getting-things-done-gtd/">posted recently&lt;/a>, after many attempts at finding the right tool support, I have now settled on one that works for me.&lt;/p>
&lt;p>But there are days when I have cleared a block of time, and I just need to plough through work, and if I’m not careful my GTD list can become just one more challenge to &lt;a href="http://zenhabits.net/how-not-to-multitask-work-simpler-and/" target="_blank" rel="noopener">single tasking&lt;/a>.&lt;/p>
&lt;p>I wondered if &lt;a href="http://www.pomodorotechnique.com/" target="_blank" rel="noopener">Pomodoro&lt;/a> could help with that, so much to the bemusement of colleagues I have started the practice of using an electronic timer (with ticks!) to force myself to work in timeboxes when I am carrying out focused tasks.&lt;/p>
&lt;p>A number of people have written about combining these two techniques, including &lt;a href="http://theproductivestudent.com/implementing-the-pomodoro-into-gtd" target="_blank" rel="noopener">Arjun Muralidharan&lt;/a> and &lt;a href="http://tim.noyce.eu/2009/08/13/gtd-and-the-pomodoro-technique/" target="_blank" rel="noopener">Tim Noyce&lt;/a>. They have clearly spent longer reflecting on how these things work best for them, but I would add a few observations of my own:&lt;/p>
&lt;ul>
&lt;li>GTD &lt;span style="text-decoration: underline;">always&lt;/span> works as a way of finding something productive to do – like most professionals my “to do” list represents far more work than could ever be done in a day, or even a week – being able to slice it by context, by association, by relevance means that I can always find something to fill an empty timeslot.&lt;/li>
&lt;li>It really helps to identify one or two “Most Important Things” at the start of the day – I use a temporary GTD context of @Today to capture those.&lt;/li>
&lt;li>Pomodoro works well for driving a concentrated focus on a single-person task, but is no help at all when you have a lot of collaboration to achieve, meetings interrupting the flow etc.&lt;/li>
&lt;li>Pomodoro sets out to make interruptions (internal or external) more noticeable, and I found a side-effect of that was that I was getting tetchier with people who interrupted me. Pay attention to the guidance in the &lt;a href="http://www.scribd.com/doc/36672142/The-Pomodoro-Technique" target="_blank" rel="noopener">Pomodoro book&lt;/a> about handling interruptions!&lt;/li>
&lt;li>It’s very tempting to go on beyond the Pomodoro “just to polish something off”&lt;/li>
&lt;/ul>
&lt;p>What systems work for you?&lt;/p>
&lt;p>How do you best resolve the “what do to” and “getting it done” pressures on you?&lt;/p>
&lt;p>Let me know in the comments.&lt;/p></description></item><item><title>Getting Things Done (GTD)</title><link>https://www.synesthesia.co.uk/2010/12/18/getting-things-done-gtd/</link><pubDate>Sat, 18 Dec 2010 13:57:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2010/12/18/getting-things-done-gtd/</guid><description>&lt;div class="zemanta-img" style="margin: 1em; display: block;">
&lt;div>
&lt;dl class="wp-caption alignright" style="width: 250px;">
&lt;dt class="wp-caption-dt">
&lt;a href="https://www.flickr.com/photos/79538062@N00/4407962892">&lt;img title="063/365 - getting-things-done thursday" src="https://farm5.static.flickr.com/4007/4407962892_9e7693ef1f_m.jpg" alt="063/365 - getting-things-done thursday" />&lt;/a>
&lt;/dt>
&lt;pre>&lt;code> &amp;lt;dd class=&amp;quot;wp-caption-dd zemanta-img-attribution&amp;quot; style=&amp;quot;font-size: 0.8em;&amp;quot;&amp;gt;
Image by &amp;lt;a href=&amp;quot;https://www.flickr.com/photos/79538062@N00/4407962892&amp;quot;&amp;gt;jypsygen&amp;lt;/a&amp;gt; via Flickr
&amp;lt;/dd&amp;gt;
&amp;lt;/dl&amp;gt;
&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div>
&lt;p>I’ve been using variants of the &lt;a href="http://en.wikipedia.org/wiki/Getting_Things_Done" target="_blank" rel="noopener">Getting Things Done (GTD)&lt;/a> technique for a few years, and I find it’s a safe haven when work is turbulent. The simple rules of the GTD workflow help create forward motion on the most overwhelming of days.&lt;/p>
&lt;p>My invaluable assistant in this is &lt;a href="http://www.nozbe.com/a-53437730" target="_blank" rel="noopener">Nozbe&lt;/a> – Michael Sliwinski and his team have put together a highly-functional product that I couldn’t work without. It’s by far the most effective GTD tool I have used, and I urge you to try it. (&lt;em>Disclosure – that hyperlink has an affiliate code&lt;/em>).&lt;/p>
&lt;p>The killer features for me are:&lt;/p>
&lt;ul>
&lt;li>easy task creation from a set of bullet points in an email – great for those post-meeting brain dumps!&lt;/li>
&lt;li>complete integration between the web and the iPhone app&lt;/li>
&lt;li>&lt;a href="http://www.evernote.com" target="_blank" rel="noopener">Evernote&lt;/a> integration for project notes, again with an easy email interface for capturing things&lt;/li>
&lt;li>the attitude Michael and his team have to support!&lt;/li>
&lt;/ul>
&lt;p>How do you Get Things Done?&lt;/p>
&lt;p>Comments please!&lt;/p></description></item><item><title>Turn of the Year, revisited</title><link>https://www.synesthesia.co.uk/2009/12/31/turn-of-the-year-revisited/</link><pubDate>Thu, 31 Dec 2009 23:59:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2009/12/31/turn-of-the-year-revisited/</guid><description>&lt;p>A Happy New Year to all my readers!&lt;/p>
&lt;p>First posted 31st December 2003:&lt;/p>
&lt;blockquote cite="https://www.synesthesia.co.uk/blog/archives/2003/12/31/turn-of-the-year/">
&lt;p>
&lt;img class="aligncenter size-medium wp-image-1755" title="Janus, Roman God of Beginnings" src="Janus-Vatican.jpg" alt="Janus, Roman God of Beginnings" width="300" height="263" />
&lt;/p>
&lt;/blockquote></description></item><item><title>Friday Follow 18/12/2009</title><link>https://www.synesthesia.co.uk/2009/12/18/friday-follow-18122009/</link><pubDate>Fri, 18 Dec 2009 08:00:49 +0000</pubDate><guid>https://www.synesthesia.co.uk/2009/12/18/friday-follow-18122009/</guid><description>&lt;p>&lt;ins dateime="2019-07-15">(2019-07-15) Most of these links are dead now. Steph Gray has a new &lt;a href="https://postbureaucrat.com/" target="_blank" rel="noopener">personal blog&lt;/a>, and now runs a company called &lt;a href="https://helpfuldigital.com/" target="_blank" rel="noopener">Helpful Digital&lt;/a>. &lt;a href="http://limitedwipsociety.ning.com/" target="_blank" rel="noopener">Limited WIP society&lt;/a> have moved to a Ning&amp;hellip; &lt;/ins>&lt;/p>
&lt;p>Here are some sites I’ve started following this week:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.limitedwipsociety.org/blog/" target="_blank" rel="noopener">limitedwipsociety.org&lt;/a> – “the home of kanban for software development”&lt;/li>
&lt;li>&lt;a href="https://loadofcobblers.com/" target="_blank">A Load of Cobblers&lt;/a> – Steph Gray is Head of  Digital Engagement at the &lt;a href="https://www.bis.gov.uk/" target="_blank">Department for Business, Innovation and Skills&lt;/a>, and his main blog is &lt;a href="https://blog.helpfultechnology.com/" target="_blank">Helpful Technology&lt;/a>. &lt;a href="https://loadofcobblers.com/" target="_blank">A Load of Cobblers&lt;/a> is his Tumbleblog of useful web tools.&lt;/li>
&lt;li>&lt;a href="https://blog.evandurant.com/" target="_blank" rel="noopener">Kaizen&lt;/a> &lt;a href="https://" target="_blank">Notebook &lt;/a>by Evan Durant (via &lt;a href="https://jamieflinchbaugh.com/" target="_blank">Jamie Flinchbaugh&lt;/a>) – some good examples of applying Lean to everyday life.&lt;/li>
&lt;/ul></description></item><item><title>Lean Programme Shaping – Models</title><link>https://www.synesthesia.co.uk/2009/12/14/lean-programme-shaping-models/</link><pubDate>Mon, 14 Dec 2009 09:32:05 +0000</pubDate><guid>https://www.synesthesia.co.uk/2009/12/14/lean-programme-shaping-models/</guid><description>&lt;p>How can visual models improve the flow of work during programme shaping?&lt;/p>
&lt;p>This is the sixth post in a series about &lt;a href="https://www.synesthesia.co.uk/2009/10/25/agile-programme-shaping-first-thoughts/">applying the lessons of lean (especially lean software development) to the shaping phase of programme management&lt;/a>.&lt;/p>
&lt;p>In previous posts I have talked about &lt;a href="https://www.synesthesia.co.uk/2009/11/19/lean-programme-shaping-amplifying-learning/">amplifying learning&lt;/a>, the application of the ideas of &lt;a href="https://www.synesthesia.co.uk/2009/11/05/lean-programme-shaping-more-on-flow/">flow&lt;/a> and a &lt;a href="https://www.synesthesia.co.uk/2009/11/03/lean-programme-shaping-finding-the-value-stream/">value stream&lt;/a> to programme shaping, and touched on sources of &lt;a href="https://www.synesthesia.co.uk/2009/11/05/lean-programme-shaping-exploring-waste/">&amp;ldquo;waste&amp;rdquo;&lt;/a> in the typical programme environment.&lt;/p>
&lt;p>In this post I want to talk a bit about (visual) models.&lt;/p>
&lt;p>I’ve found two sorts of model useful when pulling together a programme – models of the shaping process itself, and models of the programme design.&lt;/p>
&lt;p>&lt;strong>Modelling the Programme Shaping Process&lt;/strong>&lt;/p>
&lt;img class="floatleftmargin" src="https://farm4.static.flickr.com/3043/2740704314_baa5d86c44.jpg" border="0" alt="Kanban Board" width="200" height="150" />
&lt;p>In previous posts I’ve talked about looking for flow in the programme shaping process. Every organisation, and to some extent every programme, will have a different flow for the shaping process.&lt;/p>
&lt;p>For most this will involve some number of iterations of capturing and designing information, creating programme artifacts, and seeking approval from various stakeholders.  I have talked about &lt;a href="https://www.synesthesia.co.uk/2009/11/05/lean-programme-shaping-exploring-waste/">keeping work-in-progress to a minimum&lt;/a>, and the classic tool for managing that is a &lt;a href="https://www.infoq.com/articles/agile-kanban-boards" target="_blank" rel="noopener">kanban board&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Modelling the Programme Design&lt;/strong>&lt;/p>
&lt;p>The other area where models are vital is in describing how the programme will work and what it will deliver – in other words, the design of the programme itself. Programme documentation has always been a way of sharing a model of how things will work and what will be achieved, but I think there are lessons we can learn from other disciplines to make the documentation more useful.&lt;/p>
&lt;p>Many traditional programme documents are heavy on words and light on diagrams. Words are vital for providing detail, but they are not the best choice for communicating the relationships between concepts, nor for illustrating causal chains (for example from enabling projects to capabilities to benefits to outcomes).&lt;/p>
&lt;p>I’m suggesting that as programme managers we can usefully make more use of visual models to augment our programme documentation, and to model the relationships between different parts of the documentation.&lt;/p>
&lt;p>There are specialist tools (e.g. &lt;del>&lt;a href="https://www.changedirector.com/Solutions" target="_blank" rel="noopener">ChangeDirector&lt;/a>&lt;/del> &lt;ins datetime="2019-07-15">Link now dead&lt;/ins>) which make extensive use of graphical techniques, however not every organisation will have access to these. I have had some success in using &lt;a href="https://www.sparxsystems.com.au/" target="_blank" rel="noopener">general purpose UML modelling tools&lt;/a> to support programme shaping work, and it’s an area I am actively exploring further. One background project that I hope to blog more on later is the creation of a UML Profile for &lt;a href="https://en.wikipedia.org/wiki/Program_management" target="_blank" rel="noopener">Programme management&lt;/a>&lt;/p>
&lt;p>I&amp;rsquo;d like to hear from other programme managers about their experience with visual modelling.&lt;/p>
&lt;p>Picture credit: &lt;a href="https://www.flickr.com/photos/laribee/2740704314/" target="_blank">David Larabee&lt;/a>&lt;/p>
&lt;p>&lt;ins datetime="2019-07-15">(2019-07-15) Checked links&lt;/ins>&lt;/p></description></item><item><title>Old MSP Blog is Closing</title><link>https://www.synesthesia.co.uk/2009/12/09/old-msp-blog-is-closing/</link><pubDate>Wed, 09 Dec 2009 08:17:50 +0000</pubDate><guid>https://www.synesthesia.co.uk/2009/12/09/old-msp-blog-is-closing/</guid><description>&lt;p style="margin-top: 10px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;">
A few years ago I started a separate blog  (www.synesthesia.co.uk/msp) , primarily as a learning document whilst taking my MSP qualification.
&lt;/p>
&lt;p style="margin-top: 10px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;">
That blog finished serving its (primarily personal) purpose over a year ago, and I feel it’s time to retire it.
&lt;/p>
&lt;p style="margin-top: 10px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;">
Some posts may have value, if only to myself, and I have transferred those to the &lt;a style="color: #6472a0; text-decoration: none; font-weight: 800;" href="https://www.synesthesia.co.uk/blog/archives/category/mspblog/">MSP Blog&lt;/a> category on this blog.
&lt;/p>
&lt;p>&lt;ins datetime="2009-12-09T09:48:58+00:00">Redirects should all now be in place, so I have deleted the old directories. If you find a broken link please let me know by comment on this entry.&lt;/ins>&lt;/p></description></item><item><title>Business Capability Modelling</title><link>https://www.synesthesia.co.uk/2009/12/08/business-capability-modelling/</link><pubDate>Tue, 08 Dec 2009 09:06:24 +0000</pubDate><guid>https://www.synesthesia.co.uk/2009/12/08/business-capability-modelling/</guid><description>&lt;p>&lt;ins datetime="2019-07-15">(2019-07-15) Source links seem to be broken now, however there is a new article from the same author (Leonard Greski) - &lt;a href="https://www.architectureandgovernance.com/strategy-planning/assessing-the-value-of-software-applications-with-business-capability-models/" target="_blank" rel="noopener">Assessing the Value of Software Applications with Business Capability Models&lt;/a>&lt;/ins>&lt;/p>
&lt;p>I’ve just been reading a couple of articles on this topic in the online version of &lt;a title="Link to source publication" href="https://www.architectureandgovernance.com/" target="_blank">Architecture and Governance Magazine&lt;/a>. &lt;em>(registration required to read full article text).&lt;/em>&lt;/p>
&lt;p>In &lt;a title="Business Capability Modeling: Theory &amp; Practice" href="https://architectureandgovernance.com/content/business-capability-modeling-theory-practice" target="_blank">Business Capability Modeling: Theory &amp;amp; Practice&lt;/a>, author &lt;a title="LinkedIn profile for Leonard Greski" href="https://www.linkedin.com/pub/leonard-greski/2/463/930" target="_blank">Leonard Greski&lt;/a> gives a good overview of the process steps:&lt;/p>
&lt;blockquote cite="https://architectureandgovernance.com/content/business-capability-modeling-theory-practice">
&lt;p>
Business capabilities can be modeled using a variety of simple techniques, using low-cost tools. There are four steps to create a capability model:
&lt;/p>
&lt;ol class="decimal">
&lt;li>
Develop the capability hierarchy.
&lt;/li>
&lt;li>
Identify key relationships between capabilities and other planning elements.
&lt;/li>
&lt;li>
Develop demand models for the capabilities.
&lt;/li>
&lt;li>
Develop financial models for the capabilities.
&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>The “how” of the approach seems to be similar to most modelling approaches – capture a hierarchical decomposition of objects and identify cross-relationships using matrices.&lt;/p>
&lt;p>Of particular interest is the “what” – this approach is focused very much on identifying the characteristics of a business that create value (for customers or shareholders), and identifying the resources, investments and cashflows that underpin them. I can see this approach would be very useful in situations such as programme blueprint creation – identifying the desired future shape of the organisation.&lt;/p>
&lt;p>In the second article &lt;a title="Link to source article" href="https://www.architectureandgovernance.com/content/business-capability-modeling-building-hierarchy" target="_blank">Business Capability Modelling: Building the Hierarchy&lt;/a> Leonard dives more deeeply into the “How” of the first two steps. I look forward to reading the next article, which presumably will look at steps 3 and 4.&lt;/p>
&lt;p>&lt;em>(NB I’ve looked for a blog by Leonard, but can’t find one, hence linking to his LinkedIn profile.)&lt;/em>&lt;/p></description></item><item><title>The Architecture of Personal Knowledge Management – 1</title><link>https://www.synesthesia.co.uk/2009/11/27/the-architecture-of-personal-knowledge-management-1/</link><pubDate>Fri, 27 Nov 2009 13:03:51 +0000</pubDate><guid>https://www.synesthesia.co.uk/2009/11/27/the-architecture-of-personal-knowledge-management-1/</guid><description>&lt;ins datetime="2019-07-15">
Unfortunately the links to a personal instance of Wikka, and the images on the old blog post have not survived various hosting changes. I can't find source files from which I developed the architecture drawings either. Ten years on I still think it is informative to think through the performance of PKM processes in terms of roles, and this is something to revisit.
&lt;/ins>
&lt;p>Back in July Harold Jarche posted &lt;a href="https://www.jarche.com/2009/07/creating-your-pkm-processes/" target="_blank" rel="noopener">a useful deconstruction of the processes involved in web-based personal knowledge management&lt;/a> (PKM). Building on this, and in order to make a lot of implicit stuff in my head explicit, I’ve started developing the model into a full mapping of processes to tools.&lt;/p>
&lt;p>I’ve chosen to use &lt;a href="https://www.archimate.org/" target="_blank" rel="noopener">Archimate&lt;/a> as a modelling language, and as I develop the model offline I will be posting views of it to pages liked from &lt;a href="https://www.synesthesia.co.uk/wikka/PKMArchitecture" target="_blank" rel="noopener">this wiki page&lt;/a>.&lt;/p>
&lt;p>Harold’s model looks like this:&lt;/p>
&lt;p>&lt;a href="https://www.jarche.com/2009/07/creating-your-pkm-processes/" target="_blank" rel="noopener">&lt;img class="aligncenter" title="PKM Processes - by Harold Jarche" src="https://jarche.com/wp-content/uploads/2008/06/pkm-flow.jpg" alt="" width="434" height="278" />&lt;/a>&lt;/p>
&lt;p>As I began to unpick Harold’s &lt;a href="https://www.jarche.com/2009/07/creating-your-pkm-processes/" target="_blank" rel="noopener">seven processes&lt;/a> I realised that although they are primarily focused on “self”, one key aspect to understand them is to identify the different roles that “self” (and “others”) play. This aspect of the model so far is shown in the &lt;a href="https://www.synesthesia.co.uk/wikka/PKMHighLevelProcessView" target="_blank" rel="noopener">Introductory View&lt;/a> :&lt;/p>
&lt;p style="text-align: center;">
&lt;a href="https://www.synesthesia.co.uk/wikka/PKMHighLevelProcessView">&lt;img class="aligncenter size-medium wp-image-1508" title="PKM Architecture - Introductory Viewpoint (click for detail)" src="https://www.synesthesia.co.uk/blog/wp/uploads/2009/11/Introductory-Viewpoint-300x211.png" alt="PKM Architecture - Introductory Viewpoint" width="300" height="211" />&lt;/a>
&lt;/p>
&lt;p>Alongside the work of developing models for each of the processes, I began to develop a view of the &lt;a href="https://www.synesthesia.co.uk/wikka/PKMInformationView" target="_blank" rel="noopener">key information artefacts manipulated by the PKM processes&lt;/a>.&lt;/p>
&lt;p style="text-align: center;">
&lt;a href="https://www.synesthesia.co.uk/wikka/PKMInformationView/">&lt;img class="aligncenter size-medium wp-image-1534" title="PKM Processes - Information View" src="https://www.synesthesia.co.uk/blog/wp/uploads/2009/11/Information-View1-300x209.png" alt="PKM Processes - Information View" width="300" height="209" />&lt;/a>
&lt;/p>
&lt;p>I’ve also created pages on the wiki for the first iteration at modelling the  individual processes, linking them down to a core set of application services, and over the next couple of weeks I’ll write blog posts for those.&lt;/p>
&lt;p>Comments welcome to help refine this modelling effort.&lt;/p></description></item><item><title>Lean Programme Shaping – Amplifying Learning</title><link>https://www.synesthesia.co.uk/2009/11/19/lean-programme-shaping-amplifying-learning/</link><pubDate>Thu, 19 Nov 2009 11:30:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/2009/11/19/lean-programme-shaping-amplifying-learning/</guid><description>&lt;p>This is the fifth post in a series of thought experiments on &lt;a href="https://www.synesthesia.co.uk/2009/10/25/agile-programme-shaping-first-thoughts/">applying Lean/Agile principles to the early shaping stages of a programme&lt;/a>.&lt;/p>
&lt;p>In  &lt;a href="https://www.synesthesia.co.uk/2009/11/03/lean-programme-shaping-finding-the-value-stream/">previous&lt;/a> &lt;a href="https://www.synesthesia.co.uk/2009/11/05/lean-programme-shaping-more-on-flow/">posts&lt;/a> I have talked about the application of the ideas of flow and a value stream to programme shaping, and touched on sources of &amp;ldquo;&lt;a href="https://www.synesthesia.co.uk/2009/11/05/lean-programme-shaping-exploring-waste/">waste&lt;/a>&amp;rdquo; in the typical programme environment.&lt;/p>
&lt;p>Again borrowing heavily from the &lt;a href="https://www.poppendieck.com/" target="_blank" rel="noopener">Poppendiecks&lt;/a> for my conceptual structure, I want to think about learning in our context, and how we can make it work better.&lt;/p>
&lt;p>&lt;strong>Programme Shaping as a Learning Process&lt;/strong>&lt;/p>
&lt;p>What are we learning about during programme shaping? A few thoughts:&lt;/p>
&lt;ul>
&lt;li>Stakeholder expectations and perceptions;&lt;/li>
&lt;li>The shape of the perceived problem, the nature of the programme objectives, the expected benefits and how they relate to each other;&lt;/li>
&lt;li>The enablers and business changes that will support the benefits;&lt;/li>
&lt;li>Increasing amounts of detail and quantification around benefits, costs, risks;&lt;/li>
&lt;li>Alternative solution approaches and trade-offs;&lt;/li>
&lt;li>The quality criteria that will be imposed at decision gates, and/or that we may determine for ourselves;&lt;/li>
&lt;/ul>
&lt;p>As we learn more about these areas we progressively build and refine our product - the design of the programme as a system.&lt;/p>
&lt;p>This sort of learning process can be likened to the Deming &lt;a href="https://en.wikipedia.org/wiki/PDCA" target="_blank" rel="noopener">Plan-Do-Check-Act&lt;/a> cycle (PDCA).&lt;/p>
&lt;p style="text-align: center;">
&lt;img class="size-full wp-image-1493 aligncenter" title="PDCA-Cycle-400" src="https://upload.wikimedia.org/wikipedia/commons/7/7a/PDCA_Cycle.svg" alt="PDCA Cycle" width="400" height="275" />
&lt;/p>
&lt;p>So our question becomes &amp;ldquo;how do we iterate the learning cycle faster during programme shaping?&amp;rdquo;. Drawing on the agile software approach, I suggest the following themes:&lt;/p>
&lt;p>&lt;strong>Iterating Faster&lt;/strong>&lt;/p>
&lt;p>If we are going to learn faster about what shape of programme is most likely to be acceptable and successful, we need to increase the speed with which we plan, develop and review our growing programme design. Translating good practice from the agile and lean engineering movements we get the following points:&lt;/p>
&lt;ul>
&lt;li>Break the programme design work down into small deliverables;&lt;/li>
&lt;li>Clarify the stakeholder requirements for each deliverable - what will good look like?;&lt;/li>
&lt;li>Build quality in explicitly;&lt;/li>
&lt;li>Actively constrain the number of deliverables started at any one time;&lt;/li>
&lt;li>Frequent feedback from stakeholders. Look at physical proximity (e.g. where the team sits), access to diaries, collaboration technology.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Build Shared Understanding&lt;/strong>&lt;/p>
&lt;p>A central challenge to effective consensus building comes from the intangible nature of the concepts under discussion and the relationships between those concepts. Approaches that offer visual modelling to support rapid understanding of conceptual relationships, supported by the right blend of numerical and textual &amp;ldquo;backing information&amp;rdquo;  to support deeper understanding and analysis are helpful here.&lt;/p>
&lt;p>In my experience a visual meta-model of the programme shaping artifacts is also a useful tool to clarify the dependencies between different outputs.&lt;/p>
&lt;p>&lt;strong>Simplify Programme Documentation&lt;/strong>&lt;/p>
&lt;p>Published methodologies such as &lt;a href="https://www.ogc.gov.uk/delivery_lifecycle_overview_of_managing_successful_programmes_msp_.asp" target="_blank" rel="noopener">MSP&lt;/a> are often (or are often interpreted as) document heavy. The work to synchronise work products expands exponentially with the number of separate but inter-dependent documents. Following the lead of others (sorry no references to hand) I find it helpful to think of different programme documents as merely different views into the programme model.&lt;/p>
&lt;p>In the ideal case this will be literally true, with the model held in a &lt;a href="https://www.changedirector.com/Solutions" target="_blank" rel="noopener">central computerised repository&lt;/a> that can create the necessary views. However many programmes will not have that luxury, and are faced with maintaining a set of separate documents. In that situation I have found the following ideas useful:&lt;/p>
&lt;ul>
&lt;li>Actively simplify the document set, don&amp;rsquo;t just produce every document that is listed in your favourite (or mandated) methodology). For each document ask yourself what question that document answers, or what decision it supports. If you can&amp;rsquo;t answer, then you may well not need it. Adopting this approach successfully may require active engagement with, and influencing of, the &amp;ldquo;quality police&amp;rdquo; - PMO, Internal Audit etc.&lt;/li>
&lt;li>Model the documentation set to clarify dependencies between documents. The systems design principles of high coherence within a document and low coupling between documents are a good guide. If all you have is Visio, then that&amp;rsquo;s better than nothing, but I&amp;rsquo;ve found that a &lt;a href="https://www.sparxsystems.com.au/" target="_blank" rel="noopener">UML modelling tool&lt;/a> can be very useful in this regard.&lt;/li>
&lt;li>If possible, automate production of documents from a common source. For example, with the right modelling tool it may be possible to auto-generate some documents, moving a step towards the nirvana of an all-encompassing data repository.&lt;/li>
&lt;li>Use a version control system to track document history and tag consistent sets of documents. My personal preference is &lt;a href="https://subversion.tigris.org/" target="_blank" rel="noopener">Subversion&lt;/a>, as it is free, available on several platforms, well-known, and supported by a number of tools.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Synchronise Work Frequently&lt;/strong>&lt;/p>
&lt;p>In the initial stages of programme shaping there may only be one or two people involved, so keeping the work in sync is often &amp;ldquo;just&amp;rdquo; the problem of keeping the document set consistent. Once more than a couple of people are working on the idea then it becomes increasingly possible for the work to diverge, increasing the risk of re-work being needed. Until someone invents automated integration tests for programme documents :-) we are faced with using the design of our shaping process to keep the work on track.&lt;/p>
&lt;ul>
&lt;li>Faster iterations, changing relatively small parts of the concept at each pass, are the first step;&lt;/li>
&lt;li>Keeping documentation as simple as possible, with well-designed and understood inter-dependencies between documents;&lt;/li>
&lt;li>Taking a &lt;a href="https://sloanreview.mit.edu/the-magazine/articles/1999/winter/4025/toyotas-principles-of-setbased-concurrent-engineering/" target="_blank" rel="noopener">set-based&lt;/a> approach to solution design. For example if you had a team working on high-level technology decisions for the enabling projects working alongside another team looking at organisational decisions, encourage each to maintain a set of options in their design. As the programme shape firms up, each team can narrow their options.&lt;/li>
&lt;/ul>
&lt;p>I&amp;rsquo;d be interested in dialogue to sharpen these ideas, do please comment below!&lt;/p>
&lt;p>(Image credit: &lt;a href="https://karnbulsuk.blogspot.com/" target="_blank" rel="noopener">Karn G. Bulsuk&lt;/a>)&lt;/p>
&lt;p>&lt;ins datetime="2019-07-15">(2019-07-15) Fix links&lt;/ins>&lt;/p></description></item><item><title>The ROI of Enterprise 2.0 – an Accountant’s View</title><link>https://www.synesthesia.co.uk/2009/11/16/the-roi-of-enterprise-2-0-an-accountants-view/</link><pubDate>Mon, 16 Nov 2009 09:32:55 +0000</pubDate><guid>https://www.synesthesia.co.uk/2009/11/16/the-roi-of-enterprise-2-0-an-accountants-view/</guid><description>&lt;p>&lt;ins datetime="2019-07-15">(2019-07-15) Updated metadata. Sadly CIMA seem to have retired the community blogs site so the core post and paper referenced in this post are now lost to the world&lt;/ins>&lt;/p>
&lt;p>&lt;a href="https://community.cimaglobal.com/node/196" target="_blank" rel="noopener">Louise Ross&lt;/a> from the Chartered Institute of Management Accountants has created a &lt;a href="https://community.cimaglobal.com/blogs/louise-rosss-blog/more-enthusiasm-web-20" target="_blank" rel="noopener">blog post&lt;/a> and &lt;a href="https://www.cimaglobal.com/web2.0" target="_blank" rel="noopener">paper&lt;/a> to guide CIMA members on constructing business cases for Enterprise 2.0 efforts. [via &lt;a href="https://billives.typepad.com/portals_and_km/2009/11/making-the-business-case-for-enterprise-20-an-london-accountants-advice-.html" target="_blank" rel="noopener">Bill Ives&lt;/a>].&lt;/p>
&lt;p>In the paper Louise sets out 20 brief case studies from various companies, and surveys typical commercial uses for a wide range of social tools. She goes on to pick out several key questions that organisations should consider: is the organisation suited to this approach; is there a real community to tap into; when and where to implement; is the information “good”; and is the company prepared for the changes that might come? She then spends several pages on more general guidance on how to construct the business case and investment analysis.&lt;/p>
&lt;p>Louise emphasises the need to understand the likely benefits, even if uncertain, and the importance of changes in behaviour to support those benefits. This, for me, could usefully have been extended with some reference to benefits mapping as a tool to firstly gain consensus on the benefits and what would need to happen to get them, secondly to communicate those benefits and changes to senior management in support of the business case, and thirdly to provide a framework for measurement.&lt;/p>
&lt;p>The changes in behaviour needed to gain benefit in the enterprise from social tools are significant, and as many have commented (e.g. &lt;a href="https://www.euansemple.com/theobvious/2008/6/10/most-companies-who-try-to-do-enterprise-20-will-fail.html" target="_blank" rel="noopener">Euan Semple&lt;/a>, &lt;a href="https://blog.wirearchy.com/2009/11/14/looking-to-the-past-for-enterprise-2-0-adoption-principles/" target="_blank" rel="noopener">Jon Husband&lt;/a>), they are often changes that sit uncomfortably with senior business, finance, technology and HR managers. This is precisely the sort of scenario where a clear visual emphasis, such as a benefits map, that you need to change what you do, not just the technology you use, is of use in shaping the approach taken by management.&lt;/p>
&lt;p>As a member of the Internet-using public I’m always a little sceptical of companies who see Web 2.0 as yet another “channel” for push marketing and sales approaches. In the conclusion to the longer paper, Louise notes that people often resent such overt tactics, and writes “&lt;cite>[…] Instead, I think the greatest potential for web 2.0 tools come from their role in encouraging collaboration; and accessing talent outside the organisation’s boundaries […]”&lt;/cite>, so it seems to me that she “gets it”, and indeed invites debate via comments on her blog.&lt;/p>
&lt;p>Sadly CIMA don’t seem to get it – to comment on the blog you have to be registered with their system, and although I tried I was baulked by a combination of server errors, account verification emails which never arrived, and some pages which seemed to suggest you could only register if you are a CIMA member. So if anyone from CIMA reads this, please take note of your own experts!&lt;/p></description></item><item><title>Lean Programme Shaping – Exploring Waste</title><link>https://www.synesthesia.co.uk/2009/11/05/lean-programme-shaping-exploring-waste/</link><pubDate>Thu, 05 Nov 2009 11:29:11 +0000</pubDate><guid>https://www.synesthesia.co.uk/2009/11/05/lean-programme-shaping-exploring-waste/</guid><description>&lt;p>This is the fourth post in a series of thought experiments on &lt;a href="https://www.synesthesia.co.uk/2009/10/25/agile-programme-shaping-first-thoughts">applying Lean/Agile principles to the early shaping stages of a programme&lt;/a>.&lt;/p>
&lt;p>In the last &lt;a href="https://www.synesthesia.co.uk/2009/11/03/lean-programme-shaping-finding-the-value-stream/">two&lt;/a> &lt;a href="https://www.synesthesia.co.uk/2009/11/05/lean-programme-shaping-more-on-flow/">posts&lt;/a> I started to explore how we could find the value stream in the “messy” stages of early programme shaping. In this post I will turn to the concept of &amp;ldquo;&lt;a href="https://en.wikipedia.org/wiki/Muda_%28Japanese_term%29" target="_blank" rel="noopener">waste&lt;/a>&amp;rdquo; in our context.&lt;/p>
&lt;p>In the classic &lt;a href="https://en.wikipedia.org/wiki/Toyota_Production_System" target="_blank" rel="noopener">Toyota Production System&lt;/a>, seven types of &lt;a href="https://en.wikipedia.org/wiki/Muda_%28Japanese_term%29" target="_blank" rel="noopener">waste&lt;/a> are identified:&lt;/p>
&lt;ol class="decimal">
&lt;li>
over-production
&lt;/li>
&lt;li>
idle time
&lt;/li>
&lt;li>
transportation
&lt;/li>
&lt;li>
inventory
&lt;/li>
&lt;li>
motion
&lt;/li>
&lt;li>
over-processing
&lt;/li>
&lt;li>
defective units
&lt;/li>
&lt;/ol>
&lt;p>Leaning heavily on the work the &lt;a href="http://www.poppendieck.com/" target="_blank" rel="noopener">Poppendiecks&lt;/a> did to translate these concepts to software engineering, I suggest the seven types of waste for programme shaping are:&lt;/p>
&lt;dl>
&lt;dt>&lt;strong>Over-production&lt;/strong>&lt;/dt>
&lt;dd>e.g. producing documents which do not add value, and which have to be kept under configuration management&lt;/dd>
&lt;dt>&lt;strong>Waiting&lt;/strong>&lt;/dt>
&lt;dd>e.g. time the team are idle waiting for decisions&lt;/dd>
&lt;dt>&lt;strong>Hand-offs between groups&lt;/strong>&lt;/dt>
&lt;dd>Always an opportunity for tacit information to be lost, and the reason many organisations perceive a need for excessive organisation&lt;/dd>
&lt;dt>&lt;strong>Too much work-in-progress&lt;/strong>&lt;/dt>
&lt;dd>For example creating work products long before they are needed. This &amp;ldquo;gums up the works&amp;rdquo;; with documents which have to be kept under configuration management, and becomes a source of distraction&lt;/dd>
&lt;dt>&lt;strong>Motion to find nee****ded information&lt;/strong>&lt;/dt>
&lt;dd>How often have you found the situation that a critical piece of information is held by one person, and that person is in another department, or another building?&lt;/dd>
&lt;dt>&lt;strong>Over-refining work products&lt;/strong>&lt;/dt>
&lt;dd>e.g. Adding levels of detail or polish which do not add to the value of the document to support decisions or execution&lt;/dd>
&lt;dt>&lt;strong>Defects in the work produced&lt;/strong>&lt;/dt>
&lt;dd>e.g. Plans which do not fit strategy, products which do not stakeholder expectations, or inconsistency between documents.&lt;/dd>
&lt;/dl>
&lt;p>I&amp;rsquo;m sure that each reader will be able to add their own examples. In later posts I’ll look at possible solutions.&lt;/p>
&lt;p>Next – how do we design the programme shaping process to amplify learning?&lt;/p>
&lt;p>&lt;ins datetime="2019-07-15">(2019-07-15) Fix links&lt;/ins>&lt;/p></description></item><item><title>Lean Programme Shaping – More on Flow</title><link>https://www.synesthesia.co.uk/2009/11/05/lean-programme-shaping-more-on-flow/</link><pubDate>Thu, 05 Nov 2009 09:10:35 +0000</pubDate><guid>https://www.synesthesia.co.uk/2009/11/05/lean-programme-shaping-more-on-flow/</guid><description>&lt;p>This is the third post in a series of thought experiments on &lt;a href="https://www.synesthesia.co.uk/2009/10/25/agile-programme-shaping-first-thoughts/">applying Lean/Agile principles to the early shaping stages of a programme&lt;/a>.&lt;/p>
&lt;p>In the &lt;a href="https://www.synesthesia.co.uk/2009/11/03/lean-programme-shaping-finding-the-value-stream/">previous post&lt;/a> I started to explore how we could find the value stream in the “messy” stages of early programme shaping. Before I go on to explore the concept of &amp;ldquo;&lt;a href="https://en.wikipedia.org/wiki/Muda_%28Japanese_term%29" target="_blank" rel="noopener">waste&lt;/a>&amp;rdquo; in our context, I want to say a bit more about the value stream.&lt;/p>
&lt;p>The key outcome of the programme shaping process is a clear understanding of the &amp;ldquo;Why&amp;rdquo;, &amp;ldquo;What&amp;rdquo;, &amp;ldquo;How&amp;rdquo;, &amp;ldquo;When&amp;rdquo; and &amp;ldquo;Who&amp;rdquo; of the programme. Different methodologies have different names for products that address these questions, and sometimes different names for the products at different stages of their development.&lt;/p>
&lt;p>For example in &lt;a href="https://www.amazon.co.uk/Managing-successful-programmes-Rod-Sowden/dp/0113313276" target="_blank" rel="noopener">MSP 2007&lt;/a>, in the pre-programme and Initiating a Programme stages, most of the key questions are addressed (in outline form) in the Programme Mandate and Programme Brief, but during Programme Definition these expand into products such as the Blueprint, Benefits Maps, Benefits Realisation Plan, Project Dossier, Programme Plan, Programme Definition and Business Case, not to mention the planning and documentation around programme governance.&lt;/p>
&lt;p>Regardless of the particular nomenclature, the process is one of iterative discovery and design. What we are doing through this time is architecting the “programme as management system” – the system goals, the programme “engine” and the feedback/control mechanisms.&lt;/p>
&lt;p>So the challenge to find a Lean approach to programme shaping is the challenge to find a Lean approach to designing a management system.&lt;/p>
&lt;p>In the &lt;a href="https://www.synesthesia.co.uk/2009/11/05/lean-programme-shaping-exploring-waste/">next post&lt;/a> I will explore the concept of &amp;ldquo;&lt;a href="https://en.wikipedia.org/wiki/Muda_%28Japanese_term%29" target="_blank" rel="noopener">waste&lt;/a>&amp;rdquo; in our context.&lt;/p>
&lt;p>&lt;ins datetime="2019-07-15">(2019-07-15) Fix links&lt;/ins>&lt;/p></description></item><item><title>Lean Programme Shaping – Finding the Value Stream</title><link>https://www.synesthesia.co.uk/2009/11/03/lean-programme-shaping-finding-the-value-stream/</link><pubDate>Tue, 03 Nov 2009 11:27:29 +0000</pubDate><guid>https://www.synesthesia.co.uk/2009/11/03/lean-programme-shaping-finding-the-value-stream/</guid><description>&lt;p>This is the second post in a series of thought experiments on &lt;a href="https://www.synesthesia.co.uk/2009/10/25/agile-programme-shaping-first-thoughts/">applying Lean/Agile principles to the early shaping stages of a programme&lt;/a>.&lt;/p>
&lt;p>Here I am using &amp;ldquo;programme&amp;rdquo; in the widest sense – to borrow a definition from MSP2007&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> “&lt;cite>a temporary, flexible, organisation created to coordinate, direct and oversee the implementation of a set of related projects and activities in order to deliver outcomes and benefits related to the organisation&amp;rsquo;s strategic objectives&lt;/cite>”.&lt;/p>
&lt;p>The core of all lean approaches is to identify the value stream – what activities take place to generate value from the process. For example, in software development, what sequence of activities has to happen to create production applications which deliver benefit to the customer? So how do we map that to the early, often &amp;ldquo;messy&amp;rdquo; stages of a programme?&lt;/p>
&lt;p>Standing back from the detail of a programme, we can see that it is (like any business activity) an investment of time and money to move the organisation closer to its goals. I think you can structure the problem as a series of steps from the strategic to the specific:&lt;/p>
&lt;ol class="decimal">
&lt;li>
What challenges does the organisation face, and what objectives will it adopt?
&lt;/li>
&lt;li>
What areas of change would make good programmes?
&lt;/li>
&lt;li>
What would a specific programme address?
&lt;/li>
&lt;li>
What specific benefits will the programme deliver?
&lt;/li>
&lt;li>
What does the programme have to do to deliver the benefits?
&lt;/li>
&lt;li>
(and then down into the projects and business change activities)
&lt;/li>
&lt;/ol>
&lt;p>Many commentators would suggest that (1) is the province of strategy development and that (2) is the realm of Portfolio Management, but for the moment I’m going to elide them together – I’m trying to find the flow of value rather than establish discipline boundaries. Having said that, most of us who get involved in programmes can usually only monitor (1), so I think there is a fairly natural (albeit fuzzy) line between (1) and (2).&lt;/p>
&lt;p>In terms of the programme shaping flow, we can start to see a series of intermediate products at increasing levels of detail, requiring increasing investments of time, money and resources, and which eventually (should) generate benefits that flow back up the tree. Before we can identify the value chain associated with all this activity, we need to determine how the organisation will assess value. It seems to me that the clue is in the definition of what a programme delivers – &amp;ldquo;outcomes and benefits&amp;rdquo; – and the key to evaluating those is benefits realisation management. It won’t surprise anyone when I say that in my opinion &lt;a href="https://pearcemayfield.typepad.com/patrick_mayfield/2006/06/visual_mapping_.html" target="_blank" rel="noopener">benefits mapping&lt;/a> and related analysis is at the heart of an effective portfolio and programme process.&lt;/p>
&lt;p>So the second clue about finding the value stream is to focus on benefits at each stage.&lt;/p>
&lt;p>The third element is to decide how we recognise &amp;ldquo;good&amp;rdquo; quality at each stage – i.e. something that delivers value to the stake-holder. Sadly, we have no equivalent of the software world’s automated unit, integration and user tests for programme artifacts, so we need to turn instead to guidance such as MSP2007&lt;sup id="fnref1:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup> Appendix D &amp;ldquo;Programme Health Checks&amp;rdquo;, OGC Gateway reviews&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>, or any other audit and evaluation approach used within an organisation. To optimise our value stream we have to optimise the flow of our work products through those constraints.&lt;/p>
&lt;p>In the next article I&amp;rsquo;ll start to explore the concept of &lt;a href="https://en.wikipedia.org/wiki/Muda_%28Japanese_term%29" target="_blank" rel="noopener">waste&lt;/a> in our context.&lt;/p>
&lt;p>&lt;ins datetime="2019-07-15">(2019-07-15) Tidy up, still some broken links&lt;/ins>&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.ogc.gov.uk/delivery_lifecycle_overview_of_managing_successful_programmes_msp_.asp" target="_blank" rel="noopener">https://www.ogc.gov.uk/delivery_lifecycle_overview_of_managing_successful_programmes_msp_.asp&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&amp;#160;&lt;a href="#fnref1:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://www.ogc.gov.uk/what_is_ogc_gateway_review.asp" target="_blank" rel="noopener">https://www.ogc.gov.uk/what_is_ogc_gateway_review.asp&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Agile Programme Shaping – First Thoughts</title><link>https://www.synesthesia.co.uk/2009/10/25/agile-programme-shaping-first-thoughts/</link><pubDate>Sun, 25 Oct 2009 12:51:35 +0000</pubDate><guid>https://www.synesthesia.co.uk/2009/10/25/agile-programme-shaping-first-thoughts/</guid><description>&lt;p>This is the first of a number of exploratory posts to express and refine my thinking on the subject. I want to pull together a selection of experiences with programme shaping by looking at them through the filter of lean/agile theory.&lt;/p>
&lt;p>Traditionally programme management, especially in public sector, is heavily influenced by stage gates. Having said that, the authors of more recent methodologies (e.g. MSP 2007&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>)  recognise the need for iteration and conceived a “transformational flow” of work that delivers benefits over time.&lt;/p>
&lt;p>The area that I am particularly interested in exploring is the shaping stage of a programme – the early part of the process when the stakeholders come together to agree the benefits to be achieved, the shape of the organisation after the change, the set of initiatives that will be needed, and the business case.&lt;/p>
&lt;p>I see strong parallels between programme shaping and the world of software development – both are dealing with the development of concepts, and the progressive discovery of knowledge about the area of concern. So I freely acknowledge that my thinking is heavily influenced by pioneers in the field of software development such as the Poppendiecks&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup> and David J. Anderson&lt;sup id="fnref:3">&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref">3&lt;/a>&lt;/sup>. Of course the challenge in drawing lessons from a different field is not just to find the translation, but to recognise where the concepts differ, so I would expect that my views will move around as I develop the thoughts.&lt;/p>
&lt;p>The areas that I think need to be explored are:&lt;/p>
&lt;ul>
&lt;li>Understanding the value chain of programmes, especially the programme shaping stage&lt;/li>
&lt;li>Identifying the flow and where the “pull” comes from&lt;/li>
&lt;li>Applying lean principles&lt;/li>
&lt;li>Exploring what it looks like in practice – people, techniques and tools&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://www.synesthesia.co.uk/2009/11/03/lean-programme-shaping-finding-the-value-stream/">Next Post&lt;/a>&lt;/p>
&lt;p>&amp;lt;ins datetime=&amp;ldquo;&amp;ldquo;2019-07-15&amp;gt;Fixed links 2019-07-15&lt;/ins>&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.ogc.gov.uk/delivery_lifecycle_overview_of_managing_successful_programmes_msp_.asp" target="_blank" rel="noopener">https://www.ogc.gov.uk/delivery_lifecycle_overview_of_managing_successful_programmes_msp_.asp&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>&lt;a href="https://www.poppendieck.com/" target="_blank" rel="noopener">https://www.poppendieck.com/&lt;/a>&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:3">
&lt;p>&lt;a href="https://www.agilemanagement.net/" target="_blank" rel="noopener">https://www.agilemanagement.net/&lt;/a>&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Iceberg – other thoughts</title><link>https://www.synesthesia.co.uk/2008/10/08/iceberg-other-thoughts/</link><pubDate>Wed, 08 Oct 2008 17:54:05 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/10/08/iceberg-other-thoughts/</guid><description>&lt;p>I’ve mentioned in previous posts (&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/24/iceberg/" target="_blank" rel="noopener">1&lt;/a>, &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/24/iceberg-creating-the-first-user-story-1/" target="_blank" rel="noopener">2&lt;/a>, &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/25/iceberg-creating-the-first-user-story-2/" target="_blank" rel="noopener">3&lt;/a>, &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/30/iceberg-the-security-model/" target="_blank" rel="noopener">4&lt;/a>) that I’ve been having a small play with &lt;a href="https://www.geticeberg.com/" target="_blank" rel="noopener">Iceberg&lt;/a>, the workflow automation system from &lt;a href="https://www.fractis.com/" target="_blank" rel="noopener">Fractis&lt;/a>.&lt;/p>
&lt;p>Their tagline is “Build Workflow Powered Applications Without Coding”, an appealing concept to many. So how well do I think they have achieved it?&lt;/p>
&lt;p>In terms of relatively straightforward applications, the platform is certainly capable of a fast development of data, forms and processes, as evidenced by the growing list of &lt;a href="https://www.learniceberg.com/Application_Directory/" target="_blank" rel="noopener">sample applications&lt;/a>, and for many cases, especially in smaller businesses, or small teams, that may be enough to get some real benefit. In this area it is particularly interesting that they now have a hosted offering too.&lt;/p>
&lt;p>For larger businesses or more complex processes there are still some things I would like to see them do:&lt;/p>
&lt;ul>
&lt;li>I’d like to see the web services integration completed – at present Iceberg can consume web services but the ability to expose your workflow to other applications as a web service has not been released.&lt;/li>
&lt;li>The ability to create new dashboard controls (if necessary by programming)&lt;/li>
&lt;li>Some consideration of deployment issues – it’s great to be able to iteratively tune an Iceberg application, and in a small enough team it might be possible to do that “on the fly”. But in a larger group it’s important to manage the transition through test into live. I’m sure there are ways to address this at a database level, but if you have the skills in your organisation to do this, how much do you want to be locked into a platform?&lt;/li>
&lt;/ul>
&lt;p>Considering that the platform has only been around a few months, I think what they have done is impressive – I’ll be watching to see how it progresses.&lt;/p></description></item><item><title>Iceberg – the security model</title><link>https://www.synesthesia.co.uk/2008/09/30/iceberg-the-security-model/</link><pubDate>Tue, 30 Sep 2008 10:54:37 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/09/30/iceberg-the-security-model/</guid><description>&lt;p>I’m &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/24/iceberg/" target="_blank" rel="noopener">trying out Iceberg&lt;/a>, the workflow automation platform. In &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/24/iceberg-creating-the-first-user-story-1/" target="_blank" rel="noopener">previous&lt;/a> &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/25/iceberg-creating-the-first-user-story-2/" target="_blank" rel="noopener">posts&lt;/a> I described adding some basic forms, views and processes in the context of a sample application.&lt;/p>
&lt;p>Today I’ve been experimenting with the &lt;a href="https://www.learniceberg.com/6_Security_and_Permissions" target="_blank" rel="noopener">security model&lt;/a>. It seems both complex and powerful, with the downside that the &lt;a href="https://www.learniceberg.com/6_Security_and_Permissions" target="_blank" rel="noopener">online help&lt;/a> seems to be only 25% populated in this area. Here’s what I’ve been able to work out:&lt;/p>
&lt;p>Access Control lists (ACL) – every object (optionally) has an ACL which can control Browse, Read, Write, Delete, Change Owner and Change Permissions rights. A user can be associated with a given ACL by means of direct allocation or via allocation of a relevant Groups, Role or Profile.&lt;/p>
&lt;p>Groups – A way of aggregating Users, other Groups, Roles or Profiles&lt;/p>
&lt;p>Roles – an application-specific way of assigning rights to forms, views, lists, tabs, controls and actions – it seems this is the main way to customise the look and feel of Iceberg based on user login. Strangely you can only assign Users to a Role, not Groups.&lt;/p>
&lt;p>Profiles – are associated with a specific object, and &lt;em>seem&lt;/em> to be a way of controlling what lists of related objects a user can see when looking at a specific object form. What I can’t find is how you assign someone to a profile!&lt;/p></description></item><item><title>Iceberg – Creating the First User Story (2)</title><link>https://www.synesthesia.co.uk/2008/09/25/iceberg-creating-the-first-user-story-2/</link><pubDate>Thu, 25 Sep 2008 09:31:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/09/25/iceberg-creating-the-first-user-story-2/</guid><description>&lt;p>I’m &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/24/iceberg/" target="_blank" rel="noopener">trying out Iceberg&lt;/a>, the workflow automation platform. In my last post I described starting to build an application, based on this &lt;a href="https://www.synesthesia.co.uk/wikka/IssueTracker" target="_blank" rel="noopener">outline specification&lt;/a>. I had just got to the point of trying to meet the first acceptance criterion on the &lt;a href="https://www.synesthesia.co.uk/wikka/IssueTrackerStory0001" target="_blank" rel="noopener">first user story&lt;/a> (all Project Issues must be uniquely identifiable) when I came to a grinding halt.&lt;/p>
&lt;p>The line I started pursuing was to have some kind of global object in which I could store the last used value for a ProjectIssue. I know this is potentially risky in a multi-user environment, but apart from that I have not (yet) been able to find out how Iceberg would allow you to access a global object in the Process Designer.&lt;/p>
&lt;p>A fortuitous search on the Iceberg Support site led me to the video below, on how to implement a unique ID.&lt;/p>
&lt;p>This will probably be enough for our purposes right now – certainly to be sure every Project Issue is uniquely identified within the system. It does mean that if I have multiple projects in the system then sequential issue IDs may be spread over several projects, but the immediate requirement does not require that the Issues for a given project follow a sequential hierarchy – a timely reminder to myself of &lt;a href="https://en.wikipedia.org/wiki/You_Ain%27t_Gonna_Need_It" target="_blank" rel="noopener">YAGNI&lt;/a>!&lt;/p>
&lt;p>This was the only real issue, and once this was cracked, it didn’t take long to add a couple of process steps to set default values for fields. This &lt;a href="https://www.synesthesia.co.uk/wikka/IssueTrackerStory0001" target="_blank" rel="noopener">first user story&lt;/a> is essentially about creating, browsing and editing data, functions which are inherent in the Iceberg environment – so first story done! The &lt;a href="https://www.synesthesia.co.uk/wikka/IssueTrackerStory0002?time=2008-09-24&amp;#43;11%3A41%3A47" target="_blank" rel="noopener">second story, as currently written&lt;/a> also implies only browse and edit, so is met by what we have done so far.&lt;/p>
&lt;p>This will probably suffice for an initial look at how easy it is to use the basic Iceberg functionality – the next things to do are more about refined analysis of the specific application than testing the environment.&lt;/p></description></item><item><title>Iceberg – Creating the First User Story (1)</title><link>https://www.synesthesia.co.uk/2008/09/24/iceberg-creating-the-first-user-story-1/</link><pubDate>Wed, 24 Sep 2008 12:49:40 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/09/24/iceberg-creating-the-first-user-story-1/</guid><description>&lt;p>I’m &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/24/iceberg/" target="_blank" rel="noopener">trying out Iceberg&lt;/a>, the workflow automation platform. In &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/24/iceberg-building-the-first-application/" target="_blank" rel="noopener">my previous post&lt;/a> I decided what application I was going to build, and wrote the first two &lt;a href="https://www.synesthesia.co.uk/wikka/IssueTracker" target="_blank" rel="noopener">user stories&lt;/a>.&lt;/p>
&lt;p>Again, I’m using the &lt;a href="https://www.learniceberg.com/1_Getting_Started" target="_blank" rel="noopener">Iceberg User Guide&lt;/a> to guide me. The first thing that is quite confusing is that the environment within which you are building your application is also the one which displays it – I’m guessing that a later stage creating user-only logins allows you to hide all the configuration options.&lt;/p>
&lt;p>I’ve created a new application, and added two new objects – Project and Project Issue. The next thing I want to do is tell the system that these two are related:&lt;/p>
&lt;p>&lt;a href="https://www.synesthesia.co.uk/blog/wp/uploads/2008/09/issuetracker-classdiag01.png" target="_blank" rel="noopener">&lt;img class="aligncenter size-full wp-image-1275" title="issuetracker-classdiag01" src="https://www.synesthesia.co.uk/blog/wp/uploads/2008/09/issuetracker-classdiag01.png" alt="" width="298" height="129" />&lt;/a>&lt;/p>
&lt;p>Counter-intuitively you do this by modifying the Form for an object rather than the object itself – by adding a field which is of type Select List you create a dropdown field that creates a one-to-many link&lt;/p>
&lt;img class="aligncenter size-full wp-image-1276" title="iceberg-addlinkedfield" src="https://www.synesthesia.co.uk/blog/wp/uploads/2008/09/iceberg-addlinkedfield.png" alt="" width="340" height="335" />
&lt;p>Another thing that you immediately notice is that the listbox used to select the relevant object for the other side of the relationship shows all objects in the system (Iceberg out of the box seems to come pre-populated with certain common objects), reinforcing the point that this is a platform / environment rather than just an application framework. I imagine the idea is that everyone within a company or workgroup would look at the same instance of Iceberg and see a common set of inter-linked applications.&lt;/p>
&lt;p>The next challenge was to ensure that all ProjectIssues are created with a unique identifier. Traditionally this would be done either with built-in DBMS functionality or a trigger on object creation. Time to open up the Process Designer. (also time to find another small IIS7 issue, documented &lt;a href="https://www.learniceberg.com/support/comments.php?DiscussionID=43" target="_blank" rel="noopener">here&lt;/a>).&lt;/p>
&lt;p>OK, time to get thoroughly stuck… (see the &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/25/iceberg-creati%e2%80%a6t-user-story-2iceberg-creating-the-first-user-story-2/" target="_blank" rel="noopener">next post&lt;/a>)&lt;/p></description></item><item><title>Iceberg – building the first application</title><link>https://www.synesthesia.co.uk/2008/09/24/iceberg-building-the-first-application/</link><pubDate>Wed, 24 Sep 2008 10:52:33 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/09/24/iceberg-building-the-first-application/</guid><description>&lt;p>I’m &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/24/iceberg/" target="_blank" rel="noopener">trying out Iceberg&lt;/a>, the workflow automation platform.&lt;/p>
&lt;p>Having successfuly &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/24/iceberg-workflow-automation-platform-installation/" target="_blank" rel="noopener">installed&lt;/a> the platform on my laptop I want to start building something. Of course, the two key questions before building any software (assuming the “Why?” in this case) are “What?” and “How?”.&lt;/p>
&lt;p>For the “How?”, Iceberg provide a good overview on their &lt;a href="https://www.learniceberg.com/1_Getting_Started" target="_blank" rel="noopener">support&lt;/a> pages, which in essence boils down to:&lt;/p>
&lt;ul>
&lt;li>Create the application&lt;/li>
&lt;li>Create the business objects&lt;/li>
&lt;li>Create relationships between objects&lt;/li>
&lt;li>Create forms&lt;/li>
&lt;li>Create views&lt;/li>
&lt;li>Add behaviour and workflow&lt;/li>
&lt;li>Security and permissions&lt;/li>
&lt;li>Connectivity&lt;/li>
&lt;/ul>
&lt;p>For the “What?”, I’m going to build a Project Issue Tracker for use in a &lt;a href="https://www.apmgroup.co.uk/PRINCE2/PRINCE2Home.asp" target="_blank" rel="noopener">Prince2&lt;/a> project environment. I shall start by creating some user stories, linked from &lt;a href="https://www.synesthesia.co.uk/wikka/IssueTracker" target="_blank" rel="noopener">this wiki page&lt;/a>.&lt;/p>
&lt;p>I shall update this post later in the process.&lt;/p>
&lt;p>&lt;ins datetime="2008-09-24T11:43:54+00:00">&lt;br /> Later… I now have the first two user stories added to the wiki, &lt;a href="https://www.synesthesia.co.uk/wikka/IssueTrackerStory0001">Capture Project Issues&lt;/a> and &lt;a href="https://www.synesthesia.co.uk/wikka/IssueTrackerStory0002">Examine Project Issues&lt;/a>&lt;/ins>&lt;/p>
&lt;p>In the next post I will document the first of these being added to Iceberg&lt;/p></description></item><item><title>Iceberg Workflow Automation Platform – Installation</title><link>https://www.synesthesia.co.uk/2008/09/24/iceberg-workflow-automation-platform-installation/</link><pubDate>Wed, 24 Sep 2008 10:22:12 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/09/24/iceberg-workflow-automation-platform-installation/</guid><description>&lt;p>As mentioned in &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/24/iceberg/" target="_blank" rel="noopener">my last post&lt;/a>, I’m trying out &lt;a href="https://www.geticeberg.com/overview/" target="_blank" rel="noopener">Iceberg&lt;/a>.&lt;/p>
&lt;p>Iceberg offer an “all in one” installer using the Cassini webserver, or for more complex installs you can download a zip file with the web application and a configuration script. As I already have SQLExpress and IIS7 in my laptop I chose the latter.&lt;/p>
&lt;p>The setup instructions are very clear, and follow the normal pattern – set up a database and database user, install the web application to a virtual directory on the web server, make sure all users and permissions are correct,&lt;/p>
&lt;p>I encountered three small problems during the setup, two of which were answered on the Iceberg Forums (&lt;a href="https://www.learniceberg.com/support/comments.php?DiscussionID=18" target="_blank" rel="noopener">1&lt;/a>, &lt;a href="https://www.learniceberg.com/support/comments.php?DiscussionID=42" target="_blank" rel="noopener">2&lt;/a>), and a third because the the default configuration of SQLExpress does not have named pipes enabled. In other words the sort of things which always pop up with setting up web applications.&lt;/p>
&lt;p>Having fixed all of those I was presented with the login screen.&lt;figure id="attachment_1263" aria-describedby="caption-attachment-1263" style="width: 361px" class="wp-caption aligncenter">&lt;/p>
&lt;p>&lt;a href="https://www.synesthesia.co.uk/blog/wp/uploads/2008/09/iceberg-signin.png" target="_blank" rel="noopener">&lt;img class="size-full wp-image-1263" title="iceberg-signin" src="https://www.synesthesia.co.uk/blog/wp/uploads/2008/09/iceberg-signin.png" alt="Iceberg Signin Screen" width="361" height="242" />&lt;/a>&lt;figcaption id="caption-attachment-1263" class="wp-caption-text">Iceberg Signin Screen&lt;/figcaption>&lt;/figure>&lt;/p></description></item><item><title>Iceberg</title><link>https://www.synesthesia.co.uk/2008/09/24/iceberg/</link><pubDate>Wed, 24 Sep 2008 10:14:51 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/09/24/iceberg/</guid><description>&lt;p>&lt;a href="https://www.readwriteweb.com/archives/with_iceberg_everyone_can_program.php" target="_blank" rel="noopener">This&lt;/a> Read/Write Web &lt;a href="https://www.readwriteweb.com/archives/with_iceberg_everyone_can_program.php" target="_blank" rel="noopener">article&lt;/a> led me to &lt;a href="https://www.geticeberg.com/" target="_blank" rel="noopener">Iceberg&lt;/a>, a product from Irish company &lt;a href="https://www.fractis.com/" target="_blank" rel="noopener">Fractis&lt;/a> which aims to make it possible for non-programmers to rapidly assemble business workflow applications.&lt;/p>
&lt;p>The applicationn, now at version 2.1, is based on ASP.NET  and SQL Server, and is available as a free download. Licensing is free for non-profits or for up to 5 business users. A hosted version is available starting at $40/month for up to 5 users.&lt;/p>
&lt;p>Users are encourage to upload their &lt;a href="https://www.learniceberg.com/Application_directory" target="_blank" rel="noopener">applications&lt;/a> to the Iceberg site, either for free re-use or for sale.&lt;/p>
&lt;p>The Read/Write web article points to their first look at the beta, in July 2007, and identifies similarities to and differences from &lt;a href="https://www.coghead.com/" target="_blank" rel="noopener">Coghead&lt;/a>, &lt;a href="https://www.salesforce.com/appexchange/" target="_blank" rel="noopener">Salesforce AppExchange&lt;/a> and  &lt;a href="https://www.bungeeconnect.com/" target="_blank" rel="noopener">BungeeConnect&lt;/a>. Another alternative which I have come across previously is &lt;a href="https://www.ninthwave.co.uk/" target="_blank" rel="noopener">PAT&lt;/a> from British company &lt;a href="https://www.ninthwave.co.uk/" target="_blank" rel="noopener">Ninth Wave&lt;/a>.&lt;/p>
&lt;p>Over the next few days I’m going to try building a simple application using Iceberg and will post my findings here.&lt;/p></description></item><item><title>Convalescent Workout</title><link>https://www.synesthesia.co.uk/2008/09/22/convalescent-workout/</link><pubDate>Mon, 22 Sep 2008 15:17:29 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/09/22/convalescent-workout/</guid><description>&lt;p>As I touched on in &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/09/21/high-intensity-interval-training/" target="_blank" rel="noopener">my last post&lt;/a>, I am currently recuperating from an operation on a toe. The constraints I have are that I have to keep my foot elevated as much as possible, am confined to the house, and when I do stand or walk I have to wear a &lt;a href="https://www.darcointernational.com/post/i_pages/ortho.html" target="_blank" rel="noopener">special shoe&lt;/a> to keep me from applying any weight to the fore part of my foot and to protect the protuding &lt;a href="https://www.kirschnerwire.com/" target="_blank" rel="noopener">K-wire&lt;/a>.&lt;/p>
&lt;p>Having &lt;a href="https://www.synesthesia.co.uk/wikka/ResistanceCircuit1" target="_blank" rel="noopener">worked hard&lt;/a> before the operation to get my CV system into reasonable shape, I’m frustrated at the feeling that my fitness is slipping back down again. As I feel physically well apart from my foot, I wanted to work out some exercise I could do in the house. A further constraint is that the only weights we have at home are from an old, small set, and the biggest single weight I can assemble is 12kg.&lt;/p>
&lt;p>After some experimentation, including using a footstool as a poor substitute for a swiss ball, I’ve come up with the following mini-circuit:&lt;/p>
&lt;ul>
&lt;li>single arm chest press (both sides)&lt;/li>
&lt;li>single arm bent-over row (both sides)&lt;/li>
&lt;li>sumo squat&lt;/li>
&lt;li>single arm curl to single arm overhead press (both sides)&lt;/li>
&lt;/ul>
&lt;p>Where the weight I have available is less than I would normally use, I increase the workload by increasing reps and slowing down the cadence. It seems to work well enough to get my heart rate up, and so far as I can tell does not involve any movements which would be dangerous. It’s a long way from being the equivalent of a full workout in the gym, but I hope this will at least make gym re-entry less painful 🙂&lt;/p></description></item><item><title>High Intensity Interval Training</title><link>https://www.synesthesia.co.uk/2008/09/21/high-intensity-interval-training/</link><pubDate>Sun, 21 Sep 2008 11:00:31 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/09/21/high-intensity-interval-training/</guid><description>&lt;p>One of the side-effects of being laid up at home after a minor operation on my foot is that I have time to read about fitness, instead of trying to get to the gym and actually do something about it…&lt;/p>
&lt;p>Like many people I’m a convert to the power of interval training to give measurable fitness effects whilst minimising the time spent on a boring cardio machine at the gym, and I’ve started to think about what workouts I might need to get back into the fitness habit when my foot is recovered.&lt;/p>
&lt;p>I spotted this &lt;a href="https://www.menshealth.com/cda/article.do?site=MensHealth&amp;amp;channel=fitness&amp;amp;category=cardio.activities&amp;amp;conitem=3d812c4d88ee9110VgnVCM10000013281eac____" target="_blank" rel="noopener">article&lt;/a> in the current edition of Men’s Health, reporting on studies at the University of Oklahoma into the effects of interval training. The results they claim are impressive, after 6 weeks of three 20 minute sessions per week the subjects had an average increase in maximum oxygen uptake of 18%.&lt;/p>
&lt;p>The routine is based on a 2 minutes work / 1 minute recovery cycle, with 5 sets per workout (except Wk 5/Day 1 and Wk6/Day 2 which call for 6 sets). With 5 minutes warmup before that comes to 20 mins per session.&lt;/p>
&lt;p>The target work heart rate in this plan is very high – from 90% to 115% of calculated Maximum Heart Rate. As various people have pointed out in the comments to the original article, how can you work at &amp;gt; 100%? The answer seems to be (i) calulated MHR is just an estimate, and (ii) for targets &amp;gt;= 100% just go flat out…&lt;/p>
&lt;p>When I get back into the gym (which might be three weeks at this rate) I’ll give it a go…&lt;/p>
&lt;p>&lt;cite>Reference: &lt;a href="https://www.menshealth.com/cda/article.do?site=MensHealth&amp;channel=fitness&amp;category=cardio.activities&amp;conitem=3d812c4d88ee9110VgnVCM10000013281eac____">Cardiovascular Interval Training – Men’s Health&lt;/a>&lt;/cite>.&lt;/p>
&lt;p>&lt;ins datetime="2008-09-21T12:03:57+00:00">I’ve started planning this out on &lt;a href="https://www.synesthesia.co.uk/wikka/IntervalTrainingPlan">this wiki page&lt;/a>&lt;/ins>&lt;/p></description></item><item><title>Enterprise SaaS and Mashups</title><link>https://www.synesthesia.co.uk/2008/09/16/enterprise-saas-and-mashups/</link><pubDate>Tue, 16 Sep 2008 08:54:19 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/09/16/enterprise-saas-and-mashups/</guid><description>&lt;p>Bill Ives’ &lt;a href="https://billives.typepad.com/portals_and_km/" target="_blank" rel="noopener">Portals and KM&lt;/a> blog has been in my feedlist for a while. This morning I spotted that he has been very prolific recently (across several platforms) on the related subjects of Software as a Service (SaaS) and enterprise &lt;a href="https://en.wikipedia.org/wiki/Mashup_%28web_application_hybrid%29" target="_blank" rel="noopener">mashups&lt;/a>.&lt;/p>
&lt;p>At &lt;a href="https://www.fastforwardblog.com/" target="_blank" rel="noopener">FASTForward&lt;/a>, he reports on &lt;cite>&lt;a href="https://www.fastforwardblog.com/2008/09/10/why-and-how-to-saas-â€“-jeff-kaplan-at-serena-tag/">Why and How to SaaS&lt;/a>, &lt;/cite>a view by Jeff Kaplan of &lt;a href="https://www.thinkstrategies.com/" target="_blank" rel="noopener">THINKStrategies&lt;/a>, and links back to &lt;a href="https://www.fastforwardblog.com/2008/06/11/enterprise-20-conference-notes-%E2%80%93-pete-fields-of-wachovia-on-what-impresses-senior-executives-on-enterprise-20-and-what-doesn%E2%80%99t-make-much-impact/" target="_blank" rel="noopener">an earlier conference presentation&lt;/a> by Pete Fields at &lt;a href="https://www.wachovia.com/" target="_blank" rel="noopener">Wachovia&lt;/a> bank&lt;/p>
&lt;p>At &lt;a href="https://www.theappgap.com/" target="_blank" rel="noopener">The AppGap&lt;/a> Bill &lt;a href="https://www.theappgap.com/successfactors-bringing-web-20-to-talent-management.html" target="_blank" rel="noopener">writes&lt;/a> about the provision of of &lt;a href="https://www.theappgap.com/successfactors-bringing-web-20-to-talent-management.html" target="_blank" rel="noopener">Web 2.0 for talent management&lt;/a> by &lt;a href="https://www.successfactors.com/" target="_blank" rel="noopener">SuccessFactors&lt;/a>.&lt;/p>
&lt;p>And at his own Portals and KM blog Bill has a series of (sponsored) posts from the &lt;a href="https://www.serena.com/" target="_blank" rel="noopener">Serena&lt;/a> Tag 2008 conference, including the views of &lt;a href="https://billives.typepad.com/portals_and_km/2008/09/blogging-sere-2.html" target="_blank" rel="noopener">Forrester&lt;/a> and &lt;a href="https://billives.typepad.com/portals_and_km/2008/09/blogging-sere-3.html" target="_blank" rel="noopener">Gartner&lt;/a> on mashups in the enterprise.&lt;/p></description></item><item><title>PRINCE2 Practitioner</title><link>https://www.synesthesia.co.uk/2008/07/21/prince2-practitioner-2/</link><pubDate>Mon, 21 Jul 2008 15:25:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/07/21/prince2-practitioner-2/</guid><description>&lt;p>I’ve just heard that I have passed my PRINCE2 Practitioner qualification, thanks to the excellent help of &lt;a href="https://www.pearcemayfield.com/" title="Link to Pearce Mayfield website" target="_blank" rel="noopener">Pearce Mayfield&lt;/a>.&lt;/p>
&lt;p>I’ve been familiar with the &lt;a href="https://www.prince2.org.uk/home/home.asp" target="_blank" rel="noopener">PRINCE2&lt;/a> method for a number of years, and have certainly applied the principles to local methods, but have resisted getting into it too formally because of the bureaucratic nightmare I have seen many organisations make from it.&lt;/p>
&lt;p>One of the best things I can say about the Pearce Mayfield training is that through it I have seen, by contrast,  how to make PRINCE2 a living and breathing approach to delivering a project.&lt;/p></description></item><item><title>PRINCE2 Practitioner</title><link>https://www.synesthesia.co.uk/2008/07/21/prince2-practitioner/</link><pubDate>Mon, 21 Jul 2008 15:24:02 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/07/21/prince2-practitioner/</guid><description>&lt;p>I’ve just heard that I have passed my PRINCE2 Practitioner qualification, thanks to the excellent help of &lt;a href="https://www.pearcemayfield.com/" title="Link to Pearce Mayfield website" target="_blank" rel="noopener">Pearce Mayfield&lt;/a>.&lt;/p>
&lt;p>I’ve been “broadly familiar” with the &lt;a href="https://www.prince2.org.uk/home/home.asp" target="_blank" rel="noopener">PRINCE2&lt;/a> method for a number of years, but have resisted getting into it too deeply because of the bureaucratic nightmare I have seen many organisations make from it.&lt;/p>
&lt;p>One of the best things I can say about the Pearce Mayfield training is that through it I have seen, by contrast,  how to make PRINCE2 a living and breathing approach to delivering a project.&lt;/p></description></item><item><title>The up- and down-sides of the cloud?</title><link>https://www.synesthesia.co.uk/2008/07/21/the-up-and-down-sides-of-the-cloud/</link><pubDate>Mon, 21 Jul 2008 08:34:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/07/21/the-up-and-down-sides-of-the-cloud/</guid><description>&lt;p>One ex-colleague &lt;a href="https://theobvious.typepad.com/blog/2008/07/telegraph-cio-o.html" target="_blank" rel="noopener">points&lt;/a> to a CIO Magazine article about another – Paul Cheesbrough’s &lt;a href="https://view.atdmt.com/STM/iview/ckxxiavy0180000002stm/direct/01/550192723?click=https://adserver.adtech.de/adlink%7c340%7c1114281%7c0%7c171%7cAdId=1883961;BnId=1;itime=550192720;key=top;nodecode=yes;link=" target="_blank" rel="noopener">decision to migrate users at the Daily Telegraph from MS Office to Google Apps.&lt;/a>&lt;/p>
&lt;p>It’s an interesting choice, one I’ve pushed people to think about, and I can identify with the collaboration benefits that Paul has identified. But will it suit all of his users?&lt;/p>
&lt;p>The key thing to remember about cloud apps is that you don’t control the storage of your data, and you often don’t control the circumstances in which it gets released.&lt;/p>
&lt;p>From conversations I’ve had with other people in the newspaper industry, I would imagine that by the nature of newspapers some of their staff will be in parts of the world where their activities will be unpopular, and where some of those documents or emails could get them into the way of all sorts of harm.&lt;/p>
&lt;p>So how robustly would the provider (in this case Google) resist a law suit from the people who want to know what a paper has on them? Especially if that’s a government or a multi-national with deep pockets?&lt;/p></description></item><item><title>How simple is “simple enough”?</title><link>https://www.synesthesia.co.uk/2008/07/11/how-simple-is-simple-enough/</link><pubDate>Fri, 11 Jul 2008 14:04:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/07/11/how-simple-is-simple-enough/</guid><description>&lt;p>Or &lt;strong>“Simplifying an ‘architecture framework’ for agile strategy”&lt;/strong>&lt;/p>
&lt;p>How often have you faced the situation where you need to get something done, and you know there’s all sorts of advice and guidance available, but you only have a limited time to implement something?&lt;/p>
&lt;p>My current challenge is to relatively rapidly put together some strategic roadmaps for the systems in a business area.&lt;/p>
&lt;p>In the past I’ve spent a very small amount of time studying &lt;a href="https://www.opengroup.org/architecture/togaf8-doc/arch/" title="The Open Group Architecture Framework" target="_blank" rel="noopener">TOGAF&lt;/a>, just enough to appreciate the coverage of the model and to feel overwhelmed by the amount of material and unfamiliar language.&lt;/p>
&lt;p>My current feeling is that it &lt;u>could&lt;/u> serve as a guide for the piece of work I need to do, but I need to find a lightweight way through it.&lt;/p>
&lt;p>Apologies in advance to all the experts out there, but I think the gist of what it says is:&lt;/p>
&lt;ul>
&lt;li>Agree the objectives of the piece of work&lt;/li>
&lt;li>Review the business environment and understand the drivers for change&lt;/li>
&lt;li>Sketch out some possible changes to the business environment (e.g. process changes)&lt;/li>
&lt;li>Review the impact on the systems and data, and sketch out some possible changes.&lt;/li>
&lt;li>Review the impact on the technology, and sketch out some possible changes.&lt;/li>
&lt;li>Decide on some interventions on all three levels that will address the drivers for change&lt;/li>
&lt;li>Do some of them&lt;/li>
&lt;li>Review and repeat as necessary&lt;/li>
&lt;/ul>
&lt;p>Seems logical, I’ll see how it goes – and if this is something you specialise in let me know if I’m missing something!&lt;/p></description></item><item><title>Delivering successful IT-enabled business change</title><link>https://www.synesthesia.co.uk/2008/05/20/delivering-successful-it-enabled-business-change/</link><pubDate>Tue, 20 May 2008 10:15:54 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/05/20/delivering-successful-it-enabled-business-change/</guid><description>&lt;p>&lt;a href="https://www.nao.org.uk/publications/nao_reports/06-07/060733-i.pdf" title="Delivering successful IT-enabled business change (pdf)" target="_blank" rel="noopener">Delivering successful IT-enabled business change&lt;/a> (PDF), published by National Audit Office November 2006.&lt;/p>
&lt;p>&lt;strong>Summary&lt;/strong>&lt;/p>
&lt;p>IT-enabled business change essential for reforming public services.&lt;/p>
&lt;p>Many examples of failure, report examines 24 examples of success to draw out key factors, projects from £k20 to £M800+.&lt;/p>
&lt;p>For the critical success factors identifies key questions to assess likelihood of success.&lt;/p>
&lt;p>&lt;strong>Critical Success Factors (and related questions)&lt;/strong>&lt;/p>
&lt;p>&lt;span style="text-decoration: underline;">Ensuring senior level engagement&lt;/span>&lt;/p>
&lt;ul>
&lt;li>Is the board able to make informed judgements about the department’s capacity to manage change?&lt;/li>
&lt;li>Does the department have in place a decision making structure that will ensure strong and effective leadership of the IT-enabled business change?&lt;/li>
&lt;li>What incentives exist to drive performance?&lt;/li>
&lt;/ul>
&lt;p>&lt;span style="text-decoration: underline;">Acting as an intelligent client&lt;/span>&lt;/p>
&lt;ul>
&lt;li>Does the department have the necessary programme management skills?&lt;/li>
&lt;li>What is the natural division of duties between the Programme and Project Management Centre of Excellence and the Chief Information Officer?&lt;/li>
&lt;li>How will the department establish and promote an open and constructive relationship with suppliers?&lt;/li>
&lt;li>How clear is the department about the business process that it is seeking to change or develop?&lt;/li>
&lt;li>Does the technology exist to deliver the change?&lt;/li>
&lt;/ul>
&lt;p>&lt;span style="text-decoration: underline;">Realising the benefits of change&lt;/span>&lt;/p>
&lt;ul>
&lt;li>Beyond immediate technical success, how will wider benefits be secured?&lt;/li>
&lt;/ul></description></item><item><title>An unremarkable coincidence</title><link>https://www.synesthesia.co.uk/2008/04/29/an-unremarkable-coincidence/</link><pubDate>Tue, 29 Apr 2008 11:56:45 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/04/29/an-unremarkable-coincidence/</guid><description>&lt;p>A few months ago I spent some time exploring my wife’s family tree. One fragment of jigsaw was a census return from 1851 showing one of her 3–greats-grandfathers, then age 16, living with his parents at 13 Cambridge Street in Soho.&lt;/p>
&lt;p>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/04/29/an-unremarkable-coincidence/1851-census-abstract/" rel="attachment wp-att-1152" title="1851 census abstract">&lt;img src="https://www.synesthesia.co.uk/blog/wp/uploads/2008/04/1851-fisher-002.jpg" alt="1851 census abstract" width="400" />&lt;/a>&lt;/p>
&lt;p>I looked at the current London street map and found there is no Cambridge Street in Soho any more, and that was the end of my curiosity.&lt;/p>
&lt;p>Skip forward to last week, and I finally got around to reading &lt;a href="https://www.amazon.co.uk/o/ASIN/0141029366/202-9794534-0950215?SubscriptionId=1N9AHEAQ2F6SVD97BE02" target="_blank" rel="noopener">Ghost Map&lt;/a> by Steven Johnson.&lt;/p>
&lt;p>&lt;a href="https://www.amazon.co.uk/gp/redirect.html%3FASIN=0141029366%26tag=fivegocrazyinmid%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/0141029366%253FSubscriptionId=1N9AHEAQ2F6SVD97BE02" target="_blank" rel="noopener">&lt;img src="https://ecx.images-amazon.com/images/I/511I-kR7rxL._SL160_.jpg" class="floatleftmargin" width="107" />&lt;/a>&lt;/p>
&lt;p>Johnson takes as his central theme the story of John Snow, and his pioneering work with Henry Whitehead during and after the 1854 cholera outbreak in Soho which proved for the first time that cholera was a water-borne infection.&lt;/p>
&lt;p>One of the key tools used by Snow was to plot the course of the outbreak on a &lt;a href="https://www.ph.ucla.edu/epi/snow/snowmap1_1854_lge.htm" target="_blank" rel="noopener">map&lt;/a>. Looking at the map I realised I had found Cambridge Street – the old name for the upper part of what is now &lt;a href="https://maps.google.com/maps/ms?ie=UTF8&amp;amp;hl=en&amp;amp;msa=0&amp;amp;msid=114870744536353390965.00044c02bb06d216f6039&amp;amp;z=17" target="_blank" rel="noopener">Lexington Street&lt;/a>.&lt;/p>
&lt;p>The slightly more detailed general &lt;a href="https://www.matrix.msu.edu/~johnsnow/images/online_companion/chapter_images/fig11-6.jpg" target="_blank" rel="noopener">Board of Health Map&lt;/a> based on Snow’s work also shows the old house numbers – and this shows number 13, just 7 doors down from the infamous pump which spread the disease.&lt;/p>
&lt;p>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/04/29/an-unremarkable-coincidence/general-board-of-health-map/" rel="attachment wp-att-1153" title="General Board of Health map">&lt;img src="https://www.synesthesia.co.uk/blog/wp/uploads/2008/04/broadstreet-gbhmap.jpg" alt="General Board of Health map" width="500" />&lt;/a>&lt;/p>
&lt;p>The coincidence is that a direct ancestor of my wife lived in a house which, three years after evidence of their residence, was in the centre of a particularly virulent and well-documented outbreak of cholera. Today, in a modern city, that would be worthy of comment: in Victorian London perhaps less so.&lt;/p>
&lt;p>We have no way of knowing if they were still in residence three years after the census, and thus survivors of the outbreak, but even if they had moved on, the descriptions of the Broad Street area provide a fascinating insight into the circumstances in which they lived.&lt;/p>
&lt;p>More interesting, to me at least, are the aspects of my curiosity which set up this piece of serendipitous discovery – family history, networks of connections, a lifelong fascination with maps and the story they tell, and the ever-fascinating mental game of “What if… ?”&lt;/p></description></item><item><title>Who Owns My Social Graph?</title><link>https://www.synesthesia.co.uk/2008/03/10/who-owns-my-social-graph/</link><pubDate>Mon, 10 Mar 2008 14:00:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/10/who-owns-my-social-graph/</guid><description>&lt;p>In a &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/03/05/web-20-and-beyond-social-is-good-for-business/#comment-221143" target="_blank" rel="noopener">comment&lt;/a>, Neil Burton of &lt;a href="https://enterprise.snockles.com/" rel="external nofollow">Web Spiders&lt;/a> picks up on my rhetorical question &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/03/05/web-20-and-beyond-social-is-good-for-business/" target="_blank" rel="noopener">&lt;em>why would I want my employer to own my social graph?&lt;/em>&lt;/a> __by asking&lt;/p>
&lt;blockquote cite="https://www.synesthesia.co.uk/blog/archives/2008/03/05/web-20-and-beyond-social-is-good-for-business/#comment-221143">
&lt;p>
In this case &lt;em>[an enterprise social networking tool provided by the company]&lt;/em> is your social graph actually intellectual property of the company? would a company who gave you a tool want you to use the benefits of this when moving to another organisation (who could be a competitor)?
&lt;/p>
&lt;/blockquote>
&lt;p>I can certainly see Neil’s point, indeed in pre-Web 2.0 days a whole body of law has grown up around the use of contact lists etc. that one has accumulated through the course of carrying out a job. I don’t know if there is any relevant case law that brings this up to date…&lt;/p>
&lt;p>On the other side of the coin, as an individual I clearly feel that the information about my connections to other people (i.e. my relationships to other people) is absolutely &lt;em>my&lt;/em> information. Even if the means of expressing and sharing that information belongs to an employer or a third party like &lt;a href="https://www.linkedin.com/in/julianelve" target="_blank" rel="noopener">LinkedIn&lt;/a> or &lt;a href="https://www.facebook.com/profile.php?id=524112789" target="_blank" rel="noopener">Facebook&lt;/a>.&lt;/p>
&lt;p>Perhaps there is a lesson for employers from the situation with “public” social networking sites. Clearly sites have a business proposition around “monetising” the network &lt;em>(aside – we so have to find a better verb!)&lt;/em> that users create. In return we accept (or put up with) that because of the benefits we perceive from sharing our connections. The sites have to make their proposition attractive or else there will be no network and no money. The analogy within an organisation would be the organisation investing in the tools in order to benefit from a more effective workforce, giving the users the benefits &lt;em>they&lt;/em> perceive.&lt;/p>
&lt;p>In all cases the underlying tension is between a closed network and an open one. For users open networks or the ability to transfer their information from one system to another is a key benefit. For employers the typical initial reaction will be similar to Neil’s – if this gives us an advantage we want to keep it in house. My feeling is that this analysis springs in part from assuming the social graph is like a list of contact details – information that can be of value to anyone.&lt;/p>
&lt;p>Looking deeper though, I think a better analogy would be to think of a person’s social graph as if it was part of their training and development record. Just because two people have been on the same course they do not necessarily have the same skills. Just because two people both express a relationship to me via a networking site that does not make our working relationships equivalent. &lt;strong>Human relationships are not &lt;a href="https://en.wikipedia.org/wiki/Fungibility" target="_blank" rel="noopener">fungible&lt;/a>&lt;/strong>.&lt;/p>
&lt;p>So if a free market in “labour” is of benefit to the firm, and if the effectiveness of a workforce is enhanced by the use of tools that can express relationships, then surely an advantage for such network sharing systems must be the ease with which the information is imported, exported and shared?&lt;/p>
&lt;p>There’s a lot to develop here, and some people have already been paying attention to it. This &lt;a href="https://www.readwriteweb.com/archives/social_graph_concepts_and_issues.php" target="_blank" rel="noopener">article&lt;/a> by &lt;a href="https://www.readwriteweb.com/about_alex.php" target="_blank" rel="noopener">Alex Iskold&lt;/a> would seem to be a good starting summary, pointing as it does to Brad Fitzpatrick’s post &lt;a href="https://bradfitz.com/social-graph-problem/" target="_blank" rel="noopener">Thoughts on The Social Graph&lt;/a>.&lt;/p></description></item><item><title>The Life Of The Mind</title><link>https://www.synesthesia.co.uk/2008/03/09/the-life-of-the-mind/</link><pubDate>Sun, 09 Mar 2008 17:15:53 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/09/the-life-of-the-mind/</guid><description>&lt;p>&lt;a href="https://williamtozier.com/slurry/2008/03/03/there-are-exactly-two-ways-one-and-many" target="_blank" rel="noopener">This&lt;/a> is well worth reading:&lt;/p>
&lt;blockquote cite="https://williamtozier.com/slurry/2008/03/03/there-are-exactly-two-ways-one-and-many">
&lt;p>
[…] The Life of the Mind is not professorship, not building a long curriculum vita, it’s not being a talking head with a big wizardy beard and a floppy hat on Discovery Channel. It’s the cultivated ability to span boundaries, cross borders of disciplines, bring what you’ve learned over there to bear over here, where they haven’t seen the connection.The Life of the Mind is merely &lt;em>acting on the belief that what we see around us fits together&lt;/em>. That everything is, in some context, &lt;em>of use&lt;/em>. […]
&lt;/p>
&lt;/blockquote>
&lt;p>&lt;a href="https://williamtozier.com/slurry/" target="_blank" rel="noopener">Bill Tozier&lt;/a>, &lt;a href="https://williamtozier.com/slurry/2008/03/03/there-are-exactly-two-ways-one-and-many" target="_blank" rel="noopener">There are exactly two ways: one, and many&lt;/a> [via &lt;a href="https://blogs.salon.com/0002007/2008/03/08.html#a2116" target="_blank" rel="noopener">Dave Pollard&lt;/a>]&lt;/p></description></item><item><title>Web 2.0: Deploying, measuring and succeeding with Social Software</title><link>https://www.synesthesia.co.uk/2008/03/06/web-20-deploying-measuring-and-succeeding-with-social-software/</link><pubDate>Thu, 06 Mar 2008 14:44:50 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/06/web-20-deploying-measuring-and-succeeding-with-social-software/</guid><description>&lt;p>I’m at &lt;a href="https://www.focusbiz.co.uk/conferences/web2.0/" target="_blank" rel="noopener">Web 2.0 and Beyond – Applying Social and Collaborative Tools To Business&lt;/a> .&lt;/p>
&lt;p>&lt;strong>Deploying, measuring and succeeding with Social Software&lt;/strong>&lt;/p>
&lt;p>Ian McNairn, &lt;a href="https://www.ibm.com/software/lotus/products/connections" target="_blank" rel="noopener">IBM SWG&lt;/a>&lt;/p>
&lt;p>What does success mean – critical mass? application use? customer delight? increased profit? in other words &lt;em>be clear what you want&lt;/em>.&lt;/p>
&lt;p>Know what to measure – communities and social networks are different things – determine the business outcome (look for linked indicators) – get clear about the changes you want to get – think about cause and effect. Just because it’s easy to measure, doesn’t mean it means anything…&lt;/p>
&lt;p>Measure impact and usage – based on the business outcome. examples, Knowledge Currency, tagging, polls, linking, availability vs. time-to-complain&lt;/p>
&lt;p>Pitfalls to avoid – don’t decide on metrics without thinking about context, don’t measure the past, beware “build it and they will come”, don’t try to boil the ocean, don’t expect all users to have equal understanding.&lt;/p>
&lt;p>Deployment tricks to increase success – pre-populate with content, engage the members in interaction, on-demand in-context help, make enrollment easy, reward contributions by example.&lt;/p></description></item><item><title>Web 2.0: Who’s Afraid of Identity?</title><link>https://www.synesthesia.co.uk/2008/03/06/web-20-whos-afraid-of-identity/</link><pubDate>Thu, 06 Mar 2008 14:01:22 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/06/web-20-whos-afraid-of-identity/</guid><description>&lt;p>I’m at &lt;a href="https://www.focusbiz.co.uk/conferences/web2.0/" target="_blank" rel="noopener">Web 2.0 and Beyond – Applying Social and Collaborative Tools To Business&lt;/a> .&lt;/p>
&lt;p>&lt;strong>Who’s Afraid of Identity?&lt;/strong>&lt;/p>
&lt;p>Tom Ilube, &lt;a href="https://www.garlik.com/" target="_blank" rel="noopener">Garlik&lt;/a>&lt;/p>
&lt;p>Garlik aiming at the “mainstream digital consumer”&lt;/p>
&lt;p>Explosion of personal data on the web in last 18 months. Equivalent huge rise in ID theft.&lt;/p>
&lt;p>Consumers don’t understand identity management…&lt;/p>
&lt;p>But people make decisions about us based on our web status…&lt;/p>
&lt;p>And then the talk ended – mostly a “here we are” pitch for Garlik without actually saying anything about what they do…&lt;/p></description></item><item><title>Web 2.0: The Power of Film</title><link>https://www.synesthesia.co.uk/2008/03/06/web-20-the-power-of-film/</link><pubDate>Thu, 06 Mar 2008 12:36:26 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/06/web-20-the-power-of-film/</guid><description>&lt;p>I’m at &lt;a href="https://www.focusbiz.co.uk/conferences/web2.0/" target="_blank" rel="noopener">Web 2.0 and Beyond – Applying Social and Collaborative Tools To Business&lt;/a>&lt;/p>
&lt;p>The Power of Film – Adding video podcasts to the communications mix&lt;/p>
&lt;p>Joyce Lewis, &lt;a href="https://www.ecs.soton.ac.uk/" target="_blank" rel="noopener">University of Southampton&lt;/a>&lt;/p>
&lt;p>First video podcasting news service in any UK university (March 2006)&lt;/p>
&lt;p>&lt;em>“People don’t care about cold facts. They care about pictures or stories”&lt;/em> – Nancy Green, Donovan and Green.&lt;/p>
&lt;p>ECS website has 827,000 pages(!). Video podcasting backs up a lot of the messages .&lt;/p>
&lt;p>Inclusion and empowerment – for example, use of videos to support staff through a major upheaval after a key building was destroyed, adding emotional depth.&lt;/p>
&lt;p>JE thought – how is this “Web 2.0”? – feels just like broadcasting to me…&lt;/p></description></item><item><title>Web 2.0: Social Media In Action</title><link>https://www.synesthesia.co.uk/2008/03/06/web-20-social-media-in-action/</link><pubDate>Thu, 06 Mar 2008 11:32:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/06/web-20-social-media-in-action/</guid><description>&lt;p>I’m at &lt;a href="https://www.focusbiz.co.uk/conferences/web2.0/" target="_blank" rel="noopener">Web 2.0 and Beyond – Applying Social and Collaborative Tools To Business&lt;/a> .&lt;/p>
&lt;p>&lt;strong>Social Media in Action&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://www.adrianjmoss.com/" target="_blank" rel="noopener">Adrian Moss&lt;/a> – BOTTLE PR and Focus Business Communications&lt;/p>
&lt;p>&lt;strong>Poundland Case Study – using social media to support a retail operation.&lt;/strong>&lt;/p>
&lt;p>Number 1 single price discount retailer in Europe. IT driven retail distribution. Lots of short-run and end-of-line product.&lt;/p>
&lt;p>Blog experiment to promote Xmas lines – aiming for &amp;lt;£1 cost per visitor&lt;/p>
&lt;p>12k visitors in 10 weeks. &amp;lt;50p CPV. Lots of links from blog to company website. 100 active subscribers / Facebook friends. Typically each Facebook friend has 50-100 other friends. Echo chamber effect – 360% increase in referrals to website. &lt;a href="https://www.poundlandblog.co.uk/" target="_blank" rel="noopener">Blog&lt;/a> probably worth £0.5M already. Extrapolate to a full year, turnover ~ £1.5M &amp;lt;=&amp;gt; 0.5 of a store.&lt;/p>
&lt;p>Key was planning. Audience, tone/style/format. Core objectives: engage with key targets, regular posts (3-7/wk), note new product lines.&lt;/p>
&lt;p>Lessons: listen to feedback, adjust and adapt go with the flow and the rules, if you make a mistake, acknowledge&lt;/p></description></item><item><title>Web 2.0: KM Goes Social: From KM 1.0 to KM 2.0</title><link>https://www.synesthesia.co.uk/2008/03/06/web-20-km-goes-social-from-km-10-to-km-20/</link><pubDate>Thu, 06 Mar 2008 10:14:37 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/06/web-20-km-goes-social-from-km-10-to-km-20/</guid><description>&lt;p>I’m at &lt;a href="https://www.focusbiz.co.uk/conferences/web2.0/" target="_blank" rel="noopener">Web 2.0 and Beyond – Applying Social and Collaborative Tools To Business&lt;/a> .&lt;/p>
&lt;p>&lt;strong>KM Goes Social: From KM 1.0 to KM 2.0&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://www.gurteen.com/" target="_blank" rel="noopener">David Gurteen&lt;/a>&lt;/p>
&lt;p>Impact of social tools on Knowledge Management – growth of “KM 2.0”&lt;/p>
&lt;p>Techno-centric KM (tools) vs People-Centric KM (attitudes, soft tools)&lt;/p>
&lt;p>KM in the doldrums – over-promised, under-delivered in business terms&lt;/p>
&lt;p>Social tools are fundamentally about sharing knowledge – personal/social KM! (but not usually coming from the KM community or tool vendors)&lt;/p>
&lt;p>Everything is 2.0 now – i.e. participatory. Can be seen as disruptive and subversive.&lt;/p>
&lt;p>Combine people-centric KM and social tools to form KM 2.0&lt;/p>
&lt;p>Managing tacit knowledge&lt;/p>
&lt;p>KM as part of everyday work (thinking out loud) rather than extra work.&lt;/p>
&lt;p>&lt;ins datetime="2008-03-06T10:14:41+00:00">Floor comment from &lt;a href="https://eightbar.co.uk/about/epredator/">Ian Hughes&lt;/a> – the importance of allowing lurking as a way of building comfort.&lt;/ins>&lt;/p></description></item><item><title>Web 2.0: Business in Virtual Worlds, How we got here with Web 2.0</title><link>https://www.synesthesia.co.uk/2008/03/05/web-20-business-in-virtual-worlds-how-we-got-here-with-web-20/</link><pubDate>Wed, 05 Mar 2008 16:31:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/05/web-20-business-in-virtual-worlds-how-we-got-here-with-web-20/</guid><description>&lt;p>I’m at &lt;a href="https://www.focusbiz.co.uk/conferences/web2.0/" target="_blank" rel="noopener">Web 2.0 and Beyond – Applying Social and Collaborative Tools To Business&lt;/a> .&lt;/p>
&lt;p>&lt;strong>Business in Virtual Worlds, How we got here with Web 2.0&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://eightbar.co.uk/about/epredator/" target="_blank" rel="noopener">Ian Hughes&lt;/a>, Metaverse Evangelist IBM&lt;/p>
&lt;ul>
&lt;li>What are metaverses and virtual worlds and why are they at a social media conf?&lt;/li>
&lt;li>And why do IBM care?&lt;/li>
&lt;/ul>
&lt;p>It’s all about people… In virtual worlds the visible presence and (e.g.) body language provides strong social signals.&lt;/p>
&lt;p>Fundamentally no different from blogs, IM etc – still about people and conversations&lt;/p>
&lt;p>About user-created content – just like blogs / wikis / flickr&lt;/p>
&lt;p>Real-life sensitivities – e.g. the tribute band &lt;a href="https://www.u2insl.com/index2.html" target="_blank" rel="noopener">U2 in SL&lt;/a>… except that U2 and the record company seem to have worked out that this doesn’t hurt the U2 brand.&lt;/p>
&lt;p>But online reputation counts… identity is important, but some protection in people recognising imposters through inconsistent behaviour.&lt;/p>
&lt;p>Intraverses – virtual worlds inside the firewall&lt;/p>
&lt;p>Virtual World Guidelines – treat it as a new country, learn and observe, connect and talk with fellow (insert company name), act with integrity, it’s the internet – beware and be broad-minded…&lt;/p>
&lt;p>“Web 2.0 is Web Do”&lt;/p></description></item><item><title>Web 2.0 and Beyond: Technology Brings Power To The People</title><link>https://www.synesthesia.co.uk/2008/03/05/web-20-and-beyond-technology-brings-power-to-the-people/</link><pubDate>Wed, 05 Mar 2008 15:11:05 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/05/web-20-and-beyond-technology-brings-power-to-the-people/</guid><description>&lt;p>I’m at &lt;a href="https://www.focusbiz.co.uk/conferences/web2.0/" target="_blank" rel="noopener">Web 2.0 and Beyond – Applying Social and Collaborative Tools To Business&lt;/a> .&lt;/p>
&lt;p>&lt;strong>Technology Brings Power to the People&lt;/strong>&lt;/p>
&lt;p>Crispin O’Brien KPMG&lt;/p>
&lt;p>Recent survey published – Enterprise 2.0 The Benefits and Challenges of Adoptions&lt;/p>
&lt;p>John Chambers CEO Cisco – Cisco moving into enterprise Web 2.0 because old space they compete in is becoming too crowded…&lt;/p>
&lt;p>So what has all this stuff got to do with business? And what do you let through the firewall?&lt;/p>
&lt;p>Internal benefits – find stuff, keep track of what we know, share who and what we know&lt;/p>
&lt;p>External benefits – get really close to customers, harness ideas (LOTS of ideas), find and nurture partners / suppliers&lt;/p>
&lt;p>The human dynamics of encouraging people to share and contribute – possibly tie in some part of reward to sharing behaviours?&lt;/p>
&lt;p>Email and intranet is bilateral, sequential, run centrally and DULL&lt;/p>
&lt;p>To find stuff we use Google – why not use those sort of tools in business&lt;/p>
&lt;p>Corporate blogs – ideally uncensored…&lt;/p>
&lt;p>Controlled collaboration – walled gardens&lt;/p>
&lt;p>The power of tagging.&lt;/p>
&lt;p>Innovation and sharing – successful companies of the future need to take heed of all their stakeholders.&lt;/p>
&lt;p>There are risks of course, but need to update the controls and risk management.&lt;/p></description></item><item><title>Web 2.0 and Beyond: Facilitating Open Innovation in A Distributed Community Using Free Social Software Tools</title><link>https://www.synesthesia.co.uk/2008/03/05/web-20-and-beyond-facilitating-open-innovation-in-a-distributed-community-using-free-social-software-tools/</link><pubDate>Wed, 05 Mar 2008 14:42:40 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/05/web-20-and-beyond-facilitating-open-innovation-in-a-distributed-community-using-free-social-software-tools/</guid><description>&lt;p>I’m at &lt;a href="https://www.focusbiz.co.uk/conferences/web2.0/" target="_blank" rel="noopener">Web 2.0 and Beyond – Applying Social and Collaborative Tools To Business&lt;/a>&lt;/p>
&lt;p>&lt;strong>Facilitating Open Innovation in A Distributed Community Using Free Social Software Tools&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://www.ished.net/people/" target="_blank" rel="noopener">Claire Reddington&lt;/a>, &lt;a href="https://www.ished.org.uk/" target="_blank" rel="noopener">iShed&lt;/a> &amp;amp; Ed Mitchell, &lt;a href="https://www.edmitchell.co.uk/" target="_blank" rel="noopener">Ed Mitchell Consulting&lt;/a>&lt;/p>
&lt;p>iShed is spin off from Watershed media centre in Bristol, to bring together media and R&amp;amp;D – investing in 6 SMEs to research into media blue sky stuff – including Aardman Animations.&lt;/p>
&lt;p>Have used project blogs etc. for years. This time wanted to do something different.&lt;/p>
&lt;p>Media Sandbox – looking at pervasive media – want to create a commmunity of interest and support a community of practice.&lt;/p>
&lt;p>Quoted &lt;a href="https://www.charlesleadbeater.net/home.aspx" target="_blank" rel="noopener">Charles Leadbetter&lt;/a>&lt;/p>
&lt;p>Three year project – three times one year. Want to learn and adapt.&lt;/p>
&lt;p>Blogs, mailing lists, 3rd party apps like flickr, physical gatherings, workshops etc.&lt;/p>
&lt;p>Preparation, launch event, open innovation, progress and final results…&lt;/p>
&lt;p>Collaborative R&amp;amp;D with small SMEs is a big thing – they find it hard to make space to do this blue sky thinking.&lt;/p>
&lt;p>By the community for the community – the media community helped shape the criteria for grant award&lt;/p>
&lt;p>Question they posed – how can this online stuff help us measure (various success criteria)&lt;/p></description></item><item><title>Web 2.0 and Beyond: Social is Good for Business</title><link>https://www.synesthesia.co.uk/2008/03/05/web-20-and-beyond-social-is-good-for-business/</link><pubDate>Wed, 05 Mar 2008 12:50:25 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/05/web-20-and-beyond-social-is-good-for-business/</guid><description>&lt;p>I’m at &lt;a href="https://www.focusbiz.co.uk/conferences/web2.0/" target="_blank" rel="noopener">Web 2.0 and Beyond – Applying Social and Collaborative Tools To Business&lt;/a> .&lt;/p>
&lt;p>&lt;strong>Social is Good for Business: Snockles&lt;/strong>&lt;/p>
&lt;p>Neil Burton, &lt;a href="https://www.webspiders.com/en/index.asp" target="_blank" rel="noopener">Web Spiders&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://enterprise.snockles.com/" target="_blank" rel="noopener">Enterprise Snockles&lt;/a> – a corporate version of &lt;a href="https://www.snockles.com/" target="_blank" rel="noopener">Snockles&lt;/a> – yet another social messaging app which looks like another &lt;a href="https://www.twitter.com" target="_blank" rel="noopener">Twitter.&lt;/a>&lt;/p>
&lt;p>Aimed at creating a corporate social network to build better commercial and team relationships, improve knowledge management, build communities, speed up innovation.&lt;/p>
&lt;p>Web and mobile phone integrated.&lt;/p>
&lt;p>&lt;em>Key thought (JE) – why would I want my employer to own my social graph?&lt;/em>&lt;/p></description></item><item><title>Web 2.0 and Beyond: A Whistlestop Tour Round Web Marketing 2.0</title><link>https://www.synesthesia.co.uk/2008/03/05/web-20-and-beyond-a-whistlestop-tour-round-web-marketing-20/</link><pubDate>Wed, 05 Mar 2008 12:20:57 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/05/web-20-and-beyond-a-whistlestop-tour-round-web-marketing-20/</guid><description>&lt;p>I’m at &lt;a href="https://www.focusbiz.co.uk/conferences/web2.0/" target="_blank" rel="noopener">Web 2.0 and Beyond – Applying Social and Collaborative Tools To Business&lt;/a> .&lt;/p>
&lt;p>&lt;strong>Case Study: A Whistlestop Tour Round Web Marketing 2.0&lt;/strong>&lt;/p>
&lt;p>Will Wynne, &lt;a href="https://www.arenaflowers.com/" target="_blank" rel="noopener">ArenaFlowers.com&lt;/a>&lt;/p>
&lt;p>“Old” web marketing – paid search, natural search, retention marketing, PR, Affiliate Marketing, Comparison Shopping, Conversion Rate. Cost, Competition, Risk, Growth, SEO Optimised page &amp;lt;&amp;gt; Friendly page.&lt;/p>
&lt;p>Using social media – video&lt;/p>
&lt;p>Host clip of a BBC story, “About Arena” video, Show the team, shows that they do their own flowers, used for job ads, embedded in eBay listing using &amp;lt;www.vzaar.com&amp;gt;, total views 5k. Blog alongside the main site – good google juice, good for morale, human face to business, 4 times the £/page of rest of site. Fun app on Facebook sending virtual versions of the products and sending traffic to main site.&lt;/p>
&lt;p>Backend systems are all web-based, faster to change, cheaper to deploy.&lt;/p></description></item><item><title>Web 2.0 and Beyond – Social Computing and the Knowledge-Powered Enterprise</title><link>https://www.synesthesia.co.uk/2008/03/05/web-20-and-beyond-social-computing-and-the-knowledge-powered-enterprise/</link><pubDate>Wed, 05 Mar 2008 11:41:57 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/05/web-20-and-beyond-social-computing-and-the-knowledge-powered-enterprise/</guid><description>&lt;p>I’m at &lt;a href="https://www.focusbiz.co.uk/conferences/web2.0/" target="_blank" rel="noopener">Web 2.0 and Beyond – Applying Social and Collaborative Tools To Business&lt;/a> .&lt;/p>
&lt;p>&lt;strong>Social Computing and the Knowledge-Powered Enterprise&lt;/strong>&lt;/p>
&lt;p>John Davies, &lt;a href="https://www.btplc.com/Innovation/Index.cfm" target="_blank" rel="noopener">Next Generation Web Research Group, BT&lt;/a>&lt;/p>
&lt;p>&lt;strong>Social computing &amp;amp; Web 2.0&lt;/strong>&lt;/p>
&lt;p>(user-generated, user-tagged content; social networking tools)&lt;/p>
&lt;ul>
&lt;li>3rd generation KM – emergent social networks, opt-in, self-organising, tools chosen and integrated by the community&lt;/li>
&lt;li>social computing landscape – Ad-hoc-Structure, Personal-Enterprise. Link technologies to objectives.&lt;/li>
&lt;li>Knowledge-powered Enterprise – most knoweldge worker activity not based on formal processes – in people’s heads or unstructured documents. Most knowledge workers need to draw on knowledge from colleagues and from outside the enterprise.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Case studies&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>BT: “&lt;a href="https://hubbub.labs.bt.com/" target="_blank" rel="noopener">Hubbub&lt;/a>” Web 2.0 customer community as support and self-service channel. Business case: call deflection and improved service. 20% of user base for covered products have used the system.&lt;/li>
&lt;li>IBM: “&lt;a href="https://domino.watson.ibm.com/cambridge/research.nsf/0/1c181ee5fbcf59fb852570fc0052ad75" target="_blank" rel="noopener">Dogear&lt;/a>” – social bookmarking for the enterprise. Expertise location, improved quality of recommendations. Enhances results from enterprise search, use bookmarking as a quality indicator. Using individucal’s bookmarks to derive user profiles, team bookmarks as project resources. Integrated into Lotus Connections.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Web 2.0 and the Semantic Web (web 3.0)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Extending the web to use computers to do more linking of meaning.&lt;/li>
&lt;li>Ontologies provide a formal description of an information domain – a taxonomy is a simple example of an ontology.&lt;/li>
&lt;li>“Scruffies” and “Neats” – bottom-up folksonomies vs. top-down ontologies. Not mutually exclusive&lt;/li>
&lt;li>SemanticWiki – currently only keyword search, no consistency checking. Experiment – extend Wikipedia by adding type tags to links.&lt;/li>
&lt;li>Project &lt;a href="https://www.active-project.eu/" target="_blank" rel="noopener">ACTIVE&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Web 2.0 and beyond: Social Tools Hit The Mainstream</title><link>https://www.synesthesia.co.uk/2008/03/05/web-20-and-beyond-social-tools-hit-the-mainstream/</link><pubDate>Wed, 05 Mar 2008 10:26:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/05/web-20-and-beyond-social-tools-hit-the-mainstream/</guid><description>&lt;p>I’m at &lt;a href="https://www.focusbiz.co.uk/conferences/web2.0/" target="_blank" rel="noopener">Web 2.0 and Beyond – Applying Social and Collaborative Tools To Business&lt;/a> .&lt;/p>
&lt;p>&lt;strong>Social Tools Hit The Mainstream&lt;/strong>&lt;/p>
&lt;p>Lee Bryant, &lt;a href="https://www.headshift.com/" target="_blank" rel="noopener">Headshift&lt;/a>&lt;/p>
&lt;p>Ideas behind social tools now ready to challenge lots of existing IT and Internal Communications practices inside organisations – Tim O’Reilly&lt;/p>
&lt;p>The social stack:&lt;/p>
&lt;ul>
&lt;li>Personal tools – organise your “stuff” by tags- personal portals, manage networks and feeds.&lt;/li>
&lt;li>Group Collaboration – wikis and group systems&lt;/li>
&lt;li>Blogs and networks&lt;/li>
&lt;li>Bookmarks and Tags&lt;/li>
&lt;li>Public feeds and flows&lt;/li>
&lt;/ul>
&lt;p>Proven benefits:&lt;/p>
&lt;ul>
&lt;li>Simpler, smarter, cheaper enterprise computing.&lt;/li>
&lt;li>Better personal productivity – move stuff email that doesn’t need to be in it, social network as information filter, better findability.&lt;/li>
&lt;li>Network productivity and presence sharing – “flow”formal&lt;/li>
&lt;li>Better informal collaboration and sharing&lt;/li>
&lt;li>Collaboration and networking – including with other businesses you are partnering with&lt;/li>
&lt;li>Open innovation&lt;/li>
&lt;li>Internal communications – more interactive engagement, combination of tools and media two-way not just broadcast.&lt;/li>
&lt;li>Recruiting and retaining emergent talent – the “digital native” expect to participate. Many of their IT skills being wasted by forcing them into traditional IT environment.&lt;/li>
&lt;li>In-context, continual informal learning&lt;/li>
&lt;/ul>
&lt;p>Success factors:&lt;/p>
&lt;ul>
&lt;li>Start with small, simple self-powered projects.&lt;/li>
&lt;li>Create conditions for shared meaning e.g. a shared del.icio.us account – share social objects&lt;/li>
&lt;/ul>
&lt;p>Challenges&lt;/p>
&lt;ul>
&lt;li>Enterprise IT sucks badly – IT industry still centralising, internet is about intelligence at the edges.&lt;/li>
&lt;li>Try to put IT in the hands of the users – IT governance processes can slow things down so much that costs can be an order of magnitude higher.&lt;/li>
&lt;li>Moving from .doc and email to the wiki way&lt;/li>
&lt;li>Iterative approach, agile development. Get something done, expose it to users, adapt to feedback.&lt;/li>
&lt;li>Enterprise Information Architecture – moving away from &lt;em>a priori&lt;/em> taxonomies to folksonomies. Individual tagging actions lead to collective benefit.&lt;/li>
&lt;li>Information Professional become network nodes.&lt;/li>
&lt;li>Support the early adopters, but avoid it being a geek ghetto. Make more intimate collaboration environments. Everything needs to be based on a real-world use case. Think of the web as an innovation lab.&lt;/li>
&lt;/ul>
&lt;p>Three Myths&lt;/p>
&lt;ul>
&lt;li>Social Networking is a waste of time – recognise that online life is distributed, don’t cut it off when they come through the door.&lt;/li>
&lt;li>New security risks? – yes, but the old ones are worse, because people work around bad old unusable IT&lt;/li>
&lt;li>Sharing is dangerous? We cannot stem the tide of sharing – better to teach responsibility than police use&lt;/li>
&lt;/ul></description></item><item><title>Conference Blogging – Web 2.0 and Beyond</title><link>https://www.synesthesia.co.uk/2008/03/03/conference-blogging-web-20-and-beyond/</link><pubDate>Mon, 03 Mar 2008 17:15:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/03/03/conference-blogging-web-20-and-beyond/</guid><description>&lt;p>I’m blogging &lt;a href="https://www.focusbiz.co.uk/conferences/web2.0/" target="_blank" rel="noopener">Web 2.0 and Beyond – Applying Social and Collaborative Tools To Business&lt;/a> .&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/03/05/web-20-and-beyond-social-tools-hit-the-mainstream/" target="_blank" rel="noopener">Social Tools Hit The Mainstream&lt;/a> – Lee Bryant, Headshift&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/03/05/web-20-and-beyond-social-computing-and-the-knowledge-powered-enterprise/" target="_blank" rel="noopener">Social Computing and the Knowledge-Powered Enterprise – John Davies, BT&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/03/05/web-20-and-beyond-a-whistlestop-tour-round-web-marketing-20/" target="_blank" rel="noopener">Case Study: A Whistlestop Tour Round Web Marketing 2.0&lt;/a> – Will Wynne, &lt;a href="https://www.arenaflowers.com/" target="_blank" rel="noopener">ArenaFlowers.com&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/03/05/web-20-and-beyond-social-is-good-for-business/" target="_blank" rel="noopener">Social is Good for Business: Snockles – Neil Burton, Web Spiders&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/03/05/web-20-and-beyond-facilitating-open-innovation-in-a-distributed-community-using-free-social-software-tools/" target="_blank" rel="noopener">Facilitating Open Innovation in A Distributed Community Using Free Social Software Tools&lt;/a> – Claire Reddington &amp;amp; Ed Mitchell&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/03/05/web-20-and-beyond-technology-brings-power-to-the-people/" target="_blank" rel="noopener">Technology Brings Power to the People – Crispin O’Brien KPMG&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/03/05/web-20-business-in-virtual-worlds-how-we-got-here-with-web-20/" target="_blank" rel="noopener">Business in Virtual Worlds, How we got here with Web 2.0&lt;/a> – Ian Hughes, IBM&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/03/06/web-20-km-goes-social-from-km-10-to-km-20/" target="_blank" rel="noopener">KM Goes Social: From KM 1.0 to KM 2.0&lt;/a> David Gurteen&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/03/06/web-20-social-media-in-action/" target="_blank" rel="noopener">Social Media in Action&lt;/a> – Adrian Moss, Bottle PR&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/03/06/web-20-the-power-of-film/" target="_blank" rel="noopener">The Power of Film&lt;/a> – Adding video podcasts to the communications mix – Joyce Lewis, University of Southampton&lt;/li>
&lt;li>&lt;a href="https://https://www.synesthesia.co.uk/blog/archives/2008/03/06/web-20-whos-afraid-of-identity/" target="_blank" rel="noopener">Who’s Afraid of Identity?&lt;/a> – Tom Ilube, Garlik&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/03/06/web-20-deploying-measuring-and-succeeding-with-social-software/" target="_blank" rel="noopener">Deploying, measuring and succeeding with Social Software&lt;/a> – Ian McNairn, IBM SWG&lt;/li>
&lt;li>…&lt;/li>
&lt;/ul></description></item><item><title>Reflections on Agile Approaches for Delivering Business Value</title><link>https://www.synesthesia.co.uk/2008/02/13/reflections-on-agile-approaches-for-delivering-business-value/</link><pubDate>Wed, 13 Feb 2008 20:34:47 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/13/reflections-on-agile-approaches-for-delivering-business-value/</guid><description>&lt;p>I’ve spent the last two days &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/12/conference-agile-approaches-for-delivering-business-value/" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>, and feel I’ve learnt a lot. Here are my initial reflections on the conference.&lt;/p>
&lt;p>Firstly, there are a lot of very smart people thinking about these issues – it was thoroughly enjoyable to have to take on so many ideas in such a period of time.&lt;/p>
&lt;p>The second thing that stood out was that most of the people at the conference were involved with the development / supplier side of the IT equation. Hardly surprising, but it does mean that some of what was covered was of particular relevance for the “supply side”. However pretty much every topic had things which can be of use from the customer perspective.&lt;/p>
&lt;p>Thirdly, a &lt;a href="https://duncanpierce.org/" target="_blank" rel="noopener">number&lt;/a> of &lt;a href="https://www.martinitconsulting.com/agile/home.html" target="_blank" rel="noopener">people&lt;/a> are applying thought to the problems in getting the benefits of Agile in multi-party environments, and how to support the process with appropriate contracts.&lt;/p>
&lt;p>It’s in everyone’s interest that there should be consensus on how to reliably deliver software projects, and how to assess the risk of such delivery (and I don’t mean &lt;a href="https://www.sei.cmu.edu/cmmi/" target="_blank" rel="noopener">CMMI&lt;/a>) – if we can get to that, then there is more opportunity to deploy financial engineering (e.g. &lt;a href="https://www.grahamoakes.co.uk/" target="_blank" rel="noopener">Graham Oake&lt;/a>’s idea of completion bonds) to facilitate business improvements through software.&lt;/p>
&lt;p>There are &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/12/case-study-delivering-a-public-private-partnership-using-dsdm/" target="_blank" rel="noopener">clear lessons&lt;/a> about the importance of getting a common view of risk between project participants.&lt;/p>
&lt;p>&lt;a href="https://www.dsdm.org/atern/" target="_blank" rel="noopener">DSDM/Atern&lt;/a> doesn’t seem to have much visibility yet outside the IT world, but looks worthy of further investigation.&lt;/p>
&lt;p>Last but not least, &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/12/case-study-agile-analysis-a-proposition-assessment-case-study/" target="_blank" rel="noopener">Agile is not just for software&lt;/a> (nice to see other people have spotted this to!).&lt;/p>
&lt;p>&lt;strong>Topics for Further Research and/or reflection&lt;/strong>&lt;/p>
&lt;p>Agile Contracts, and the work of &lt;a href="https://www.kaner.com/index.html" target="_blank" rel="noopener">Cem Kaner&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www.dsdm.org/atern/" target="_blank" rel="noopener">DSDM/Atern&lt;/a>&lt;/p>
&lt;p>How could we use a &lt;a href="https://www.testingreflections.com/node/view/6464" target="_blank" rel="noopener">Acceptance-Test-Driven&lt;/a> approach from the customer side?&lt;/p>
&lt;p>I need to reflect on, document and develop the work we have been doing on using agile approaches for such things as business analysis / programme shaping etc.&lt;/p>
&lt;p>Finally, thanks for thought-provoking conversations to &lt;a href="https://twelve71.typepad.com/rachel/" target="_blank" rel="noopener">Rachel Davies&lt;/a>, &lt;a href="https://www.grahamoakes.co.uk/" target="_blank" rel="noopener">Graham Oakes&lt;/a> and &lt;a href="https://www.testingreflections.com/blog/2" target="_blank" rel="noopener">Antony Marcano&lt;/a>.&lt;/p></description></item><item><title>Acceptance Test Driven Development</title><link>https://www.synesthesia.co.uk/2008/02/13/acceptance-test-driven-development/</link><pubDate>Wed, 13 Feb 2008 20:27:31 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/13/acceptance-test-driven-development/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>&lt;strong>Acceptance Test Driven Development&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://blog.davidpeterson.co.uk/" target="_blank" rel="noopener">David Peterson&lt;/a>&lt;/p>
&lt;p>&lt;strong>Summary&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>What happens if you put acceptance tests in the&lt;/p>
&lt;p>driving seat?&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Fresh ideas about the agile development process&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Practical techniques to improve your project’s agility&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Emphasis on process and practice (non-technical)&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Notes&lt;/strong>&lt;/p>
&lt;p>Whilst working at EasyNet, David modified their normal XP iteration cycle to insert a phase where, for each story, acceptance test criteria were agreed and documented. Alongside this their testing harnesses were adapted to provide autoamted testing of acceptance tests wherever possible.&lt;/p>
&lt;p>A key enabler was to separate out test case definition (which depends on the business requirement) from test scripting (which is dependent on, and coupled with, the system under test).&lt;/p>
&lt;p>The technique adopted was to build test fixtures which interfaced between the (HTML) test cases and the system under test. This way the test cases can stay unchanged whilst the system changes. If the system changes in a way that breaks the test fixture that shows up as broken acceptance tests.&lt;/p>
&lt;p>The tool is released as &lt;a href="https://www.concordion.org/" target="_blank" rel="noopener">Concordion&lt;/a>. Good write up on that site.&lt;/p>
&lt;p>&lt;ins datetime="2008-03-13T12:33:50+00:00">Update: See &lt;a href="https://peripateticaxiom.blogspot.com/2008/03/tests-and-gauges.html">this post&lt;/a> from Keith Braithwaite&lt;/ins>&lt;/p></description></item><item><title>DSDM Atern: The next step in agile!</title><link>https://www.synesthesia.co.uk/2008/02/13/dsdm-atern-the-next-step-in-agile/</link><pubDate>Wed, 13 Feb 2008 16:06:22 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/13/dsdm-atern-the-next-step-in-agile/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>&lt;strong>DSDM Atern: The next step in agile!&lt;/strong>&lt;/p>
&lt;p>&lt;em>Keith Richards, &lt;a href="https://www.keithrichardsconsulting.co.uk/site/home/" target="_blank" rel="noopener">Keith Richards Consulting&lt;/a>__, on behalf of DSDM Consortium&lt;/em>&lt;/p>
&lt;p>&lt;strong>Summary&lt;/strong>&lt;/p>
&lt;p>&lt;a href="https://www.dsdm.org/atern/introduction/what-is-dsdm-atern/" target="_blank" rel="noopener">DSDM Atern&lt;/a> (login required) “The Agile Project Delivery Framework”&lt;/p>
&lt;p>Latest iteration of DSDM – much more aimed at being a generic project management method rather than IT-specific.&lt;/p>
&lt;p>Often used as a wrapper around Scrum and XP to scale them.&lt;/p>
&lt;p>Philosophy / Principles / Process / People / Products / Practices&lt;/p>
&lt;p>Presentation was a run through material that can be found on the website…&lt;/p></description></item><item><title>When XP Met Outsourcing</title><link>https://www.synesthesia.co.uk/2008/02/13/when-xp-met-outsourcing/</link><pubDate>Wed, 13 Feb 2008 15:33:47 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/13/when-xp-met-outsourcing/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>&lt;strong>When XP Met Outsourcing&lt;/strong>&lt;/p>
&lt;p>&lt;em>&lt;a href="https://www.martinitconsulting.com/?q=node/3" target="_blank" rel="noopener">Angela Martin&lt;/a>, &lt;a href="https://www.martinitconsulting.com/" target="_blank" rel="noopener">Martin IT Consulting&lt;/a> Ltd&lt;/em>&lt;/p>
&lt;p>Outsourcing is common for software development, and is the context for many projects using agile development processes. This paper presents two case studies concentrating on the customer role in projects using outsourcing and extreme programming (XP).&lt;/p>
&lt;p>The studies follow an interpretive approach based on in-depth interviews, and suggest some tensions between some contractual arrangements in outsourcing, and the XP process.&lt;/p>
&lt;p>In particular, one suggests XP worked well in the context of their particular outsourcing arrangements, and the other study suggests difficulty in aligning XP with a different set of outsourcing arrangements.&lt;/p>
&lt;p>&lt;strong>Notes&lt;/strong>&lt;/p>
&lt;p>(to be) Published as a paper on MartinIT website&lt;/p>
&lt;p>Method – two interpretative in-depth case studies. Multiple perspectives via semi-structured interviews. Validated data and interpretation with each interviewee.&lt;/p>
&lt;p>Two Case studies&lt;/p>
&lt;p>Case Study 1 (T&amp;amp;M)&lt;/p>
&lt;p>KiwiCorp (customer), DevCorp (outsourcing/software house), BureauCorp(facilities management and infrastructure). 15 months, 11 people. Seen as a success.&lt;/p>
&lt;p>Customer saw benefit from the XP process. DevCorp project manager recognised that on fixed price would have had to be harder on the client.&lt;/p>
&lt;p>Lots of vendor issues because of differences between DevCorp and BureauCorp.&lt;/p>
&lt;p>Case study 2&lt;/p>
&lt;p>Project Pinta. Custom-build, fixed price. FalconCorp (US developer), RetailCorp(UK retailer), ManageCorp (big consulting organisation who hired FalconCorp to do the job). FalconCorp to take the cusotm build and sell as a project.&lt;/p>
&lt;p>Everyone thought it was doomed… 6 month deadline. In 2 weeks ramped up to 60 people over four XP labs. Weekly iterations. So within a month knew it wouldn’t fly.&lt;/p>
&lt;p>FalconCorp felt that as fixed price very little room to move, so moved more to waterfall… Stopped asking questions, to make sure they could just get signoff and the cheque. Kicked the customer rep (ManageCorp) out of the lab – seen as being a “spy”.&lt;/p>
&lt;p>Is this because of the process, the contract, or Winner’s Curse? (over-bid)&lt;/p>
&lt;p>Got to 6 month demo – and custoemr accepted it! (the demo didn’t show the broken bits…).&lt;/p>
&lt;p>FalconCorp went into bug-fix mode and laid off 2/3 the staff. Then new management came in and found that actually the product was full of holes. Treated it as a throwaway prototype, and went into a fixed-price waterfal project to re-engineer as a saleable product.&lt;/p>
&lt;p>Questions (and for &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/13/a-square-peg-in-a-round-hole-agile-and-fixed-price-contracts/" target="_blank" rel="noopener">Duncan&lt;/a> too)&lt;/p>
&lt;p>&lt;strong>Q:&lt;/strong> How do you sell Agile to your client?&lt;/p>
&lt;p>&lt;strong>A:&lt;/strong> Don’t – until you are sure you can deliver in an agile way&lt;/p>
&lt;p>&lt;strong>Q:&lt;/strong> What are the client drivers for fixed price?&lt;/p>
&lt;p>&lt;strong>A:&lt;/strong> Need someone to blame “not the client’s problem”&lt;/p>
&lt;p>&lt;strong>Q:&lt;/strong> Which has pects of Agile do you keep/drop when customer insists on fixed price:&lt;/p>
&lt;p>&lt;strong>A:&lt;/strong> All of them (internally) as a delivery engine.&lt;/p>
&lt;p>&lt;strong>Q:&lt;/strong> Why does the industry encourage under-bidding?&lt;/p>
&lt;p>&lt;strong>A:&lt;/strong> (&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/13/can-it-projects-be-insured/" target="_blank" rel="noopener">Keith&lt;/a>) We have allowed purchasers of IT to think it is a fungible commodity so competition is on price. Look for shared-risk, shared-reward…&lt;/p></description></item><item><title>A Square Peg in a Round Hole: Agile and fixed-price contracts</title><link>https://www.synesthesia.co.uk/2008/02/13/a-square-peg-in-a-round-hole-agile-and-fixed-price-contracts/</link><pubDate>Wed, 13 Feb 2008 14:41:46 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/13/a-square-peg-in-a-round-hole-agile-and-fixed-price-contracts/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>&lt;strong>A Square Peg in a Round Hole: Agile and fixed-price contracts&lt;/strong>&lt;/p>
&lt;p>&lt;em>&lt;a href="https://duncanpierce.org/" target="_blank" rel="noopener">Duncan Pierce&lt;/a>, &lt;a href="https://amarinda.com/" target="_blank" rel="noopener">Amarinda Consulting Ltd&lt;/a>&lt;/em>&lt;/p>
&lt;p>&lt;strong>Summary&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Square peg: Agile processes flex scope freely and have open-ended timescales.&lt;/li>
&lt;li>Round hole: Fixed-price contracts usually come with a deadline and strict limits on how much scope change can occur – often none at all.&lt;/li>
&lt;/ul>
&lt;p>Luckily you don’t have to hit agile particularly hard to make it fit, while being internally agile gives the fixed-price supplier some interesting options.&lt;/p>
&lt;p>In this presentation we’ll explore the value of those options and what has to change for agile to work in a fixed-price world.&lt;/p>
&lt;p>&lt;strong>Notes&lt;/strong>&lt;/p>
&lt;p>Lots of questions tend to be about Agile and fixed-price contracts…&lt;/p>
&lt;p>Fixed time/scope/cost is HARD.&lt;/p>
&lt;p>Agile won’t help you see the future…&lt;/p>
&lt;p>So can’t size a project with any greater certainty&lt;/p>
&lt;p>But Agile gives you some useful tools as a delivery engine – more options than waterfall…&lt;/p>
&lt;p>Assumption – that you can (if you want to) deliver in an Agile way. Need the capability to apply what he’s saying&lt;/p>
&lt;p>Project over-run – Agile can overrun just as well a waterfall – no silver bullet!&lt;/p>
&lt;p>Misconception that agile is about fixed time and flexible scope – actually only iterations have fixed time, and typically pretty fixed scope… If you &lt;em>have&lt;/em> more time, agile can use it, if you are &lt;em>allowed&lt;/em> to reduce scope, then agile can do it&lt;/p>
&lt;p>Fine-grained estimation can yield more accurate results – breaking requirements down to user stories which are estimated individually. Estimates based on units of delivery can be linked to individual cost, value and risk estimates, aiding decision.&lt;/p>
&lt;p dir="ltr" style="margin-right: 0px">
Agile projects can be initiated and ramped-up faster – allows some work to start early?
&lt;/p>
&lt;p dir="ltr" style="margin-right: 0px">
Agile projects can calibrate estimates against delivery performance. Could do in waterfall if we have experience of doing this in whole projects – in Agile the finer-grained nature can allow us to measure &lt;em>this&lt;/em> team on &lt;em>this&lt;/em> project.
&lt;/p>
&lt;p dir="ltr" style="margin-right: 0px">
See overruns earlier because of frequent snapshots.
&lt;/p>
&lt;p dir="ltr" style="margin-right: 0px">
Agile projects can be lengthened or shortened by any amount at any time. (it’s a choice).
&lt;/p>
&lt;p dir="ltr" style="margin-right: 0px">
Agile projects can cut or add scope later and more efficiently than waterfall. This because detailed design, implementation, testing and integration of a feature only happens close to agreement to include it. (implies the work to reduce dependencies between lumps of scope)
&lt;/p>
&lt;p dir="ltr" style="margin-right: 0px">
Agile projects can reach minimum acceptable feature-set earlier. (Prioritisation) Important – not only prioritise requirements, but aim to sub-prioritise the elements of a requirement. Doing the Must’s first controls risk… Iterative development (as opposed to incremental)
&lt;/p>
&lt;p dir="ltr" style="margin-right: 0px">
You can prove you are making progress on an Agile project. Working software is a better persuader than documents.
&lt;/p>
&lt;p dir="ltr" style="margin-right: 0px">
Agile can cope better with changing requirements from the client. Cheaper cost of change.Implication is that you can sometimes profit from changing requirements.
&lt;/p></description></item><item><title>Can IT Projects be Insured?</title><link>https://www.synesthesia.co.uk/2008/02/13/can-it-projects-be-insured/</link><pubDate>Wed, 13 Feb 2008 13:13:30 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/13/can-it-projects-be-insured/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>&lt;strong>Can IT Projects be Insured?&lt;/strong>&lt;/p>
&lt;p>&lt;em>Graham Oakes, &lt;a href="https://www.grahamoakes.co.uk/" target="_blank" rel="noopener">Graham Oakes Ltd&lt;/a>&lt;/em>&lt;/p>
&lt;p>&lt;strong>Summary&lt;/strong>&lt;/p>
&lt;p>In the movie industry, the people financing new productions can buy “Completion Bonds” – effectively insurance policies that repay their investment if the film isn’t completed on time and in line with the original proposal. Such bonds cost perhaps 2-6% of the total production budget. Could we do the same for IT projects?&lt;/p>
&lt;p>&lt;strong>Notes&lt;/strong>&lt;/p>
&lt;p>Graham Oakes – independent consultant, help people to set up projects in early stages, and help organisations/sponsors to keep in touch with the project.&lt;/p>
&lt;p>We like to think about a project as a contained world – but what about the “space” around it – the things outside the project which can impact but which we don’t pay enough attention to?&lt;/p>
&lt;p>Zoom out even further – most organisations have lots of shapes and sizes of projects – lots of hidden interactions. “Gravitational force” of large projects affecting other… How can we control the “black space”?&lt;/p>
&lt;p>Zoom out even further – universe of projects – but even more space…&lt;/p>
&lt;p>Chaos. Standish Chaos Reports – most projects unhappy. But how come most project manager CVs look like most projects are good!! Sampling the same universe!!&lt;/p>
&lt;p>Perhaps it’s about how you define success…&lt;/p>
&lt;p>Creates lots of Confusion and Blame – procurement processes which are self-defeating. Contractual structures which only hide or defer risk, don’t transfer it in the way that is intended.&lt;/p>
&lt;p>Hence downward spiral – expectations of failure, lead to procurement and governance processes which have unintended consequence of making failure more likely, which increase fear…. and so on.&lt;/p>
&lt;p>We’re all in this, and it’s hard to break out. For people with “skin in the game” it’s hard to risk change…&lt;/p>
&lt;p>Look at film industry – completion bonds. Insurance policy – 3–way between producer, money and insurer – typical premium 2%-6% of production budget. If film not completed on time and budget, insurance repays the financier.&lt;/p>
&lt;p>Part of the contract is insurer has right to vet people on the film, check script, come on location etc. If they think project is off course, they have right to intervene. In their interest to not intervene – happens about 20% of projects in UK, fewer cases where they need to takeover.&lt;/p>
&lt;p>So how would this work for software?&lt;/p>
&lt;p>If company could buy cover, get independent advice, would help more SMEs take advantage of opportunities to get value from IT projects.&lt;/p>
&lt;p>So what would be needed to make it happen?&lt;/p>
&lt;p>some group work happened…&lt;/p>
&lt;p>some of the ideas were:&lt;/p>
&lt;ul>
&lt;li>agreed measure of progress – e.g. automated acceptance test figures&lt;/li>
&lt;li>minimum engineering practices&lt;/li>
&lt;li>risk management&lt;/li>
&lt;li>transparency&lt;/li>
&lt;li>a market in insurers… which implies that someone can take a view on how to judge risk…&lt;/li>
&lt;li>process, methods, maturity…&lt;/li>
&lt;li>where are you in the process?&lt;/li>
&lt;li>evidence of capability&lt;/li>
&lt;li>completion and intervention criteria&lt;/li>
&lt;li>co-location and collaboration&lt;/li>
&lt;/ul>
&lt;p>Graham’s input:&lt;/p>
&lt;ul>
&lt;li>evidence of alignment between all the stakeholders&lt;/li>
&lt;li>clear definition of requirements&lt;/li>
&lt;li>shared plans and practices&lt;/li>
&lt;li>team and track record&lt;/li>
&lt;li>IPR – if project doesn’t deliver, insurer gets IPR in what has been done…&lt;/li>
&lt;/ul>
&lt;p dir="ltr">
Visibility is critical…
&lt;/p>
&lt;p dir="ltr">
What would this do to the customer-developer dynamic?
&lt;/p>
&lt;p dir="ltr">
Lack of trust is preventing people starting projects, and killing projects which would otherwise be possible.
&lt;/p>
&lt;p dir="ltr">
Not enough to just say “trust me”
&lt;/p>
&lt;p dir="ltr">
Triad relationship might build boldness, expectations, accountability, management of the business priorities bottleneck…
&lt;/p>
&lt;p dir="ltr">
All parties need skin in the game
&lt;/p>
&lt;p>Could this work?&lt;ins datetime="2008-02-13T20:06:05+00:00">&lt;/p>&lt;/p>
&lt;p dir="ltr">
I (JE) asked the question &amp;#8220;why hasn&amp;#8217;t this been tried already?&amp;#8221; &amp;#8211; according to Graham there was apparently one large project which looked at it a couple of years ago, but the insurers quoted a premium of 40% of the prOject value&amp;#8230;
&lt;/p>
&lt;p>
&lt;/ins>
&lt;/p></description></item><item><title>Fit for the Future: The future of Agile Acceptance Test Tools</title><link>https://www.synesthesia.co.uk/2008/02/13/fit-for-the-future-the-future-of-agile-acceptance-test-tools/</link><pubDate>Wed, 13 Feb 2008 12:04:17 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/13/fit-for-the-future-the-future-of-agile-acceptance-test-tools/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>&lt;strong>Fit for the Future: The future of Agile Acceptance Test Tools&lt;/strong>&lt;/p>
&lt;p>&lt;em>&lt;a href="https://www.testingreflections.com/blog/2" target="_blank" rel="noopener">Antony Marcano&lt;/a>, &lt;a href="https://www.testingreflections.com/" target="_blank" rel="noopener">testingReflections.com&lt;/a>&lt;/em>&lt;/p>
&lt;ul>
&lt;li>The role of acceptance test tools in agile teams&lt;/li>
&lt;li>Where have they come from; what are they; what is their future?&lt;/li>
&lt;li>Report on the vision created during the Agile Alliance Functional Test Tools Visioning Workshop, which included Ward Cunningham, Brian Marick, Jim Shore, Elisabeth Hendrickson and the presenter, Antony Marcano.&lt;/li>
&lt;li>Delegates will be encouraged to discuss these ideas and suggest some of their own.&lt;/li>
&lt;/ul>
&lt;p>**&lt;/p>
&lt;p>**&lt;/p>
&lt;p>Notes&lt;/p>
&lt;p>Power of acceptance tests to drive out requirements as well as prove success.&lt;/p>
&lt;p>ATDD – Acceptance Test Driven Development or Story Driven Development&lt;/p>
&lt;p>Example from &lt;a href="https://parlezuml.com/blog/" target="_blank" rel="noopener">Jason Gorman&lt;/a> – &lt;a href="https://www.parlezuml.com/blog/?postid=490" target="_blank" rel="noopener">Test-driven Kitchen Design&lt;/a> – should have designed based on examples of things that he wanted to to in the kitchen.&lt;/p>
&lt;p>Get examples of how you are going to use first before thinking about what you need to enable it – then wrap those examples in the form of tests.&lt;/p>
&lt;p>Target audience for tests is the customer/Product Owner, developers and tester: one of common problems with Test Driven Development is that often written in automated test tools which fall short of the customer-communication requirements&lt;/p>
&lt;p>A commonly-used tool is FIT – others e.g. &lt;a href="https://www.concordion.org/" target="_blank" rel="noopener">Concordion&lt;/a>&lt;/p>
&lt;p>How do you slice up the work – e.g. horizontally (by layers / components) or vertically (e.g. by feature) ? ATDD leads to a feature-based approach, growing the design with each iteration by incremental addition of capabilities.&lt;/p>
&lt;p>Workshop report on workshop sponsored by Agile Alliance in Portland Oregon October 2007. &lt;em>“to discuss cutting-edge advancements in, and envision possibilities for, the future of automated tools”&lt;/em>&lt;/p>
&lt;p>Highlights:&lt;/p>
&lt;p>Levels of abstraction at which tests are applied – &lt;a href="https://www.developertesting.com/archives/individual_weblogs-kevin_lawrence-index.html" target="_blank" rel="noopener">Kevin Lawrence&lt;/a> – Goals/Activities/Tasks – e.g. task level testing in &lt;a href="https://selenium.openqa.org/" target="_blank" rel="noopener">Selenium&lt;/a>. However activity-level testing much easier to maintain as the application changes. Next generation of tools should better support activity-level tests.&lt;/p>
&lt;p>Vocabulary – many people using FIT in a standard way. e.g. Given (context), When (something happens), Then (expect something) – especially relevant if writing tests at Activity level.&lt;/p>
&lt;p>Visualisation of Flow – e.g. seeing images of workflow for tests in that area. &lt;a href="https://www.testing.com/cgi-bin/blog" target="_blank" rel="noopener">Brian Marick&lt;/a> doing some work on before-the-fact workflow visualisation tools. &lt;a href="https://dev.eclipse.org/portal/myfoundation/tests/index.php" target="_blank" rel="noopener">Alternative approach&lt;/a> by &lt;a href="https://c2.com/~ward/" target="_blank" rel="noopener">Ward Cunningham&lt;/a> requires textual description of test flow, but when text can execute gives a visual view. Another tool – &lt;a href="https://boss.bekk.no/cubictest/" target="_blank" rel="noopener">CubicTest&lt;/a> – &lt;a href="https://www.eclipse.org/" target="_blank" rel="noopener">Eclipse&lt;/a> plugin to capture workflow and make it easier to write &lt;a href="https://wtr.rubyforge.org/" target="_blank" rel="noopener">Watir&lt;/a> and &lt;a href="https://selenium.openqa.org/" target="_blank" rel="noopener">Selenium&lt;/a> tests.&lt;/p>
&lt;p>Multiple Views – how about IDE presenting a “customer view” of test code that maps onto underlying code but which is expressed in customer language?&lt;/p>
&lt;p>Augmenting with model-based testing – &lt;a href="https://www.questioningsoftware.com/" target="_blank" rel="noopener">Ben Simo&lt;/a> presented model-based testing tool. Idea (Antony) how about generating the model from the first tests&lt;/p>
&lt;p>Patterns of self-testing software – integrate into the software, part of the documentation (technical, business, online help) – use to drive development.&lt;/p>
&lt;p>Workshop Yahoo! group: &lt;a href="mailto:aa-ftt@yahoogroups.com">aa-ftt@yahoogroups.com&lt;/a>&lt;/p>
&lt;p>&lt;strong>Q:&lt;/strong> How useful for testing non-functional requirements?&lt;/p>
&lt;p>&lt;strong>A:&lt;/strong> Workshop didn’t look at this. Some personal experiments with e.g. FitDecorator. Not a lot in the literature yet.&lt;/p>
&lt;p>&lt;strong>Q:&lt;/strong> Is passing the Acceptance Tests enough?&lt;/p>
&lt;p>&lt;strong>A:&lt;/strong> No – need to combine Prospective Testing (as described above) with consideration of fault path conditions and with Inspective Testing – as soon as a story is passing all its tests why not start more Inspective testing to explore the application.&lt;/p>
&lt;p>&lt;strong>Q:&lt;/strong> What’s the right time to do acceptance testing in an agile environment?&lt;/p>
&lt;p>&lt;strong>A:&lt;/strong> Ideally every time there is releasable code. During the iteration plan at least come up with the names of tests to accept the story, then treat creation of the tests as a story in that iteration.&lt;/p></description></item><item><title>Examples, Exemplars, Requirements, Tests</title><link>https://www.synesthesia.co.uk/2008/02/13/examples-exemplars-requirements-tests/</link><pubDate>Wed, 13 Feb 2008 10:23:40 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/13/examples-exemplars-requirements-tests/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>&lt;strong>Examples, Exemplars, Requirements, Tests&lt;/strong>&lt;/p>
&lt;p>&lt;em>&lt;a href="https://peripateticaxiom.blogspot.com/" target="_blank" rel="noopener">Keith Braithwaite&lt;/a>, &lt;a href="https://www.zuehlke.com/en/" target="_blank" rel="noopener">Zuhlke&lt;/a> (but speaking on behalf of &lt;a href="https://www.spaconference.org/" target="_blank" rel="noopener">SPA&lt;/a>)&lt;/em>&lt;/p>
&lt;p>&lt;strong>Summary&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Automated Functional Tests ensure quality and drive process change&lt;/li>
&lt;li>Test failures are more often due to misunderstood requirements than sloppy coding&lt;/li>
&lt;li>Treating tests as executable specifications can help with both&lt;/li>
&lt;li>Tests based on examples lead to an exploration of the problem space that discovers requirements and provides a foundation for trapping defects.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Notes&lt;/strong>&lt;/p>
&lt;p>Reporting on practical experience at Zuhlke over last ~18months&lt;/p>
&lt;p>What business value should we see from automated testing?&lt;/p>
&lt;p>IT response to the uncertainty of software delivery has traditionally been about forcing the customer to speak in IT terms – e.g. requirements engineering, waterfall etc.&lt;/p>
&lt;p>Big shock – it’s about people!&lt;/p>
&lt;p>And people want IT tools to help them carry out a task in order to achieve a goal in some context – and it’s the goal and the context which are important.&lt;/p>
&lt;p>Context is fuzzy and messy.&lt;/p>
&lt;p>Writing &lt;em>rules&lt;/em> about fuzzy contexts is hard/impossible – but the people in the business can almost always give &lt;em>examples&lt;/em>&lt;/p>
&lt;p>In example, users built examples (of FX trades) in Excel. Team used &lt;a href="https://sourceforge.net/projects/fitlibrary" target="_blank" rel="noopener">FitLibrary&lt;/a> to take these example data, drive the system under test and display results&lt;/p>
&lt;p>Several hundred scenarios tested. Revealed defects in existing systems (very early). Having tests before features encourage incremental development.&lt;/p>
&lt;p>It was hard to write the adapters from FIT to the system-under-test – if it’s hard to instrument the design that in itself suggests the design is faulty.&lt;/p>
&lt;p>This delivery of the tool was defect-free: i.e. no defects to fix after the release! After that, this approach became mandatory.&lt;/p>
&lt;p>What about “correctness”? Almost certainly not in the exact computer science sense – but who cares – not the business!&lt;/p>
&lt;p>Second example – messaging system, again for financial trades.&lt;/p>
&lt;p>Again, examples set out in a tabular format. this time captured in &lt;a href="https://fitnesse.org/" target="_blank" rel="noopener">Fitnesse&lt;/a>.&lt;/p>
&lt;p>Some issue – domain specific messages (&lt;a href="https://www.swift.com/" target="_blank" rel="noopener">SWIFT&lt;/a>) have many fields, so example tables v. sparse – hard to work with.&lt;/p>
&lt;p>Issues with shared test environment – required semi-manual intervention.&lt;/p>
&lt;p>Reporting – tests written = scope captured, tests passing = scope delivered.&lt;/p>
&lt;p>Project board said first time they believed a status. Users said they want it this way always in future, even though it required a lot of their time.&lt;/p>
&lt;p>These tests get written early (preferably first) – which means they are testing something that doesn’t exist. Think of them as a form of a specification – in fact they act as a gauge.&lt;/p>
&lt;p>Q: How do you estimate?&lt;/p>
&lt;p>A: Probably doesn’t affect…&lt;/p>
&lt;p>Q: How should this impact the buying side – should we frame our requirements in an example-driven way?&lt;/p>
&lt;p>A: yes…&lt;/p>
&lt;p>Q: What if the tests do not cover all areas of the user requirement?&lt;/p>
&lt;p>A: dangerous – should aim for as full coverage as possible..&lt;/p>
&lt;p>&lt;ins datetime="2008-03-13T12:33:50+00:00">Update: See &lt;a href="https://peripateticaxiom.blogspot.com/2008/03/tests-and-gauges.html">this post&lt;/a> from Keith&lt;/ins>&lt;/p></description></item><item><title>Case Study: Using Agile: the QA perspective</title><link>https://www.synesthesia.co.uk/2008/02/12/case-study-using-agile-the-qa-perspective/</link><pubDate>Tue, 12 Feb 2008 17:12:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/12/case-study-using-agile-the-qa-perspective/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>&lt;strong>Using Agile: the QA perspective&lt;/strong>&lt;/p>
&lt;p>&lt;em>Chris Ambler – QA Director &lt;a href="https://www.ea.com/" target="_blank" rel="noopener">Electronic Arts&lt;/a>&lt;/em>&lt;/p>
&lt;p>Not a developer, never have been, never will be.&lt;/p>
&lt;p>Not a techie! But have worked in testing (of various sorts) for 28 years.&lt;/p>
&lt;p>Focus is product, and quality.&lt;/p>
&lt;p>What does quality really mean? How does it affect the business? How can we measure it?&lt;/p>
&lt;p>Product quality, quality of efforts…&lt;/p>
&lt;p>Product quality – Stability, Excitement / Experience, Progression&lt;/p>
&lt;p>Hard to measure the user experience?&lt;/p>
&lt;p>Quality is the responsibility of everybody.&lt;/p>
&lt;p>Quality of efforts – P * T^2 = Q&lt;/p>
&lt;blockquote>
&lt;p>Team – up for the challenge, skilled, motivated?&lt;/p>
&lt;p>Processes – and are they followed?&lt;/p>
&lt;p>Timescales – does the plan allow for sufficient time to execute?&lt;/p>
&lt;/blockquote>
&lt;p>How does this relate to the business world…&lt;/p>
&lt;p>The business – driven by fears – share price, not knowing what’s going on etc. Hate surprises. Want predictability, consistency, quality, profitability, transparency.&lt;/p>
&lt;p>Project teams – driven by fears – losing job, not getting bonus, not delivering product. Have to deal with technology, complexity, customer expectation, environment changes, pressure to ship, floating features, avoiding surprises!&lt;/p>
&lt;p>The business don’t really know what the team are doing, and the team don’t want them to know!&lt;/p>
&lt;p>The team care about the link to the business – the business mostly only care about the product.&lt;/p>
&lt;p>So how to pull the three together?&lt;/p>
&lt;blockquote>
&lt;p>Review the &lt;a href="https://agilemanifesto.org/" target="_blank" rel="noopener">Agile Manifesto&lt;/a>&lt;/p>
&lt;p>Highest priority is customer satisfaction&lt;/p>
&lt;p>Deliver product on a regular basis – only true metric&lt;/p>
&lt;p>We can handle late change – it happens!&lt;/p>
&lt;p>Need direct face-to-face communication&lt;/p>
&lt;p>Commit as a team – a whole team&lt;/p>
&lt;p>Appropriate level of planning and documentation&lt;/p>
&lt;p>Transparent&lt;/p>
&lt;p>Secret weapon is inspect and adapt&lt;/p>
&lt;/blockquote>
&lt;p>Seems like Agile Thinking to Chris – but how do the business think?&lt;/p>
&lt;p>Game development to asset lock-down point is “a melee” – whereas the bug fix to final release time can be driven very tightly in agile way.&lt;/p>
&lt;p>3 phases;&lt;/p>
&lt;p>Initial Creativity – agile-ish&lt;/p>
&lt;p>Massive Change – melee&lt;/p>
&lt;p>Delivery – agile&lt;/p>
&lt;p>But can still work in agile ways… Agile is a state of mind, not a process!&lt;/p>
&lt;p>Traverse the bridge of uncertainty&lt;/p>
&lt;p>Get rid of surprise with strong reporting&lt;/p>
&lt;p>Use light-weight processes when you can&lt;/p>
&lt;p>Don’t get into bug debt&lt;/p>
&lt;p>Learn to know when you are “done”&lt;/p>
&lt;p>Make sure the business do this too!&lt;/p></description></item><item><title>Keynote: Scaling Scrum</title><link>https://www.synesthesia.co.uk/2008/02/12/keynote-scaling-scrum/</link><pubDate>Tue, 12 Feb 2008 15:30:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/12/keynote-scaling-scrum/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>&lt;strong>Scaling Scrum&lt;/strong>&lt;/p>
&lt;p>&lt;em>&lt;a href="https://www.agilexp.com/rachel.php" target="_blank" rel="noopener">Rachel Davies&lt;/a>, &lt;a href="https://www.agilexp.com/" target="_blank" rel="noopener">Agile Experience Ltd.&lt;/a>&lt;/em>&lt;/p>
&lt;p>&lt;strong>Summary&lt;/strong>&lt;/p>
&lt;p>Scrum is the simplest possible agile method so it’s easy to get started with a small team of software developers. What happens when you try to apply Scrum to large projects? This talk shares experiences of working with large projects with multiple scrum teams and distributed scrum teams. Come to this talk to explore how to scale Scrum without losing the essence.&lt;/p>
&lt;p>&lt;strong>Notes&lt;/strong>&lt;/p>
&lt;p>Sees lots of teams being successful with Scrum in small projects, but people tend to get lost when they look at scaling up… It’s an emergent field.&lt;/p>
&lt;p>The challenges – highly collaborative, need the team involved in the planning, risk of losing easy way of resolving issues, hard work!&lt;/p>
&lt;p>Scrum recommended team size is 7 +/– 2. Scaling could be many teams, geographical distributions, organisational level.&lt;/p>
&lt;p>Rachel asked if anyone had experience above 5 teams – very few.&lt;/p>
&lt;p>Scaling hits roles differently:&lt;/p>
&lt;p>Product Owner – workload, being at all the meetings&lt;/p>
&lt;p>Scrum Master – more inter-team issues, dependencies&lt;/p>
&lt;p>Scrum Team – less empowered, large or distributed.&lt;/p>
&lt;p>Challenges for Scrum Practices:&lt;/p>
&lt;p>Establishing Sprint goal, distributed team members at Scrum meeting, Increment has dependencies on other teams, emphasis on electronic management of sprint backlog (remoteness), political impact on product backlog (more at stake on big project), sprint review – who’s in it?, combining lessons from teams in retrospective.&lt;/p>
&lt;p>Organisational issues – greater potential for culture clash, impact of organisational impedance. Logistics of working environment and technical infrastructure.&lt;/p>
&lt;p>Advice from the literature:&lt;/p>
&lt;p>Scrum of Scrums&lt;/p>
&lt;p>Start with a “Beachhead team” the use the members to seed other teams. (assumes you are starting a fresh project – Rachel sees lots of organisations getting benefit from Scrum on existing products)&lt;/p>
&lt;p>For existing products – extract a virtual team to focus on forward plan, and another to focus on integration, keeping it all working.&lt;/p>
&lt;p>May need communities of common disciplines e.g. DBAs&lt;/p>
&lt;p>Align iteration boundaries across teams.&lt;/p>
&lt;p>Think about series or parallel for multiple daily Scrum meetings&lt;/p>
&lt;p>Keep clear about “levels” in plans – vision, releases roadmap, themes per sprint, product backlog, sprint backlogs per team.&lt;/p>
&lt;p>Think about using a Product Owner team to share the load.&lt;/p>
&lt;p>Common language, domain model, glossary. Architecture guidelines&lt;/p>
&lt;p>Think about integration of the product – maybe a virtual team across the teams.&lt;/p>
&lt;p>Think about testing – may need additional test team looking at whole product as well as the people in the scrums teams&lt;/p>
&lt;p>Organise product showcase meetings for all teams to see whole product&lt;/p>
&lt;p>Think about scaling the development infrastructure&lt;/p>
&lt;p>Strike a balance:&lt;/p>
&lt;p>Larger teams v. More teams&lt;/p>
&lt;p>Contention for single Product Owner v. Product Owner team&lt;/p>
&lt;p>Cross-functional team v. Specialists&lt;/p>
&lt;p>&lt;strong>Questions from the floor&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Q:&lt;/strong> You mention feature teams v. component teams – difference?&lt;/p>
&lt;p>&lt;strong>A:&lt;/strong> Component teams might be a silo working on particular bundle of software e.g. a layer, possibly across multiple products. Feature team tend to focus on aspect of user-facing functionality for one product, possibly across multiple components – requires huge breadth of knowledge in the team.&lt;/p>
&lt;p>&lt;strong>Q:&lt;/strong> Thanks, trade-offs?&lt;/p>
&lt;p>&lt;strong>A:&lt;/strong> Knowledge-sharing. Team per component – might find one group is busier than other, so delays features. Feature-based teams address that, but the challenge is the amount of knowledge and skill in each team.&lt;/p>
&lt;p>&lt;strong>Q:&lt;/strong> How do you stop multiple sprints in between releases merging into one big sprint&lt;/p>
&lt;p>&lt;strong>A:&lt;/strong> Have to keep up strict discipline. Product Showcase on each sprint helps. Sprint Review of completion against velocity.&lt;/p></description></item><item><title>Leading Agile Teams</title><link>https://www.synesthesia.co.uk/2008/02/12/leading-agile-teams/</link><pubDate>Tue, 12 Feb 2008 14:26:34 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/12/leading-agile-teams/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>&lt;strong>Leading Agile Teams&lt;/strong>&lt;/p>
&lt;p>&lt;em>&lt;a href="https://www.linkedin.com/pub/1/b0/aa0" target="_blank" rel="noopener">Dot Tudor&lt;/a>, &lt;a href="https://www.tcc-net.com/" target="_blank" rel="noopener">TCC&lt;/a>&lt;/em>&lt;/p>
&lt;p>&lt;strong>Summary&lt;/strong>&lt;/p>
&lt;p>One school of thought is that good leaders make a big difference to the successful outcome of any initiative. On the other hand, some agilists want to eliminate leaders and go with situational leadership and self-organising teams. There is also a large contingent in the agile community with the view that the right approach is to change the style of leadership, not to eliminate leaders.&lt;/p>
&lt;p>This interactive workshop will explore the workings of an agile team and attempt to identify the issues and approaches to leadership styles that support an agile environment. This will be fun, informative – and there may even be prizes!&lt;/p>
&lt;p>&lt;strong>Notes&lt;/strong>&lt;/p>
&lt;p>Workshop format…&lt;/p>
&lt;p>Will have to think about how to transcribe this!&lt;/p></description></item><item><title>Case Study: Agile – Why Should Your Business Care ?</title><link>https://www.synesthesia.co.uk/2008/02/12/case-study-agile-why-should-your-business-care/</link><pubDate>Tue, 12 Feb 2008 12:39:52 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/12/case-study-agile-why-should-your-business-care/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>&lt;strong>Agile – Why Should Your Business Care?&lt;/strong>&lt;/p>
&lt;p>&lt;em>Bill Birnie, Senior Manager, IS Development Solutions, Standard Life Employee Services Limited, &lt;a href="https://www.linkedin.com/in/olivierlafontan" target="_blank" rel="noopener">Ollie LaFontan&lt;/a>, Exoftware&lt;/em>&lt;/p>
&lt;p>&lt;strong>Summary&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>What does my business want from Agile ?&lt;/li>
&lt;li>Creating an Agile culture and the importance of measures&lt;/li>
&lt;li>Consolidating gains and driving more change.&lt;/li>
&lt;/ul>
&lt;p>Standard Life’s award-winning use of Agile techniques is helping it achieve remarkable levels of productivity from its application development spend, and is supporting the positioning of technology provision at the heart of its business proposition.&lt;/p>
&lt;p>This session will cover the importance of linking your Agile enablement strategy to the needs of your business, and the challenges created by trying to change processes and beliefs that have been in place for many years.&lt;/p>
&lt;p>&lt;strong>Notes&lt;/strong>&lt;/p>
&lt;p>The values which support Agile: Communication, Feedback, Simplicity, Courage, Respect.&lt;/p>
&lt;p>Every instance of Agile looks different.&lt;/p>
&lt;p>Agile is not about acronyms – it is about delivering business results – functionality, timeliness, value.&lt;/p>
&lt;p>IT is second biggest cost centre in Standard Life – value for money is critical – IT apps development team measure how much of what they deliver is used as a measure of value.&lt;/p>
&lt;p>High expectations of leanness from the internal customer (they are award-winners so have high standards)&lt;/p>
&lt;p>Deadlines vital.&lt;/p>
&lt;p>Predictable process required for auditors and risk managers.&lt;/p>
&lt;p>Quality – need to demonstrate&lt;/p>
&lt;p>The business internal customers are not interested in the jargon!&lt;/p>
&lt;p>You can’t fix it all at once – eat the elephant one bite at a time…&lt;/p>
&lt;p>Early experiments with Agile – consultants who had successfully applied Lean to the Standard Life customer service division admitted they couldn’t see how to apply it to software development – so one team “just started doing it”… Courage was required to give them scope…&lt;/p>
&lt;p>After success, resisted temptation to force it on others. Key reason for success was motivation – instead talked about it a lot (especially the successes), and allowed people to adopt when they were ready.&lt;/p>
&lt;p>Some basic internal measures:&lt;/p>
&lt;ul>
&lt;li>How much of applications is used?&lt;/li>
&lt;li>Gartner says Standard Life Application Development is approx. 2.5 times more productive than industry peers (top quartile). Key contributing factors to efficiency and productivity are their advanced use of Agile and SOA.&lt;/li>
&lt;li>Predictability – how well do they hit time, cost and satisfaction&lt;/li>
&lt;li>Quality – sample metric McCabe Code Complexity – reduced from ~5 for legacy apps to typically 2 now.&lt;/li>
&lt;/ul>
&lt;p>More to do… especially level of support for teams that want to adopt Agile methods. Looking again at measurement set to provide business case for further investment in capability and leadership. Encouraging and supporting experiments, involving the business more – agile business cases etc.&lt;/p></description></item><item><title>Case Study: Delivering a Public-Private Partnership using DSDM</title><link>https://www.synesthesia.co.uk/2008/02/12/case-study-delivering-a-public-private-partnership-using-dsdm/</link><pubDate>Tue, 12 Feb 2008 11:34:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/12/case-study-delivering-a-public-private-partnership-using-dsdm/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>&lt;strong>National Packaging Waste Database – a DSDM Case Study&lt;/strong>&lt;/p>
&lt;p>&lt;em>Steve Watkins, Head of IT Portfolio Office, &lt;a href="https://www.environment-agency.gov.uk/" target="_blank" rel="noopener">Environment Agency&lt;/a> and Jeremy Renwick, &lt;a href="https://www.kubernetes.co.uk/" target="_blank" rel="noopener">Kubernetes Ltd&lt;/a>&lt;/em>&lt;/p>
&lt;p>Summary&lt;/p>
&lt;ul>
&lt;li>Delivering the &lt;a href="https://npwd.environment-agency.gov.uk/" target="_blank" rel="noopener">National Packaging Waste Database&lt;/a> (&lt;a href="https://npwd.environment-agency.gov.uk/" target="_blank" rel="noopener">NPWD&lt;/a>) on time and to budget&lt;/li>
&lt;li>Facilitating a very diverse stakeholder community drawn from industry and the 4 regulators&lt;/li>
&lt;li>Managing the culture shock of imposing agile on a waterfall community&lt;/li>
&lt;li>Managing an agile project with a geographically distributed team&lt;/li>
&lt;li>Learning the lessons&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Notes&lt;/strong>&lt;/p>
&lt;p>Agile process was deliberately imposed on a traditional waterfall environment.&lt;/p>
&lt;p>Packaging Waste regulation revolves around market in Packaging Recovery Notes – buying and selling of “evidence”.&lt;/p>
&lt;p>At least 12 major stakeholder groups, including 4 agencies!&lt;/p>
&lt;p>Project started in 2003 to replace paper-based system. Tight deadlines, so DSDM chosen as approach.&lt;/p>
&lt;p>A single system for both the regulators and the regulated industries – first time in UK Government!&lt;/p>
&lt;p>Success – users, industry and regulator like the system, time deadlines hit, budget met.&lt;/p>
&lt;p>Challenges – Variation in stakeholder views, resentment, relocation, geographically distributed, very few people dedicated to the project.&lt;/p>
&lt;p>Tight regulatory deadline, combined with a “proof point” meant that early stages were accelerated – lots of issues not sorted and which came back to bite later…&lt;/p>
&lt;p>The view from the Environment Agency IT organisation – government – used to very structured process with rigid processes. Industry had said “here’s the money, get on with it”. Different technology. Tight deadline. Ouch!&lt;/p>
&lt;p>As a regulator, the Environment Agency found it hard to cope with the idea of an outside body doing regulation, managing data protection, security etc.&lt;/p>
&lt;p>Lots of confusion over roles – who was running this project? Two project boards – one inside Environment Agency, one across Environment Agency and the industry. Half were running with DSDM, half were in BRUF-land.&lt;/p>
&lt;p>Resolved to one steering group, one PM, focus on who has skin in the game.&lt;/p>
&lt;p>No end to the polititics – more discord over the future of the system and the implementation of regulation – the system forced clarity on a process with some discretionary ambiguity…&lt;/p>
&lt;p>Another row before go-live – Environment Agency testers wanted to defer go-live for a collection of non-critical issues… Sometimes you have to just make a commitment! (note that code quality was good)&lt;/p>
&lt;p>Culture/philosophy clash between DSDM and Government Waterfall…&lt;/p>
&lt;p>Had uneasy hybrid of two approaches – effectively two sets of testing. Key learning point – sort out approach to testing early – without compromise. Go with Agile or waterfall – don’t try to do both.&lt;/p>
&lt;p>Further row over support, hosting etc. In the end needed forced collaboration – lock the three sets of lawyers in a room until they agree!&lt;/p>
&lt;p>Fundamental problem was conflicting attitudes to risk. Public-sector risk-averseness conflicted badly with &lt;a href="https://en.wikipedia.org/wiki/MoSCoW" target="_blank" rel="noopener">MoSCoW&lt;/a>.&lt;/p>
&lt;p>If you want to procure agile services or projects you need to think carefully about procurement appraoch – most public-sector procurement approaches assume fixed requirements up front! Need to apply timebox and iterative disciplines to the procurement phase too…&lt;/p>
&lt;p>Key learning for Environment Agency:&lt;/p>
&lt;ul>
&lt;li>One size (of process) doesn’t fit all&lt;/li>
&lt;li>Let go of some risks&lt;/li>
&lt;li>Learn to give up control and trust&lt;/li>
&lt;li>Effective and efficient are different things.&lt;/li>
&lt;li>Keep your eyes on the end goal&lt;/li>
&lt;/ul>
&lt;p>Key learning from project manager:&lt;/p>
&lt;ul>
&lt;li>Keep focused on deadlines and business requirements&lt;/li>
&lt;li>Just in time resolution of politics&lt;/li>
&lt;li>Communication – regular, frequent, face-to-face if possible, everyone to everyone. False economy to talk on the phone.&lt;/li>
&lt;li>Prototypes as early as possible&lt;/li>
&lt;li>Effective team-building&lt;/li>
&lt;/ul>
&lt;p>&lt;ins datetime="2008-02-14T10:02:32+00:00">Update: Link to &lt;a href="https://www.kubernetes.co.uk/wp/uploads/2008/02/unicom-npwd-case-study-final-presentation.pdf">presentation&lt;/a> on Jeremy Renwick’s site.&lt;/ins>&lt;/p></description></item><item><title>Case Study: Agile Analysis: A Proposition Assessment Case Study</title><link>https://www.synesthesia.co.uk/2008/02/12/case-study-agile-analysis-a-proposition-assessment-case-study/</link><pubDate>Tue, 12 Feb 2008 10:40:34 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/12/case-study-agile-analysis-a-proposition-assessment-case-study/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>&lt;strong>Agile Analysis: A Proposition Assessment Case Study&lt;/strong>&lt;/p>
&lt;p>&lt;em>&lt;a href="https://more-white-space.blogspot.com/" target="_blank" rel="noopener">Luke Barrett&lt;/a>, Senior Business Analyst, &lt;a href="https://www.thoughtworks.com/" target="_blank" rel="noopener">Thoughtworks&lt;/a>&lt;/em>&lt;/p>
&lt;p>&lt;strong>Summary&lt;/strong>&lt;/p>
&lt;p>While the benefits of taking an Agile approach to the heart of the software development cycle are becoming increasingly recognised, this people-centric, communication-oriented, test-driven way of working is also powerful in helping teams and organisations early in the evolution of a idea or proposition.&lt;/p>
&lt;p>In this case study we look at applying an Agile way of working to the analysis of a new business idea at its inception – this includes the creation and iteration of key deliverables (financial model, project roadmap, core processes and usage scenarios) to allow a go / no-go decision.&lt;/p>
&lt;p>&lt;strong>Note&lt;/strong>&lt;/p>
&lt;p>What is role of business analyst in an agile organisation?&lt;/p>
&lt;p>Agile values of simplicity, openness, communication, courage…&lt;/p>
&lt;p>Apply agile software approach to evaluating business propositions.&lt;/p>
&lt;p>Project – a new business idea which the owner wants to get funding for…&lt;/p>
&lt;p>New business idea – challenge to validate within limited time and funds. e.g. what could be done in a week?&lt;/p>
&lt;p>Objective – Prepare a Pitch, based on a clearer definition of the proposition, e.g.: financial model, key processes and goals, capacity model, customer scenarios, development roadmap for the business.&lt;/p>
&lt;p>Small team – two consultants plus client.&lt;/p>
&lt;p>1 week – each day based on two Action-Reflection cycles – 2 hr workshop, consolidate, 2 hr workshop, consolidation.&lt;/p>
&lt;p>Keep it self-documenting&lt;/p>
&lt;p>Models: traditionally use lots words of words to drive out ambiguity – but words are slippery! Important to facilitate a feedback-driven iteration towards consensus of the stakeholders. Use lots of visual models.&lt;/p>
&lt;ol class="decimal">
&lt;li>
Started with finances – costs, revenues… A very quick ballpark analysis. Over the 5 days about 1.5 days on this.
&lt;/li>
&lt;li>
Processes, roles and goals – the core of what the business does. Imagine a “day in the life”.
&lt;/li>
&lt;li>
Capacity model – what resources needed to deliver the service?
&lt;/li>
&lt;li>
Service development roadmap – how does the business grow?
&lt;/li>
&lt;li>
Customer scenarios – what will it be like for a customer to use the service? Lots of Post-Its and pictures!
&lt;/li>
&lt;/ol>
&lt;p>Put client in position to pitch to prospective investors and customers with supporting information, and brought to life with the scenarios.&lt;/p>
&lt;p>The output had a positive reception!&lt;/p>
&lt;p>Co-location of the team was vital – and if you aren’t, you can’t have a virtual beer together! (relationships vital).&lt;/p>
&lt;p>Importance of dedicated time, dedicated effort / resources. “the heartbeat of feedback”&lt;/p></description></item><item><title>The Ten Golden Rules for Successful Agile Projects</title><link>https://www.synesthesia.co.uk/2008/02/12/the-ten-golden-rules-for-successful-agile-projects/</link><pubDate>Tue, 12 Feb 2008 09:53:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/12/the-ten-golden-rules-for-successful-agile-projects/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>**The Ten Golden Rules for Successful Agile Projects&lt;/p>
&lt;p>** &lt;em>Keith Richards, &lt;a href="https://www.keithrichardsconsulting.co.uk/site/home/" target="_blank" rel="noopener">Keith Richards Consulting&lt;/a>&lt;/em>&lt;/p>
&lt;p>&lt;strong>Summary&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Agile approaches to projects are maturing and becoming mainstream, yet some are more successful than others&lt;/li>
&lt;li>This presentation describes the ten golden rules that will increase the chances of success, and make the difference between an “OK” project and an “excellent” project.&lt;/li>
&lt;li>The golden rules also highlight what NOT to do.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Speaker&lt;/strong>&lt;/p>
&lt;p>Keith Richards – process/method consultant, specialising in Agile projects. Author of “&lt;a href="https://www.tsoshop.co.uk/bookstore.asp?FO=1160151&amp;amp;DI=581953" target="_blank" rel="noopener">Agile Project Management&lt;/a>” (TSO). Led team for DSDM Atern.&lt;/p>
&lt;p>&lt;strong>The Golden Rules&lt;/strong>&lt;/p>
&lt;p>No survey – just first hand experience…&lt;/p>
&lt;ol class="decimal">
&lt;li>
Define the project objective in less than 10 words
&lt;/li>
&lt;li>
Build a team with those who say “can”
&lt;/li>
&lt;li>
Go slow early to go fast later
&lt;/li>
&lt;li>
Look backwards to go forwards
&lt;/li>
&lt;li>
Change is great!
&lt;/li>
&lt;li>
To be understood, seek first to understand
&lt;/li>
&lt;li>
Collect actuals – “oxygen” for your project
&lt;/li>
&lt;li>
Use fat communication channels
&lt;/li>
&lt;li>
Work hard at controlling what you can’t control
&lt;/li>
&lt;li>
One more day? NO! We&amp;#8217;ll catch up NO!
&lt;/li>
&lt;/ol>
&lt;p>If you can’t understand the rationale for doing a project you shouldn’t be doing it! Expect to spend half a day writing the &amp;lt;10 words.&lt;/p>
&lt;p>Good people above good process – in fact good people more important than that they have the skills. Test: ask “Can I ask a favour?”&lt;/p>
&lt;p>How much design up front (DUF) is enough? Answer: Enough! But try and avoid grabbing early at solutions. Test: “Is it safe to move on?”&lt;/p>
&lt;p>ALWAYS have project reviews! &lt;a href="https://en.wikipedia.org/wiki/Kaizen" target="_blank" rel="noopener">Kaizen&lt;/a> is vital.&lt;/p>
&lt;p>Embrace change… How do you feel when the customer changes their mind? Should be happy! Change to get a closer fit to the business need (depth change) is good – change in breadth might be a problem… (signals possible issue with project objective)&lt;/p>
&lt;p>Facilitation and influencing skills are core competencies for Agile projects – especially for the project manager. Try the 10 second silence when getting a progress update!&lt;/p>
&lt;p>Measuring actuals – start now, start simple, start using to calibrate your estimates…&lt;/p>
&lt;p>Communication – go visual, use workshops, never write when you can talk…&lt;/p>
&lt;p>Continuously manage external risks – be “a bit of a worrier” – actively manage your risk log!&lt;/p>
&lt;p>Time focus is your greatest weapon. Force the issue – timeboxes, not milestones. If you are going to fail, fail early. Never extend deadlines.&lt;/p></description></item><item><title>Conference: Agile Approaches for Delivering Business Value</title><link>https://www.synesthesia.co.uk/2008/02/12/conference-agile-approaches-for-delivering-business-value/</link><pubDate>Tue, 12 Feb 2008 09:39:04 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/12/conference-agile-approaches-for-delivering-business-value/</guid><description>&lt;p>I’m blogging the conference &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a>&lt;/p>
&lt;p>The stated goals are to provide:&lt;/p>
&lt;ul>
&lt;li>a forum for the exchange of information regarding all agile development technologies;&lt;/li>
&lt;li>an opportunity to hear case studies from a variety of sectors&lt;/li>
&lt;li>[an opportunity] to find out new viewpoints and developments and learn from the experiences of others&lt;/li>
&lt;/ul>
&lt;p>Sessions:&lt;/p>
&lt;p>Day 1&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/12/the-ten-golden-rules-for-successful-agile-projects/" target="_blank" rel="noopener">The Ten Golden Rules for Successful Agile Projects&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/12/case-study-agile-analysis-a-proposition-assessment-case-study/" target="_blank" rel="noopener">Case Study: Agile Analysis: A Proposition Assessment Case Study&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/12/case-study-delivering-a-public-private-partnership-using-dsdm/" target="_blank" rel="noopener">Case Study: Delivering a Public-Private Partnership using DSDM&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/12/case-study-agile-why-should-your-business-care/" target="_blank" rel="noopener">Case Study: Agile – Why Should Your Business Care?&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/12/leading-agile-teams/" target="_blank" rel="noopener">Leading Agile Teams&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/12/keynote-scaling-scrum/" target="_blank" rel="noopener">Keynote: Scaling Scrum&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/12/case-study-using-agile-the-qa-perspective/" target="_blank" rel="noopener">Case Study: Using Agile: the QA perspective&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Day 2&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/13/examples-exemplars-requirements-tests/" target="_blank" rel="noopener">Examples, Exemplars, Requirements, Tests&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/13/fit-for-the-future-the-future-of-agile-acceptance-test-tools/" target="_blank" rel="noopener">Fit for the Future: The future of Agile Acceptance Test Tools&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/13/acceptance-test-driven-development/" target="_blank" rel="noopener">Acceptance Test Driven Development&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/13/can-it-projects-be-insured/" target="_blank" rel="noopener">Can IT Projects be Insured?&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/13/a-square-peg-in-a-round-hole-agile-and-fixed-price-contracts/" target="_blank" rel="noopener">A Square Peg in a Round Hole: Agile and fixed-price contracts&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/13/when-xp-met-outsourcing/" target="_blank" rel="noopener">When XP Met Outsourcing&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/13/dsdm-atern-the-next-step-in-agile/" target="_blank" rel="noopener">DSDM Atern: The next step in agile!&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Update – my initial &lt;a href="https://www.synesthesia.co.uk/blog/archives/2008/02/13/reflections-on-agile-approaches-for-delivering-business-value/" target="_blank" rel="noopener">learning reflections on the conference&lt;/a>.&lt;/p></description></item><item><title>The boundaries of GTD</title><link>https://www.synesthesia.co.uk/2008/02/11/the-boundaries-of-gtd/</link><pubDate>Mon, 11 Feb 2008 12:34:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/11/the-boundaries-of-gtd/</guid><description>&lt;p>&lt;a href="https://www.zylstra.org/blog/" target="_blank" rel="noopener">Ton Zijlstra&lt;/a> &lt;font color="#0000ff">&lt;/font>has some provoking &lt;a href="https://www.zylstra.org/blog/archives/2008/01/thoughts_on_gtd.html" target="_blank" rel="noopener">thoughts&lt;/a> about the limitations of &lt;a href="https://en.wikipedia.org/wiki/Getting_Things_Done" target="_blank" rel="noopener">GTD&lt;/a>-like systems :&lt;a href="https://www.zylstra.org/blog/archives/2008/01/thoughts_on_gtd.html" target="_blank" rel="noopener">Ton’s Interdependent Thoughts: Thoughts on GTD System Weaknesses&lt;/a>&lt;/p>
&lt;p>In short, Ton highlights the increasing need to apply qualitative (and often social- and/or network-based) approaches to filter the info-glut before you can start putting actions into a GTD-like process.&lt;/p>
&lt;p>I think he’s spot on, and it made me think a little more analytically about my personal organisation system, loosely-based on GTD, but heavily reliant on the capabilities of MindManager enhanced by &lt;a href="https://www.gyronix.com/resultmanager.php" target="_blank" rel="noopener">ResultsManager&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://www.gyronix.com/resultmanager.php" target="_blank" rel="noopener">ResultsManager&lt;/a> adds a project– and action-planning capability to MindManager by allowing any topic in any mind-map to be tagged with task-related metadata, and further, the ability to define “dashboard” maps which cut across the information, pulling together a view based on whatever criteria the dashboard author chooses.&lt;/p>
&lt;p>In the most GTD-like aspects of the process, this makes it easy to create a mindmap of “Today’s Next Actions” across all of my projects, but the filtering capabilities are very powerful and allow many other views to be created.&lt;/p>
&lt;p>Key aspects of this system which, I think, go some way to addressing the issues Ton raises are:&lt;/p>
&lt;ul>
&lt;li>Ability to store, manipulate and interpret information within the context of a given project or concern, yet pull out and record cross-links;&lt;/li>
&lt;li>Clear signalling of which ideas do not have any current “Next Action”, and which therefore may need further thought to continue developing &lt;a href="https://www.zylstra.org/blog/archives/001161.html" target="_blank" rel="noopener">actionable sense&lt;/a>;&lt;/li>
&lt;li>An easy way top bring in external information sources – for example by using a MindManager map part to import the content of an RSS feed, I can connect this information management system to my wider information-gathering and filtering processes.&lt;/li>
&lt;/ul>
&lt;p>Ton’s closing challenge is for a system to present patterns about activity that could in turn become “inbox” items – this definitely needs further thought, but my intuition is that a combination of tagging and feed-derivation could take some kind of a log for re-ingest to the “machine”.&lt;/p></description></item><item><title>BPUG Congress 2008</title><link>https://www.synesthesia.co.uk/2008/02/09/bpug-congress-2008/</link><pubDate>Sat, 09 Feb 2008 14:43:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/09/bpug-congress-2008/</guid><description>&lt;p>I spent half a day earlier this week at the &lt;a href="https://www.bpugcongress.com/" target="_blank" rel="noopener">Best Practice User Group Congress&lt;/a>. &lt;a href="https://www.usergroup.org.uk/" target="_blank" rel="noopener">BPUG&lt;/a> is concerned with the application and use of &lt;a href="https://www.ogc.gov.uk/" target="_blank" rel="noopener">OGC&lt;/a> products such as &lt;a href="https://www.ogc.gov.uk/PPM_Resources_prince_2_c2.asp" target="_blank" rel="noopener">Prince2&lt;/a>, &lt;a href="https://www.ogc.gov.uk/delivery_lifecycle_overview_of_managing_successful_programmes_msp_.asp" target="_blank" rel="noopener">MSP&lt;/a> and &lt;a href="https://www.ogc.gov.uk/guidance_management_of_risk_4441.asp" target="_blank" rel="noopener">MoR&lt;/a>. As you might expect therefore there was little mention of alternative methods such as Agile.&lt;/p>
&lt;p>I didn’t have time to attend the conference sessions, so this is somewhat less than a full review: I did however take part in one round-table session and had a chance to speak to a number of vendors at the exhibition.&lt;/p>
&lt;p>“Simple, not Easy”, hosted by &lt;a href="https://www.tpgacademy.com/au/whos_links.htm#adrian" target="_blank" rel="noopener">Adrian Dooley&lt;/a> from &lt;a href="https://theprojectsgroup.co.uk/" target="_blank" rel="noopener">The Projects Group&lt;/a> was advertised as seeking “… to identify the fundamentals behind the evermore contrived solutions for consistently delivering successful projects”.&lt;/p>
&lt;p>I’m not sure we achieved that in 90 minutes, crammed into a room that showed an artful ability on behalf of the hotel to turn a fire escape corridor into a meeting space (!!), but there was some entertaining discussion, capped by Adrian’s takeaway – “Practice what you preach” – i.e. as professionals in achieving business change it’s down to all of us to address the business changes needed to make project management more effective in the organisations we work with.&lt;/p>
&lt;p>There was a small exhibition area with a number of vendors of software, consultancy and training. Ones which caught my eye were:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.changedirector.com/" target="_blank" rel="noopener">Change Director&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.ninthwave.co.uk/" target="_blank" rel="noopener">PAT&lt;/a> from &lt;a href="https://www.ninthwave.co.uk/" target="_blank" rel="noopener">NinthWave&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.riskreasoning.co.uk/" target="_blank" rel="noopener">RiskAid&lt;/a> from &lt;a href="https://www.riskreasoning.co.uk/" target="_blank" rel="noopener">Risk Reasoning&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>I’d have liked to take a look at &lt;a href="https://www.mundanesoftware.co.uk/" target="_blank" rel="noopener">Simply Project Office&lt;/a> from &lt;a href="https://www.mundanesoftware.co.uk/" target="_blank" rel="noopener">Mundane Software&lt;/a>, but sadly they seemed to suffer from the mundane problem of having no-one on the stand when I looked!&lt;/p></description></item><item><title>Looking forward to Agile Approaches for Delivering Business Value</title><link>https://www.synesthesia.co.uk/2008/02/08/looking-forward-to-agile-approaches-for-delivering-business-value/</link><pubDate>Fri, 08 Feb 2008 11:47:33 +0000</pubDate><guid>https://www.synesthesia.co.uk/2008/02/08/looking-forward-to-agile-approaches-for-delivering-business-value/</guid><description>&lt;p>I’m planning to attend &lt;a href="https://www.unicom.co.uk/product_detail.asp?prdid=1547" target="_blank" rel="noopener">Agile Approaches for Delivering Business Value&lt;/a> next week.&lt;/p>
&lt;p>It looks like an interesting set of sessions, and although I doubt I’ll be liveblogging, I aim to post some notes here as soon afterwards as I can.&lt;/p>
&lt;p>I’m particularly interested in two of the talks on the second day:&lt;/p>
&lt;p>“A Square Peg in a Round Hole: Agile and fixed-price contracts” by &lt;a href="https://amarinda.com/about/people" target="_blank" rel="noopener">Duncan Pierce&lt;/a>;&lt;/p>
&lt;p>“When XP Met Outsourcing” by &lt;a href="https://www.martinitconsulting.com/" target="_blank" rel="noopener">Angela Martin&lt;/a>.&lt;/p>
&lt;p>In my current environment almost all our systems development is carried out by suppliers in various contractual models, and I’ve hit some frustrations in getting acceptance of Agile methods. I’m keen to learn how others may have constructed a “win-win” in this sort of situation.&lt;/p></description></item><item><title>Programme Procurement Strategy – 3</title><link>https://www.synesthesia.co.uk/2007/10/02/programme-procurement-strategy-3/</link><pubDate>Tue, 02 Oct 2007 09:49:19 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/10/02/programme-procurement-strategy-3/</guid><description>&lt;p>I’ve clarified the process I have in mind, based on the &lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/10/01/programme-procurement-strategy-2/" target="_blank" rel="noopener">previous&lt;/a> &lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/10/01/programme-procurement-strategy-1/" target="_blank" rel="noopener">two&lt;/a> posts:&lt;/p>
&lt;p>&lt;a rel="attachment wp-att-1693" href="https://www.synesthesia.co.uk/blog/archives/2007/10/02/programme-procurement-strategy-3/assessing-procurement-approach/">&lt;img class="aligncenter size-full wp-image-1693" title="Assessing Procurement Approach" src="https://www.synesthesia.co.uk/blog/wp/uploads/2007/10/assessing-procurement-approach.png" alt="Assessing Procurement Approach" width="495" height="237" />&lt;/a>&lt;/p></description></item><item><title>Programme Procurement Strategy – 2</title><link>https://www.synesthesia.co.uk/2007/10/01/programme-procurement-strategy-2/</link><pubDate>Mon, 01 Oct 2007 15:37:51 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/10/01/programme-procurement-strategy-2/</guid><description>&lt;p>In &lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/10/01/programme-procurement-strategy-1/" title="Permanent Link to Programme Procurement Strategy - 1" target="_blank" rel="noopener">Programme Procurement Strategy – 1&lt;/a> I briefly reviewed the approach from the &lt;a href="https://www.ogc.gov.uk/documents/RiskAllocationModel.pdf" target="_blank" rel="noopener">OGC Risk Allocation Model for Project Strategy and Procurement&lt;/a>.&lt;/p>
&lt;p>Thinking about how to apply that approach to my own programme, I quickly realised that the range of changes we are seeking to deliver (across technology services, business processes and management capabilities) does not easily sit into a single risk assessment.&lt;/p>
&lt;p>So I’m still attracted to the risk-based approach, but it is going to need substantial de-composition of the programme to apply it meaningfully.&lt;/p>
&lt;p>I’m going to start with the &lt;a href="https://synesthesia.co.uk/wikka/BluePrint" target="_blank" rel="noopener">Blueprint&lt;/a>, since that is where our final outcomes are defined. For each area of the Blueprint I will examine each outcome, and analyse against the risk framework from the OGC guide.&lt;/p></description></item><item><title>Programme Procurement Strategy – 1</title><link>https://www.synesthesia.co.uk/2007/10/01/programme-procurement-strategy-1/</link><pubDate>Mon, 01 Oct 2007 10:34:43 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/10/01/programme-procurement-strategy-1/</guid><description>&lt;p>I need to put together an analysis of procurement options for the programme I am shaping, as first steps in devising a procurement strategy.&lt;/p>
&lt;p>The main online reference I have found so far is the OGC’s &lt;a href="https://www.ogc.gov.uk/documents/RiskAllocationModel.pdf" target="_blank" rel="noopener">Risk Allocation Model for Project Strategy and Procurement&lt;/a> (pdf).&lt;/p>
&lt;p>The first part of that document examines the suitability of different contract types in relation to the nature of the organisation and the programme goal:&lt;/p>
&lt;ul>
&lt;li>Understand overall programme goal&lt;/li>
&lt;li>Think about life-cycle of that goal, and of the sponsoring organisation – i.e. &lt;strong>Volatility&lt;/strong>&lt;/li>
&lt;li>Understand the difference between &lt;a href="https://synesthesia.co.uk/msp/wiki/Input" target="_blank" rel="noopener">Inputs&lt;/a>, &lt;a href="https://synesthesia.co.uk/msp/wiki/Output" target="_blank" rel="noopener">Outputs&lt;/a> and &lt;a href="https://synesthesia.co.uk/msp/wiki/Outcome" target="_blank" rel="noopener">Outcomes&lt;/a>&lt;/li>
&lt;li>The more volatile the goal or the organisation, the less likely that you will be able to successfully procure for Outcomes, or possibly even for Outputs.&lt;/li>
&lt;/ul>
&lt;p>The document then goes on to consider the risks related to organisational capabilities. The earlier in the value chain Inputs-Outputs-Outcomes, the more skills are required within the organisation for integration and change management, and the more vulnerable you are to opposition from within.&lt;/p>
&lt;p>The last area of consideration is the ability of the market to supply a particular  service.&lt;/p>
&lt;p>Once all three areas have been analysed, it’s likely that further iteration will be required to converge the  solution.&lt;/p></description></item><item><title>Library Addition – Benefits Realisation Management</title><link>https://www.synesthesia.co.uk/2007/10/01/library-addition-benefits-realisation-management/</link><pubDate>Mon, 01 Oct 2007 09:26:26 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/10/01/library-addition-benefits-realisation-management/</guid><description>&lt;p>I’ve just got my hands on &lt;a href="https://www.amazon.co.uk/Benefit-Realisation-Management-Practical-Achieving/dp/0566086875%3FSubscriptionId%3DAKIAJESZAMDM7NXQUGQQ%26tag%3Dfivegocrazyinmid%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0566086875" target="_blank" rel="noopener">Benefit Realisation Management: A Practical Guide to Achieving Benefits Through Change&lt;/a> by Gerald Bradley.&lt;/p>
&lt;p>&lt;a href="https://www.amazon.co.uk/Benefit-Realisation-Management-Practical-Achieving/dp/0566086875%3FSubscriptionId%3DAKIAJESZAMDM7NXQUGQQ%26tag%3Dfivegocrazyinmid%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0566086875" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://ecx.images-amazon.com/images/I/5190JZWC4EL._SL75_.jpg" alt="" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/p></description></item><item><title>MSP – Quality Management Strategies</title><link>https://www.synesthesia.co.uk/2007/10/01/msp-quality-management-strategies/</link><pubDate>Mon, 01 Oct 2007 09:12:37 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/10/01/msp-quality-management-strategies/</guid><description>&lt;p>On &lt;a href="https://www.synesthesia.co.uk/msp/" target="_blank" rel="noopener">my other blog&lt;/a> I’ve been posting my process as I worked through the creation of a &lt;a href="https://synesthesia.co.uk/msp/wiki/QualityManagementStrategy" target="_blank" rel="noopener">Quality Management Strategy&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://www.synesthesia.co.uk/msp/2007/09/25/quality-management-strategies-1/" target="_blank" rel="noopener">Post 1&lt;/a> &lt;a href="https://www.synesthesia.co.uk/msp/2007/09/25/quality-management-strategies-2/" target="_blank" rel="noopener">Post 2&lt;/a> &lt;a href="https://www.synesthesia.co.uk/msp/2007/09/25/quality-management-strategies-3/" target="_blank" rel="noopener">Post 3&lt;/a> &lt;a href="https://www.synesthesia.co.uk/msp/2007/09/25/quality-management-strategies-4/" target="_blank" rel="noopener">Post 4&lt;/a> &lt;a href="https://www.synesthesia.co.uk/msp/2007/09/26/quality-management-strategies-5/" target="_blank" rel="noopener">Post 5&lt;/a>&lt;/p>
&lt;p>One key learning point was that the management of benefits, whilst considered by &lt;a href="https://synesthesia.co.uk/msp/wiki/MSP" target="_blank" rel="noopener">MSP&lt;/a> &lt;font color="#0000ff">&lt;/font>as a separate activity, is absolutely fundamental to ensuring the programme delivers value, so it is important to make that an integrated part of the Quality management Strategy.&lt;/p>
&lt;p>Another insight was the importance of considering quality as a series of “nested loops”…&lt;/p>
&lt;img src="https://www.synesthesia.co.uk/msp/wp/uploads/nested-loops-of-quality.png" alt="nested loops of quality" border="0" /></description></item><item><title>Quality Management Strategies – 5</title><link>https://www.synesthesia.co.uk/2007/09/26/quality-management-strategies-5/</link><pubDate>Wed, 26 Sep 2007 07:44:31 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/09/26/quality-management-strategies-5/</guid><description>&lt;p>Further reference to the [[MSP]] manual (p77, 2003 version) identifies three areas of programme activities where quality management is involved:&lt;/p>
&lt;ol>
&lt;li>Quality management of the governance arrangements – this corresponds to the top level “Governance Reviews” in &lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-3/" target="_blank" rel="noopener">post 3 of this series&lt;/a>.&lt;/li>
&lt;li>Quality assurance and review of project outputs – this corresponds to the lower three levels in &lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-3/" target="_blank" rel="noopener">post 3 of this series&lt;/a>.&lt;/li>
&lt;li>Configuration Management of key programme documentation.&lt;/li>
&lt;/ol>
&lt;p>Drawing on this we need to add an area to our Quality Management Strategy (item 3 above).&lt;/p>
&lt;p>I’m puzzled that the section on Quality Management makes no reference to Benefits Reviews (they appear in the chapter on Benefits Management), but as I’ve &lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-2/" target="_blank" rel="noopener">noted&lt;/a>, they are critical to ensuring the delivery of Value, so in my opinion they should be integrated into this strategy.&lt;/p>
&lt;p>Earlier posts in the series:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-1/" title="Permanent Link to Quality Management Strategies - 1" target="_blank" rel="noopener">Quality Management Strategies – 1&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-2/" title="Permanent Link to Quality Management Strategies - 2" target="_blank" rel="noopener">Quality Management Strategies – 2&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-3/" title="Permanent Link to Quality Management Strategies - 2" target="_blank" rel="noopener">Quality Management Strategies – 3&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-4/" title="Permanent Link to Quality Management Strategies - 2" target="_blank" rel="noopener">Quality Management Strategies – 4&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Quality Management Strategies – 4</title><link>https://www.synesthesia.co.uk/2007/09/25/quality-management-strategies-4/</link><pubDate>Tue, 25 Sep 2007 16:19:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/09/25/quality-management-strategies-4/</guid><description>&lt;p>At some point we will have to identify the &lt;strong>who&lt;/strong> of Quality Management – who will carry out all of the activities.&lt;/p>
&lt;p>Looking at the &lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-3/" target="_blank" rel="noopener">last post&lt;/a> it occurred to me that a useful simplifying assumption would be to divide the processes into three levels:&lt;/p>
&lt;table style="cursor: default; border: 1px dashed #bbbbbb;" border="0">
&lt;tr>
&lt;td style="color: #000000; font-size: 11px; cursor: text; margin: 8px; border: 1px dashed #bbbbbb;">
Meta-Programme Activities
&lt;/td>
&lt;pre>&lt;code>&amp;lt;td style=&amp;quot;color: #000000; font-size: 11px; cursor: text; margin: 8px; border: 1px dashed #bbbbbb;&amp;quot;&amp;gt;
Quality activities which sit outside the programme
&amp;lt;/td&amp;gt;
&lt;/code>&lt;/pre>
&lt;/tr>
&lt;tr>
&lt;td style="color: #000000; font-size: 11px; cursor: text; margin: 8px; border: 1px dashed #bbbbbb;">
Programme Activities
&lt;/td>
&lt;pre>&lt;code>&amp;lt;td style=&amp;quot;color: #000000; font-size: 11px; cursor: text; margin: 8px; border: 1px dashed #bbbbbb;&amp;quot;&amp;gt;
Quality activities at the programme level
&amp;lt;/td&amp;gt;
&lt;/code>&lt;/pre>
&lt;/tr>
&lt;tr>
&lt;td style="color: #000000; font-size: 11px; cursor: text; margin: 8px; border: 1px dashed #bbbbbb;">
Project Quality Activities
&lt;/td>
&lt;pre>&lt;code>&amp;lt;td style=&amp;quot;color: #000000; font-size: 11px; cursor: text; margin: 8px; border: 1px dashed #bbbbbb;&amp;quot;&amp;gt;
Quality activities within individual projects
&amp;lt;/td&amp;gt;
&lt;/code>&lt;/pre>
&lt;/tr>
&lt;/table>
&lt;p>&lt;ins style="border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: green; text-decoration: none; color: green;" datetime="2007-09-26T07:51:13+00:00">&lt;/ins>&lt;/p>
&lt;p>The activities in the first section are the responsibility of the SRO / Programme Director, often with external help such as audit.&lt;/p>
&lt;p>The activities in the second section are the responsibility of the Programme Manager, assisted by the Programme Office&lt;/p>
&lt;p>The activities in the third second section are likely to be the responsibility of the individual Project Managers, often assisted by the Programme Office&lt;/p>
&lt;p>Earlier posts in this series&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-1/" title="Permanent Link to Quality Management Strategies - 1" target="_blank" rel="noopener">Quality Management Strategies – 1&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-2/" title="Permanent Link to Quality Management Strategies - 2" target="_blank" rel="noopener">Quality Management Strategies – 2&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-3/" title="Permanent Link to Quality Management Strategies - 2" target="_blank" rel="noopener">Quality Management Strategies – 3&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Quality Management Strategies – 3</title><link>https://www.synesthesia.co.uk/2007/09/25/quality-management-strategies-3/</link><pubDate>Tue, 25 Sep 2007 15:01:12 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/09/25/quality-management-strategies-3/</guid><description>&lt;p>In the last two posts of this series I have started down the line of understanding the value chain of a programme, and therefore &lt;strong>what&lt;/strong> it is we need to quality assure.&lt;/p>
&lt;p>This post steps back for a moment to think about the sort of process we need to design in our &lt;a href="https://www.synesthesia.co.uk/wikka/QualityManagementStrategy">Quality Management Strategy&lt;/a> – the &lt;strong>how&lt;/strong> of quality assurance.&lt;/p>
&lt;p>One of the major differences between a programme and a project is the very much higher likelihood of change in a programme than in a project:&lt;/p>
&lt;ul>
&lt;li>Firstly, the programme itself may change direction over its lifetime, reflecting changes in the surrounding environment;&lt;/li>
&lt;li>Secondly, the precise makeup of the project portfolio may change to deal with new opportunities and threats, or to accommodate changes in programme direction;&lt;/li>
&lt;li>Thirdly are the inherent changes within each project in the portfolio.&lt;/li>
&lt;/ul>
&lt;p>So the process(es) we invent and document in a &lt;a href="https://www.synesthesia.co.uk/wikka/QualityManagementStrategy">Quality Management Strategy&lt;/a> must be designed from the start to accommodate change in any of the inputs. That implies ongoing review at a number of nested levels.&lt;/p>
&lt;p>&lt;a rel="attachment wp-att-1656" href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-3/nested-loops-of-quality/">&lt;img class="aligncenter size-full wp-image-1656" title="Nested Loops of Quality" src="https://www.synesthesia.co.uk/blog/wp/uploads/2007/09/nested-loops-of-quality.png" alt="Nested Loops of Quality" width="429" height="650" />&lt;/a>&lt;/p>
&lt;p>Earlier posts in this series&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-1/" title="Permanent Link to Quality Management Strategies - 1" target="_blank" rel="noopener">Quality Management Strategies – 1&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-2/" title="Permanent Link to Quality Management Strategies - 2" target="_blank" rel="noopener">Quality Management Strategies – 2&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Programme Value Chain</title><link>https://www.synesthesia.co.uk/2007/09/25/programme-value-chain/</link><pubDate>Tue, 25 Sep 2007 14:24:47 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/09/25/programme-value-chain/</guid><description>&lt;p>I found this diagram useful to explain how the various activities and plans within a programme combine to add value for the programme sponsoring group and stakeholders:&lt;/p>
&lt;p>&lt;a rel="attachment wp-att-1647" href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/programme-value-chain/progvaluechain/">&lt;img class="aligncenter size-medium wp-image-1647" title="Programme Value Chain" src="https://www.synesthesia.co.uk/blog/wp/uploads/2007/09/progvaluechain-284x300.png" alt="Programme Value Chain" width="284" height="300" />&lt;/a>&lt;/p></description></item><item><title>Quality Management Strategies – 2</title><link>https://www.synesthesia.co.uk/2007/09/25/quality-management-strategies-2/</link><pubDate>Tue, 25 Sep 2007 11:28:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/09/25/quality-management-strategies-2/</guid><description>&lt;p>Why do we need a &lt;a href="https://synesthesia.co.uk/wikka/QualityManagementStrategy" target="_blank" rel="noopener">Quality Management Strategy?&lt;/a>&lt;/p>
&lt;p>In an &lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/quality-management-strategies-1" target="_blank" rel="noopener">earlier post&lt;/a> I wrote about my confusion when starting to think about how to create a quality management strategy for my programme.&lt;/p>
&lt;p>Let’s go back to basics – why do we need a Quality Management Strategy?&lt;/p>
&lt;p>Fundamentally it’s about ensuring (to an acceptable level of certainty) that the Programme will deliver what it sets out to deliver.&lt;/p>
&lt;p>And that is about &lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/25/programme-value-chain/" target="_blank" rel="noopener">Value&lt;/a>.&lt;/p>
&lt;p>A Programme delivers Value through achieving &lt;a href="https://www.synesthesia.co.uk/wikka/Outcome">Outcomes&lt;/a> which deliver Benefits.&lt;/p>
&lt;p>So the starting point for a Quality Management Strategy has to be around the shaping and validation of Outcomes, and the identification of Benefits.&lt;/p>
&lt;p>Shaping of Outcomes is essentially a political process – framing the programme so that it meets the perceived needs of the sponsoring group.&lt;/p>
&lt;p>Linking of Outcomes to measurable Benefits is a critical part of &lt;a href="https://www.synesthesia.co.uk/wikka/DefiningAProgramme">defining the Programme&lt;/a>, and includes the identification of Benefits, devising a Benefits Management Strategy and validating the Benefits Realisation Plan.&lt;/p>
&lt;p>&lt;strong>So the first step in our Quality Management Strategy must be the processes around Planning and Realising Benefits.&lt;/strong>&lt;/p>
&lt;p>That’s why &lt;a href="https://www.synesthesia.co.uk/wikka/BenefitReviews">Benefit Reviews&lt;/a> are important.&lt;/p></description></item><item><title>Quality Management Strategies – 1</title><link>https://www.synesthesia.co.uk/2007/09/25/quality-management-strategies-1/</link><pubDate>Tue, 25 Sep 2007 10:48:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/09/25/quality-management-strategies-1/</guid><description>&lt;p>I’ve been thinking about how to put together a &lt;a href="https://synesthesia.co.uk/msp/wiki/QualityManagementStrategy" target="_blank" rel="noopener">Quality Management Strategy&lt;/a> for the programme I am shaping. Question is, where to start…&lt;/p>
&lt;p>The MSP Manual says:&lt;/p>
&lt;blockquote>
&lt;p>[…] used to define and establish the activities for managing quality across the programme&lt;/p>
&lt;/blockquote>
&lt;p dir="ltr">
which sounds tautologous to me.
&lt;/p>
&lt;p dir="ltr">
In Chapter 9 on Quality Management, a bit more detail appears:
&lt;/p>
&lt;blockquote>
&lt;p dir="ltr">
The Quality Management Strategy defines &lt;strong>what&lt;/strong> criteria will be used to assess quality, &lt;strong>what&lt;/strong> quality activities will be incorporated into the management and delivery of the programme, &lt;strong>who&lt;/strong> will be responsible for carrying out these activities, and &lt;strong>how&lt;/strong> the programme will meet required audit and organisational standards for quality assurance and quality control.
&lt;/p>
&lt;/blockquote>
&lt;p style="margin-right: 0px;" dir="ltr">
In Appendix B there is more specific guidance on the contents:
&lt;/p>
&lt;blockquote>
&lt;p style="margin-right: 0px;" dir="ltr">
Description of the quality assurance, review and control processes for the programme, covering:
&lt;/p>
&lt;ul dir="ltr">
&lt;li>
&lt;div style="margin-right: 0px;">
What will be subject to quality assurance, review and control, and the quality criteria to be applied.
&lt;/div>
&lt;/li>
&lt;li>
&lt;div style="margin-right: 0px;">
Who will undertake quality assurance, review and control activities
&lt;/div>
&lt;/li>
&lt;li>
&lt;div style="margin-right: 0px;">
What will trigger those activities (time-based, event-based or associated with risk occurrence)
&lt;/div>
&lt;/li>
&lt;li>
&lt;div style="margin-right: 0px;">
What actions will be taken depending on the results of quality checks
&lt;/div>
&lt;/li>
&lt;li>
&lt;div style="margin-right: 0px;">
Configuration management and change control procedures
&lt;/div>
&lt;/li>
&lt;li>
&lt;div style="margin-right: 0px;">
Defined responsibilities for quality management
&lt;/div>
&lt;/li>
&lt;li>
&lt;div style="margin-right: 0px;">
Information requirements to support quality management
&lt;/div>
&lt;/li>
&lt;li>
&lt;div style="margin-right: 0px;">
Procedures for use of support tools for quality management activities e.g. change control software
&lt;/div>
&lt;/li>
&lt;li>
&lt;div style="margin-right: 0px;">
Resource requirements for quality management
&lt;/div>
&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p style="margin-right: 0px;">
All of which will be very useful to describe the headings, but which doesn’t ask the fundamental question – why are we doing this? A later post…
&lt;/p></description></item><item><title>Gym Reflections part 3</title><link>https://www.synesthesia.co.uk/2007/09/19/gym-reflections-part-3/</link><pubDate>Wed, 19 Sep 2007 13:11:17 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/09/19/gym-reflections-part-3/</guid><description>&lt;p>I’m still going to the gym, although as I &lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/11/trying-a-gym-class-bodypump/" target="_blank" rel="noopener">&lt;/a>[cref 1025 mentioned] I’m giving organised classes a miss for a while.&lt;/p>
&lt;p>I’ve been a few times since my last post, and wanted to capture some of the things I’ve (re-)discovered.&lt;/p>
&lt;ol class="decimal">
&lt;li>
It’s much easier to focus on aerobic training if you use a &lt;a href="https://www.argos.co.uk/static/Product/partNumber/3028223.htm">Heart Rate Monitor&lt;/a>
&lt;/li>
&lt;li>
When the gym is busy, it’s surprising how long it takes to move between exercises, especially if you are using &lt;a href="https://en.wikipedia.org/wiki/Weights">free weights&lt;/a> and need to set the weight on each exercise.
&lt;/li>
&lt;li>
Making a &lt;a href="https://www.synesthesia.co.uk/wikka/ExerciseLog">template&lt;/a> with the most common exercises in your routine, and using it to record a workout helps focus and motivation.
&lt;/li>
&lt;/ol></description></item><item><title>No more Sources page</title><link>https://www.synesthesia.co.uk/2007/09/14/no-more-sources-page/</link><pubDate>Fri, 14 Sep 2007 12:51:44 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/09/14/no-more-sources-page/</guid><description>&lt;p>I’ve decided to retire the “Sources” page I put in place when I moved my blogroll off the front page.&lt;/p>
&lt;p>Although the page was dynamically updated by my then feed-reader (&lt;a href="https://www.bloglines.com/" target="_blank" rel="noopener">Bloglines&lt;/a>), my account on there has lain dormant for some time, so the page has long-since ceased to be a current indication of the sources I refer to.&lt;/p>
&lt;p>My &lt;a href="https://www.awasu.com/" target="_blank" rel="noopener">feed-reader of choice&lt;/a>, (or perhaps “information aggregator” would be a better name) is &lt;a href="https://www.awasu.com/" target="_blank" rel="noopener">Awasu&lt;/a>, and although it would be fairly easy to export an OPML of my current reading and upload it somewhere on this blog, I’m not sure that it is worth the effort.&lt;/p>
&lt;p>I’m well aware that the chances of anyone getting an ego-hit from being listed on my blogroll are pretty small. Equally I’m not convinced that there is much value added by publishing a list of the feeds I read, and to automatically publish anything else is a lot of work.&lt;/p>
&lt;p>I’ll continue to name-check sources when I write a post, and through the use of &lt;a href="https://aqualung.typepad.com/aqualung/2007/02/a_reputation_ec.html" target="_blank" rel="noopener">via:&lt;/a> tags in &lt;a href="https://del.icio.us/synesthesia" target="_blank" rel="noopener">del.icio.us&lt;/a> postings.&lt;/p>
&lt;p>Serendipitously, I notice that a &lt;a href="https://blogs.law.harvard.edu/doc/" target="_blank" rel="noopener">much-more-famous-than-I blogger&lt;/a> has been having &lt;a href="https://blogs.law.harvard.edu/doc/2007/09/13/more-blog-less-rolling/" target="_blank" rel="noopener">similar thoughts&lt;/a>…&lt;/p></description></item><item><title>MSP07 Launched</title><link>https://www.synesthesia.co.uk/2007/09/14/msp07-launched/</link><pubDate>Fri, 14 Sep 2007 09:02:10 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/09/14/msp07-launched/</guid><description>&lt;p>The &lt;a href="https://www.ogc.gov.uk/About_OGC_news_7500.asp" target="_blank" rel="noopener">new version of MSP has been launched&lt;/a>, amongst the authors are my ex-colleague &lt;a href="https://www.aspireeurope.com/msp_prince2/" target="_blank" rel="noopener">Rod Sowden&lt;/a>, and &lt;a href="https://pearcemayfield.typepad.com/patrick_mayfield/2007/09/the-new-edition.html" target="_blank" rel="noopener">Patrick Mayfield&lt;/a>, who I haven’t met, but whose training company seem to do &lt;a href="https://www.synesthesia.co.uk/msp/2006/12/13/i-passed/" target="_blank" rel="noopener">good work&lt;/a>!&lt;/p>
&lt;p>Now to get on a refresh course…&lt;/p></description></item><item><title>Trying a gym class – BodyPump</title><link>https://www.synesthesia.co.uk/2007/09/11/trying-a-gym-class-bodypump/</link><pubDate>Tue, 11 Sep 2007 12:22:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/09/11/trying-a-gym-class-bodypump/</guid><description>&lt;p>As &lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/09/09/new-gym-new-start/" target="_blank" rel="noopener">I mentioned on Saturday&lt;/a>, I’m looking for ways to get more engaged with my fitness activities, and as my new gym offers a range of classes within the monthly membership fee, I thought I’d try out a couple.&lt;/p>
&lt;p>First exploration was last night, when I tried a class called &lt;a href="https://www.lesmills.com/global/en/members/bodypump/bodypump-group-fitness-program.aspx" target="_blank" rel="noopener">BodyPump™&lt;/a>. This is described in the gym brochure as &lt;cite>A non impact resistance class, using barbells and adjustable weights. This class works all major muscles using a variety of exercises including squats, lifts and curls.&lt;/cite>, which sounded like the sort of thing I wanted…&lt;/p>
&lt;p>It seems that many of the classes offered in gyms are licensed products, so 5 seconds in Google allowed me to find the website of the company who created this class. There’s an extensive &lt;a href="https://www.lesmills.com/global/en/members/bodypump/a-typical-class.aspx" target="_blank" rel="noopener">description&lt;/a> of what’s involved, and some videos too, so you know what to expect.&lt;/p>
&lt;p>The last time I was involved in any king of group fitness activity (about seven years ago) it looked like &lt;a href="https://www.britmilfit.com/" target="_blank" rel="noopener">this&lt;/a> – no air-conditioning, no trademarks on the workouts, as far as I could tell no-one was ever wearing lycra, and the instructors definitely didn’t have fake tans!&lt;/p>
&lt;p>I felt a little self-conscious lining up for last night’s event, especially when the instructor and most of the other participants appeared to have fake tan and lycra in sufficient quantities to open a shop… Also notable that even though I’d picked what sounded like one of the more “gender-balanced” classes, there were only two of us males to a dozen females…&lt;/p>
&lt;p>&lt;span style="text-decoration: underline;">What did we do?&lt;/span>&lt;/p>
&lt;p>See the &lt;a href="https://www.lesmills.com/global/en/members/bodypump/a-typical-class.aspx" target="_blank" rel="noopener">website&lt;/a> – says it all.&lt;/p>
&lt;p>&lt;span style="text-decoration: underline;">How it felt&lt;/span>&lt;/p>
&lt;p>It’s hard work to follow an instructor who is calling above a music track without PA and in accented English!&lt;/p>
&lt;p>Some exercises were relatively easy, whereas others did push to localised failure of the relevant muscle groups. Presumably with practice I would learn better what weight to use for each track.&lt;/p>
&lt;p>Quite a lot of lactic acid build up.&lt;/p>
&lt;p>Certainly got sweaty, but didn’t get out-of-breath at any point, so probably little or no aerobic benefit.&lt;/p>
&lt;p>At the time I didn’t think there was much training benefit, but see the notes below.&lt;/p>
&lt;p>&lt;span style="text-decoration: underline;">What I liked&lt;/span>&lt;/p>
&lt;p>It was something different, and exercised muscle groups and movements which I haven’t exercised in other gym contexts.&lt;/p>
&lt;p>&lt;span style="text-decoration: underline;">What I didn’t like&lt;/span>&lt;/p>
&lt;p>I felt that my form in doing the exercises was compromised by trying to follow the instructor, and synchronise moves with the calls and the music track – I’d rather fit the moves to my own rhythm.&lt;/p>
&lt;p>After about 30 seconds of track 7 (Lunges) I stopped because I could feel pain from my knees. The instructor’s reaction when she saw me standing out was to encourage me to continue!&lt;/p>
&lt;p>&lt;span style="text-decoration: underline;">Training notes&lt;/span>&lt;/p>
&lt;p>Next day I can feel some slight post-exercise ache and fatigue in biceps, triceps, quadriceps, abs and back (especially lower), which suggests there has been some training effect to these areas. Given the high reps / low weights nature of the exercise I suspect that the long term effects would be in the areas of tone and muscular endurance.&lt;/p>
&lt;p>More worryingly, I have got some knee pain when I walk upstairs, which confirms my decision to temporarily step out during track 7 (Lunges).&lt;/p>
&lt;p>Clearly my knees are still an area of vulnerability – I need to target exercises to strengthen the muscles which stabilise the joint, and lay off anything involving high impact or deep knee flexions for the time being.&lt;/p>
&lt;p>&lt;span style="text-decoration: underline;">Will I do this class again?&lt;/span>&lt;/p>
&lt;p>Probably not in the short term – will see how my knees feel after another month of training.&lt;/p></description></item><item><title>New Gym, New Start</title><link>https://www.synesthesia.co.uk/2007/09/09/new-gym-new-start/</link><pubDate>Sun, 09 Sep 2007 18:00:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/09/09/new-gym-new-start/</guid><description>&lt;p>Over the years I’ve been an intermittent visitor to the halls of fitness.&lt;/p>
&lt;p>From a peak in my mid-twenties when I did a lot of cycling (including a season of pretending to race!) it’s been something of a long-term decline over the last two decades, punctuated by occasional interludes of pushing back up the hill for a while.&lt;/p>
&lt;p>Earlier this year, incentivised by our impending wedding, my partner and I threw ourselves into a six-week gym intensive, complete with personal trainer assistance. It was enough to make a tangible, and visible, difference, and more importantly to re-assure us that we could still do something effective for our fitness.&lt;/p>
&lt;p>Enough so that it was high on our agenda to find a new gym when we recently moved house. Today (Saturday) was my first visit to the new gym – a relatively low-key workout because of that “getting back after a month away” feeling, combined with a lack of familiarity with the layout and the specific machines.&lt;/p>
&lt;p>The gym seems much better equipped than the one we were using previously, and I’m keen to take advantage of it and make the most of this opportunity. Conscious that without the ready-made goal and deadline we had pre-wedding it will be too easy to drift, I can see that this time I need to make an effort to put some structure around my fitness activities.&lt;/p>
&lt;p>Taking a lead from &lt;a href="https://davidseah.com/archives/2007/09/04/mysteries-of-the-gym-part-v-two-months-later/" target="_blank" rel="noopener">David Seah&lt;/a> (and probably a million or so other bloggers) I’m going to explore how I can use this space as a way of encouraging myself through reflection and goal-setting.&lt;/p></description></item><item><title>Site changes – Wikis</title><link>https://www.synesthesia.co.uk/2007/08/10/site-changes-wikis/</link><pubDate>Fri, 10 Aug 2007 14:18:31 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/08/10/site-changes-wikis/</guid><description>&lt;p>I’ve merged the two wikis into a new, single &lt;a href="https://www.synesthesia.co.uk/wikka/">wiki&lt;/a>, and changed technology to &lt;a href="https://wikkawiki.org/HomePage" target="_blank" rel="noopener">WikkaWiki&lt;/a>.&lt;/p>
&lt;p>.htaccess changes should take care of any old links – please let me know of any broken ones by commenting on this post.&lt;/p></description></item><item><title>Extracting Route Instructions from Google Maps</title><link>https://www.synesthesia.co.uk/2007/04/23/extracting-route-instructions-from-google-maps/</link><pubDate>Mon, 23 Apr 2007 06:06:31 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/04/23/extracting-route-instructions-from-google-maps/</guid><description>&lt;p>This mini-project came about because I had a need to give people route instructions for a party.&lt;/p>
&lt;p>It’s easy to use &lt;a href="https://maps.google.com/" title="Google Maps" target="_blank" rel="noopener">Google Maps&lt;/a> to set up a customised route by adding placemarks at navigationally-significant locations (see &lt;a href="https://maps.google.com/maps/ms?ie=UTF8&amp;amp;hl=en&amp;amp;z=16&amp;amp;om=1&amp;amp;msid=114870744536353390965.00000111ea7e65a3111ef&amp;amp;msa=0" title="Example Google Map" target="_blank" rel="noopener">this example&lt;/a>), and you can easily add instructions (including pictures) at each point (try clicking on one of the “map pins”).&lt;/p>
&lt;p>However in the real world, there is nothing to beat having a list of instructions that each person can print out. I didn’t want to re-type everything into a separate document, so created a &lt;a href="https://www.synesthesia.co.uk/data/sp2tm.php" title="Example output page" target="_blank" rel="noopener">web page&lt;/a> to extract the key information from Google Maps and present it as a &lt;a href="https://www.synesthesia.co.uk/data/sp2tm.php" title="Example output page" target="_blank" rel="noopener">tabular list&lt;/a>. Editing the data in Google Maps is immediately reflected in the web page.&lt;/p>
&lt;p>There are three key components which are described in more detail (including source listings) on the associated &lt;a href="https://www.synesthesia.co.uk/blog/wiki/Extracting&amp;#43;Route&amp;#43;Instructions&amp;#43;from&amp;#43;Google&amp;#43;Map" target="_blank" rel="noopener">wiki page&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>The &lt;a href="https://earth.google.com/kml/kml_tags_21.html" title="KML reference" target="_blank" rel="noopener">KML&lt;/a> representation of the map&lt;/li>
&lt;li>A PHP script to pull down the relevant KML file, manipulate it by application of an XSL stylesheet, and create the resulting web page&lt;/li>
&lt;li>The XSL stylesheet&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Assumptions and Limitations&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Assumes that the order in which waypoints are added to the Google Map is the correct navigational order. (this could be a real pain if you later needed to add an intermediate point)&lt;/li>
&lt;li>URL transform to get KML file is hard-coded&lt;/li>
&lt;li>Assumes that the only placemarks on the map are navigational waypoints&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>References&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>A lot of the insight on manipulating KML came from &lt;a href="https://cse-mjmcl.cse.bris.ac.uk/blog/2005/07/26/1122414882406.html" title="Mark McClaren&amp;#39;s Weblog" target="_blank" rel="noopener">Mark Mclaren’s Weblog&lt;/a>&lt;/li>
&lt;li>The PHP code to manipulate the XML was heavily lifted from the &lt;a href="https://devzone.zend.com/node/view/id/1302" title="Zend Developer Zone" target="_blank" rel="noopener">Zend Developer Zone&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Test of Mindmanager Viewer plugin</title><link>https://www.synesthesia.co.uk/2007/03/29/test-of-mindmanager-viewer-plugin/</link><pubDate>Thu, 29 Mar 2007 22:51:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/03/29/test-of-mindmanager-viewer-plugin/</guid><description>&lt;p>Testing the ActiveX plugin for &lt;a href="https://www.mindjet.com/us/beta/embedded_map.php?s=9" target="_blank" rel="noopener">viewing Mindjet Mindmanager files in browser&lt;/a>. This won’t work in Firefox unless the &lt;a href="https://ietab.mozdev.org/" target="_blank" rel="noopener">IE Tab&lt;/a> add-in is loaded.&lt;/p>
&lt;p>If you are using IE and have the &lt;a href="https://www.mindjet.com/us/beta/embedded_map.php?s=9" target="_blank" rel="noopener">viewer&lt;/a> installed you should see a map here:&lt;/p>
&lt;!-- Mindjet Map Viewer Control Start -->
&lt;!-- Mindjet Map Viewer Control End -->
&lt;p>Although I would love to be able to post interactive maps on my blog, I’m really turned off by the ActiveX, IE-only nature of this approach. Yes, there is a &lt;a href="https://ietab.mozdev.org/" target="_blank" rel="noopener">workaround&lt;/a> available for Firefox, but as that involves embedding an instance of IE in a Firefox tab, it’s no good for people who don’t like to even run IE on their machines. (or who don’t run on Windows)&lt;/p>
&lt;p>Perhaps Mindjet should take a hint from the &lt;a href="https://bubbl.us/" target="_blank" rel="noopener">bubbl.us&lt;/a> team (see &lt;a href="https://www.synesthesia.co.uk/blog/archives/2007/03/29/testing-bubblus-plugin-for-wordpress/" target="_blank" rel="noopener">previous post&lt;/a>) and use a combination of Ajax and Flash for their viewer?&lt;/p>
&lt;p>Thanks to &lt;a href="https://www.activityowner.com/" target="_blank" rel="noopener">ActivityOwner&lt;/a> for &lt;a href="https://www.activityowner.com/2007/03/17/using-the-mindmanager-activex-map-viewer-in-firefox/" target="_blank" rel="noopener">pointing out&lt;/a> how to use &lt;a href="https://ietab.mozdev.org/" target="_blank" rel="noopener">IE Tab&lt;/a> with this plugin.&lt;/p></description></item><item><title>Testing bubbl.us plugin for WordPress</title><link>https://www.synesthesia.co.uk/2007/03/29/testing-bubblus-plugin-for-wordpress/</link><pubDate>Thu, 29 Mar 2007 22:25:14 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/03/29/testing-bubblus-plugin-for-wordpress/</guid><description>&lt;p>See &lt;a href="https://blog.bubbl.us/2007/03/14/wordpress-plugin-bubblus/" target="_blank" rel="noopener">this post&lt;/a>&lt;/p>
&lt;p>[bubbl]https://bubbl.us/view.php?sid=11941&amp;amp;pw=yagQrcq8SV.IUMTAwTVFxUFNnckx6bw; 500; 300; My first test map; 50[/bubbl]&lt;/p></description></item><item><title>Web-based Mindmapping</title><link>https://www.synesthesia.co.uk/2007/03/28/web-based-mindmapping/</link><pubDate>Wed, 28 Mar 2007 06:45:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/03/28/web-based-mindmapping/</guid><description>&lt;p>Until now, mind-mapping has been one of the key aspects of information-management that has not been well-supported on the web.&lt;/p>
&lt;p>Granted, &lt;a href="about:freemind.sourceforge.net/wiki/index.php/Main_Page">Freemind&lt;/a> has been platform-neutral since the beginning (through its use of Java), and somewhat-integrated with &lt;a href="https://wikkawiki.org/HomePage" target="_blank" rel="noopener">WikkaWiki&lt;/a>, but this still very much relies on an individual providing their own server-based architecture. Other tools such as &lt;a href="https://writer.zoho.com/" target="_blank" rel="noopener">word-processing&lt;/a>, &lt;a href="https://www.google.com/calendar" target="_blank" rel="noopener">calendaring&lt;/a> and &lt;a href="https://docs.google.com/" target="_blank" rel="noopener">spreadsheets&lt;/a> have had web-based incarnations for a while, but my frustration has been the lack of a truly web-enabled mind-mapping tool: on the desktop I now use &lt;a href="https://www.mindjet.com/" target="_blank" rel="noopener">MindManager&lt;/a> as my core tool for organising and creating information, dropping out to other applications only when a specific treatment of information is required.&lt;/p>
&lt;p>At last, companies are rising to the opportunity of this gap in the market – the two best known being &lt;a href="https://www.mindomo.com/" target="_blank" rel="noopener">Mindomo&lt;/a> and &lt;a href="https://www.mindmeister.com/" target="_blank" rel="noopener">MindMeister&lt;/a> (still in private beta – subscribe to newsletter to get invitation). &lt;a href="https://mindmapping.typepad.com/" target="_blank" rel="noopener">Chuck Frey&lt;/a> has just published &lt;a href="https://mindmapping.typepad.com/the_mind_mapping_software/2007/03/comparison_of_w.html" target="_blank" rel="noopener">a first feature-comparison&lt;/a> of these plus &lt;a href="https://bubbl.us/" target="_blank" rel="noopener">Bubbl.us&lt;/a> and &lt;a href="https://thinkature.com/" target="_blank" rel="noopener">Thinkature&lt;/a> (although as Chuck points out, the latter two are not really mind-mapping in the traditional sense).&lt;/p>
&lt;p>Chuck’s initial conclusions show that the two main products are taking different approaches to development – &lt;a href="https://www.mindomo.com/" target="_blank" rel="noopener">Mindomo&lt;/a> seems to be focusing on UI features whereas &lt;a href="https://www.mindmeister.com/" target="_blank" rel="noopener">MindMeister&lt;/a> is providing a basic feature set coupled with good ability to import and export from/to other applications and websites. The collaboration model seems to be different too, with MindMeister offering real–time shared editing.&lt;/p>
&lt;p>It will be interesting to see what happens to these products – my guess at the moment is that they will appeal to slightly different groups for whom the differing feature sets create a value distinction. Extrapolating from the sorts of things that people do already, both on- and off-line, I think there are two main sorts of workflows for which these online maps wil be suited:&lt;/p>
&lt;ol>
&lt;li>Long-term collaboration and knowledge sharing amongst a group, where the Mindmap becomes the primary repository; and&lt;/li>
&lt;li>Dynamic brainstorming, possibly primed with information prepared offline, and where the results of the collaboration are taken away for further work.&lt;/li>
&lt;/ol>
&lt;p>On the face of it, although both tools could do either, Mindomo seems to be heading in a direction best-suited to approach 1, whilst MindMeister looks to be a good fit for approach 2 as well. Obviously these workflows are not decoupled, rather they are places on a continuum, but it will be interesting to see which gains most traction first.&lt;/p>
&lt;p>One of my main concerns about using an online service such as these is the stability and security of the offering – none of us wants to invest time in creating information only to find that the platform we have used for storing and sharing it has evaporated overnight. (&lt;a href="https://duffill.blogs.com/beyond_crayons/" target="_blank" rel="noopener">Nick Duffill&lt;/a> makes &lt;a href="https://duffill.blogs.com/beyond_crayons/2007/03/last_call_for_e.html" target="_blank" rel="noopener">a related point&lt;/a>) For that reason I suspect that workflows nearer to (2) will be the better initial match for these online mindmapping tools, which in theory should give MindMeister an advantage. Let’s see!&lt;/p>
&lt;p>&lt;ins>&lt;/ins>&lt;/p>
&lt;p>&lt;ins>&lt;strong>Update&lt;/strong>&lt;/ins>&lt;/p>
&lt;p>&lt;ins>&lt;a href="https://eric-blue.com/blog/">Eric Blue&lt;/a> has issued a call for action for a &lt;a href="https://eric-blue.com/blog/2007/03/the_need_for_a_common_mindmap_file_format.html">common mind-mapping file format&lt;/a>, and &lt;a href="https://www.kayuda.com/">Kayuda&lt;/a> is another online product that looks worthy of investigation…&lt;/ins>&lt;/p></description></item><item><title>Getting Things Done with Mindmanager, ResultsManager, GyroQ, and now MindReader</title><link>https://www.synesthesia.co.uk/2007/03/26/getting-things-done-with-mindmanager-resultsmanager-gyroq-and-now-mindreader/</link><pubDate>Mon, 26 Mar 2007 12:04:06 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/03/26/getting-things-done-with-mindmanager-resultsmanager-gyroq-and-now-mindreader/</guid><description>&lt;p>I’ve used &lt;a href="https://www.mindjet.com/us/products/mindmanager_pro6/index.php" target="_blank" rel="noopener">Mindmanager&lt;/a> as my core information-management tool at work for several years. For the last few months I have also been using it as the underlying support for my “GTD-like” personal productivity processes, augmented with the excellent &lt;a href="https://www.gyronix.com/resultmanager.php" target="_blank" rel="noopener">ResultsManager&lt;/a> add-in from &lt;a href="https://www.gyronix.com/" target="_blank" rel="noopener">Gyronix&lt;/a>.&lt;/p>
&lt;p>ResultsManager is very powerful, I particularly like the way it allows me to have a mindmap per project, yet pull all of my “Next Actions” into a single Dashboard mind map. However to exploit this power requires the capture of several pieces of information for each action item.&lt;/p>
&lt;p>This is where another Gyronix product comes in – &lt;a href="https://www.gyronix.com/gyroq/index.php" target="_blank" rel="noopener">GyroQ&lt;/a> – this provides a hot-keyable place to capture odd thoughts without breaking flow, queueing them for later addition to a set of ResultsManager mindmaps.&lt;/p>
&lt;p>One of the great things about GyroQ is that the tag-based interface allows end-users (with the approprioate developer licence) to extend the functionality of the tool.&lt;/p>
&lt;p>The most active contributor of new tags and macros is the anonymous &lt;a href="https://www.activityowner.com/" target="_blank" rel="noopener">ActivityOwner&lt;/a>, who is both active on the &lt;a href="https://www.gyronix.com/forums.php" target="_blank" rel="noopener">Gyronix support forums&lt;/a> and runs an excellent website packed with hints, tips, and example &lt;a href="https://www.activityowner.com/gyroq-sequence-library/" target="_blank" rel="noopener">GyroQ tags&lt;/a>, &lt;a href="https://www.activityowner.com/library-mindmanager-macros/" target="_blank" rel="noopener">MindManager macros&lt;/a>, and &lt;a href="https://www.activityowner.com/resultsmanager-dashboard-library/" target="_blank" rel="noopener">ResultsManager dashboards&lt;/a>.&lt;/p>
&lt;p>Latest offering from ActivityOwner that I’ve grabbed and put into service is a set of tags and macros entitled &lt;a href="https://wiki.activityowner.com/index.php?title=MindReader" target="_blank" rel="noopener">MindReader&lt;/a>. This extends the functionality of GyroQ to allow you to enter natural-language phrases such as “Email Bob about project X tomorrow” and have these parsed to create ResultsManager activities with key information fields pre-filled – potentially a huge timesaver.&lt;/p>
&lt;p>I run a mixed economy of MindManager versions – X5 at work, 6 at home. MindReader is designed to work with version 6, and I discovered one version-dependency in the code. I’ve posted a fix to &lt;a href="https://wiki.activityowner.com/index.php?title=Making_MindReader_work_on_MM5" target="_blank" rel="noopener">make MindReader work with MindManager 5&lt;/a> on the &lt;a href="https://wiki.activityowner.com/index.php?title=Main_Page" target="_blank" rel="noopener">ActivityOwner wiki&lt;/a> &lt;a href="https://wiki.activityowner.com/index.php?title=Making_MindReader_work_on_MM5" target="_blank" rel="noopener">here&lt;/a>.&lt;/p></description></item><item><title>22 Questions</title><link>https://www.synesthesia.co.uk/2007/01/29/22-questions/</link><pubDate>Mon, 29 Jan 2007 16:39:46 +0000</pubDate><guid>https://www.synesthesia.co.uk/2007/01/29/22-questions/</guid><description>&lt;p>The UK &lt;a href="https://www.dfes.gov.uk/" target="_blank" rel="noopener">Department for Education and Skills&lt;/a> are major users of Programme and Project Management. To aid programme startup, they have an approach known as &lt;a href="https://www.dfes.gov.uk/ppm/index.cfm?fuseaction=content.view&amp;amp;CategoryID=29&amp;amp;ContentID=102&amp;amp;killcache=1&amp;amp;SiteID=1" target="_blank" rel="noopener">The 22 Questions&lt;/a>.&lt;/p>
&lt;p>As an aid to meeting facilitation, [here][3] are the 22 questions as a MindManager [Mindmap][4].&lt;/p>
&lt;p>[&lt;img class="aligncenter size-full wp-image-1614" title="22 questions" src="https://www.synesthesia.co.uk/blog/wp/uploads/2009/12/22-questions.png" alt="22 questions" width="300" height="230" />][5][&lt;/p>
&lt;p>][5]&lt;/p>
&lt;p>[3]: &lt;a href="https://www.synesthesia.co.uk/msp/wp/uploads/22" target="_blank" rel="noopener">https://www.synesthesia.co.uk/msp/wp/uploads/22&lt;/a> Questions.mmap
[4]: &lt;a href="https://www.synesthesia.co.uk/blog/wp/uploads/2009/12/22-Questions.mmap" target="_blank" rel="noopener">https://www.synesthesia.co.uk/blog/wp/uploads/2009/12/22-Questions.mmap&lt;/a>
[5]: &lt;a href="https://www.synesthesia.co.uk/blog/wp/uploads/2009/12/22-questions.png" target="_blank" rel="noopener">https://www.synesthesia.co.uk/blog/wp/uploads/2009/12/22-questions.png&lt;/a>&lt;/p></description></item><item><title>I passed!</title><link>https://www.synesthesia.co.uk/2006/12/13/i-passed/</link><pubDate>Wed, 13 Dec 2006 19:44:41 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/12/13/i-passed/</guid><description>&lt;p>I’ve just heard from Pearce Mayfield that I have passed the &lt;a href="https://www.pearcemayfield.com/msp/index.html" target="_blank" rel="noopener">Managing Successful Programmes&lt;/a> practitioner qualification -although the result isn’t on the APMG/OGC &lt;a href="https://www.programmes.org/web/site/home/Home.asp" target="_blank" rel="noopener">site&lt;/a> yet.&lt;/p></description></item><item><title>MoD approach to Benefits Realisation Management</title><link>https://www.synesthesia.co.uk/2006/10/17/mod-approach-to-benefits-realisation-management/</link><pubDate>Tue, 17 Oct 2006 11:41:03 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/10/17/mod-approach-to-benefits-realisation-management/</guid><description>&lt;p>Relocated from MSP blog at &lt;a href="https://www.synesthesia.co.uk/msp/2006/10/17/mod-approach-to-benefits-realisation-management/" target="_blank" rel="noopener">https://www.synesthesia.co.uk/msp/2006/10/17/mod-approach-to-benefits-realisation-management/&lt;/a>&lt;/p>
&lt;p>Update 1: &lt;ins datetime="2008-05-18T10:38:20+00:00">As Nick Spargo points out in the comments these links are now dead. If anyone can point to the modern equivalent, that would be appreciated.&lt;/ins>&lt;/p>
&lt;p>Update 2: &lt;ins datetime="2009-11-27T08:47:48+00:00">Matthew Davis points to &lt;a href="https://www.aof.mod.uk/">&lt;a href="https://www.aof.mod.uk/" target="_blank" rel="noopener">https://www.aof.mod.uk/&lt;/a>&lt;/a>, but the specific link he posts is now dead.&lt;/ins>&lt;/p>
&lt;p>A series of documents from the UK &lt;a href="https://www.ams.mod.uk/ams/content/docs/saweb/smartacq.htm" target="_blank" rel="noopener">Directorate for Defence Acquisition&lt;/a> about Benefits Realisation Management&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.ams.mod.uk/ams/content/docs/brm/brmguide.doc" target="_blank" rel="noopener">BENEFITS REALISATION MANAGEMENT – “All you ever wanted to know but were afraid to ask”&lt;/a> [Word]&lt;/li>
&lt;li>&lt;a href="https://www.ams.mod.uk/ams/content/docs/brm/strategy.doc" target="_blank" rel="noopener">Example benefits strategy&lt;/a> [Word]&lt;/li>
&lt;li>&lt;a href="https://www.ams.mod.uk/ams/content/docs/brm/bdn.ppt" target="_blank" rel="noopener">Example of a populated benefits model&lt;/a> [Powerpoint]&lt;/li>
&lt;li>&lt;a href="https://www.ams.mod.uk/ams/content/docs/brm/brief.ppt" target="_blank" rel="noopener">Example of an initial benefits brief&lt;/a> [Powerpoint]&lt;/li>
&lt;li>&lt;a href="https://www.ams.mod.uk/ams/content/docs/brm/tools1.xls" target="_blank" rel="noopener">Example of analysis tools&lt;/a> [Excel]&lt;/li>
&lt;li>&lt;a href="https://www.ams.mod.uk/ams/content/docs/brm/tools2.xls" target="_blank" rel="noopener">Example of a benefits ranking model&lt;/a> [Excel]&lt;/li>
&lt;li>&lt;a href="https://www.ams.mod.uk/ams/content/docs/brm/profile.doc" target="_blank" rel="noopener">Example of a Benefits Profile&lt;/a> [Word]&lt;/li>
&lt;li>&lt;a href="https://www.ams.mod.uk/ams/content/docs/brm/measowner.ppt" target="_blank" rel="noopener">Example “Measures and Owners” brief&lt;/a> [Powerpoint]&lt;/li>
&lt;li>&lt;a href="https://www.ams.mod.uk/ams/content/docs/brm/motable.doc" target="_blank" rel="noopener">Template for capturing measures and owners&lt;/a> [Word]&lt;/li>
&lt;li>&lt;a href="https://www.ams.mod.uk/ams/content/docs/brm/tracking.doc" target="_blank" rel="noopener">Simple Benefits Tracking Document&lt;/a> [Word]&lt;/li>
&lt;/ul>
&lt;p>&lt;span style="text-decoration: underline;">Summary of Comments made on this post in original location&lt;/span>&lt;/p>
&lt;ol class="decimal">
&lt;li>
Nick Spargo (30/04/2008) pointed out that these links had expired.
&lt;/li>
&lt;li>
Matthew Davis said (05/05/2009) &amp;#8220;I think that you will find that the ams website has been superceded by the acquisiton operating framework and that it will be some time before the benefits work is republished as per this link:&lt;a style="outline-width: 0px; outline-style: initial; outline-color: initial; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: #21759b; word-wrap: break-word; text-decoration: none; background-position: initial initial; padding: 0px; margin: 0px; border: 0px initial initial;" rel="nofollow" href="https://www.aof.mod.uk/aofcontent/tactical/ppm/content/whathappen_ppm.htm?zoom_highlight=benefits">https://www.aof.mod.uk/aofcontent/tactical/ppm/content/whathappen_ppm.htm?zoom_highlight=benefits&lt;/a>&amp;#8220;
&lt;/li>
&lt;/ol></description></item><item><title>Agile Programme Management</title><link>https://www.synesthesia.co.uk/2006/10/16/agile-programme-management/</link><pubDate>Mon, 16 Oct 2006 12:28:14 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/10/16/agile-programme-management/</guid><description>&lt;p>Via &lt;a href="https://bradapp.blogspot.com/" target="_blank" rel="noopener">Brad Appleton&lt;/a>‘s excellent post of links to &lt;a href="https://bradapp.blogspot.com/2006/09/scaling-agility-agile-program.html" target="_blank" rel="noopener">Agile Programme Management&lt;/a> resources, a paper on &lt;a href="https://ieeexplore.ieee.org/search/wrapper.jsp?arnumber=1438327" target="_blank" rel="noopener">Combining Agile Methods with Stage-Gate Project Management.&lt;/a>&lt;/p>
&lt;p>Based on studies in three engineering companies, the conclusion is that are benefits from both the management and engineering perspective.&lt;/p>
&lt;p>&lt;strong>Good things:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Agile method add microplanning and day-to-day control to the stage-gate methods&lt;/li>
&lt;li>Engineering teams felt more in control of their work&lt;/li>
&lt;li>Stage-gate approach improves ability of agile methods to interact with other engineering teams, other functions (such as marketing) and senior management.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Things to watch out for:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Need to manage expectations&lt;/li>
&lt;li>Challenge on large projects of finding a “customer representative” as required by Agile methods&lt;/li>
&lt;/ul></description></item><item><title>Managing Successful Programmes Course</title><link>https://www.synesthesia.co.uk/2006/10/16/msp/</link><pubDate>Mon, 16 Oct 2006 06:11:37 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/10/16/msp/</guid><description>&lt;p>I spent last week on the &lt;a href="https://www.pearcemayfield.com/msp/index.html" target="_blank" rel="noopener">Managing Successful Programmes course&lt;/a>.&lt;/p>
&lt;p>The trainers were good, the group size was good (9 of us), and the other delegates were an interesting and friendly bunch from a range of industries. Between us we covered print, broadcast and online media, telecomms, manufacturing, software, and a couple of flavours of consultancy.&lt;/p>
&lt;p>I’d recommend this course to anyone who was interested in &lt;a href="https://www.ogc.gov.uk/delivery_lifecycle_overview_of_managing_successful_programmes_msp_.asp" target="_blank" rel="noopener">MSP&lt;/a> – the training is well-adapted for adult learning, and has a clear emphasis on providing the skills to get through the exams. It is however an intensive week – in particular on the first three evenings there was two to three hours of homework each night. The homework is framed as “optional”, but as a large part of it is practice in answering exam questions, I would imagine that it would be hard to get through the exams without doing the homework.&lt;/p>
&lt;p>I managed to pass the Foundation exam without much difficulty, but I won’t know the result of the Intermediate and Practitioner papers for about 8 weeks – apparently the &lt;a href="https://www.apmgroup.co.uk/" target="_blank" rel="noopener">APMG&lt;/a> examiners are over-worked at present!&lt;/p>
&lt;p>The material is still very “close to me” in my mind, so too early to reflect properly on what I have learned.&lt;/p>
&lt;p>(Cross-posted from my &lt;a href="https://www.synesthesia.co.uk/msp/" target="_blank" rel="noopener">MSP&lt;/a> blog)&lt;/p></description></item><item><title>Mindmapping Software Survey</title><link>https://www.synesthesia.co.uk/2006/09/26/mindmapping-software-survey/</link><pubDate>Tue, 26 Sep 2006 12:10:12 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/09/26/mindmapping-software-survey/</guid><description>&lt;p>&lt;a href="https://duffill.blogs.com/beyond_crayons/" target="_blank" rel="noopener">Nick Duffill&lt;/a> &lt;a href="https://duffill.blogs.com/beyond_crayons/2006/09/a_surprise_in_c.html" target="_blank" rel="noopener">points&lt;/a> to &lt;a href="https://www.innovationtools.com/Weblog/innovation-weblog.asp" target="_blank" rel="noopener">Chuck Frey&lt;/a>‘s report on his &lt;a href="https://www.innovationtools.com/survey/index.asp" target="_blank" rel="noopener">survey of mind-mapping tool use.&lt;/a>&lt;/p>
&lt;p>Chuck sums up the issues preventing wider take-up of this sort of software:&lt;/p>
&lt;blockquote cite="https://www.innovationtools.com/survey/bhh25/Mind_mapping_survey_results.pdf">
&lt;p>
These responses seemed to be concentrated around a few specific issues: Lack of time to promote the use of mind mapping software to managers and coworkers, lack of awareness of the benefits that mind mapping software can provide, and restrictive corporate IT policies, which make it hard to implement a new piece of software.
&lt;/p>
&lt;/blockquote>
&lt;p>One response I found particularly interesting was this, to the question “If you don’t share your maps with others, why not?”&lt;/p>
&lt;blockquote cite="https://www.innovationtools.com/survey/bhh25/Mind_mapping_survey_results.pdf">
&lt;p>
If you are familiar with the Myers-Brigg Type Index (MBTI), this explanation is easy. The Myers-Briggs “sensors” have significant difficulty using abstract models (such as hierarchical mind maps) or reasoning using abstract models, making decisions about the future using abstract models. It is easy to identify these people by watching them trace a mind map using their index finger. The MBTI sensors start at the root and follow one branch all the way down to a leaf. Then they stop and argue about the leaf and its contents. They rarely ever get back up to the root or to other first level nodes. These people routinely request aMicrosoft Word document without all the confusing pictures. I comply by delivering them Word documents or PDF documents without any embedded maps. The abstract reasoners start at the root and begin tracing circles around the root, tracing first all the first level nodes, then tracing all the second level nodes, and so on outward in widening circles. These people not only love maps,they almost immediately begin suggesting corrections or additions to the maps. For these people I supply printed maps or Microsoft Word documents with embedded map fragments.
&lt;/p>
&lt;/blockquote>
&lt;p>Interesting line of enquiry to pursue there – I wonder if it has any relationship to the perception issue I described &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/10/28/why-wiki-doesnt-work-one-persons-experience/" target="_blank" rel="noopener">here&lt;/a>?&lt;/p></description></item><item><title>Someone else has the same problem about blogging</title><link>https://www.synesthesia.co.uk/2006/09/26/someone-else-has-the-same-problem-about-blogging/</link><pubDate>Tue, 26 Sep 2006 06:15:30 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/09/26/someone-else-has-the-same-problem-about-blogging/</guid><description>&lt;p>Apart from posting links, I’ve not been writing here much. Partly that has been through lack of attention, in part because I have been posting (occasionally) on &lt;a href="https://www.synesthesia.co.uk/msp/" target="_blank" rel="noopener">my other blog&lt;/a>, but there’s also been another factor – I’m busy with lots of interesting things at work, but have not felt able to write about them.&lt;/p>
&lt;p>Neil McIntosh &lt;a href="https://www.completetosh.com/weblog/2006/09/why_i_delete_mo.html" target="_blank" rel="noopener">seems to be having the same problem&lt;/a>:&lt;/p>
&lt;blockquote cite="https://www.completetosh.com/weblog/2006/09/why_i_delete_mo.html">
&lt;p>
Why the secrecy? Lots of folk write lots of stuff about this business, after all. Trouble is, the business of blogging about the intersection of technology, &lt;em>[and a particular profession]&lt;/em> and social change is one that&amp;#8217;s dominated by academics and consultants; people who make their living from advising. They&amp;#8217;re free to discuss whatever they like and, indeed, it&amp;#8217;s good for their business that they do, because they are in the knowledge business, not the delivery business.
&lt;/p>
&lt;p>
It&amp;#8217;s a seductive world, because it&amp;#8217;s about ideas, not the more difficult business of implementation. The latter is less about the heroic individual, and more about the unglamorous world of meeting rooms, progress charts and compromise.
&lt;/p>
&lt;/blockquote>
&lt;p>Some of things happening at work would have been good to blog here, not least because blogging is part of my reflective process, part of how I learn from action, but they are things which contain far too much information about what we are up to – sometimes nothing especially exciting, but as Neil puts it &lt;cite title="https://www.completetosh.com/weblog/2006/09/why_i_delete_mo.html">it’s frequently either too dull, or to messy, to expose.&lt;/cite>&lt;/p>
&lt;p>I’ve tried anonymising by generalisation, but that is a lot of work, and usually takes all the impact away from the issue.&lt;/p>
&lt;p>Perhaps the answer is one of focus – perhaps if I set a particular frame before work that I am looking for things that I &lt;em>can&lt;/em> write about then the ideas will emerge?&lt;/p></description></item><item><title>It’s all made from paper and glue…</title><link>https://www.synesthesia.co.uk/2006/09/09/its-all-made-from-paper-and-glue/</link><pubDate>Sat, 09 Sep 2006 13:28:53 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/09/09/its-all-made-from-paper-and-glue/</guid><description>&lt;p>Having surfaced after summer holidays, a trade show visit and various bits of work, I’ve realised that the new October dates for the &lt;a href="https://www.pearcemayfield.com/msp/index.html" target="_blank" rel="noopener">MSP course&lt;/a> are only three weeks away – so time to get back into the pre-work!&lt;/p>
&lt;p>With only a couple of loose pages of notes so far, it already looked like I was well on the way to a paper meltdown, so I’ve taken the time to dissect the pre-course exercise book and stick the pages into alternate pages of a wire-bound notebook – thus leaving plenty of white space for my answers and notes about related material.&lt;/p>
&lt;p>This might sound very basic, but for me the physical act of putting together a study log has already started to make it feel as if I have the material “at my fingertips” (the power of metaphor!)&lt;/p>
&lt;img class="aligncenter size-full wp-image-1716" title="MSP Study Book" src="https://www.synesthesia.co.uk/blog/wp/uploads/2006/09/book-med.jpg" alt="MSP Study Book" width="450" height="337" /></description></item><item><title>Another blog</title><link>https://www.synesthesia.co.uk/2006/05/17/another-blog/</link><pubDate>Wed, 17 May 2006 05:56:02 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/05/17/another-blog/</guid><description>&lt;p>One of the reasons I’ve been quiet in this blog has been that I have started another &lt;a href="https://www.synesthesia.co.uk/msp/" target="_blank" rel="noopener">blog&lt;/a> specifically focused on &lt;a href="https://www.synesthesia.co.uk/msp/" target="_blank" rel="noopener">Managing Successful Programmes&lt;/a>.&lt;/p>
&lt;p>When I set that blog up, I was planning on attending a training course in June on &lt;a href="https://www.pearcemayfield.com/msp/index.html" title="Link to course description on Pearce Mayfield site" target="_blank" rel="noopener">Managing Successful Programmes&lt;/a> (MSP), leading (hopefully) to the &lt;a href="https://www.ogc.gov.uk/index.asp?id=1000860&amp;amp;syncNav=1#MSPPract" target="_blank" rel="noopener">practitioner certificatation&lt;/a>. &lt;a href="https://www.ogc.gov.uk/sdtoolkit/deliveryteam/briefings/businesschange/prog_mgmt.html" title="Overview of MSP" target="_blank" rel="noopener">MSP&lt;/a> is the UK &lt;a href="https://www.ogc.gov.uk/" title="OGC - Office of Government Commerce" target="_blank" rel="noopener">Office of Government Commerce&lt;/a> (OGC) approach to ensuring the success of &lt;a href="https://www.ogc.gov.uk/index.asp?id=38" title="OGC Programmes and Projects" target="_blank" rel="noopener">major change programmes.&lt;/a>&lt;/p>
&lt;p>I’ve set up the &lt;a href="https://www.synesthesia.co.uk/msp/" target="_blank" rel="noopener">other site&lt;/a> as an online learning diary, and a central place for various notes. To support the blog there is also a &lt;a href="https://www.synesthesia.co.uk/msp/./wiki/" target="_blank" rel="noopener">wiki&lt;/a> for more long-form notes.&lt;/p>
&lt;p>Unfortunately the &lt;a href="https://www.pearcemayfield.com/msp/index.html" target="_blank" rel="noopener">course&lt;/a> I was attending has been withdrawn for June by the provider. Looks like I shall now go in October. Inevitably my motivation to go through the pre-work has been somewhat reduced, however I shall continue to post over there – I’m finding lots of ways to introduce key elements of the &lt;a href="https://www.ogc.gov.uk/index.asp?id=38" target="_blank" rel="noopener">MSP approach&lt;/a> into day-to-day work.&lt;/p>
&lt;p>This should also mean that I have a little more online time to keep this place up-to-date!&lt;/p></description></item><item><title>The Stakeholder Power/Impact Matrix In Practice</title><link>https://www.synesthesia.co.uk/2006/05/09/the-stakeholder-powerimpact-matrix-in-practice/</link><pubDate>Tue, 09 May 2006 08:24:58 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/05/09/the-stakeholder-powerimpact-matrix-in-practice/</guid><description>&lt;p>I had a good example the other day of the potential of the &lt;a href="https://www.synesthesia.co.uk/wikka/PowerImpactMatrix">Stakeholder Power/Impact Matrix&lt;/a>.&lt;/p>
&lt;p>I was discussing with a colleague the framing of another potential programme, and quite informally drew a rough matrix in front of him. I explained the meaning of the two axes and then with him discussed our first impressions of who should appear on the chart, and where they should be placed.&lt;/p>
&lt;p>&lt;img class="aligncenter size-medium wp-image-1580" title="Stakeholder Power-Impact Matrix" src="https://www.synesthesia.co.uk/blog/wp/uploads/2009/12/power-impact-matrix-300x257.png" alt="Stakeholder Power-Impact Matrix" width="300" height="257" />&lt;a rel="attachment wp-att-1580" href="https://www.synesthesia.co.uk/blog/archives/2006/05/09/the-stakeholder-powerimpact-matrix-in-practice/power-impact-matrix/">&lt;br /> &lt;/a>&lt;/p>
&lt;p>We found the exercise illuminating, not least because the small discipline of deciding where each person or group should go triggered us to articulate some deep-seated and potentially difficult issues around certain individuals&lt;/p>
&lt;p>(re-posted from the soon-to-be defunct &lt;a href="https://www.synesthesia.co.uk/msp/" target="_blank" rel="noopener">MSP Blog&lt;/a>)&lt;/p></description></item><item><title>Tags everywhere</title><link>https://www.synesthesia.co.uk/2006/03/24/tags-everywhere/</link><pubDate>Fri, 24 Mar 2006 17:47:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/03/24/tags-everywhere/</guid><description>&lt;p>Two updates to the site as alternative ways of navigating the information:&lt;/p>
&lt;ul>
&lt;li>I’ve been using &lt;a href="https://www.neato.co.nz/ultimate-tag-warrior/" target="_blank" rel="noopener">Ultimate Tag Warrior&lt;/a> for some time to tag posts, I’ve now added a &lt;a href="https://www.synesthesia.co.uk/blog/tags">tag cloud view&lt;/a>&lt;/li>
&lt;li>I’ve added a view of &lt;a href="https://www.synesthesia.co.uk/blog/delicious">my del.icio.us bookmarks&lt;/a>, using &lt;a href="https://weblogs.elearning.ubc.ca/brian/archives/024394.html" target="_blank" rel="noopener">this idea&lt;/a> from &lt;a href="https://weblogs.elearning.ubc.ca/brian/" target="_blank" rel="noopener">Brian Lamb&lt;/a> and &lt;a href="https://www.mirrorproject.com/mirror/recent/?id=13952" target="_blank" rel="noopener">Enej Bajgoric&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>More about conversations and processes</title><link>https://www.synesthesia.co.uk/2006/03/22/more-about-conversations-and-processes/</link><pubDate>Wed, 22 Mar 2006 21:56:29 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/03/22/more-about-conversations-and-processes/</guid><description>&lt;p>I’ve a hunch that the conceptual models discussed in  &lt;a href="https://www.jpaarons.net/dubbings/2006/02/28/olkc2006-paper" target="_blank" rel="noopener">Jeremy Aarons’&lt;/a> &lt;a href="https://www.jpaarons.net/dubbings/UserFiles/docs/OLKC2006_Aarons_submitted.pdf" target="_blank" rel="noopener">new paper&lt;/a>, (as I summarised &lt;a href="https://www.synesthesia.co.uk/blog/archives/2006/03/21/integrating-thinking-and-doing/" target="_blank" rel="noopener">here&lt;/a>) could be a useful lever for unpicking the dilemma I found when I wrote that &lt;a href="https://www.synesthesia.co.uk/blog/archives/2006/03/06/i-prefer-conversation-but-you-need-process/" target="_blank" rel="noopener">I prefer conversation, but you need process&lt;/a>.&lt;/p>
&lt;p>In that post I was drawing on conversations with (amongst others) &lt;a href="https://www.kn.com.au/networks/2006/03/information_arc.html#comments" target="_blank" rel="noopener">Earl&lt;/a>, &lt;a href="https://www.awasu.com/weblog/?p=291" target="_blank" rel="noopener">Taka&lt;/a>, &lt;a href="https://blog.wirearchy.com/blog/" target="_blank" rel="noopener">Jon&lt;/a>  and &lt;a href="https://www.zylstra.org/blog" target="_blank" rel="noopener">Ton&lt;/a> about the apparent conflict between the desire we all feel as empowered, “wierarchical” knowledge-workers to have systems that support a collaborative and improvisational working style, compared with the rigid, dehumanised processes that many companies see as a necessary corollary of delivering consistent service.&lt;/p>
&lt;p>The particular paradox is that some of us (ok, me!) have on many occasions required companies (typically suppliers of services) to demonstrate those sorts of processes in order to satisfy our demands for clarity and measurability, even though we recognise that we may at the same time be preventing them from delivering the sorts of innovation that would truly delight us.&lt;/p>
&lt;p>I find that the &lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=1591394236%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/1591394236%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" target="_blank" rel="noopener">Davenport&lt;/a> model helps me understand what is going on here – the underlying assumption of companies that apply &lt;a href="https://www.synesthesia.co.uk/blog/archives/2006/03/06/i-prefer-conversation-but-you-need-process/#comment-1021" target="_blank" rel="noopener">prescriptive&lt;/a> processes seems likely to be that the work involved is on the left-hand side of Davenport’s diagram – the Transaction and Integration models.&lt;/p>
&lt;p class="centrepic" align="center">
&lt;img alt="Davenport-small" src="https://www.synesthesia.co.uk/blog/images/davenport_2Dsmall.gif" border="0" />
&lt;/p>
&lt;p>The underlying assumption has to be that the nature of the problems that are faced in these areas do not require interpretation, rather the application of rules and standards, possibly requiring multiple areas to work together but always within a set of rules. This is almost exactly the model under-pinning frameworks such as &lt;a href="https://en.wikipedia.org/wiki/Information_Technology_Infrastructure_Library" target="_blank" rel="noopener">ITIL&lt;/a>.&lt;/p>
&lt;p>The other thing that strikes me as I read the contents of the boxes in the model are that they match closely with some of the criteria that are used in job grading systems. The boxes at the left of the model contain descriptions which are usually associated with lower-graded roles. This would seem to support my &lt;a href="https://www.synesthesia.co.uk/blog/archives/2006/03/06/i-prefer-conversation-but-you-need-process/#comment-1024" target="_blank" rel="noopener">assertion&lt;/a> from experience that companies which base their core competency around deployment of such rigid processes are primarily concerned with containing costs and at the same time guaranteeing minimum levels of service from a transient workforce.&lt;/p>
&lt;p>Work that can be described by the right-hand side of the model (e.g. Collaboration and Expert models) is typically well-rewarded by job-grading schemes, pragmatic evidence that such skills are in relatively short supply. Professional services firms typically focus on reserving the efforts of these people for critical projects of areas requiring significant interaction. Such firms often also have (or desperately need) a core competence in taking the intellectual products of the right-hand side and “operationalising” them, i.e. turning them into formal processes and standards that can be scaled up and applied by the more numerous group of people paid lower wages to work “in the left-hand side”.&lt;/p>
&lt;p>So far, so good – perhaps not a comfortable conclusion, but it would seem that the model works at least acceptably in certain situations. There is a certain basic business logic in reserving your most highly-skilled people for problems that need their attributes, whilst at the same time finding ways to manage the routine at a lower cost.&lt;/p>
&lt;p>So where does the paradigm break?&lt;/p>
&lt;p>I think there are at least two areas worthy of further exploration:&lt;/p>
&lt;ul>
&lt;li>There is an assumption that the market such firms supply will largely pose routine problems which are amenable to a rules-and-standards approach – where does this break down?&lt;/li>
&lt;li>Secondly, underlying the concerns that were expressed in the earlier &lt;a href="https://www.synesthesia.co.uk/blog/archives/2006/03/06/i-prefer-conversation-but-you-need-process/" target="_blank" rel="noopener">conversation&lt;/a> is a belief or hope that by finding a more integrative approach to knowledge work then there is the potential of finding ways that are more rewarding in either a commercial or human sense.&lt;/li>
&lt;/ul>
&lt;p> Ideas for later posts…&lt;/p></description></item><item><title>Integrating thinking and doing</title><link>https://www.synesthesia.co.uk/2006/03/21/integrating-thinking-and-doing/</link><pubDate>Tue, 21 Mar 2006 06:30:31 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/03/21/integrating-thinking-and-doing/</guid><description>&lt;p>&lt;a href="https://www.jpaarons.net/dubbings/" target="_blank" rel="noopener">Jeremy Aarons&lt;/a> has &lt;a href="https://www.jpaarons.net/dubbings/2006/02/28/olkc2006-paper" target="_blank" rel="noopener">blogged&lt;/a> the draft of a new paper, &lt;a href="https://www.jpaarons.net/dubbings/UserFiles/docs/OLKC2006_Aarons_submitted.pdf" target="_blank" rel="noopener">Supporting organisational knowledge work: Integrating thinking and doing in task-based support&lt;/a> by Jeremy Aarons, Henry Linger &amp;amp; Frada Burstein.&lt;/p>
&lt;p>They start by referencing Davenport’s &lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=1591394236%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/1591394236%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" target="_blank" rel="noopener">classification structure for knowledge-intensive processes&lt;/a>, which analyses knowledge work along the two axes of complexity and interdependence:&lt;/p>
&lt;p class="centrepic" align="center">
&lt;img alt="Davenport-small" src="https://www.synesthesia.co.uk/blog/images/davenport_2Dsmall.gif" border="0" />
&lt;/p>
&lt;p align="center">
&lt;font size="2">Davenport&amp;rsquo;s classification structure &lt;br />(From &lt;/font>&lt;a title="Thinking for a Living: How to Get Better Performance and Results from Knowledge Workers" href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=1591394236%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/1591394236%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82">&lt;font size="2">Davenport (2005)&lt;/font>&lt;/a>&lt;font size="2"> via &lt;/font>&lt;a title="Supporting organisational knowledge work: Integrating thinking and doing in task-based support." href="https://www.jpaarons.net/dubbings/UserFiles/docs/OLKC2006_Aarons_submitted.pdf">&lt;font size="2">Aarons (2006)&lt;/font>&lt;/a>&lt;font size="2">)&lt;/font>
&lt;/p>
&lt;p> &lt;/p>
&lt;p>However they then go on to criticise this as an analytic model on the grounds that much complex work often fits into more than one box. In particular, they suggest that work which (by the Davenport classification) is largely within the &lt;em>Integration Model&lt;/em> often has elements requiring significant precision and judgement from indivduals – in other words mixes in work from the &lt;em>Expert model&lt;/em>.&lt;/p>
&lt;p>They suggest then that a more appropriate guiding framework is Burstein and Linger’s &lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=1591405734%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/1591405734%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="The Encyclopedia of Knowledge Management" target="_blank" rel="noopener">Task-Based Knowledge Management&lt;/a>, which considers knowledge work as an inherently collaborative activity which mixes pragmatic “doing” work into a conceptual “thinking” framework. In this approach the focus is on supporting rather than managing knowledge-work. The authors express this using the following diagram:&lt;/p>
&lt;p>&lt;font size="2">&lt;/font> &lt;/p>
&lt;p align="center">
&lt;img alt="Taskbasedmodelofwork" src="https://www.synesthesia.co.uk/blog/images/taskbasedmodelofwork.gif" border="0" />
&lt;/p>
&lt;p align="center">
&lt;font size="2">&lt;br /> A task-based model of work&lt;br />(From &lt;a title="Supporting organisational knowledge work: Integrating thinking and doing in task-based support." href="https://www.jpaarons.net/dubbings/UserFiles/docs/OLKC2006_Aarons_submitted.pdf">Aarons (2006)&lt;/a>&lt;/font>
&lt;/p>
&lt;p>The rest of the paper is devoted to a case study within the Australian Weather Service which supports the mixed approach, and yields examples of failed business systems which focussed only on the forecast-production aspect of the forecasting task. These are compared with a successful and hugely-popular system which started as a maverick, ground-up project and which expressly addressed and supported the creation and maintenance of conceptual models of weather. This system, which is now the system of choice, only addressed the production of output forecasts as a piece of auxiliary functionality.&lt;/p></description></item><item><title/><link>https://www.synesthesia.co.uk/2006/03/09/ambient-social-knowledge/</link><pubDate>Thu, 09 Mar 2006 08:40:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/03/09/ambient-social-knowledge/</guid><description>&lt;p>Lee Bryant has posted his ETech slides, &lt;a href="https://www.headshift.com/archives/002895.cfm" target="_blank" rel="noopener">Humanising the Enterprise through Ambient Social Knowledge&lt;/a>&lt;/p>
&lt;p> &lt;/p></description></item><item><title>More on Business Strategy Patterns</title><link>https://www.synesthesia.co.uk/2006/03/08/more-on-business-strategy-patterns/</link><pubDate>Wed, 08 Mar 2006 22:48:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/03/08/more-on-business-strategy-patterns/</guid><description>&lt;p>&lt;a href="https://www.allankelly.net/" rel="external">Allan Kelly&lt;/a> &lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/06/28/pattern-languages-and-business-strategy/#comment-991" target="_blank" rel="noopener">commented&lt;/a> on my post from last year about the possibilities of &lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/06/28/pattern-languages-and-business-strategy/" target="_blank" rel="noopener">using pattern languages to describe business strategies&lt;/a>, to point out that he has done &lt;a href="https://www.allankelly.net/patterns/" target="_blank" rel="noopener">quite a bit&lt;/a> of this already.&lt;/p>
&lt;p>So far the only paper I’ve had a chance to read is &lt;a href="https://www.allankelly.net/patterns/CorpImaginationPatterns.pdf" target="_blank" rel="noopener">Business Strategy Patterns for The Innovative Company&lt;/a>, which is a set of patterns derived from “Corporate Imagination and Expeditionary Marketing” (Hamel and Prahalad, 1991). In this Allan derives:&lt;/p>
&lt;ul>
&lt;li>Innovative Products&lt;/li>
&lt;li>Expeditionary Marketing&lt;/li>
&lt;li>Seperate Imaginative Teams&lt;/li>
&lt;/ul>
&lt;p>Apart from the patterns themselves there were two things I found interesting about this paper:&lt;/p>
&lt;p>Firstly, Allan describes a rather rough ride he received at &lt;a href="https://www.plop.dk/vikingplop/" target="_blank" rel="noopener">VikingPLoP&lt;/a> 2004, where apparently a lot of negative attention was focussed on whether there was “prior art” for these patterns in the pattern field. I think there is something here that any &lt;a href="https://en.wiktionary.org/wiki/Autodidact" target="_blank" rel="noopener">autodidact&lt;/a> will feel an empathy towards. Whereas the scientific community (rightly) puts a lot of emphasis on whether something is new knowledge, in the world of applications there is at least as much value in “new-to-me” knowledge, or even “applications of existing knowledge in a new context”. To me patterns and pattern language fall firmly into the camps of education, application and transference between domains; not the camp of new knowledge creation. Given that, an over-obsession with “prior art” would seem to be rather inward-looking.&lt;/p>
&lt;p>Secondly, Allan goes on to elaborate how his understanding and view of patterns has developed and changed, especially as a result of reading “&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0750673559%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0750673559%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="Link to this book on Amazon" target="_blank" rel="noopener">The Springboard&lt;/a>” (Stephen Denning, 2001), and “&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0195121236%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0195121236%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="Link to this book on Amazon" target="_blank" rel="noopener">Patterns of Software&lt;/a>” (&lt;a href="https://www.dreamsongs.com/" target="_blank" rel="noopener">Dick Gabriel&lt;/a>, 1996) and that he now sees them as a particularly-structured form of story about a problem domain. I find this an appealing viewpoint, as it harks back to the fundamental way that human beings pass on knowledge, through the telling of stories. Of course, the nature of stories is that each person who retells a story does so in a subtly different way, and over time the story changes. Extending the simile, patterns too will change over time in a two-way exchange of knowledge between the pattern and the environment of the current user, so to say that a particular pattern is derived from (but not the same as) an earlier pattern is merely to state that evolution has occurred.&lt;/p>
&lt;p>&lt;ins datetime="2006-03-08T23:17:21+00:00">Update: Allan’s latest paper &lt;a href="https://www.allankelly.net/patterns/StrategyForTechCompanies.pdf">Strategies for Technology Companies&lt;/a> has more on his interpretation of patterns as stories.&lt;/ins>&lt;/p></description></item><item><title>I prefer conversation, but you need process</title><link>https://www.synesthesia.co.uk/2006/03/06/i-prefer-conversation-but-you-need-process/</link><pubDate>Mon, 06 Mar 2006 15:04:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/03/06/i-prefer-conversation-but-you-need-process/</guid><description>&lt;p align="left">
I think I&amp;rsquo;ve just caught myself out in a &amp;ldquo;one rule for me, another for you&amp;rdquo; attitude over something&amp;hellip; A conversation across several blogs made me realise that I was facing both ways on an issue and hadn&amp;rsquo;t acknowledged it &amp;ndash; oh the power of the internet!
&lt;/p>
&lt;p align="left">
&lt;a href="https://www.kn.com.au/networks/">Earl Mardle&lt;/a> posted about &lt;a href="https://www.kn.com.au/networks/2006/03/information_arc.html">Information Architecture as Scaffold&lt;/a> based on a &lt;a href="https://www.kn.com.au/networks/2006/03/blogs_as_social.html#comment-14522322">conversation&lt;/a> with &lt;a href="https://www.zylstra.org/blog">Ton&lt;/a>&amp;nbsp;(More on Ton&amp;rsquo;s position &lt;a href="https://www.zylstra.org/blog/archives/2006/03/relationships_a.html">here&lt;/a>). The gist of the view expressed by Earl and Ton is that all this &amp;ldquo;knowledge&amp;rdquo; that companies are seeking to &amp;ldquo;manage&amp;rdquo; is really only accessible through relationships, and once the relationship is established then the information that was part of the initial exchange is no longer relevant:
&lt;/p>
&lt;blockquote cite="https://www.kn.com.au/networks/2006/03/information_arc.html">
&lt;p>
And that, my friends is what information does; it provides the scaffold that bridges the gap between people. A bridge that we call a conversation. And once you have built the bridge, you can take away the scaffold and it doesn&amp;#8217;t make any difference, the conversation can continue because it no longer has any need for the information on which it was built, it has its own information; a history of itself, on which to draw and whenever the relationship is invoked, it uses any old bits of information lying around to propagate itself.
&lt;/p>
&lt;/blockquote>
&lt;p>Earl then expands his view that in the real world of work, when you need to create some kind of output, you do it based on your own knowledge and the knowledge of your team, rather than through re-purposing some previous piece of corporate “knowledge”.&lt;/p>
&lt;p>&lt;a href="https://blog.wirearchy.com/blog/" target="_blank" rel="noopener">Several&lt;/a> &lt;a href="https://www.zylstra.org/blog" target="_blank" rel="noopener">of&lt;/a> &lt;a href="https://www.synesthesia.co.uk/blog/" target="_blank" rel="noopener">us&lt;/a> joined in the &lt;a href="https://www.kn.com.au/networks/2006/03/information_arc.html#comments" target="_blank" rel="noopener">conversation&lt;/a> in support of the view – in particular I made the point that the key thing that stands in the way of re-using the typical corporate knowledge artifacts (i.e. documents) is the lack of contextual information about why they were created in the way they were. A good provider of context would be a record of the conversations that happened around the document creation (e.g. through blogs and wikis) but that is still too difficult to add on if it requires people to learn new tools.&lt;/p>
&lt;p>As a good counter to all this virulent agreement, &lt;a href="https://www.awasu.com/weblog/" target="_blank" rel="noopener">Taka&lt;/a> &lt;a href="https://www.awasu.com/weblog/?p=291" target="_blank" rel="noopener">disagrees&lt;/a> strongly with the concept of information as scaffolding around conversations – in his view the information &lt;em>is&lt;/em> the conversation, the scaffolding is the network of relationships that enable the conversation. That’s probably a &lt;a href="https://www.kn.com.au/networks/2006/03/more_scaffoldin.html" target="_blank" rel="noopener">difference of opinion&lt;/a> over the meaning of words, where it gets interesting is what Taka goes on to say:&lt;/p>
&lt;blockquote cite="https://www.awasu.com/weblog/?p=291">
&lt;p>
This is what I call the McDonalds question: how do you get low-skilled, inexperienced trainees to consistently produce hamburgers and fries to an acceptable level of quality? Process. And it&amp;rsquo;s the same thing in a corporate environment: how do you get people, who generally don&amp;rsquo;t really give a toss about what they&amp;rsquo;re doing, to write proposals and reports and all the other guff to an acceptable level? Document templates and guidelines.
&lt;/p>
&lt;p>
Coporate KM and other such initiatives are our typically short-sighted attempt to find technical solutions to what is actually a people problem. There are plenty of people selling solutions and processes and methodologies to &amp;ldquo;fix&amp;rdquo; the information management issues that exist within companies because it&amp;rsquo;s an easier problem to tackle than the real underlying issue: how do you get people to actually &lt;a href="https://www.awasu.com/weblog/?p=232">give a damn&lt;/a> about what they&amp;rsquo;re doing?
&lt;/p>
&lt;/blockquote>
&lt;p>Which Earl extends and restates;&lt;/p>
&lt;blockquote cite="https://www.kn.com.au/networks/2006/03/more_scaffoldin.html">
&lt;p dir="ltr">
Underlying what I was talking about in the other post is to make explicit that very fact; organisations that think of their people as fungible will be lead inexorably down the path of document management and &amp;#8220;knowledge capture&amp;#8221; solutions that will not help them survive, and they don&amp;#8217;t deserve to.
&lt;/p>
&lt;p dir="ltr">
The kicker for all this came from Euan Semple the other night who told me about a company rep who asked him, &amp;#8220;how do you stop corporate knowledge leaving with the person?&amp;#8221;
&lt;/p>
&lt;p dir="ltr">
So, to reiterate a point that might have been a bit buried in the verbiage, organisations with a future do not need KM systems because they have active, engaged people who &lt;strong>know&lt;/strong> what the hell they are doing.
&lt;/p>
&lt;/blockquote>
&lt;p>And &lt;strong>that&lt;/strong> is where I did the metaphorical forehead-slap.&lt;/p>
&lt;p>Because I’m all for work practices based on conversation and shared context where they involve me or my colleagues – of course we are wonderful knowledge-workers who thrive in such an environment! But, as I realised, when it comes to speaking with suppliers of IT services, or designing how our organisation should inter-operate with their organisations, it’s always about process.&lt;/p>
&lt;p>In part that’s about how they work, and when I am in that purchasing role it’s not directly my concern about &lt;em>how&lt;/em> they can deliver good consistent service to the company I am representing, rather a matter of being sure &lt;em>what&lt;/em> they deliver, but I’m sure we throw out quite a lot of baby with that bath water. We struggle to find ways of getting the sort of human, responsive service we want at a price we are prepared to pay.&lt;/p>
&lt;p>So why is this a problem? The clue is in the words I used – “good, consistent service”. The whole world of out-sourced services companies is about consistency. The way services are usually measured –  “x% of faults fixed within y hours” – is about aggregation, statistics, removing variability. The companies who supply these services, in their turn, are looking for ways to meet those contractual arrangements that allow them to make a profit. The major costs in any service are the people who deliver it, so inevitably there is downward pressure on salaries and a drive to make everything a process that can be automated as far as possible.&lt;/p>
&lt;p>In that sense, modern out-sourcers truly are the last bastions of &lt;a href="https://en.wikipedia.org/wiki/Frederick_Winslow_Taylor" target="_blank" rel="noopener">Taylorism&lt;/a>. Almost as a foregone conclusion, there is low job satisfaction in these bastions of “service”, leading to high turnover of front-line staff, leading in turn to increased management pressure for process and consistency.&lt;/p>
&lt;p>I think there are several conflicts at work here:&lt;/p>
&lt;ul>
&lt;li>Be consistent v. Delight the customer&lt;/li>
&lt;li>Maximise productivity by using low-skilled staff v. Maximise productivity by supporting people to use all of their skills and knowledge&lt;/li>
&lt;li>Protect the service against staff turn-over v. Protect the service by creating an environment where people want to stay and grow&lt;/li>
&lt;li>Get the lowest cost service from suppliers v. get service that truly helps your business&lt;/li>
&lt;li>and probably some more…&lt;/li>
&lt;/ul>
&lt;p>The simple answer to all of this seems to be “work in small teams” and only use small suppliers, but it’s not clear to me how that scales. When I think about small teams, I can see how a &lt;em>wirearchical&lt;/em> approach works when there are several companies involved (in the limit, several individuals), but again, I feel various mental blocks when I think about scaling that. I’m still struggling with these, and other dichotomies, which is probably a good sign that it’s time to draw the &lt;a href="https://www.dbrmfg.co.nz/Thinking%20Process%20CRT.htm" target="_blank" rel="noopener">CRT&lt;/a>! Food for a later post I suspect.&lt;/p></description></item><item><title>Qumana re-visited</title><link>https://www.synesthesia.co.uk/2006/03/04/qumana-re-visited/</link><pubDate>Sat, 04 Mar 2006 12:39:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/03/04/qumana-re-visited/</guid><description>&lt;p>Having mentioned &lt;a href="https://www.qumana.com/" target="_blank" rel="noopener">Qumana&lt;/a> in a &lt;a href="https://www.synesthesia.co.uk/blog/archives/2006/02/27/a-new-tool-awasu/" target="_blank" rel="noopener">recent post&lt;/a>, the ever-vigilant Qumana team &lt;a href="https://www.synesthesia.co.uk/blog/archives/2006/02/27/a-new-tool-awasu/#comment-967" target="_blank" rel="noopener">picked up&lt;/a> on my comment and asked if I’d look again at the tool. As I &lt;a href="https://www.synesthesia.co.uk/blog/archives/2006/02/27/a-new-tool-awasu/#comment-972" target="_blank" rel="noopener">promised&lt;/a>, here is a note of my re-visit. In the spirit of the thing, this post is written using the tool (3.0.0-b2 Beta).&lt;/p>
&lt;p>The two things that put me off Qumana before were its inability to post via a web proxy (not tested this time), and the lack of control over the HTML it was creating. The second thing has been fixed now, with a &amp;ldquo;Source View&amp;rdquo; tab.&lt;/p>
&lt;p>&lt;strong>Things I like&lt;/strong>&lt;/p>
&lt;p>The drop-pad – this makes it really easy to grab links and bits of content as you work and park them in a scratchpad for blogging later. This was the key part of the workflow that &lt;a href="https://www.kn.com.au/networks/2006/02/qumana_meta_blo.html" target="_blank" rel="noopener">Earl Mardle&lt;/a> described.&lt;/p>
&lt;p align="left">
The writing interface is really clean, with the minimum of interferences to get in the way of the words you want to write, and really clear, so you can review your words easily. Being a beta there are a couple of funnies &amp;#8211; for example "Insert Link" and "Align Left" seem to share the same keyboard shortcut as described in the menu (actually it applies "Insert Link") &amp;#8211; but those are trivial things that I&amp;#8217;m sure will be fixed in the release version.
&lt;/p>
&lt;p>Integrated speeling chocker – definitely a requirement for those fast posts!&lt;/p>
&lt;p>&lt;strong>Things I don’t like&lt;/strong>&lt;/p>
&lt;p>Unless I missed it in my exploration of the configuration, there is no way to post to your blog as draft. For me this is the killer feature-lack that makes it difficult for me to integrate Qumana into my preferred workflow. I can see an argument that says this tool is for creating fast posts, but I’m sure that many people would like the ability to post in draft. If nothing else, this makes it easy to capture thoughts when they happen, for later access and editing from another computer.&lt;/p>
&lt;p>There’s another reason that I would want a &amp;ldquo;post to draft&amp;rdquo; facility, which is more to do with my specific blog setup – I make use of the &lt;a href="https://www.neato.co.nz/ultimate-tag-warrior/" target="_blank" rel="noopener">Ultimate Tag Warrior&lt;/a> plugin to create tags on my blog, and this requires access to the online WordPress editing screen. If when you read this post it doesn’t have any tags, that’s because I’ve only just posted it and haven’t time to go into WordPress and add them. In fairness to Qumana, this is not something they could realistically accomodate as a specific requirement because it lies outside the &lt;a href="https://en.wikipedia.org/wiki/XML_RPC" target="_blank" rel="noopener">XML-RPC&lt;/a> interface to &lt;a href="https://wordpress.org/" target="_blank" rel="noopener">WordPress&lt;/a>, however a &amp;ldquo;Post to Draft&amp;rdquo; feature would enable it. And of course, they do include an easy shortcut for inserting &lt;a href="https://www.technorati.com/help/tags.html" target="_blank" rel="noopener">Technorati tags&lt;/a> &amp;ldquo;the normal way&amp;rdquo;.&lt;/p>
&lt;p>&lt;strong>Things I don’t really care about&lt;/strong>&lt;/p>
&lt;p>A key part of the functionality of Qumana is the ability to easily include adverts in your posts through the close integration with &lt;a href="https://www.adgenta.com/" target="_blank" rel="noopener">Adgenta&lt;/a>. As this isn’t something I particularly want to do on my blog (unless the ISP fees go up!) then it isn’t a selling point for me – nor did I test this aspect to see how well it works.&lt;/p>
&lt;p>&lt;strong>Summary&lt;/strong>&lt;/p>
&lt;p>A nice tool, and if it had the ability to post in draft I would probably use it. If that isn’t a requirement for your own preferred style of blogging, then give it a go!&lt;/p>&lt;/p></description></item><item><title>The Road to Reality</title><link>https://www.synesthesia.co.uk/2006/03/02/the-road-to-reality/</link><pubDate>Thu, 02 Mar 2006 09:11:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/03/02/the-road-to-reality/</guid><description>&lt;div style=" float:right;margin-left:30px; margin-bottom: 20px;">
&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0224044478%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0224044478%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">&lt;img src="https://images.amazon.com/images/P/0224044478.01._SCMZZZZZZZ_.jpg" alt="The Road to Reality: A Complete Guide to the Laws of the Universe" />&lt;/a>
&lt;/div>
&lt;p>Who could resist a book subtitled &lt;em>“A Complete Guide to the Laws of The Universe”&lt;/em>?&lt;/p>
&lt;p>If you didn’t know that the author was &lt;a href="https://en.wikipedia.org/wiki/Roger_Penrose" target="_blank" rel="noopener">Roger Penrose&lt;/a>, you could be forgiven for assuming that &lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0224044478%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0224044478%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" target="_blank" rel="noopener">The Road to Reality&lt;/a> was one of the very many quasi-scientific, faith-based, wild-eyed polemics that appear each year under increasingly garish covers, but instead this tome sets out to be &lt;q>a comprehensive account of the physical universe and the essentials of its underlying mathematical theory&lt;/q>.&lt;/p>
&lt;p>Daunting? Absolutely. Weighing in at 1.4kg and 1100 pages the physical presence of this book sets a certain level of expectation. Beyond that, there’s no doubt about it, this book contains mathematics, lots of it. That in itself will put a lot of people off, as the author notes in the preface:&lt;/p>
&lt;blockquote cite="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0224044478%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0224044478%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82">
&lt;p>
The reader will find that in this book I have not shied away from presenting mathematical formulae, despite dire warnings of the severe reduction in readership this will entail. I have thought seriously about this question, and have come to the conclusion that what I have to say cannot reasonably be conveyed without a certain amount of mathematical notation and the exploration of genuine mathematical concepts.
&lt;/p>
&lt;/blockquote>
&lt;p>Yes, mathematics. Tricky one that. At school it was one of my favourite subjects, but somehow by the end of an engineering degree it was a subject that had carried on inexorably past the limits of my interest and ability. In engineering terms the sheer fun of making early micro-processors jump through hoops was more appealing, and away from the lecture-room and lab my technical nous was finding more practical applications in the challenge of applying sound and light to actors and musicians (with a healthy grounding in the social skills of working in teams and dealing with non-technical people thrown in for good measure!).&lt;/p>
&lt;p>So why have I just invested full list price in such a book? Interest, yes, but also a sense of challenge, a feeling that maybe I could get to grips again with the mathematical, maybe, indeed, that I should re-capture the knowledge that I took so long to acquire a quarter of a century ago. I think there’s another root too – last year I attended a &lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/04/22/developing-deliverable-strategies/" target="_blank" rel="noopener">business strategy course&lt;/a> that was heaviliy influenced by game theory. One of the other delegates was a professor of engineering from one of the best engineering faculties in the UK who, over coffee, waxed lyrical about the underlying mathematics (which the course had avoided) and how the same approach was used all the time in the design of complex control systems. Even though I didn’t know it then, at that moment, I think I was re-infected with some of that curiousity, and the first expression has been the serendipitous contact with this book in a 10 minute bookshop-browse snatched at the end of a mundane shopping trip.&lt;/p>
&lt;p>Will I stick with it? Good question. I’ve just finished Chapter 2 which has skated lightly over the surface of Euclidean and hyperbolic geometries, and already I feel I am reading things of which I have no conscious memory (maths at my school was the so-called “New Mathematics”, so I’m not sure we ever touched anything so prosaic as geometry…). This is a book for digesting in small bites, and I know my track-record of &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/05/09/polymaths/" target="_blank" rel="noopener">grasshopper-brained&lt;/a> &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/05/10/butterfly-moments-and-bricolage/" target="_blank" rel="noopener">bricolage&lt;/a> is not necessarily the most obvious approach to this feast, but we shall see…&lt;/p></description></item><item><title>Value-based pricing for wikis</title><link>https://www.synesthesia.co.uk/2006/03/01/value-based-pricing-for-wikis/</link><pubDate>Wed, 01 Mar 2006 22:23:26 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/03/01/value-based-pricing-for-wikis/</guid><description>&lt;p>Innovative wiki company &lt;a href="https://www.socialtext.com/" target="_blank" rel="noopener">Socialtext&lt;/a> have launched &lt;a href="https://www.socialtext.com/products/pricing" target="_blank" rel="noopener">group-based pricing&lt;/a> for their hosted wiki solutions, including unlimited free wikis for groups of 5 or less. As CEO &lt;a href="https://ross.typepad.com/blog/2006/03/groupbased_pric.html" target="_blank" rel="noopener">Ross Mayfield says&lt;/a>, this is&lt;/p>
&lt;p>&lt;q cite="https://ross.typepad.com/blog/2006/03/groupbased_pric.html">…reflecting how the unit of value in wikis is the group that uses it…&lt;/q>.&lt;/p>
&lt;p>I’m a big fan of Socialtext, with the help of their hosted solution I was able to get a small project group introduced to the wiki way long before we had in-house wiki facilities, and I always found them very helpful. This is a great approach to pricing that lets the power of wikis spread in the best way possible – word of mouth in small groups.&lt;/p>
&lt;p>Good luck Ross!&lt;/p></description></item><item><title>Blink</title><link>https://www.synesthesia.co.uk/2006/02/28/blink/</link><pubDate>Tue, 28 Feb 2006 08:15:17 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/02/28/blink/</guid><description>&lt;div style="float: right; margin-left: 20px;">
&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0141014598%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0141014598%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">&lt;img src="https://ec1.images-amazon.com/images/P/0141014598.02._SCMZZZZZZZ_.jpg" alt="Blink: The Power of Thinking Without Thinking" />&lt;/a>
&lt;/div>
&lt;p>Just got around to reading &lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0141014598%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0141014598%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" target="_blank" rel="noopener">Blink&lt;/a>. It’s a quick read – as usual with Gladwell the book’s central theme, the human ability to make almost instant decisions based on the unconscious mind and previously-acquired experience, is presented lucidly and with plenty of examples.&lt;/p>
&lt;p>He structures the book in three broad areas:&lt;/p>
&lt;ul>
&lt;li>Evidence of human ability to make accurate decisions very quickly – faster than conscious thought&lt;/li>
&lt;li>The strengths and weaknesses this gives us&lt;/li>
&lt;li>Ways to develop skill and improve the accuracy of your instant impressions&lt;/li>
&lt;/ul>
&lt;p>Although Gladwell includes notes on sources, my frustration with books like this is that they only present one side of the argument, in favour of the core theory, and don’t really explore what else may be going on. However as an entertainment with a basis in science it’s a fun way to spend a couple of hours, and a good source of anecdotes to recycle in a “did you know” sort of way.&lt;/p></description></item><item><title>A new tool: Awasu</title><link>https://www.synesthesia.co.uk/2006/02/27/a-new-tool-awasu/</link><pubDate>Mon, 27 Feb 2006 08:27:51 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/02/27/a-new-tool-awasu/</guid><description>&lt;p>Via &lt;a href="https://www.kn.com.au/networks/2006/02/qumana_meta_blo.html" target="_blank" rel="noopener">Earl Mardle&lt;/a> I’ve found a new tool to add to my &lt;a href="https://www.gurteen.com/gurteen/gurteen.nsf/id/pkm" target="_blank" rel="noopener">personal knowledge management&lt;/a> toolkit: &lt;a href="https://www.awasu.com/" target="_blank" rel="noopener">Awasu&lt;/a>&lt;/p>
&lt;p>Although the core of the product is an aggregator, it’s a lot more than that as it offers a number of ways of inter-acting with the flow of information through the tool, both manually and in various automated ways. It also offers the facility to add “&lt;a href="https://www.awasu.com/help/2.2/Introduction/04-ChannelHooks.html" target="_blank" rel="noopener">channel hooks&lt;/a>” – plugins which carry out specific actions on selected channels.&lt;/p>
&lt;p>Having installed the product, I must admit the first learning hurdle was to get used to a thick-client aggregator rather than my &lt;a href="https://www.bloglines.com/public/synesthesia" target="_blank" rel="noopener">normal approach with Bloglines&lt;/a>.&lt;/p>
&lt;p>The next challenge was finding an easy way to blog using the tool. Although &lt;a href="https://www.kn.com.au/networks/2006/02/qumana_meta_blo.html" target="_blank" rel="noopener">Earl&lt;/a> recommends a workflow using &lt;a href="https://www.qumana.com/" target="_blank" rel="noopener">Qumana&lt;/a>, I’m not sure that’s the right one for me. I think that reticence is a little about Qumana: I’ve tried the tool before, in its earlier days and didn’t stick with it, so maybe I am transferring that to the latest version. Also, Earl’s proposed method involves using the &lt;a href="https://www.awasu.com/help/2.2/Productivity%20tools/01-Workpads.html" target="_blank" rel="noopener">Workpads&lt;/a> and &lt;a href="https://www.awasu.com/help/2.2/Productivity%20tools/05-ChannelReports.html" target="_blank" rel="noopener">Reports&lt;/a> in Awasu – functionality that I have played with, but not yet got to grips with fully. There have been a couple of funnies which might be bugs or might be configuration problems.&lt;/p>
&lt;p>I shall keep experimenting with different methods of using the tool and integrating it into my work, and may well come back to the approach earl suggests. In the interim I have taken advantage of the easily-configurable &lt;a href="https://www.awasu.com/help/2.2/Productivity%20tools/06-ExternalTools.html" target="_blank" rel="noopener">User Tools&lt;/a> menu in Awasu to call up the normal WordPress posting page for this blog within the Awasu main window, pre-populated with key content from the source page.&lt;/p></description></item><item><title>Using Theory of Constraints to Plan Access To Shared Resources</title><link>https://www.synesthesia.co.uk/2006/02/16/using-theory-of-constraints-to-plan-access-to-shared-resources/</link><pubDate>Thu, 16 Feb 2006 13:57:40 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/02/16/using-theory-of-constraints-to-plan-access-to-shared-resources/</guid><description>&lt;p>&lt;a href="https://www.clarkeching.com" target="_blank" rel="noopener">Clarke Ching&lt;/a> &lt;a href="https://www.clarkeching.com/2006/02/uk_network_rail.html" target="_blank" rel="noopener">points&lt;/a> to Network Rail’s document &lt;a href="https://www.networkrail.co.uk/companyinformation/RegulatoryDocuments/Content/Documents/M%20-%20Other%20ORR%20consultation%20documents/orrecmlcapacitystudy.pdf" target="_blank" rel="noopener">Consultation On Capacity Study For East Coast Main Line&lt;/a> [PDF, 546kb], which documents a &lt;a href="https://www.synesthesia.co.uk/blog/wiki/TheoryOfConstraints" target="_blank" rel="noopener">Theory Of Constraints&lt;/a> approach to managing resource capacity – in this case on a strategic rail route.&lt;/p>
&lt;p>Clarke quotes the introduction which sets out the way the methodology was adapted, within the body of the document there is more on how they assessed capacity at the various constraints along the route.&lt;/p>
&lt;p>Another quote relates to how the first list of probable constraints was found:&lt;/p>
&lt;blockquote cite="https://www.networkrail.co.uk/companyinformation/RegulatoryDocuments/Content/Documents/M%20-%20Other%20ORR%20consultation%20documents/orrecmlcapacitystudy.pdf">
&lt;p>
The starting point of the analysis was the selection of the potential constraints to be considered. A draft list of locations to be studied was produced using Network Rail’s detailed working knowledge of the East Coast Main Line. One approach has been to discuss potential issues with the Network Rail Timing Specialists who have a timetabling responsibility for the area of interest. Commonly they have been asked ‘which location / locations are likely to prove problematic?’. One of the tenets of the ThOC is that the over-riding constraints will be widely recognized. The locations selected for analysis have been discussed with each of their operators and they have each indicated their agreement. It is reassuring in this respect that the locations studied to date feature prominently in the responses of consultees to the applications.
&lt;/p>
&lt;/blockquote>
&lt;p>Although the document is 85 pages long, I think it is worth at least a skim as an example of application of the approach to a new field.&lt;/p>
&lt;p>What seems especially valuable to me in this example is the evidence that even in the complex &lt;a href="https://en.wikipedia.org/wiki/List_of_companies_operating_trains_in_the_United_Kingdom" target="_blank" rel="noopener">multi-company&lt;/a> and &lt;a href="https://en.wikipedia.org/wiki/Office_of_Rail_Regulation" target="_blank" rel="noopener">government&lt;/a> &lt;a href="https://en.wikipedia.org/wiki/Network_Rail" target="_blank" rel="noopener">environment&lt;/a> of the UK railways, the use of a logical approach such as the &lt;a href="https://www.synesthesia.co.uk/blog/wiki/TheoryOfConstraints" target="_blank" rel="noopener">Theory Of Constraints&lt;/a> was capable of gaining support from the parties involved.&lt;/p>
&lt;p>It is this aspect which, I think, points to the wider usefulness of the example as a learning tool which may point to new areas where application of constraints thinking could be useful. For example I can see possible application in the media production industry where application of digital networked techniques to complex supply chains will inevitably lead to contention over common pieces of infrastructure.&lt;/p></description></item><item><title>Surname Profiler</title><link>https://www.synesthesia.co.uk/2006/01/25/surname-profiler/</link><pubDate>Wed, 25 Jan 2006 22:57:33 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/01/25/surname-profiler/</guid><description>&lt;p>&lt;a href="https://www.spatial-literacy.org/UCLnames/default.aspx" target="_blank" rel="noopener">This site&lt;/a> is an interesting adjunct to my &lt;a href="https://www.synesthesia.co.uk/blog/archives/2006/01/18/some-miscellaneous-stuff/" target="_blank" rel="noopener">previous note&lt;/a> on geneaology – the &lt;a href="https://www.spatial-literacy.org/UCLnames/default.aspx" target="_blank" rel="noopener">surname profiler&lt;/a> from UCL lets you compare the geographical distribution of a given surname in the UK between 1881 and 1998.&lt;/p>
&lt;p>I did a quick test using my surname (Elve – or as it was commonly spelled in 1881, Elvey). The &lt;a href="https://www.spatial-literacy.org/UCLnames/NameSelection.aspx?name=ELVE&amp;amp;year=1881&amp;amp;altyear=1998&amp;amp;country=GB&amp;amp;type=name" target="_blank" rel="noopener">1881 result&lt;/a> looks familiar from the 1881 census research I have been doing as part of finding my ancestors:&lt;/p>
&lt;p>&lt;a href="https://www.spatial-literacy.org/UCLnames/NameSelection.aspx?name=ELVE&amp;amp;year=1881&amp;amp;altyear=1998&amp;amp;country=GB&amp;amp;type=name" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://www.synesthesia.co.uk/blog/wp/uploads/2006/01/elve-1881-GB.thumbnail.png" alt="GB 1881 distribution of surname Elvey" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/p>
&lt;p>The &lt;a href="https://www.spatial-literacy.org/UCLnames/Map.aspx?name=ELVEY&amp;amp;year=1998&amp;amp;altyear=1881&amp;amp;country=GB&amp;amp;type=name" target="_blank" rel="noopener">1998 map&lt;/a> is less useful – even though the spelling I use (Elve) is reasonably well-established, there is no mention of it in the database. So for 1998 I again searched on the “Elvey” spelling.&lt;/p>
&lt;p>&lt;a href="https://www.spatial-literacy.org/UCLnames/Map.aspx?name=ELVEY&amp;amp;year=1998&amp;amp;altyear=1881&amp;amp;country=GB&amp;amp;type=name" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://www.synesthesia.co.uk/blog/wp/uploads/2006/01/elve-1998-GB.thumbnail.png" alt="GB 1998 distribution of surname Elvey" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/p>
&lt;p>Nevertheless an interesting site.&lt;/p>
&lt;p>[&lt;a href="https://www.spatial-literacy.org/UCLnames/default.aspx" target="_blank" rel="noopener">surname profiler&lt;/a> found via &lt;a href="https://www.knipe.org.uk/blogs/garry/" target="_blank" rel="noopener">A day in the life of a middle manager&lt;/a>]&lt;/p></description></item><item><title>Some miscellaneous stuff</title><link>https://www.synesthesia.co.uk/2006/01/18/some-miscellaneous-stuff/</link><pubDate>Wed, 18 Jan 2006 21:29:26 +0000</pubDate><guid>https://www.synesthesia.co.uk/2006/01/18/some-miscellaneous-stuff/</guid><description>&lt;p>This place has been looking rather dormant – and I realised that I was sinking into a negative loop – the longer I didn’t write here, the harder it seemed to start. So consider this a metaphorical “get in there and &lt;em>do&lt;/em> something”…&lt;/p>
&lt;p>It’s not that I’ve not been busy – but a lot of that has been the sort of things I don’t write here (details of work stuff, and family life etc.) – and the things of which I might write have seemed so absorbing at the time that writing has not been on the agenda.&lt;/p>
&lt;p>One thing that has been taking up a bit of time is a programming project to provide a web remote control to ITunes – [bliki]WebTunes[/bliki]. Unfortunately not much further than a proof of concept (spare time programming with something as complex as .Net is far from efficient!), but I might post some code if anyone is interested.&lt;/p>
&lt;p>The other thing that has led to a few late nights is “looking for dead people” as someone described it – a resurgent interest in some family history research. I’ve fairly reliably traced my paternal line (Elve) back to the early 1800’s, and one of my mother’s ancestors ( Micklewright) back to about 1820. There are significantly more sources online than when I last looked at this about five years ago, but again I’m coming to the point where I can see a need to track down some primary sources – and that was where I lost steam before!&lt;/p>
&lt;p>A few online resources that I have found useful in different ways: &lt;a href="https://www.ancestry.com/" target="_blank" rel="noopener">ancestry.com&lt;/a>, &lt;a href="https://www.genesreunited.com/" target="_blank" rel="noopener">Genes Reunited&lt;/a> and &lt;a href="https://www.familysearch.org/" target="_blank" rel="noopener">FamilySearch.org&lt;/a>.&lt;/p>
&lt;p>I shall stop now whilst I’m ahead.&lt;/p></description></item><item><title>An experience of Dialogue</title><link>https://www.synesthesia.co.uk/2005/10/11/an-experience-of-dialogue/</link><pubDate>Tue, 11 Oct 2005 20:43:12 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/10/11/an-experience-of-dialogue/</guid><description>&lt;p>Earlier this week I had the opportunity to join an evening of &lt;a href="https://www.johnniemoore.com/blog/archives/001110.php" target="_blank" rel="noopener">Dialogue&lt;/a> co-hosted by &lt;a href="https://www.johnniemoore.com/blog" target="_blank" rel="noopener">Johnnie Moore&lt;/a>, Alok Singh and Mark Hodge.&lt;/p>
&lt;p>I’ve played a little with dialogue a few years ago as part of a (now defunct) group that was looking at how a group of independent professionals could develop a self-sustaining, learning, network – we had a few good results but the group dissolved. So I was very pleased to get the invite to &lt;cite>“Common Sense – an invite to join a group dialogue into the possibilities for deeper connections within a group”&lt;/cite>.&lt;/p>
&lt;p>In this short account I’ll try to give a sense of how the evening went, at least from a personal perspective, with a few thoughts about the flow, how to increase the chances of it happening again and some questions.&lt;/p>
&lt;p>&lt;strong>The experience&lt;/strong>&lt;/p>
&lt;p>Ten of us gathered at the venue – an alternative business space called &lt;a href="https://www.the-hub.net/" target="_blank" rel="noopener">The Hub&lt;/a> in Islington. This was slightly out-of-comfort zone stuff for me, but it rapidly became apparent that no-one knew everyone – for all of us at least some of the group were strangers. After some initial ice-breaking we sat in a rough circle of chairs…. and began to talk. Inevitably a little bit about the possibilities for groups to connect deeply to make things happen, but soon the conversation began to have a life of its own.&lt;/p>
&lt;p>At first I felt a little self-conscious (others reflected back that they had similar feelings), but (reflecting from afterwards) it was clear that within about 20-30 minutes I was beginning to lose awareness of myself and become absorbed into the talk. It was from about this time that the group began to have long silences in between conversational exchanges. During the silences (which felt quite comfortable to me) I began to be aware of some of the feelings that I associate with being in a state of light trance, i.e. a sense of relaxation, reduced pulse and breathing, a feeling of being happy to follow the group wherever it went, combined with a feeling that if I had wanted to act in some particular direction I could have done so. Unlike trance there was no feeling of drowsiness – rather at those moments the sensation was one of awareness and concentration without effort.&lt;/p>
&lt;p>These moments were fleeting, and within a few minutes we would be back into a flow of conversation – and to me these conversational interludes immediately after the deep silences often felt very much “in the head” as opposed to the grounded bodily feeling of the silences. However as the conversation went on, the silences became deeper and, almost at the end, there was a sense, hardly more than a fleeting glance, of the trance-like feeling carrying over into the conversation and suddenly it was as if we were dancing a piece we all knew. The nearest sensation I can describe where I have felt this before was many (many!) years ago when I used to do a lot of cycling, when occasionally a small group out on a ride would fall into a pattern of &lt;a href="https://purpleslurple.net/ps.php?theurl=https://www.haweracyclingclub.co.nz/cycling_jargon.htm#purp689" target="_blank" rel="noopener">“through and off”&lt;/a> without any kind of instruction, and with concentration keep it going for several miles.&lt;/p>
&lt;p>And then it was the end. And something left the room, some energy suddenly wasn’t there.&lt;/p>
&lt;p>In our final conversation, as people made their individual exits, I noticed, and commented, that I felt energised and refreshed. Although nearly two-and-a-half hours of intense listening and concentration had passed since I’d arrived, slightly late, somewhat frazzled by a rush-hour journey across London at the end of a full working day, I felt more awake at the end of the session than at the beginning.&lt;/p>
&lt;p>&lt;strong>Pre-framing&lt;/strong>&lt;/p>
&lt;p>Clearly there were a number of factors that contributed to the success of the evening. Not least of these, in my opinion, was that we were a self-selecting group who by the very fact of being there had an interest in experimentation, probable prior experience in working in ad-hoc groups and an interest in &lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0415149126%2526location=/o/ASIN/0415149126%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" target="_blank" rel="noopener">Dialogue&lt;/a>. Secondly, the invitation had pointed us at three specific pieces of reading: the original David Bohm &lt;a href="https://www.infed.org/archives/e-texts/bohm_dialogue.htm" target="_blank" rel="noopener">Proposal On Dialogue&lt;/a>, Alok’s own paper on &lt;a href="https://www.johnniemoore.com/blog/archives/synthesis.pdf" target="_blank" rel="noopener">The Group Unconscious&lt;/a> and &lt;a href="https://www.syntonyquest.org/elcTree/resourcesPDFs/ThrivingConversations.pdf" target="_blank" rel="noopener">The Conditions for Thriving Conversations&lt;/a> by Kathia and Alexander Laszlo.&lt;/p>
&lt;p>&lt;strong>Some questions&lt;/strong>&lt;/p>
&lt;p>I think many of us would want to repeat the experiment. Some of the questions that go through my mind in regards to this:&lt;/p>
&lt;ul>
&lt;li>How quickly could we start creating the group trance / dance next time?&lt;/li>
&lt;li>What difference would it make if the group membership were a little bit (or a lot) different?&lt;/li>
&lt;li>What else could we do to encourage the rapid forming of group flow?&lt;/li>
&lt;/ul></description></item><item><title>Bookshelf</title><link>https://www.synesthesia.co.uk/2005/10/05/bookshelf/</link><pubDate>Wed, 05 Oct 2005 07:15:20 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/10/05/bookshelf/</guid><description>&lt;p>Borrowing an &lt;a href="https://matt.blogs.it/2005/10/04.html#a2015" target="_blank" rel="noopener">idea&lt;/a> from &lt;a href="https://matt.blogs.it/" target="_blank" rel="noopener">Matt&lt;/a>, my current “nearest-to-hand” bookshelf is:&lt;/p>
&lt;div class="centrepic">
&lt;img src="https://www.synesthesia.co.uk/blog/images/Books20051005.jpg" alt="Bookshelf 05-10-2005" />
&lt;/div>
&lt;ul>
&lt;li>&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=1591391342%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/1591391342%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" target="_blank" rel="noopener">Strategy Maps&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/09/25/working-in-the-twenty-first-century/" target="_blank" rel="noopener">Working in the Twenty-First Century&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=1563272652%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/1563272652%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" target="_blank" rel="noopener">Proactive Risk Management: Controlling Uncertainty in Product Development&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=1861975074%2526location=/o/ASIN/1861975074%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" target="_blank" rel="noopener">Co-opetition&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0875847161%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0875847161%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" target="_blank" rel="noopener">Competing for the Future&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://tinyurl.com/cuwwa" target="_blank" rel="noopener">Thinking Strategically&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0743260872%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0743260872%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" target="_blank" rel="noopener">Competitive Advantage&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Unintended consequences…</title><link>https://www.synesthesia.co.uk/2005/09/29/unintended-consequences/</link><pubDate>Thu, 29 Sep 2005 06:45:19 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/09/29/unintended-consequences/</guid><description>&lt;p>…or, what if the things you believe are fundamental to keeping your society together are in some way linked to the negative effects that you see around you?&lt;/p>
&lt;p>That might be the sort of question you ask after reading a &lt;a href="https://moses.creighton.edu/JRS/2005/2005-11.html" target="_blank" rel="noopener">study&lt;/a> published in the &lt;a href="https://moses.creighton.edu/JRS/" target="_blank" rel="noopener">Journal of Religion &amp;amp; Society&lt;/a> which suggests that a high level of religious belief may harm a society.&lt;/p>
&lt;p>As &lt;a href="https://www.timesonline.co.uk/article/0,,2-1798944,00.html" target="_blank" rel="noopener">reported in the Times&lt;/a>, the study, &lt;a href="https://moses.creighton.edu/JRS/2005/2005-11.html" target="_blank" rel="noopener">Cross-National Correlations of Quantifiable Societal Health with Popular Religiosity and Secularism in the Prosperous Democracies&lt;/a> looks at data across the first world Western democracies, and examines both the level of overt belief in God / disbelief in evolution and the occurrence of various societal measures such as homicides, early mortality, STDs, teenage pregancy and abortion. The paper finds strong correlations between the general level of religiosity in a society and high levels of these negative measures.&lt;/p>
&lt;p>The author is clear that this is an initial study of the correlation between data sets, and does not hypothesise a causal link, however he does include a call to arms for social sicences to examine these issues more closely.&lt;/p>
&lt;p>Ironically, the scientific method, which to-date has been shown to be the most effective way of exploring links between events “out there” and putative causes is, I suspect, likely to be the last thing that members of a highly religious society will turn to.&lt;/p>
&lt;p>&lt;a href="https://moses.creighton.edu/JRS/pdf/2005-11.pdf" target="_blank" rel="noopener">Print version of paper [PDF]&lt;/a>&lt;/p>
&lt;p>[ via &lt;a href="https://www.voidstar.com/node.php?id=2541" target="_blank" rel="noopener">Voidstar&lt;/a>]&lt;/p></description></item><item><title>For once, a tale of good customer service</title><link>https://www.synesthesia.co.uk/2005/09/27/for-once-a-tale-of-good-customer-service/</link><pubDate>Tue, 27 Sep 2005 07:11:33 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/09/27/for-once-a-tale-of-good-customer-service/</guid><description>&lt;p>&lt;a href="https://weblog.garyturner.net/archives/001807.html" target="_blank" rel="noopener">Like Gary Turner&lt;/a>, I recently suffered a garage-burglary in which the scumbags helped themselves to a couple of bikes. Luckily though my insurance company works with &lt;a href="https://www.wheelies.co.uk/" target="_blank" rel="noopener">Wheelies Direct&lt;/a> to handle cycle-replacement claims.&lt;/p>
&lt;p>The staff at Wheelies have been friendly and helpful all the way from validating the details of the bikes I lost (they know their stuff) through to selecting &lt;a href="https://www.wheelies.co.uk/bikesNew/bikeDetail.asp?ID=843&amp;amp;supplier=SPECIALIZED" target="_blank" rel="noopener">replacement&lt;/a> &lt;a href="https://www.wheelies.co.uk/bikesNew/bikeDetail.asp?ID=1536&amp;amp;supplier=SPECIALIZED" target="_blank" rel="noopener">bikes&lt;/a> and dealing swiftly with some transit damage to one of the replacements. It would be worth asking your insurance company who they use to handle such cases.&lt;/p>
&lt;p>Going through the saga of reporting the theft and getting the replacements has served as a good wake-up call about actually using them again, and doing something about my appalling fitness level. Unfortunately, &lt;a href="https://weblog.garyturner.net/archives/001830.html" target="_blank" rel="noopener">also like Gary&lt;/a>, I’ve discovered the potential for too long a break from cycling to cause lung-coughing-up symptoms upon resumption of the habit!&lt;/p></description></item><item><title>Working in the Twenty-First Century</title><link>https://www.synesthesia.co.uk/2005/09/25/working-in-the-twenty-first-century/</link><pubDate>Sun, 25 Sep 2005 09:33:57 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/09/25/working-in-the-twenty-first-century/</guid><description>&lt;p>I’ve been reading &lt;a href="https://www.tomorrowproject.net/twentyfirst_century.html" target="_blank" rel="noopener">Working in the Twenty-First Century&lt;/a>, which describes itself as &lt;cite title="Working in the Twenty-First Century">an evidenced-based look at the future of work in the UK over the next 20 years&lt;/cite> by Michael Moynagh and Richard Worsley, published by the &lt;a href="https://www.esrc.ac.uk" target="_blank" rel="noopener">Economic and Social Research Council&lt;/a> and &lt;a href="https://www.tomorrowproject.net/" target="_blank" rel="noopener">The Tomorrow Project&lt;/a>.&lt;/p>
&lt;p>Four main themes emerge from the report:&lt;/p>
&lt;p>The British economy will (be forced to) move up the value chain, changing the nature of the jobs that are available. There will be an amplification of the “hourglass effect”, as jobs in the middle disappear, leading to an economy divided between highly-skilled, high-value work and low-paid service workers.&lt;/p>
&lt;p>The UK labour market will continue to be tight, squeezing the supply of key skills and leading to attempts to try and boost labour supply. Areas of likely change are an increase in older workers, an increasing reliance on workers from outside the UK and further moves to greater equality of opportunity for women.&lt;/p>
&lt;p>The way people will work will be subject to drastic change (for example a huge rise in mobile working, enabled by technology) but there will be less change in the way they are employed – the authors see a majority remaining in full-time employment. The organisations which provide that employment are likely to adopt a range of structures, from the traditional to newer forms such as virtual and networked organisations.&lt;/p>
&lt;p>The nature of work and the management-worker relationship will change as new forms of motivation become the norm, at least at the high-value end of the economy. Here the report authors see that companies will be forced to allow greater autonomy and worker empowerment in order to meet the market demand for customised, responsive services. By contrast, companies providing services in the low-wage, low-value, low-skill service areas are unlikely to see the need to take on the cost of more flexible management methods.&lt;/p>
&lt;p>There’s a &lt;a href="https://www.tomorrowproject.net/" target="_blank" rel="noopener">Tomorrow Project&lt;/a> event to discuss the book on 6th October – so I should be blogging some more after that.&lt;/p></description></item><item><title>Problem with iTunes 5 and D-Link DSL-G604T</title><link>https://www.synesthesia.co.uk/2005/09/24/problem-with-itunes-5-and-d-link-dsl-g604t/</link><pubDate>Sat, 24 Sep 2005 19:00:17 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/09/24/problem-with-itunes-5-and-d-link-dsl-g604t/</guid><description>&lt;p>I’ve been having a problem with DNS failures on my home setup for the last week or so. So, it would appear, have a &lt;a href="https://www.expansys.fr/forumthread.asp?code=110551&amp;amp;thread=603" target="_blank" rel="noopener">lot&lt;/a> of &lt;a href="https://forums.broadbandbuyer.co.uk/forum_posts.asp?TID=3611&amp;amp;get=last" target="_blank" rel="noopener">other&lt;/a> &lt;a href="https://bbs.adslguide.org.uk/showflat.php?Cat=&amp;amp;Board=dslrouter&amp;amp;Number=2025896&amp;amp;page=0&amp;amp;view=expanded&amp;amp;sb=5&amp;amp;o=0&amp;amp;fpart" target="_blank" rel="noopener">people&lt;/a> with similar setups, and it turns out to be the fault of Apple who introduced a version of &lt;a href="https://www.apple.com/macosx/features/bonjour/" target="_blank" rel="noopener">Bonjour&lt;/a> into iTunes for Windows version 5.&lt;/p>
&lt;p>D-Link have published a &lt;a href="ftp://ftp.dlink.co.uk/dsl_routers_modems/dsl-g604t/DSL-G604T-Setup_For_Itunes_v5.pdf">workaround&lt;/a>, but the answer seems to be to &lt;a href="https://www.apple.com/itunes/download/" target="_blank" rel="noopener">install version 5.0.1 of iTunes&lt;/a>…&lt;/p>
&lt;p>&lt;ins datetime="2005-09-24T22:32:49+00:00">Update: It seems that even with 5.01 of iTunes installed you still need to put in the ISP DNS server address in the Windows network config to keep Windows working&lt;/ins>&lt;/p></description></item><item><title>A synchronicity of KM?</title><link>https://www.synesthesia.co.uk/2005/09/20/a-synchronicity-of-km/</link><pubDate>Tue, 20 Sep 2005 18:30:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/09/20/a-synchronicity-of-km/</guid><description>&lt;p>&lt;a href="https://blogs.salon.com/0002007/" target="_blank" rel="noopener">Dave Pollard&lt;/a> has written about &lt;a href="https://blogs.salon.com/0002007/2005/09/19.html#a1278" target="_blank" rel="noopener">the psychology of information, or why we don’t share stuff&lt;/a>, the organisational and human factors that impede knowledge-sharing:&lt;/p>
&lt;blockquote cite="https://blogs.salon.com/0002007/2005/09/19.html#a1278">
&lt;ol>
&lt;li>
Bad news rarely travels upwards in organizations
&lt;/li>
&lt;li>
People share information generously peer-to-peer, but begrudgingly upwards, and sparingly downwards in organizational hierarchies.
&lt;/li>
&lt;li>
People find it easier and more satisfying to reinvent the wheel.
&lt;/li>
&lt;li>
People only accept and internalize information that fits with their mental models and frames.
&lt;/li>
&lt;li>
People cannot readily differentiate useful information from useless information.
&lt;/li>
&lt;li>
The true cost of acquiring information and the cost of not knowing are both greatly underestimated in most organizations.
&lt;/li>
&lt;li>
People know more than they can tell, and tell more than they can write down.
&lt;/li>
&lt;li>
People can internalize information presented graphically more easily and fully than information presented as text, and understand information conveyed through stories better than information presented analytically.
&lt;/li>
&lt;li>
Most people want their friends, and even people they don&amp;#8217;t know, to succeed, and people they dislike to fail and this has a bearing on their information-sharing behaviour.
&lt;/li>
&lt;li>
People are averse to sharing information orally, and even more averse to sharing it in written form, if they perceive any risk of it being misused or misinterpreted.
&lt;/li>
&lt;li>
People are generally reluctant to admit they don&amp;#8217;t know, or don&amp;#8217;t understand, something.
&lt;/li>
&lt;li>
People don&amp;#8217;t take care of shared information resources.
&lt;/li>
&lt;li>
In some organizations, internal competition mitigates against open sharing of information.
&lt;/li>
&lt;li>
Some modest people underestimate the value of what they know.
&lt;/li>
&lt;li>
We all learn differently.
&lt;/li>
&lt;li>
Rewards for sharing knowledge don&amp;#8217;t work.
&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>The point, of course, being that it’s almost nothing to do with the technology.&lt;/p>
&lt;p>At almost the same time, &lt;a href="https://www.hyperorg.com/blogger/" target="_blank" rel="noopener">David Weinberger&lt;/a> has published an &lt;a href="https://www.kmworld.com/publications/magazine/index.cfm?action=readarticle&amp;amp;article_id=2224&amp;amp;publication_id=142" target="_blank" rel="noopener">article&lt;/a> in &lt;a href="https://www.kmworld.com/" target="_blank" rel="noopener">KM World&lt;/a> about the impact of the social software tools that &lt;a href="https://theobvious.typepad.com/blog/" target="_blank" rel="noopener">Euan&lt;/a> has managed to sneak in “under the radar”… where again the emphasis has been on using the lightest-possible technology to support conversations.&lt;/p>
&lt;p>Interesting juxtaposition.&lt;/p></description></item><item><title>Whose folksonomy is it?</title><link>https://www.synesthesia.co.uk/2005/09/16/whos-folksonomy-is-it/</link><pubDate>Fri, 16 Sep 2005 07:00:36 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/09/16/whos-folksonomy-is-it/</guid><description>&lt;p>In &lt;a href="https://www.plasticbag.org/archives/2005/09/how_to_build_on_bubbleup_folksonomies.shtml" target="_blank" rel="noopener">how to build on bubble-up folksonomies&lt;/a> &lt;a href="https://www.plasticbag.org/" target="_blank" rel="noopener">Tom Coates&lt;/a> says:&lt;/p>
&lt;blockquote cite="https://www.plasticbag.org/archives/2005/09/how_to_build_on_bubbleup_folksonomies.shtml">
&lt;p>
[&amp;#8230;] The concept is really simple &amp;#8211; there are concepts in the world that can be loosely described as being made up of aggregations of other smaller component concepts. In such systems, if you encourage the tagging of the smallest component parts, then you can aggregate those tags up through the whole system. You get &amp;#8211; essentially &amp;#8211; free metadata on a whole range of other concepts [&amp;#8230;]
&lt;/p>
&lt;/blockquote>
&lt;p>and goes on to play with ideas for aggregating tags on radio songs into folksonomic descriptions of aggregates of those songs (radio shows, albums) and aggregations of aggregations (a radio station, an artist’s body of work).&lt;/p>
&lt;p>Reading it I was struck by a link to something I wrote about a year ago on &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/11/24/semantic-aggregation-and-filtering/" target="_blank" rel="noopener">semantic aggregation and filtering&lt;/a> (I’m using aggregation to refer to a slightly different thing in that post) – so from that I would add to Tom’s idea the possiblity for allowing new tags to be added to describe different entities in the aggregation – e.g. directly tagging the shows as well as using tags derived from the tags applied to the songs.&lt;/p>
&lt;p>Tom goes on to suggest that by using the links between these emergent tags you could lead people to new-to-them material that reflected the best example of things they may like – “best” being determined in a &lt;a href="https://www.synesthesia.co.uk/blog/wiki/The&amp;#43;Wisdom&amp;#43;of&amp;#43;Crowds">Wisdom-of-Crowds-like&lt;/a> way by the station’s listeners.&lt;/p>
&lt;p>The concept makes immense sense from the perspective of a broadcaster that is seeking to create new metadata about material, and to provide listeners with the most engaging experience.&lt;/p>
&lt;p>From the perspective of a listener though, I’d like another layer. Alongside the “transmitter-side” aggregation of metadata from the broadcaster based on the tags submitted by their listeners, I’d like a “receiver-side” metadata aggregator that aggregates &lt;em>my&lt;/em> tags across all the media I’ve ever listened to over time – and on top of that a way of comparing “my” folksonomy with “their” folksonomies so that I can find new artists or stations that I am likely to enjoy.&lt;/p></description></item><item><title>A Simplified Approach to Enterprise Architecture</title><link>https://www.synesthesia.co.uk/2005/09/01/a-simplified-approach-to-enterprise-architecture/</link><pubDate>Thu, 01 Sep 2005 11:50:29 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/09/01/a-simplified-approach-to-enterprise-architecture/</guid><description>&lt;p>[bliki]Enterprise Architecture[/bliki] is one of those &lt;a href="https://purpleslurple.net/ps.php?theurl=https://www.gutenberg.org/dirs/etext91/lglass18h.htm#purp2487" target="_blank" rel="noopener">Humpty-Dumpty-like words&lt;/a> that conveniently mean whatever you want them to mean.&lt;/p>
&lt;p>I’ve also found that a lot of people have a violent antipathy to the term, as for them it summons up the spectre of IT geeks piling layers of jargon and obfuscation on top of their common-sense understandings of how a set of systems fit together with the business they serve. Add in a healthy dose of scepticism about the use of any jargon by someone who is trying to spend your money, and you wonder why any of us continue to use the term at all.&lt;/p>
&lt;p>What I’ve found useful is to confine use of the words “Enterprise” and “Architecture” (together or apart) to those occasions when I’m talking to people from the IT world – for dealing with colleagues I resort to pictures. Although it’s incredibly tedious to manage big, comprehensive, models without specialist tools, for the level of conversation needed with most business colleagues I’ve found that fairly simple diagrams suffice.&lt;/p>
&lt;p>The sort of situation I’d use this in would be to discuss with a business unit manager how changes to processes in their area would impact on the systems that support them (or conversely to explore the business impact of a technology change).&lt;/p>
&lt;p>Keeping the diagram simple is an important part of making the conversation manageable – the key is to only show what is really necessary to help people make better decisions.&lt;/p>
&lt;p>Here’s a generic example of the sort of thing I mean:&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://www.synesthesia.co.uk/blog/images/genericentarch.gif" alt="Generic Simplified Enterprise Architecture Diagram" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Of course this also relies on segmenting the areas you work with into sufficiently small and de-coupled chunks that one person can hold the key links in their head. This is an aspect of technological architecture that is (I believe) often missed in the quest for “economies of scale” – but that’s another post!&lt;/p></description></item><item><title>Update on Strategy Reading</title><link>https://www.synesthesia.co.uk/2005/08/31/update-on-strategy-reading/</link><pubDate>Wed, 31 Aug 2005 15:58:52 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/08/31/update-on-strategy-reading/</guid><description>&lt;p>Over the summer I’ve been spending more time reading than writing, but even then the reading has been going more slowly than I expected! Just finished [bliki]Thinking Strategically[/bliki] and started to wrap my thoughts around [bliki]Strategy Maps[/bliki].&lt;/p>
&lt;p>Unlike the &lt;a href="https://www.synesthesia.co.uk/blog/wiki/Thinking&amp;#43;Strategically" target="_blank" rel="noopener">previous&lt;/a> &lt;a href="https://www.synesthesia.co.uk/blog/wiki/CoOpetition" target="_blank" rel="noopener">books&lt;/a> in my strategy reading which have focused on the [bliki]Game Theory[/bliki] approach to strategy, this book is more aligned to the &lt;a href="https://www.synesthesia.co.uk/blog/wiki/Core&amp;#43;Competence">core competence&lt;/a> / &lt;a href="https://www.synesthesia.co.uk/blog/wiki/Resource&amp;#43;Based&amp;#43;View">resource-based view&lt;/a> of the firm.&lt;/p>
&lt;p>Strategy Maps are a visual way of drawing out the cause-and-effect relationships between the strategic success factors of a company, the internal goals that lead to them, the internal strengths that contribute to those goals and the necessary tangible and intangible infrastructure needed to develop those strengths. The authors bring in their earlier work on the [bliki]Balanced Scorecard[/bliki] by suggesting the map is stratified along the balanced scorecard axes of Financial, Customer, Internal and People/Knowledge factors.&lt;/p>
&lt;p>My short-term goal is to look for a way to combine this approach with some elements of [bliki]Enterprise Architecture[/bliki] to create a pragmatic model for building strategic systems development plans.&lt;/p></description></item><item><title>Where to intervene in a system</title><link>https://www.synesthesia.co.uk/2005/08/31/where-to-intervene-in-a-system/</link><pubDate>Wed, 31 Aug 2005 15:08:21 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/08/31/where-to-intervene-in-a-system/</guid><description>&lt;p>&lt;a href="https://www.developerdotstar.com/index.html" target="_blank" rel="noopener">Developer.*&lt;/a> has published &lt;a href="https://www.developerdotstar.com/mag/articles/places_intervene_system.html" target="_blank" rel="noopener">Places To Intervene In a System&lt;/a> by the late &lt;a href="https://en.wikipedia.org/wiki/Donella_Meadows" target="_blank" rel="noopener">Donella Meadows&lt;/a>, with an afterword by &lt;a href="https://www.donaldegray.com/" target="_blank" rel="noopener">Don Gray&lt;/a> applying the thinking to software devleopment. Thought-provoking stuff – Meadows herself &lt;a href="https://purpleslurple.net/ps.php?theurl=https://www.developerdotstar.com/printable/mag/articles/places_intervene_system.html#purp62" target="_blank" rel="noopener">cautions&lt;/a> that the essay &lt;cite title="https://purpleslurple.net/ps.php?theurl=https://www.developerdotstar.com/printable/mag/articles/places_intervene_system.html#purp62">is not a recipe for finding leverage points. Rather it’s an invitation to think more broadly about system change&lt;/cite>.&lt;/p>
&lt;p>In summary (original numbering scheme!), places to think about intervening:&lt;/p>
&lt;ol start="9">
&lt;li>
&lt;p>Numbers&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Material stocks and flows&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Regulating negative feedback loops&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Driving positive feedback loops&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Information flows&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The rules of the system&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The power of self-organisation&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The goals of the system&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The paradigm or mindset out of which the goals, rules and feedback structure arose.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>[ via &lt;a href="https://www.jrothman.com/weblog/2005/08/interventions.html" target="_blank" rel="noopener">Johanna Rothman&lt;/a>]&lt;/p></description></item><item><title>The Impact Of Podcasting On Paid-for Content</title><link>https://www.synesthesia.co.uk/2005/07/12/the-impact-of-podcasting-on-paid-for-content/</link><pubDate>Tue, 12 Jul 2005 13:35:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/07/12/the-impact-of-podcasting-on-paid-for-content/</guid><description>&lt;p>A &lt;a href="https://static2.podcatch.com/blogs/gems/snedit/cn05Jul02.mp3" target="_blank" rel="noopener">podcast&lt;/a> and related &lt;a href="https://archive.scripting.com/2005/07/02" target="_blank" rel="noopener">blog post&lt;/a> from &lt;a href="https://archive.scripting.com/" target="_blank" rel="noopener">Dave Winer&lt;/a> [via &lt;a href="https://doc.weblogs.com/2005/07/03#whyDrmIsEbwuPartN" target="_blank" rel="noopener">Doc Searls&lt;/a>] makes some important points about the true impact of DRM on the media industry, and led me to start thinking about the strategic forces at play in the current “Internet will eat the Media” debate.&lt;/p>
&lt;p>In this post I summarise his key points, and then build on them to produce a &lt;a href="https://www.synesthesia.co.uk/blog/wiki/Value&amp;#43;Net">value net&lt;/a> analysis of the media industry from the perspective of the current incumbents. In later posts I will look at the analysis from the perspective of the people who create the content and devlop some thinking on the strategies open to both parties.&lt;/p>
&lt;p>&lt;strong>The Dave Winer view&lt;/strong>&lt;/p>
&lt;p>In the &lt;a href="https://static2.podcatch.com/blogs/gems/snedit/cn05Jul02.mp3" target="_blank" rel="noopener">podcast&lt;/a> Dave draws strong parallels between the current rush of music, audiobook and video producers to adopt various strong forms of DRM to the practices of the software industry in the 80’s when copy-protection of software was common. What was once the industry norm rapidly fell out of favour as companies began to get lots of negative reactions from paying customers who wanted to do sensible things like make backup copies of the software.&lt;/p>
&lt;p>The introduction of tools to circumvent copy-protection from companies such as Central Point Software (who &lt;a href="https://www.findarticles.com/p/articles/mi_m3563/is_n8_v10/ai_15416673" target="_blank" rel="noopener">merged with Symantec in 1994&lt;/a>) didn’t, to the surprise of the software companies, result in a sharp fall in revenues. On the contrary because software that you can backup is more useful than software you can’t, sales increased.&lt;/p>
&lt;p>Dave extrapolates some key lessons about copy protection and its aftermath:&lt;/p>
&lt;ul>
&lt;li>It makes life harder for genuine, paying customers “Locks only keep out honest people”&lt;/li>
&lt;li>Eventually, legitimate customers react badly to being treated as thieves&lt;/li>
&lt;li>The companies that thrived were the ones that listened to their customers and built features for them (in other words, they found ways to reward loyalty and honesty).&lt;/li>
&lt;/ul>
&lt;p>He goes on to suggest that companies can only get away with the reduction in perceived product value (caused by the inconveniences of DRM) whilst the majority of the customer base are too technologically naive to realise how much easier and robust their use of the material they have bought would be if they could copy files, make backups etc.&lt;/p>
&lt;p>Further, he suggests that because of the inconveniences of protected material, the takeup of digital media (in particular audiobooks) has been lower than it would otherwise have been, leaving an opportunity in terms of available listening attention that has been exploited by the explosion in podcasting. Even more, he suggests that just as tech blogging has undermined the market for paid-for technology magazines, the growth in podcasting will undermine the market for paid-for content.&lt;/p>
&lt;p>&lt;strong>Would you like an Apple with that?&lt;/strong>&lt;/p>
&lt;p>Of course the latest big change in the podcasting world has been Apple’s &lt;a href="https://www.apple.com/podcasting/" target="_blank" rel="noopener">entry&lt;/a> (podcast modifications to iTunes, combined with the addition of a podcast directory to the &lt;a href="https://www.apple.com/itunes/store/" target="_blank" rel="noopener">ITMS&lt;/a>). Dave references &lt;a href="https://www.nytimes.com/2005/07/03/business/yourmoney/03digi.html?ei=5088&amp;amp;en=d4c35012b853c2db&amp;amp;ex=1278043200&amp;amp;partner=rssnyt&amp;amp;emc=rss&amp;amp;pagewanted=all" target="_blank" rel="noopener">this New York times article&lt;/a> by Randall Stross that speculates about why Apple would make easier for users to access free content that competed with the paid-for audio content (e.g. that by &lt;a href="https://www.audible.com/" target="_blank" rel="noopener">Audible.com&lt;/a>) on ITMS.&lt;/p>
&lt;p>The answer in the article comes in the form of an analyst’s view &lt;cite title="https://www.nytimes.com/2005/07/03/business/yourmoney/03digi.html?ei=5088&amp;#038;en=d4c35012b853c2db&amp;#038;ex=1278043200&amp;#038;partner=rssnyt&amp;#038;emc=rss&amp;#038;pagewanted=all">that the podcasting phenomenon had simply become too large for Apple to ignore – it had to embrace it or resist it&lt;/cite>.&lt;/p>
&lt;p>I think it’s more straightforward than that – lots of available content is a very clear &lt;a href="https://www.synesthesia.co.uk/blog/wiki/value&amp;#43;net#CompleMentors" target="_blank" rel="noopener">complement&lt;/a> to sales of iPods, so I’d guess that Apple believes that what it might lose on lost content margin will be surpassed by increased hardware sales.&lt;/p>
&lt;p>&lt;strong>There’s A New Game in Town&lt;/strong>&lt;/p>
&lt;p>Who are the players in the online content game? Let’s pretend that we are an existing media supplier, using DRM as a way of extracting payment from our customers (and probably working from a mindset that says to do otherwise would be “giving away the family silver”).&lt;/p>
&lt;div style="text-align:center;">
&lt;img src="https://www.synesthesia.co.uk/blog/images/valuenet.gif" alt="Value Net" />
&lt;/div>
&lt;p>The easy bits of the [bliki]Value Net[/bliki] to fill in are the Customers and Suppliers. The &lt;strong>Customers&lt;/strong> of our mythical company are the people who give us money for the services we provide – in this case this is the end-user who is prepared to hand over cash in return for a protected copy of one of our pieces of content. Our &lt;strong>Suppliers&lt;/strong> are the people to whom we give money in return for services or goods – primarily in this case the content creators who are prepared to sell us the distribution rights on their material in return for money (either up front or in the form of royalties).&lt;/p>
&lt;p>&lt;strong>Complementors&lt;/strong> come in two forms, the first and more obvious of which is the group of players who increase demand for the services our company offers. So in this case that would typically be the people who manufacture audio devices and the aggregation/e-trading sites that lead people to our services – hence the tie-up between &lt;a href="https://www.audible.com/" target="_blank" rel="noopener">Audible.com&lt;/a> and Apple &lt;a href="https://www.apple.com/itunes/store/" target="_blank" rel="noopener">ITMS&lt;/a>. The second form of Complementor is the group of other customers of our suppliers who, collectively with our demand, drive up the overall size of the Supplier market and reduce prices. I’m not sure how that model applies to knowledge creations (as opposed to physical goods) so will pass over that factor for the moment.&lt;/p>
&lt;p>&lt;strong>Substitutors&lt;/strong>, like Complementors, come in two flavours. The first group are people or companies who provide goods or services to our Customers which reduce their desire to give us money for our goods or services. The obvious group here are other media suppliers who may tempt away “our” customers with a more attractive offering. An important, and growing, subset of this group are content creators themselves, using the dis-intermediating technologies of the internet to build direct relationships with the people who want to enjoy their creative work. Whether they are charging, and thus drawing money away from our services, or providing free content that competes for the attention of our customers, the more such alternatives exist the harder we will find it to continue drawing in money.&lt;/p>
&lt;p>The second group of Substitutors are media providers who compete with us for the attention of our content Suppliers. Providers who can offer a more attractive deal to content creators are likely to be their preferred route. This might be a matter of more money for their work, it might also be less tangible rewards such as greater exposure, being seen “in good company” etc. Again, a growing subset of this group of Substitutors will be groupings of content creators who find ways to gain economies of scale without needing an internediate organisation.&lt;/p>
&lt;p>The &lt;strong>Added Value&lt;/strong> of the media company comes from several inter-related roots, all of which relate to the “middle man” role. One group of these relate to the aggregation role played by a media company. As a &lt;a href="https://www.synesthesia.co.uk/blog/wiki/Content&amp;#43;Aggregator">content aggregator&lt;/a> our company makes it possible for a given viewer/listener to find stuff that interests them. As an &lt;a href="https://www.synesthesia.co.uk/blog/wiki/Audience&amp;#43;Aggregator">audience aggregator&lt;/a> we bring together a group of viewers/listeners who like certain types of material.&lt;/p>
&lt;p>Both of these lead us to the role of an [aggregator of funding][14] – either advertising funds drawn by our aggregated audience, subscription funds drawn by our aggregated content or public funds drawn by our ability to deliver certain sorts of content to certain parts of the audience. All of these ways of adding value work because they facilitate the flow of money to the content creators and the flow of interesting content to the viewers and listeners.&lt;/p>
&lt;p>The other main class of value-adding activity comes from the control of the means of distribution in a broadcast-based world – there have traditionally been high [costs of entry][15] to these markets because of the investment in technology, licences etc. Traditionally these barriers to entry created a situation where there was a shortage of routes for material to get to the people who wanted to watch, listen to or read it, and because there was a scarcity of distribution routes there was the possiblity to extract money for the use of one.&lt;/p>
&lt;p>In [bliki]PARTS analysis[/bliki] &lt;strong>Rules&lt;/strong> cover everything from laws and contracts to “unwritten rules” of how a market operates. By far the most powerful of these sets of rules in this context are the contractual provisions around the rights to broadcast in different territories. Historically media companies were able to extract very broad rights from content creators in return for access to money and a distribution medium.&lt;/p>
&lt;p>The &lt;strong>Tactics&lt;/strong> traditionally used by media companies have revolved around controlling the methods of distribution and using their considerable financial muscle to oppose any technological change which threatened that control.&lt;/p>
&lt;p>The &lt;strong>Scope&lt;/strong> of this game used to be constrained to “professionals” – largely because of the [costs of entry][15]. This too is an area that is especially vulnerable to imposed change because of technology development.&lt;/p>
&lt;p>&lt;strong>Playing To Win&lt;/strong>&lt;/p>
&lt;p>In the paragraphs above I’ve (briefly) outlined the strategic position of our traditional media company. The beauty of the [bliki]Value Net[/bliki] as an analysis tool is that you can take any of the players and place them in the centre of their own net, thus helping enormously with the task of [thinking allocentrically][16]. I think the other interesting group (and one that is often overlooked) are the people who create the content in the first place. I’ll save analysis of their Value Net for another post. Also to follow is a look at the strategies that are open to the players.&lt;/p>
&lt;p>&lt;strong>Coda&lt;/strong>&lt;/p>
&lt;p>As a footnote – listening to (and making notes on) &lt;a href="https://archive.scripting.com/" target="_blank" rel="noopener">DW&lt;/a>‘s 40+ minute podcast reminded me of [Euan][17]‘s post [Less is More][18] – the essential argument about the true market impact of DRM could have been made in a few hundred words of text – perhaps more labour to produce but easier to analyse!&lt;/p>
&lt;p>[14]: /blog/wiki/Funding Aggregator
[15]: /blog/wiki/Cost+Of+Entry
[16]: &lt;a href="https://www.synesthesia.co.uk/blog/wiki/Allocentric&amp;#43;Thinking" target="_blank" rel="noopener">https://www.synesthesia.co.uk/blog/wiki/Allocentric+Thinking&lt;/a>
[17]: &lt;a href="https://theobvious.typepad.com/blog/" target="_blank" rel="noopener">https://theobvious.typepad.com/blog/&lt;/a>
[18]: &lt;a href="https://theobvious.typepad.com/blog/2005/06/more_is_less.html" target="_blank" rel="noopener">https://theobvious.typepad.com/blog/2005/06/more_is_less.html&lt;/a>&lt;/p></description></item><item><title>A List I Don’t Mind</title><link>https://www.synesthesia.co.uk/2005/07/12/a-list-i-dont-mind/</link><pubDate>Tue, 12 Jul 2005 10:49:47 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/07/12/a-list-i-dont-mind/</guid><description>&lt;p>&lt;a href="https://headrush.typepad.com/creating_passionate_users/" target="_blank" rel="noopener">Kathy Sierra&lt;/a> has written a &lt;a href="https://headrush.typepad.com/creating_passionate_users/2005/07/ten_tips_for_ne.html" target="_blank" rel="noopener">great post&lt;/a> on the “Whats” and “Hows” of being a good teacher/trainer. &lt;a href="https://www.johnniemoore.com/blog/archives/001034.php" target="_blank" rel="noopener">Unlike Johnnie Moore&lt;/a> I’m not worried about lists if they give you useful information in a digestible form – especially if (as in Kathy’s post) the list is supported with references to online and book reading for those who want to explore further.&lt;/p>
&lt;p>My favourite?&lt;/p>
&lt;blockquote cite="https://headrush.typepad.com/creating_passionate_users/2005/07/ten_tips_for_ne.html">
&lt;p>
8) Know a little something about &amp;#8220;the Socratic method&amp;#8221;. Know why it&amp;#8217;s far more important that you ask the good questions rather than supply all the answers.
&lt;/p>
&lt;/blockquote></description></item><item><title>London Atrocities</title><link>https://www.synesthesia.co.uk/2005/07/09/london-atrocities/</link><pubDate>Sat, 09 Jul 2005 09:52:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/07/09/london-atrocities/</guid><description>&lt;p>There’s been an &lt;a href="https://technorati.com/search/%22london&amp;#43;bombing%22" target="_blank" rel="noopener">outpouring&lt;/a> of blog &lt;a href="https://www.technorati.com/search/news.bbc.co.uk/1/hi/in_depth/uk/2005/london_explosions/default.stm" target="_blank" rel="noopener">entries&lt;/a> about this week’s &lt;a href="https://news.bbc.co.uk/1/hi/in_depth/uk/2005/london_explosions/default.stm" target="_blank" rel="noopener">events&lt;/a> but strangely I’ve felt no desire to write myself until now.&lt;/p>
&lt;p>I was lucky – running late for work I was still waiting at my suburban tube station when the network was shut down. That meant I spent the day at home, watching things slowly unfold on the net and the TV. Like many others I know people who were more closely affected, though so far as I know so far all have had lucky escapes.&lt;/p>
&lt;p>The desire not to write (until now) has I think been to do with my own preferred way of dealing with new and disturbing events in the world – in that sense at least I am an introspective person. I’ve discussed things with people close to me, but not felt that there was something I wanted to write.&lt;/p>
&lt;p>I’ve used the tube since Thursday, and like &lt;a href="https://www.johnniemoore.com/blog/archives/001032.php" target="_blank" rel="noopener">others&lt;/a> admit to being a little more wary, a little more alert to what was going on around me – but not really any more so than during &lt;a href="https://news.bbc.co.uk/onthisday/hi/dates/stories/april/24/newsid_2523000/2523345.stm" target="_blank" rel="noopener">other&lt;/a> &lt;a href="https://news.bbc.co.uk/1/hi/uk/1201444.stm" target="_blank" rel="noopener">times&lt;/a> when terrorists were active in this city.&lt;/p>
&lt;p>But as the days pass the other emotions come to the surface – anger that this has happened in the city that has been my adopted home for nearly twenty years, a belief that the most one individual can do is be determined to get on with their life and enjoy &lt;a href="https://www.london.gov.uk/news/2005/bombing-statement-080705.jsp" target="_blank" rel="noopener">the freedom that London grants&lt;/a>, and a feeling of utter contempt for the perpetrators who think they can drag us down to their level.&lt;/p>
&lt;p>The London News Review says it &lt;a href="https://www.lnreview.co.uk/news/005167.php" target="_blank" rel="noopener">bluntly&lt;/a>, Ken Livingstone has risen to a &lt;a href="https://www.london.gov.uk/news/2005/bombing-statement-080705.jsp" target="_blank" rel="noopener">surprisingly good level of oratory&lt;/a> and unsurprisingly &lt;a href="https://www.plasticbag.org/archives/2005/07/a_reaction_to_the_last_thirtysix_hours.shtml" target="_blank" rel="noopener">Tom Coates&lt;/a> has said almost exactly what I wanted to say about not writing before I did.&lt;/p>
&lt;p>It happened. I feel very sorry for those who have lost loved ones or suffered life-changing injuries, and extend them all the empathy in the world. And now the people who live here are going to just get on with things.&lt;/p>
&lt;p>The end.&lt;/p></description></item><item><title>The Country In Your Heart</title><link>https://www.synesthesia.co.uk/2005/07/05/the-country-in-your-heart/</link><pubDate>Tue, 05 Jul 2005 09:38:29 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/07/05/the-country-in-your-heart/</guid><description>&lt;p>I’m an occasional reader of &lt;a href="https://billmon.org/" target="_blank" rel="noopener">Whiskey Bar&lt;/a> (I don’t often have the time his posts deserve) but &lt;a href="https://billmon.org/archives/001974.html" target="_blank" rel="noopener">this&lt;/a> seemed especially thought-provoking for the way it captures the feeling that the country in your heart is no longer the one you live in:&lt;/p>
&lt;blockquote cite="https://billmon.org/archives/001974.html">
&lt;p>
[&amp;#8230;]&lt;br /> It&amp;#8217;s a strange place to end up: a man without a country, grudgingly supporting the country he no longer has because the alternatives are so much worse. But that&amp;#8217;s how it goes, I guess, in this world of empires and religious fanatics.&lt;br /> [&amp;#8230;]
&lt;/p>
&lt;/blockquote></description></item><item><title>Yet another post about Google Earth</title><link>https://www.synesthesia.co.uk/2005/07/04/yet-another-post-about-google-earth/</link><pubDate>Mon, 04 Jul 2005 21:21:03 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/07/04/yet-another-post-about-google-earth/</guid><description>&lt;p>Lots of people have raved about &lt;a href="https://earth.google.com/" target="_blank" rel="noopener">Google Earth&lt;/a> (&lt;a href="https://weblog.garyturner.net/archives/001769.html" target="_blank" rel="noopener">Gary&lt;/a> for one), but for me one of the coolest features has to be the ability to overlay your own graphics which then become locked in place and move with the earth model…&lt;/p>
&lt;img align = "center" src='https://www.synesthesia.co.uk/blog/images/ge.jpg' alt='Google Earth screenshot' /></description></item><item><title>Skype me!</title><link>https://www.synesthesia.co.uk/2005/07/04/skype-me/</link><pubDate>Mon, 04 Jul 2005 20:22:03 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/07/04/skype-me/</guid><description>&lt;p>Finally got around to joining Skype – so &lt;a href="callto://julianelve">&lt;img alt="Skype Me!" src="https://goodies.skype.com/graphics/skypeme\_btn\_blue.gif" border=0/>&lt;/a>&lt;/p></description></item><item><title>Change of Licence for This Blog</title><link>https://www.synesthesia.co.uk/2005/06/28/change-of-licence-for-this-blog/</link><pubDate>Tue, 28 Jun 2005 22:54:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/06/28/change-of-licence-for-this-blog/</guid><description>&lt;p>I’ve changed the licencing for the material in this blog to pick up the recently-released UK version of the Creative Commons licence.&lt;/p>
&lt;p>Henceforth all original content created by myself and published on this website (including material previously published under different terms) is licensed under a &lt;a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/2.0/uk/">Creative Commons Attribution-NonCommercial-ShareAlike 2.0 England &amp;amp; Wales License&lt;/a>.&lt;/p>
&lt;p>&lt;a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/2.0/uk/">&lt;img alt="Creative Commons License" border="0" src="https://creativecommons.org/images/public/somerights20.gif" />&lt;/a>&lt;/p></description></item><item><title>Pattern Languages and Business Strategy</title><link>https://www.synesthesia.co.uk/2005/06/28/pattern-languages-and-business-strategy/</link><pubDate>Tue, 28 Jun 2005 22:10:21 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/06/28/pattern-languages-and-business-strategy/</guid><description>&lt;p>&lt;span style="float:right; margin:10px;">&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=1861975074%2526location=/o/ASIN/1861975074%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">&lt;img src="https://images.amazon.com/images/P/1861975074.02._SCMZZZZZZZ_.jpg" alt="Co-opetition" />&lt;/a>&lt;/span>&lt;/p>
&lt;p>I’ve been working through the &lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/06/04/developing-deliverable-strategies-post-course-reading/" target="_blank" rel="noopener">books&lt;/a> I added to my collection after the &lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/04/22/developing-deliverable-strategies/" target="_blank" rel="noopener">strategy course&lt;/a>, especially &lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=1861975074%2526location=/o/ASIN/1861975074%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" target="_blank" rel="noopener">Co-opetition&lt;/a>&lt;/p>
&lt;p>and (just started) &lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0393310353%2526location=/o/ASIN/0393310353%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" target="_blank" rel="noopener">Thinking Strategically&lt;/a>.&lt;/p>
&lt;p>&lt;span style="float:right; margin:10px; clear:right;">&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0393310353%2526location=/o/ASIN/0393310353%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">&lt;img src="https://images.amazon.com/images/P/0393310353.01._SCMZZZZZZZ_.jpg" alt="Thinking Strategically: Competitive Edge in Business, Politics and Everyday Life" />&lt;/a>&lt;/span>&lt;/p>
&lt;p>When I was on the course, especially as we started to touch on the idea that certain strategies arise inherently from the structure of any situation (especially the [bliki]Value Net[/bliki]) it occurred to me that &lt;a href="https://en.wikipedia.org/wiki/Design_pattern_%28architecture%29" target="_blank" rel="noopener">design patterns&lt;/a> may be the natural way to express the thinking in a condensed form.&lt;/p>
&lt;p>Unfortunately (in one sense) this was also a new idea to the people on the course, and as I didn’t have time to refresh my rather surface knowledge of &lt;a href="https://en.wikipedia.org/wiki/Pattern_language" target="_blank" rel="noopener">pattern languages&lt;/a> whilst I was on the course, I wasn’t really in a position to develop the thinking.&lt;/p>
&lt;p>In the spirit of &lt;a href="https://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s04.html" target="_blank" rel="noopener">release early, release often&lt;/a>, I’ve made a small &lt;a href="https://www.synesthesia.co.uk/blog/wiki/StrategyPatterns" target="_blank" rel="noopener">start&lt;/a> with this, indexed at &lt;a href="https://www.synesthesia.co.uk/blog/wiki/StrategyPatterns" target="_blank" rel="noopener">Strategy Patterns&lt;/a>, and will continue to build it as I work through the books and a review of my course notes.&lt;/p></description></item><item><title>Proactive Risk Management</title><link>https://www.synesthesia.co.uk/2005/06/28/proactive-risk-management/</link><pubDate>Tue, 28 Jun 2005 19:19:06 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/06/28/proactive-risk-management/</guid><description>&lt;p>New on the &lt;a href="https://www.synesthesia.co.uk/blog/wiki/CategoryBooks" target="_blank" rel="noopener">bookshelf&lt;/a>…&lt;/p>
&lt;p>&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=1563272652%2526tag=fivegocrazyinmid%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/1563272652%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://images.amazon.com/images/P/1563272652.01._SCMZZZZZZZ_.jpg" alt="Proactive Risk Management: Controlling Uncertainty in Product Development" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/p>
&lt;p>Proactive Risk Management, Controlling Uncertainty in Product Development&lt;/p>
&lt;p>by Preston G. Smith and Guy M. Merritt&lt;/p></description></item><item><title>MIT Weblog Survey</title><link>https://www.synesthesia.co.uk/2005/06/27/mit-weblog-survey/</link><pubDate>Mon, 27 Jun 2005 18:19:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/06/27/mit-weblog-survey/</guid><description>&lt;p>&lt;a href="https://blogsurvey.media.mit.edu/request" target="_blank" rel="noopener">&lt;img src="https://blogsurvey.media.mit.edu/images/survey-statistic.gif" alt="Take the MIT Weblog Survey" style="border:none" />&lt;/a>&lt;/p></description></item><item><title>Credit Where It’s Due</title><link>https://www.synesthesia.co.uk/2005/06/25/credit-where-its-due/</link><pubDate>Sat, 25 Jun 2005 14:36:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/06/25/credit-where-its-due/</guid><description>&lt;p>&lt;a href="https://www.ikmagazine.com/" target="_blank" rel="noopener">Inside Knowledge&lt;/a> has a great &lt;a href="https://www.ikmagazine.com/xq/asp/sid.8958E0B9-338C-457E-93BC-E245E4E779E9/articleid.1A6CE759-39C4-45CA-8C44-389FC031C967/qx/display.htm" target="_blank" rel="noopener">article&lt;/a> on the work my friend and colleague &lt;a href="https://theobvious.typepad.com/blog/" target="_blank" rel="noopener">Euan Semple&lt;/a> has been getting up to. He introduced me to blogging, so I’m really pleased to see him getting the sort of profile he deserves.&lt;/p></description></item><item><title>Brugge</title><link>https://www.synesthesia.co.uk/2005/06/04/brugge/</link><pubDate>Sat, 04 Jun 2005 05:50:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/06/04/brugge/</guid><description>&lt;p>&lt;img style = "float:left; margin-right:20px;" src='https://www.synesthesia.co.uk/blog/images/brugge01x200.jpg' alt='Brugge Belfort, view from De Tuilerieen Hotel' />I’ve just had the opportunity to spend a few days in &lt;a href="https://www.brugge.be/toerisme/en/index.htm" target="_blank" rel="noopener">Brugge&lt;/a> (the view of the Bell Tower was from my hotel window). Although the centre of town was thronged with tourists it was only a few minutes’ walk to quieter districts where the architecture is just as impressive. Tourism is clearly the main industry of the town, although there are also lots of residential districts even within the old medieval city so I guess that there must be a range of &lt;a href="https://www.bruggebusiness.com/index.php?p=subcats&amp;amp;id=3" target="_blank" rel="noopener">other businesses&lt;/a> in the outer parts. I should imagine that planning controls must be very tight, as there are no aerials or satellite dishes to be seen, and new developments in the centre seemed to be designed to blend in well with the medieval (and 19th century fake-medieval) surroundings.&lt;/p>
&lt;p>The Belgians take their beer very seriously, so a tour of the &lt;a href="https://www.halvemaan.be/PAGESENGLISH/Welkom.htm" target="_blank" rel="noopener">Half Moon Brewery&lt;/a> was near the top of the agenda. Straffe Hendrik is a sharp-flavoured blond beer that goes well with food and that I’ve not yet found a source of in the UK!&lt;/p>
&lt;p>&lt;img style = "float:right; margin-left:20px;" src='https://www.synesthesia.co.uk/blog/images/sjhm200.jpg' alt='Sint Janshuismolen windmill, Brugge' />If you are interested in things mechanical then the short walk to the eastern edge of the old city is well worth it to see the four windmills placed on the site of the old city walls. Three are displaced from elsewhere, but Sint JansHuisMolen has been on its current site for several hundred years and is the only one still working. Inside is a marvellous example of engineering in wood, with very little use of metal. Look out for the simple idea (as all good ones are in retrospect!) to control the speed of rotation of the sails – a traditional rotary governor attached to the arrangement of levers that adjusts the spacing of the mill stones – as the mill speeds up the governor forces the stones closer together, increasing the friction and providing the necessary negative feedback loop to keep the speed constant.&lt;/p></description></item><item><title>Developing Deliverable Strategies – Post Course Reading</title><link>https://www.synesthesia.co.uk/2005/06/04/developing-deliverable-strategies-post-course-reading/</link><pubDate>Sat, 04 Jun 2005 04:44:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/06/04/developing-deliverable-strategies-post-course-reading/</guid><description>&lt;p>In the &lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/04/22/developing-deliverable-strategies/" target="_blank" rel="noopener">strategy course&lt;/a> we touched on (in varying levels of detail) the three main views of company strategy – since the course finished I’ve been adding reading on all three to my “incoming” bookshelf:&lt;/p>
&lt;p>The market-focused, competitive advantage approach of Michael Porter:&lt;/p>
&lt;p>&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0743260872%2526location=/o/ASIN/0743260872%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://images.amazon.com/images/P/0743260872.01._SCMZZZZZZZ_.jpg" alt="Competitive Advantage" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/p>
&lt;p>The resource-based view of the firm, typified by Hamel and Prahalad:&lt;/p>
&lt;p>&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0875847161%2526location=/o/ASIN/0875847161%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://images.amazon.com/images/P/0875847161.02._SCMZZZZZZZ_.jpg" alt="Competing for the Future" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/p>
&lt;p>The game theory approach described by Dixit and Nalebuff:&lt;/p>
&lt;p>&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0393310353%2526location=/o/ASIN/0393310353%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://images.amazon.com/images/P/0393310353.01._SCMZZZZZZZ_.jpg" alt="Thinking Strategically: Competitive Edge in Business, Politics and Everyday Life" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/p>
&lt;p>and then popularised by by Brandenburger and Nalebuff:&lt;/p>
&lt;p>&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=1861975074%2526location=/o/ASIN/1861975074%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://images.amazon.com/images/P/1861975074.02._SCMZZZZZZZ_.jpg" alt="Co-opetition" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/p></description></item><item><title>Developing Deliverable Strategies – Trams Study 3</title><link>https://www.synesthesia.co.uk/2005/05/09/developing-deliverable-strategies-trams-study-3/</link><pubDate>Mon, 09 May 2005 19:11:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/05/09/developing-deliverable-strategies-trams-study-3/</guid><description>&lt;p>Part 3 of the pre-work for the &lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/04/22/developing-deliverable-strategies/" target="_blank" rel="noopener">strategy course&lt;/a>, based on the &lt;a href="https://www.synesthesia.co.uk/blog/wiki/Developing&amp;#43;Deliverable&amp;#43;Strategies.TramStudy" target="_blank" rel="noopener">tram company&lt;/a> fictional case study.&lt;/p>
&lt;p>Continuing the [bliki]PARTS analysis[/bliki] started in &lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/05/05/trams-study-2/" target="_blank" rel="noopener">part 2&lt;/a>, I now look at &lt;strong>Added Values&lt;/strong>. In [bliki]The Right Game[/bliki] Brandenburger and Nalebuff define Added Value as &lt;cite>“the difference between the value created with the player included and the value created by the remaining players when that player is removed”&lt;/cite>&lt;/p>
&lt;p>If we imagine the Biddiford economy without the tram company, clearly the overall income will be reduced by tram company revenues. There will be other effects too – in particular the businesses in Old Orchard Bay (which rely on the tram company as the monopoly source of transport to bring them their customers) are likely to see reduced revenues too. So the added value of the tram company is greater than the tram revenues alone.&lt;/p>
&lt;p>Just as the &lt;strong>Players&lt;/strong> &lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/05/05/trams-study-2/" target="_blank" rel="noopener">analysis&lt;/a> suggested that the Old Orchard Bay bars and restaurants were &lt;strong>Complementors&lt;/strong>, and therefore that the tram company should explore strategies that worked to mutual benefit, the &lt;strong>Added Value&lt;/strong> analysis suggests that the tram company should be able to extract more from that relationship – in one sense the bars and restaurants need the tram company more than the tram company needs them.&lt;/p></description></item><item><title>Developing Deliverable Strategies – Trams Study 2</title><link>https://www.synesthesia.co.uk/2005/05/05/trams-study-2/</link><pubDate>Thu, 05 May 2005 22:29:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/05/05/trams-study-2/</guid><description>&lt;p>More on the &lt;a href="https://www.synesthesia.co.uk/blog/wiki/Developing&amp;#43;Deliverable&amp;#43;Strategies.TramStudy" target="_blank" rel="noopener">tram company&lt;/a> pre-work for the &lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/04/22/developing-deliverable-strategies/" target="_blank" rel="noopener">strategy course&lt;/a>.&lt;/p>
&lt;p>Having identified &lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/04/25/developing-deliverable-strategies-trams-study-1/" target="_blank" rel="noopener">one option&lt;/a> fairly quickly by applying constraints thinking, I went on to use the [bliki]PARTS analysis[/bliki]:&lt;/p>
&lt;p>&lt;strong>Players&lt;/strong>&lt;/p>
&lt;p>Using the [bliki]value net[/bliki] approach, who are the various players, and what do we know about them?&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://www.synesthesia.co.uk/blog/images/valuenettram.gif" alt="ValueNet Biddiford Trams" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>&lt;strong>Customers&lt;/strong>&lt;/p>
&lt;p>The customers fall into two groups:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>The local residents&lt;/strong>&lt;/p>
&lt;p>We know that they are price-sensitive, and regard the trip to Old Orchard Bay as only one option competing for their leisure time and spend.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Peak-season tourists&lt;/strong>&lt;/p>
&lt;p>We are told that they regard the tram ride as a key feature of their visit and the fare is immaterial.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Combining these two factors gave rise to the &lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/04/25/developing-deliverable-strategies-trams-study-1/" target="_blank" rel="noopener">seasonally-adjusted pricing&lt;/a> strategy.&lt;/p>
&lt;p>&lt;strong>Suppliers&lt;/strong>&lt;/p>
&lt;p>The only suppliers mentioned are:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>The contracted-out tram maintenance company&lt;/strong>.&lt;/p>
&lt;p>They are only mentioned in passing, so it is presumed they do a reasonable job.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>The staff who work for the tram company.&lt;/strong>&lt;/p>
&lt;p>It’s noted that the staff are on flexible contracts, and that there may be an opportunity to reduce staffing by making the driver role multi-functional. Training new drivers only takes 2-3 hours so it may be reasonable to assume that finding replacements for any who leave is relatively easy. So a later part of the strategy could be to &lt;strong>reduce costs by introducing multi-skilling&lt;/strong>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Substitutors&lt;/strong>&lt;/p>
&lt;p>There don’t appear to be any – the case study describes the tram company as having an effective monopoly on transport to Old Orchard Bay. A broader consideration, however, would be to consider the tram ride as an entertainment experience, therefore the Substitutors would be competing sources of entertainment that do not require the customers to take a tram ride – e.g. the attractions in Biddiford itself.&lt;/p>
&lt;p>&lt;strong>Complementors&lt;/strong>&lt;/p>
&lt;p>The most obvious Complementors are the companies providing entertainment in Old Orchard bay, e.g. the bars and restaurants. They need the tram service to deliver their customers; the tram service needs them, to some extent, to create a demand for travel to the Bay. There may be demand stimulation strategies that are based on co-operation with Collaborators. Going further and considering how to stimulate competition amongst the Collaborators, there may be a way to exploit some kind of preferential relationship.&lt;/p></description></item><item><title>Developing Deliverable Strategies – Trams Study 1</title><link>https://www.synesthesia.co.uk/2005/04/25/developing-deliverable-strategies-trams-study-1/</link><pubDate>Mon, 25 Apr 2005 18:49:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/04/25/developing-deliverable-strategies-trams-study-1/</guid><description>&lt;p>I’ve started looking at one of the pieces of pre-work for the &lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/04/22/developing-deliverable-strategies/" target="_blank" rel="noopener">strategy course&lt;/a>.&lt;/p>
&lt;p>Summary notes of the problem are &lt;a href="https://www.synesthesia.co.uk/blog/wiki/Developing&amp;#43;Deliverable&amp;#43;Strategies.TramStudy" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>The challenge is to make the system profitable, with a strong steer to focus on increasing revenue. This post contains my first thoughts about a solution.&lt;/p>
&lt;p>My first thought was to look at the constraints in the system – how could the management increase &lt;a href="https://purpleslurple.net/ps.php?theurl=https://www.corbett-toc.com/eng/pag_09.htm#purp40" target="_blank" rel="noopener">Throughput&lt;/a> without increasing &lt;a href="https://purpleslurple.net/ps.php?theurl=https://www.corbett-toc.com/eng/pag_09.htm#purp46" target="_blank" rel="noopener">Operating Expense&lt;/a> or &lt;a href="https://purpleslurple.net/ps.php?theurl=https://www.corbett-toc.com/eng/pag_09.htm#purp43" target="_blank" rel="noopener">Investment&lt;/a>?&lt;/p>
&lt;p>It would appear that there are different constraints at different times of the year.&lt;/p>
&lt;p>In the peak summer season the trams run near capacity at all times, suggesting that there is excess demand, and the constraint is in the contribution received for each passenger carried. An easy strategy to try here would be to increase the fare price and thus the contribution per passenger carried. The case asserts that for the affluent tourists the current fare is insignificant, so the market should bear this.&lt;/p>
&lt;p>In the early and late weeks there is excess capacity on the trams that run, suggesting that the market is the constraint. The passengers are mostly locals, and are price-sensitive. A 20% price rise has created a drop of 40% in passenger numbers in the early weeks of the season. If this is reversible then reducing prices in the off-peak part of the season should be offset by increased passenger numbers.&lt;/p>
&lt;p>So strategy 1 is &lt;strong>seasonally-adjusted pricing&lt;/strong>, with a reduction in the off-peak weeks and an increase during peak periods. There is a policy constraint that requires the average fare across the season to remain at $2.&lt;/p>
&lt;p>Assuming that the price-sensitive drop in passenger numbers is reversible, then initial analysis suggests that reducing the price to $1.66 (i.e. a reduction to prices from 20 years ago) in weeks 1-13 and 25-32, combined with a price rise to $2.50 in weeks 17,18, 22-24 and to $2.60 in weeks 19-21 (the increases calculated to meet the average price constraint) will move the company to profitability, even accounting for the loss of state subsidy, wage increases and loan repayments.&lt;/p>
&lt;p>To sense-check this would need some detailed figures on capacity which are not available in the study.&lt;/p></description></item><item><title>Developing Deliverable Strategies</title><link>https://www.synesthesia.co.uk/2005/04/22/developing-deliverable-strategies/</link><pubDate>Fri, 22 Apr 2005 15:48:02 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/04/22/developing-deliverable-strategies/</guid><description>&lt;p>I’ve just received the joining instructions and pre-work for &lt;a href="https://www.som.cranfield.ac.uk/som/executive/course/overview.asp?id=82" target="_blank" rel="noopener">Developing Deliverable Strategies&lt;/a>&lt;/p>
&lt;p>There are two pieces of pre-work:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://harvardbusinessonline.hbsp.harvard.edu/b01/en/common/item_detail.jhtml?id=95402" target="_blank" rel="noopener">The Right Game: Use Game Theory to Shape Strategy&lt;/a> [&lt;a href="https://www.synesthesia.co.uk/blog/wiki/The&amp;#43;Right&amp;#43;Game" target="_blank" rel="noopener">notes&lt;/a>]&lt;/li>
&lt;li>Will Biddiford’s Trams Make a Return? [&lt;a href="https://www.synesthesia.co.uk/blog/wiki/Developing&amp;#43;Deliverable&amp;#43;Strategies.TramStudy" target="_blank" rel="noopener">notes&lt;/a>]&lt;/li>
&lt;/ul>
&lt;p>Some interesting stuff to get my teeth into!&lt;/p>
&lt;p>As I’ve noted &lt;a href="https://www.synesthesia.co.uk/blog/wiki/Developing&amp;#43;Deliverable&amp;#43;Strategies" target="_blank" rel="noopener">here&lt;/a> my learning goals are to:&lt;/p>
&lt;ul>
&lt;li>Enhance my ability to think strategically&lt;/li>
&lt;li>Gain further insight into overall business strategy and the ways to support and enhance that with technology.&lt;/li>
&lt;li>Understand the strategic drivers for organisational success.&lt;/li>
&lt;li>Acquire a toolkit for strategic thinking.&lt;/li>
&lt;li>Informal learning through networking with other delegates.&lt;/li>
&lt;/ul></description></item><item><title>Problem with OpenOffice and Ruby</title><link>https://www.synesthesia.co.uk/2005/03/25/problem-with-openoffice-and-ruby/</link><pubDate>Fri, 25 Mar 2005 08:13:38 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/03/25/problem-with-openoffice-and-ruby/</guid><description>&lt;p>I’ve been trying to automate &lt;a href="https://www.openoffice.org/" target="_blank" rel="noopener">OpenOffice&lt;/a> from &lt;a href="https://www.ruby-lang.org/" target="_blank" rel="noopener">Ruby&lt;/a> to carry out a batch format conversion of approximately 100 documents. I’ve researched a fair amount on the web, especially &lt;a href="https://www.rubygarden.org/ruby/ruby?OpenOffice" target="_blank" rel="noopener">here&lt;/a>, &lt;a href="https://www.oooforum.org/forum/viewtopic.phtml?t=3510" target="_blank" rel="noopener">here&lt;/a> and &lt;a href="https://www.oooforum.org/forum/viewtopic.phtml?t=9815" target="_blank" rel="noopener">here&lt;/a>, but I’m still having problems.&lt;/p>
&lt;p>Specifically all works until I try and save a document using parameters (to tell OpenOffice to use an output filter), at which point the OLE Bridge is giving an error.&lt;/p>
&lt;p>If anyone reading this has found and cured a similar problem I’d be interested in your thoughts. Code snip follows:&lt;/p>
&lt;p>Ignore the escaping of the ” signs – this seems to be some oddity of my WordPress installation…&lt;/p>
&lt;pre># oo tests
require 'win32ole'
$serviceManager = WIN32OLE.new("com.sun.star.ServiceManager")
$desktop = $serviceManager.createInstance("com.sun.star.frame.Desktop")
def newWriterDocument()
document = $desktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, [])
document
end
def test()
filter = "writer_pdf_Export"
fprops = makeProperties("FilterName" => filter)
document = newWriterDocument
text = document.GetText
cursor = text.createTextCursor
text.insertString(cursor, "Hello World", 0)
oURL = "file:///c|/test.pdf"
document.storeAsUrl(oURL, fprops) # this line fails with OLE error
#store a document in standard format - document.storeAsUrl(oURL, []) - works
end
def makeProperty(name, value)
property = $serviceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
property["Name"] = name
property["Value"] = value
property
end
def makeProperties(hash)
properties = []
hash.each { | key, value |
properties &amp;lt; &amp;lt; makeProperty(key, value)
}
properties
end
begin
test
rescue
ensure
end
&lt;/pre>
&lt;p>&lt;ins datetime="2005-03-29T19:00:46-01:00">Question also &lt;a href="https://www.oooforum.org/forum/viewtopic.phtml?t=18607">posted&lt;/a> to OpenOffice.org forum.&lt;/ins>&lt;/p>
&lt;p>&lt;ins datetime="2005-03-29T22:16:16-01:00">OpenOffice.org forum came up with the answer:&lt;br /> Replace &lt;/p>&lt;/p>
&lt;pre>document.storeAsUrl(oURL, fprops) # this line fails with OLE error&lt;/pre>
&lt;p>
with
&lt;/p>
&lt;pre>document.storeToUrl(oURL, fprops) # this line works!&lt;/pre>
&lt;p>
&lt;/ins>
&lt;/p></description></item><item><title>Blogroll Additions – KM blogs</title><link>https://www.synesthesia.co.uk/2005/03/22/blogroll-additions-2/</link><pubDate>Tue, 22 Mar 2005 12:02:05 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/03/22/blogroll-additions-2/</guid><description>&lt;p>&lt;a href="https://www.jackvinson.com/" target="_blank" rel="noopener">Jack Vinson&lt;/a> has helpfully &lt;a href="https://www.jackvinson.com/archives/2005/03/21/more_knowledge_management_blogs.html" target="_blank" rel="noopener">listed&lt;/a> over 20 Knowledge Management blogs that he reads regularly. I already had about half of them on my &lt;a href="https://www.synesthesia.co.uk/blog/sources/">sources list&lt;/a>, I’ve now added &lt;a href="https://coniecto.blogspot.com/" target="_blank" rel="noopener">Conniecto&lt;/a>, &lt;a href="https://nycsmith.blogspot.com/" target="_blank" rel="noopener">How do you know that?&lt;/a>, &lt;a href="https://blogs.ittoolbox.com/km/pragmatics/" target="_blank" rel="noopener">The Pragmatics of KM Equals Success&lt;/a>, &lt;a href="https://kmpipeline.blogspot.com/" target="_blank" rel="noopener">Knowledgeline&lt;/a>, &lt;a href="https://blog.mopsos.com/" target="_blank" rel="noopener">Mopsos&lt;/a>, &lt;a href="https://myndsi.blogspot.com/" target="_blank" rel="noopener">Myndsi&lt;/a>, &lt;a href="https://www.byeday.net/weblog/networkblog.html" target="_blank" rel="noopener">Networks, Complexity and Relatedness&lt;/a>, &lt;a href="https://nsl.blogspot.com/" target="_blank" rel="noopener">…no straight lines…&lt;/a>,; &lt;a href="https://reflexions.typepad.com/" target="_blank" rel="noopener">Reflexions&lt;/a>, &lt;a href="https://gionnetto.blogspot.com/" target="_blank" rel="noopener">Scrapbook of My Life&lt;/a>, &lt;a href="https://incsub.org/soulsoup/" target="_blank" rel="noopener">SoulSoup&lt;/a>, &lt;a href="https://www.rzuser.uni-heidelberg.de/~x28/en/" target="_blank" rel="noopener">x28’s Blog&lt;/a> and &lt;a href="https://www.yafle.com/" target="_blank" rel="noopener">yet another f*$#&amp;amp;@! learning experience&lt;/a>&lt;/p></description></item><item><title>The tools I use fall into two camps…</title><link>https://www.synesthesia.co.uk/2005/03/21/the-toools-i-use/</link><pubDate>Mon, 21 Mar 2005 20:56:36 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/03/21/the-toools-i-use/</guid><description>&lt;p>…browser-based and thick-client.&lt;/p>
&lt;p>I’ve been coming back to the use of a wiki in the work environment, again with project teams, for rapid development of specifications and management of action lists.&lt;/p>
&lt;p>Two things that struck me, after spending a large chunk of the working day creating and editing stuff in a group of browser tabs. Firstly, that this is a really good way of developing a set of inter-related ideas; secondly, how it made periodic checking of my &lt;a href="https://www.bloglines.com/public/synesthesia" target="_blank" rel="noopener">Bloglines&lt;/a> feeds list and various email accounts less disruptive: it’s far easier and faster to &lt;code>Ctrl-PageDown&lt;/code> to the next &lt;a href="https://www.mozilla.org/products/firefox/" target="_blank" rel="noopener">Firefox&lt;/a> tab than it is to switch context between browser, email client and word processor. &lt;em>(And as you will note, implicit in that statement there is also my view that &lt;a href="https://www.mozilla.org/products/firefox/tabbed-browsing.html" target="_blank" rel="noopener">tabbed browsing&lt;/a> is vastly more efficient than the &lt;a href="https://www.microsoft.com/windows/ie/default.mspx" target="_blank" rel="noopener">non-tabbed variety&lt;/a>.)&lt;/em>&lt;/p>
&lt;p>I think there may be a clue here about what needs to be done to increase the use of blogs and wikis in a corporate setting – if you look at the user patterns within browser-based tools and the more traditional thick-client set of email-wordprocesssor-spreadsheet it is much easier to switch and share within each sub-system than between them.&lt;/p>
&lt;p>It’s an idea I’ve touched on &lt;a href="https://www.synesthesia.co.uk/wiki/IntraBliki.UsersCanKeepTheirExistingTools" target="_blank" rel="noopener">before&lt;/a>; the question remains will we see an end-to-end solution from Microsoft? Or will the independent tool vendors and the Open Source community be able to come up with something first?&lt;/p></description></item><item><title>Spring has Sprung</title><link>https://www.synesthesia.co.uk/2005/03/20/spring-has-sprung/</link><pubDate>Sun, 20 Mar 2005 19:00:17 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/03/20/spring-has-sprung/</guid><description>&lt;p>Lots of signs of Spring this weekend:&lt;/p>
&lt;ul>
&lt;li>Buds on the Birch trees in the local woods&lt;/li>
&lt;li>An invasion of frogs to the small pond in my garden&lt;/li>
&lt;li>The first wafts of barbecue smoke&lt;/li>
&lt;/ul></description></item><item><title>Reinventing Radio</title><link>https://www.synesthesia.co.uk/2005/03/16/reinventing-radio/</link><pubDate>Wed, 16 Mar 2005 10:19:21 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/03/16/reinventing-radio/</guid><description>&lt;p>&lt;a href="https://www.plasticbag.org/" target="_blank" rel="noopener">Tom Coates&lt;/a> has posted the &lt;a href="https://www.plasticbag.org/files/misc/radio.pdf" target="_blank" rel="noopener">slides&lt;/a> from &lt;a href="https://conferences.oreillynet.com/cs/et2005/view/e_sess/5981" target="_blank" rel="noopener">Reinventing Radio: Enriching Broadcast with Social Software&lt;/a> – the presentation given by him, &lt;a href="https://www.interconnected.org/home" target="_blank" rel="noopener">Matt Webb&lt;/a>, &lt;a href="https://www.paulhammond.org/" target="_blank" rel="noopener">Paul Hammond&lt;/a> and &lt;a href="https://www.hackdiary.com/" target="_blank" rel="noopener">Matt Biddulph&lt;/a> at the &lt;a href="https://conferences.oreillynet.com/etech/" target="_blank" rel="noopener">O’Reilly Emerging Technologies&lt;/a> conference&lt;/p></description></item><item><title>Shopping around for DVD rental by post</title><link>https://www.synesthesia.co.uk/2005/03/10/shopping-around-for-dvd-rental-by-post/</link><pubDate>Thu, 10 Mar 2005 12:04:51 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/03/10/shopping-around-for-dvd-rental-by-post/</guid><description>&lt;p>Renting DVDs by post is all the rage these days.&lt;/p>
&lt;p>I’ve been enjoying a free trial from Lovefilm.com, but as it draws to a close was debating whether to continue as a paying customer. Via &lt;a href="https://london-underground.blogspot.com/2005_03_01_london-underground_archive.html#111039304173150693" target="_blank" rel="noopener">Going Underground&lt;/a> my attention was drawn to the similar service offered by Sainsbury’s. (Not linking because I don’t want to give either of them Google-juice.) I got part way through signing up for the free trial but was bounced as an existing member – you’ve guessed it, the Sainsbury’s service is operated for them by Lovefilm.com.&lt;/p>
&lt;p>Nothing very exciting there you might think, until you compare the prices for similar services. &lt;strong>Bear in mind these services are being offered by the same company&lt;/strong>:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Service&lt;/th>
&lt;th>Lovefilm.com&lt;/th>
&lt;th>Sainsbury’s DVD Rental&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1 DVD at a time&lt;/td>
&lt;td>£9.99 / mth&lt;/td>
&lt;td>£7.97 / mth&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2 DVDs at a time&lt;/td>
&lt;td>£12.99 / mth&lt;/td>
&lt;td>£11.47 / mth&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3 DVDs at a time&lt;/td>
&lt;td>£14.99 / mth&lt;/td>
&lt;td>£13.97 / mth&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4 DVDs at a time&lt;/td>
&lt;td>£19.99 / mth&lt;/td>
&lt;td>£19.99 / mth&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Presumably Sainsbury’s buying market share by discounting their part of the revenue?&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;ins datetime="2005-03-10T13:07:0200:00">Update: Found a &lt;a href="https://www.dvd-rental-guide.co.uk/">DVD Rental Service comparison&lt;/a>&lt;/ins>&lt;/p></description></item><item><title>Connecting People With Content</title><link>https://www.synesthesia.co.uk/2005/03/09/connecting-people-with-content/</link><pubDate>Wed, 09 Mar 2005 07:51:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/03/09/connecting-people-with-content/</guid><description>&lt;p>&lt;a href="https://www.anecdote.com.au/" target="_blank" rel="noopener">Shawn Callahan&lt;/a> &lt;a href="https://www.anecdote.com.au/archives/2005/02/new_white_paper.html" target="_blank" rel="noopener">points&lt;/a> to his own white paper &lt;a href="https://www.anecdote.com.au/papers/ConnectingPeoplewithContent.pdf" target="_blank" rel="noopener">Using Content To Create Connections Among People&lt;/a> [PDF] that advocates (in a style accessible to the non-techie) the use of blogs, feeds and aggregators as a more flexible solution (compared with a grand “knowledge repository”) to sharing knowledge within a company and between a company and its customers.&lt;/p></description></item><item><title>Update on Getting Things Done</title><link>https://www.synesthesia.co.uk/2005/03/08/update-on-getting-things-done/</link><pubDate>Tue, 08 Mar 2005 12:02:46 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/03/08/update-on-getting-things-done/</guid><description>&lt;p>Here’s an update on my &lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/02/28/getting-things-done/" target="_blank" rel="noopener">experiences&lt;/a> with setting up the &lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0749922648%2526location=/o/ASIN/0749922648%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" target="_blank" rel="noopener">Getting Things Done&lt;/a> method:&lt;/p>
&lt;ul>
&lt;li>Weekly review still takes 2+ hours (that includes doing a few small tasks, and last week a complete clear up of all the paper piles on my desk);&lt;/li>
&lt;li>Still keeping the email box empty, still feeling the psychological benefits;&lt;/li>
&lt;li>Increased tendency to write up meeting notes within 24 hours (good for me and for colleagues);&lt;/li>
&lt;li>General sense of feeling more organised;&lt;/li>
&lt;/ul>
&lt;p>Next challenge – incorporating blogging and other outside-work projects into the plan.&lt;/p></description></item><item><title>Getting Things Done</title><link>https://www.synesthesia.co.uk/2005/02/28/getting-things-done/</link><pubDate>Mon, 28 Feb 2005 22:00:30 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/02/28/getting-things-done/</guid><description>&lt;p>&lt;a href="https://www.synesthesia.co.uk/blog/archives/2005/01/20/five-and-a-half-weeks/" target="_blank" rel="noopener">2005 is looking like an interesting year&lt;/a>, but for the last week or two it’s been looking as though that might be &lt;em>interesting&lt;/em> as in the &lt;a href="https://www.bbc.co.uk/dna/hub/A807374" target="_blank" rel="noopener">allegedly Chinese way&lt;/a>. I’ve been starting to feel somewhat overwhelmed by details, had caught myself forgetting a couple of fairly important things and decided that Something Had To Be Done!&lt;/p>
&lt;p>Few people can have escaped hearing about David Allen’s book &lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0749922648%2526location=/o/ASIN/0749922648%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon" target="_blank" rel="noopener">Getting Things Done&lt;/a>.&lt;a href="https://www.amazon.co.uk/exec/obidos/redirect?tag=fivegocrazyinmid%26link_code=xm2%26camp=2025%26creative=165953%26path=https://www.amazon.co.uk/gp/redirect.html%253fASIN=0749922648%2526location=/o/ASIN/0749922648%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon" target="_blank" rel="noopener">&lt;img style="float:right; margin: 10px;" src="https://images.amazon.com/images/P/0749922648.02._SCMZZZZZZZ_.jpg" alt="Getting Things Done: The Art of Stress-free Productivity" />&lt;/a> As well as Allen’s own site describing the &lt;a href="https://www.davidco.com/tips_tools/tip32.html" target="_blank" rel="noopener">process&lt;/a>, there’s a rash of &lt;a href="https://del.icio.us/tag/gtd" target="_blank" rel="noopener">other sites&lt;/a> describing variants and implementations. Definitely the meme-of-the-moment when it comes to personal productivity.&lt;/p>
&lt;p>I’ve been following a few links on the subject for a few weeks, but the thing that swung it for me was reading Dave Pollard’s descriptions of how he &lt;a href="https://blogs.salon.com/0002007/2004/11/25.html" target="_blank" rel="noopener">selected&lt;/a>, &lt;a href="https://blogs.salon.com/0002007/2004/11/30.html" target="_blank" rel="noopener">planned&lt;/a>, &lt;a href="https://blogs.salon.com/0002007/2004/12/08.html" target="_blank" rel="noopener">implemented&lt;/a> and &lt;a href="https://blogs.salon.com/0002007/2004/12/23.html" target="_blank" rel="noopener">improved&lt;/a> the Allen approach. Dave is a prolific writer and a busy consultant, so I reasoned that if it worked for him then it might work for me.&lt;/p>
&lt;p>Although &lt;abbrev title="Getting Things Done">GTD&lt;/abbrev> is a tool-agnostic &lt;a href="https://www.davidco.com/tips_tools/tip32.html" target="_blank" rel="noopener">process&lt;/a>, an awful lot of the debate around it seems to be about which tools in which configurations work the best. Tempted as my inner geek was to explore some of the more &lt;a href="https://www.geekanddiva.com/tikiwiki/tiki-index.php?page=GettingThingsDoneOnwikidPad" target="_blank" rel="noopener">innovative uses of personal wikis&lt;/a>, the pragmatic part of me kept pointing out that I spend my working life in an environment in which Outlook and Exchange (especially email) are the core tools for moving work around.&lt;/p>
&lt;p>Since the point of the exercise is to get things done, rather than spend forever thinking about the best way to configure the toolset, I decided it was time to use someone else’s ideas. The best resources I found were Allen’s guide to &lt;a href="https://www.davidco.com/productDetail.php?id=43&amp;amp;IDoption=9" target="_blank" rel="noopener">Getting Things Done With Microsoft Outlook&lt;/a> (PDF, $10) combined with Bill Kratz’s insight about &lt;a hre="https://home.comcast.net/~whkratz/id3.htm">managing projects as Outlook Contact items&lt;/a>.&lt;/p>
&lt;p>I spent a couple of hours setting things up at the end of Friday: configuring my Outlook categories, tasks and a new contacts folder for projects; archiving the accumulated email in my inbox; setting up the first few projects and tasks from the things I knew had been happening; finding and adapting a &lt;a href="https://michaelhyatt.blogs.com/workingsmart/2004/06/how_to_automate.html" target="_blank" rel="noopener">macro to automate the setup of Weekly Review tasks&lt;/a>.&lt;/p>
&lt;p>This morning I had scheduled time to do a first pass through a &lt;a href="https://www.davidco.com/tips_tools/tip16.html" target="_blank" rel="noopener">Weekly Review&lt;/a> before getting on with previously-scheduled work. The first time through this took nearly two hours (about double the time I expected), a sign perhaps of just how chaotic my work-in-progress had become.&lt;/p>
&lt;p>During the day I’ve found it quite easy to follow the discipline of marking tasks off as done, reviewing the task lists in any “float” time (not that there has been much of that), delegating or creating new tasks as stuff comes in. Perhaps the most liberating thing has been having an empty email inbox – it’s amazing how much difference that made to my energy levels and ability to keep working without distraction. When emails did appear the urge to restore the pristine blankness created more than enough incentive to deal with them immediately.&lt;/p>
&lt;p>The most immediate negative effect I’ve noticed is that I over-scheduled in terms of work I could reasonably do. By the time that a couple of meetings had over-run, and I’d dealt with an “urgent and important” that came up, I found that there was one reasonably-significant task and a couple of middling ones that just didn’t happen.&lt;/p>
&lt;p>So summing up how I feel about it after day one:&lt;/p>
&lt;p>&lt;strong>Good things&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>The process seemed to work smoothly after the initial setting-up.&lt;/li>
&lt;li>Having an empty or almost-empty email inbox feels wonderful!&lt;/li>
&lt;li>I’ve already learned something about my tendency to over-schedule. If this means I can reduce my feelings of being over-loaded &lt;em>and&lt;/em> give more realistic delivery dates to people then this could be a huge benefit.&lt;/li>
&lt;li>I’m already starting to feel some benefit from not having to remember everything.&lt;/li>
&lt;li>Clearing my mind of some of the things I was carrying around in my head has meant that other things (which would otherwise have been forgotten) are starting to surface.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Not so good things&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>I scheduled too much work into the day, so not everything got done.&lt;/li>
&lt;li>Clearing my mind of some of the things I was carrying around in my head has meant that other things (which would otherwise have been forgotten) are starting to surface – so I still have a feeling of lots of things that I need to remember. (&lt;em>I expect this one to go on for a few days as I slowly move stuff from my head to the system.&lt;/em>)&lt;/li>
&lt;li>It felt a bit strange writing things down as they came in.&lt;/li>
&lt;/ul>
&lt;p>I’ll write about this again when it’s had a chance to bed in.&lt;/p></description></item><item><title>Talking about Time</title><link>https://www.synesthesia.co.uk/2005/02/27/talking-about-time/</link><pubDate>Sun, 27 Feb 2005 15:11:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/02/27/talking-about-time/</guid><description>&lt;p>&lt;strong>Time Lines&lt;/strong>&lt;/p>
&lt;p>Where’s your future?&lt;/p>
&lt;p>Where’s your past?&lt;/p>
&lt;p>Puzzled?&lt;/p>
&lt;p>Let me re-phrase that.&lt;/p>
&lt;p>Think of something mundane that is going to happen tomorrow – perhaps brushing your teeth in the morning. Notice where you represent that idea, in the space around or inside you. Think now of something a little further into the future – next week perhaps – and notice where that is.&lt;/p>
&lt;p>Repeat for a couple of other things, perhaps your next birthday or Christmas.&lt;/p>
&lt;p>Now think about the past – an event yesterday, last week, last year, earlier in your life. Notice where in the space around or inside you that you think of those things.&lt;/p>
&lt;p>Imagine now a line that joins up all of those points – from your furthest past memory through the current moment and on into the future. In NLP that imaginary line is called your &lt;a href="https://www.synesthesia.co.uk/blog/wiki/TimeLine" target="_blank" rel="noopener">time line&lt;/a>, a metaphor that is used in a great many forms of powerful personal changework. For the moment just notice where the current moment is – specifically is it inside or outside your body?&lt;/p>
&lt;p>&lt;strong>Metaphors of Time&lt;/strong>&lt;/p>
&lt;p>All languages use space or position as a metaphor for time. The idea that the metaphors we use are closely bound to the way we structure our thoughts was first expressed a quarter of a century ago by &lt;a href="https://www.linguistics.berkeley.edu/lingdept/Current/people/facpages/lakoffg.html" target="_blank" rel="noopener">Lakoff&lt;/a> and &lt;a href="https://darkwing.uoregon.edu/~uophil/faculty/mjohnson/mjohnson.html" target="_blank" rel="noopener">Johnson&lt;/a> in &lt;a href="https://www.amazon.co.uk/exec/obidos/ASIN/0226468011/fivegocrazyinmid/" target="_blank" rel="noopener">Metaphors We Live By&lt;/a>. Inspired by Lakoff and Johnson the early developers of NLP began to create the &lt;a href="https://www.synesthesia.co.uk/blog/wiki/TimeLine" target="_blank" rel="noopener">time line&lt;/a> model.&lt;/p>
&lt;p>Many processes have been developed that use the metaphor of &lt;em>Time As A Line&lt;/em> to change the way people think about the past, the present and the future. Metaphor is a meta-stating process (i.e. a thought about a thought) so immediately adds a level of [bliki]disassociation[/bliki], a powerful tool to allow people to think about challenging events in their lives without being swamped in feelings.&lt;/p>
&lt;p>As a coach I find that talking people through an exploration of how they think about life using the metaphor of a time line to guide reflection, re-consider past events or rehearse alternative futures is a very powerful conversational intervention.&lt;/p>
&lt;p>&lt;strong>In-Time and Through-Time&lt;/strong>&lt;/p>
&lt;p>Remember I asked you to pay particular attention to where you represented your sense of the current moment? Lakoff and Johnson observed that in Indo-European language-speakers there is approximately a 50-50 split between people who think of the current moment as being inside their body and people who think of the current moment as being outside their body, usually just in front of them. NLP labels these two most common representations of the passage of time as [bliki]In Time[/bliki] and [bliki]Through Time[/bliki] respectively.&lt;/p>
&lt;p>A lot of changework processes use manipulation of these mental models as a way of accessing new ways of thinking. For example how good are you at future planning? If you feel that you could do better then try imagining future events in a more [bliki]Through Time[/bliki] way i.e. mapped out in front of you as if on a wallchart or planner and see what difference that makes. Many people find a positive difference from this sort of work, but nearly everyone expresses some inner tension or discomfort when they first try to think of time in a different way – these models go right to the core of our way of being in the world and change can have significant effects on the way we perceive things.&lt;/p>
&lt;p>&lt;strong>The Connection Between Language and Thought&lt;/strong>&lt;/p>
&lt;p>Further work by Lakoff and Johnson, and many others in the field of &lt;a href="https://www.google.co.uk/search?q=%22cognitive&amp;#43;linguistics%22" target="_blank" rel="noopener">cognitive linguistics&lt;/a>, has extended the thinking – for example &lt;a href="https://66.102.9.104/search?q=cache:By6bbQseJzwJ:www.cogsci.northwestern.edu/cogsci2004/papers/paper575.pdf&amp;amp;hl=en" target="_blank" rel="noopener">this study&lt;/a>.&lt;/p>
&lt;p>New research shows that the metaphor which is used could depend on the native language of the person concerned. Laura Spinney, in the &lt;a href="https://www.guardian.co.uk/" target="_blank" rel="noopener">Guardian&lt;/a> article &lt;a href="https://www.guardian.co.uk/life/feature/story/0,13026,1423455,00.html" target="_blank" rel="noopener">How Time Flies&lt;/a> [via &lt;a href="https://www.plasticbag.org/archives/2005/02/three_stunning_articles_in_the_guardian_this_morning.shtml" target="_blank" rel="noopener">Tom Coates&lt;/a>] reports on research by &lt;a href="https://www.cogsci.ucsd.edu/~nunez/web/index.html" target="_blank" rel="noopener">Rafael Núñez&lt;/a> and &lt;a href="https://www.linguistics.berkeley.edu/lingdept/Current/people/facpages/sweetser.html" target="_blank" rel="noopener">Eve Sweetser&lt;/a> with the Aymara people from the Chilean Andes. There’s more detail in this &lt;a href="https://www.sussex.ac.uk/Users/vyv/Languagememoryandtime.ppt" target="_blank" rel="noopener">presentation&lt;/a> from &lt;a href="https://www.sussex.ac.uk/Users/vyv/" target="_blank" rel="noopener">Vyv Evans&lt;/a> at the University of Sussex which summarises the field and has a long list of references to follow.&lt;/p>
&lt;p>The Aymara study is the first documented research finding evidence of a group of people with a reversed sense of time. When talking about long time spans the Aymara seem to have a [bliki]Through Time[/bliki] model, when talking about shorter periods (up to several generations) they seem to exhibit a reversed [bliki]In Time[/bliki] model, with the past in front and the future behind:&lt;/p>
&lt;blockquote cite="https://www.guardian.co.uk/life/feature/story/0,13026,1423455,00.html">
&lt;p>
When they talked about very wide time spans, their gestures indicated that they conceived of it spanning from left to right, excluding themselves. But when they talked about shorter spans, several generations say, the axis was front-back, with them at point zero. The gestures of the old man and the woman discussing their grandparents confirmed that they really did think of the past as in front of them.
&lt;/p>
&lt;/blockquote>
&lt;p>This particular and (so far) unique way of modelling time seems intimately associated with the Aymara language:&lt;/p>
&lt;blockquote cite="https://www.guardian.co.uk/life/feature/story/0,13026,1423455,00.html">
&lt;p>
In 1975, Andrew Miracle and Juan de Dios Yapita Moya, both at the University of Florida, observed that q&amp;#8221;ipüru , the Aymara word for tomorrow, combines q&amp;#8221;ipa and uru , the word for day, to produce a literal meaning of &amp;#8220;some day behind one&amp;#8217;s back
&lt;/p>
&lt;p>
[&amp;#8230;]
&lt;/p>
&lt;p>
Aymara marks whether the speaker saw the action happen or not: &amp;#8220;Yesterday my mother cooked potatoes (but I did not see her do it).&amp;#8221;
&lt;/p>
&lt;p>
If these markers are left out, the speaker is regarded as boastful or a liar. Thirty years ago, Miracle and Yapita pointed to the often incredulous responses of Aymara to some written texts: &amp;#8220;&amp;#8216;Columbus discovered America&amp;#8217; &amp;#8211; was the author actually there?&amp;#8221; In a language so reliant on the eyewitness, it is not surprising that the speaker metaphorically faces what has already been seen: the past.
&lt;/p>
&lt;/blockquote>
&lt;p>From an NLP approach we might predict some consequences from this model – in particular we might speculate that the Aymara would not have a well-developed sense of future planning because the future is literally behind them – this seems to be born out by Miracle and Yapita’s observation of the “great patience” of the Aymara. (&lt;cite>The Aymara Language and Its Social and Cultural Context&lt;/cite>)&lt;/p>
&lt;p>&lt;strong>Making Time Work For You&lt;/strong>&lt;/p>
&lt;p>So how do you think about time?&lt;/p>
&lt;p>What happens if you move those representations around?&lt;/p>
&lt;p>Play with your timeline and see what happens…&lt;/p></description></item><item><title>Site Upgrade</title><link>https://www.synesthesia.co.uk/2005/02/22/site-upgrade/</link><pubDate>Tue, 22 Feb 2005 13:19:28 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/02/22/site-upgrade/</guid><description>&lt;p>Upgraded the site to &lt;a href="https://wordpress.org/development/2005/02/strayhorn/" target="_blank" rel="noopener">WordPress 1.5&lt;/a> without too many headaches. Please let me know of any bugs.&lt;/p></description></item><item><title>Does it work?</title><link>https://www.synesthesia.co.uk/2005/02/05/does-it-work/</link><pubDate>Sat, 05 Feb 2005 11:08:34 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/02/05/does-it-work/</guid><description>&lt;p>New on the &lt;a href="https://www.synesthesia.co.uk/blog/sources/">blogroll&lt;/a> is &lt;a href="https://www.selfworks.net/blog/doesitworkdiary/" target="_blank" rel="noopener">The “Does it Work?” Diary&lt;/a> from my friend Clare Walker.&lt;/p>
&lt;p>She’s taken on the challenge of documenting “Which personal development techniques actually work”, and amongst other things is documenting a self-experiment on the positive affect on mood obtained by &lt;a href="https://doesitworkdiary.blogspot.com/2005_01_24_doesitworkdiary_archive.html" target="_blank" rel="noopener">abstaining from watching television news&lt;/a>.&lt;/p>
&lt;p>She says:&lt;/p>
&lt;blockquote cite="https://doesitworkdiary.blogspot.com/2005_01_24_doesitworkdiary_archive.html">
&lt;p>
I&amp;#8217;m not certain why this may work, but suspect that:
&lt;/p>
&lt;p>
1) The bias of most news is depressing (eg an emphasis on crime, disaster, problems, etc)&amp;#8230;.(And yes, I know that the media can do tremendous good by highlighting poverty, disasters and destruction, but if in the end we&amp;#8217;re all too depressed to respond, that isn&amp;#8217;t, in fact very useful).
&lt;/p>
&lt;p>
2) Most of this is illustrated with pictures (which people&amp;#8217;s unconscious minds just lap up).
&lt;/p>
&lt;p>
3) Watching television is known to induce an alpha-brain-wave, trance-like state
&lt;/p>
&lt;p>
(the very same state in which it&amp;#8217;s also easiest to create positive emotional change too).
&lt;/p>
&lt;p>
4) I watch most TV news at night&amp;#8230;which is also the time I think of for both myself and my students as being the most powerful for personal development and changework. (Something to do perhaps with tiredness after the day inducing that all-important alpha brain-wave state again.
&lt;/p>
&lt;/blockquote>
&lt;p>Try it for yourself!&lt;/p>
&lt;p>&lt;ins datetime="2005-1-11T9:51:19-0:00">Updated link to Clare’s new location at &lt;a href="https://www.selfworks.net/blog/doesitworkdiary/">&lt;a href="https://www.selfworks.net/blog/doesitworkdiary/" target="_blank" rel="noopener">https://www.selfworks.net/blog/doesitworkdiary/&lt;/a>&lt;/a>&lt;/ins>&lt;/p></description></item><item><title>Five and a half weeks</title><link>https://www.synesthesia.co.uk/2005/01/20/five-and-a-half-weeks/</link><pubDate>Thu, 20 Jan 2005 08:00:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2005/01/20/five-and-a-half-weeks/</guid><description>&lt;p>That’s how long since I posted here.&lt;/p>
&lt;p>Some of that has been down to winter solstice ennui.&lt;/p>
&lt;p>Some of it down to spending time with loved ones over the Christmas and New Year period.&lt;/p>
&lt;p>Some of it because of work stuff (which I don’t write about here)&lt;/p>
&lt;p>Some of it because of some painful transitions in a close relationship, and the transformative change that has followed.&lt;/p>
&lt;p>And some of it because I am busy on a new project which you can expect to see mentioned here in the next couple of months.&lt;/p>
&lt;p>2005 is going to be an interesting year!&lt;/p></description></item><item><title>Appliances as small pieces loosely joined</title><link>https://www.synesthesia.co.uk/2004/12/13/appliances-as-small-pieces-loosely-joined/</link><pubDate>Mon, 13 Dec 2004 22:52:25 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/12/13/appliances-as-small-pieces-loosely-joined/</guid><description>&lt;p>A fascinating series of posts by Leslie Michael Orchard at &lt;a href="https://www.decafbad.com/" target="_blank" rel="noopener">0xDECAFBAD&lt;/a> applying the principles of &lt;a href="https://www.smallpieces.com/" target="_blank" rel="noopener">small pieces loosely joined&lt;/a> to computing hardware and appliances: &lt;a href="https://www.decafbad.com/blog/2004/12/13/security_and_the_state_of_the_computer" target="_blank" rel="noopener">Security and the State of The Computer&lt;/a>, &lt;a href="https://www.decafbad.com/blog/2004/12/13/the_meta_lathe" target="_blank" rel="noopener">The Meta Lathe&lt;/a>, &lt;a href="https://www.decafbad.com/blog/2004/12/13/on_exploding_pcs_and_appliance_relationships" target="_blank" rel="noopener">On Exploding PCs and Appliance Relationships&lt;/a> and &lt;a href="https://www.decafbad.com/blog/2004/12/13/miscellaneous_thoughts_about_exploded_pcs" target="_blank" rel="noopener">Miscellaneous Thoughts about Exploded PCs&lt;/a>&lt;/p></description></item><item><title>Blogroll additions</title><link>https://www.synesthesia.co.uk/2004/12/13/blogroll-additions/</link><pubDate>Mon, 13 Dec 2004 22:49:52 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/12/13/blogroll-additions/</guid><description>&lt;p>New additions to the &lt;a href="https://www.synesthesia.co.uk/blog/sources.php">blogroll&lt;/a> – &lt;a href="https://clairechaundy.typepad.com/organised_chaos/" target="_blank" rel="noopener">Claire Chaundy&lt;/a> and &lt;a href="https://mfeldstein.com/" target="_blank" rel="noopener">Michael Feldstein&lt;/a>&lt;/p></description></item><item><title>The importance of knowing what you want</title><link>https://www.synesthesia.co.uk/2004/12/13/the-importance-of-knowing-what-you-want/</link><pubDate>Mon, 13 Dec 2004 22:30:33 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/12/13/the-importance-of-knowing-what-you-want/</guid><description>&lt;p>&lt;a href="https://joeelylean.blogspot.com/" target="_blank" rel="noopener">Joe Ely&lt;/a> writes about Lean Manufacturing Systems. One of the core tenets of Lean is to gather frequent feedback about the difference between what you planned to do and what you actually did, reflect on the difference and do something about it. The key thing is doing something about it. Today he tells &lt;a href="https://joeelylean.blogspot.com/2004_12_12_joeelylean_archive.html#110295495297195774" target="_blank" rel="noopener">a story&lt;/a> about the importance of knowing what is wanted before you can take action.&lt;/p>
&lt;p>This reminded me strongly of the concept of &lt;a href="https://www.synesthesia.co.uk/wiki/WellFormedOutcome" target="_blank" rel="noopener">well-formed outcomes&lt;/a> – one of the foundation stones of &lt;abbrev title="Neuro-Linguistic Programming">NLP&lt;/abbrev>. I find that often one of the most powerful coaching interventions is simply helping someone gain a clear view of what they want to happen and the nature of the first few steps. Something very powerful gets triggered in the unconscious mind by a clear view of what you want and many people report that change begins to happen shortly afterwards.&lt;/p></description></item><item><title>Links Roundup</title><link>https://www.synesthesia.co.uk/2004/12/12/links-129/</link><pubDate>Sun, 12 Dec 2004 22:59:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/12/12/links-129/</guid><description>&lt;p>Shared bookmarks for &lt;a href="https://del.icio.us/" target="_blank" rel="noopener">del.icio.us&lt;/a> user &lt;a href="https://del.icio.us/synesthesia" target="_blank" rel="noopener">Synesthesia&lt;/a> on 2004-12-12&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://denham.typepad.com/km/2004/12/practical_wisdo.html" title="https://denham.typepad.com/km/2004/12/practical_wisdo.html" target="_blank" rel="noopener">Practical wisdom&lt;/a>:&lt;/p>
&lt;p>Denham Grey comments on &amp;ldquo;Practical Wisdom&amp;rdquo; by Dorothy Leonard and Walter Swap Keywords: &lt;a href="https://del.icio.us/synesthesia/KM" target="_blank" rel="noopener">KM&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://developer.apple.com/internet/webcontent/xmlhttpreq.html" title="https://developer.apple.com/internet/webcontent/xmlhttpreq.html" target="_blank" rel="noopener">The XMLHttpRequest Object&lt;/a>:&lt;/p>
&lt;p>Goodbye iFrames! Keywords: &lt;a href="https://del.icio.us/synesthesia/Development" target="_blank" rel="noopener">Development&lt;/a>, &lt;a href="https://del.icio.us/synesthesia/Webmaster" target="_blank" rel="noopener">Webmaster&lt;/a>, &lt;a href="https://del.icio.us/synesthesia/XML" target="_blank" rel="noopener">XML&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://ifindkarma.typepad.com/relax/2004/12/microformats.html" title="https://ifindkarma.typepad.com/relax/2004/12/microformats.html" target="_blank" rel="noopener">Microformats&lt;/a>:&lt;/p>
&lt;p>Keywords: &lt;a href="https://del.icio.us/synesthesia/XML" target="_blank" rel="noopener">XML&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.boingboing.net/2004/12/10/salad_bar_hacking.html" title="https://www.boingboing.net/2004/12/10/salad_bar_hacking.html" target="_blank" rel="noopener">Salad bar hacking&lt;/a>:&lt;/p>
&lt;p>How much salad can YOU fit in? Keywords: &lt;a href="https://del.icio.us/synesthesia/World" target="_blank" rel="noopener">World&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.freedom-to-tinker.com/archives/000735.html" title="https://www.freedom-to-tinker.com/archives/000735.html" target="_blank" rel="noopener">Inside the DVD Procedural Specifications&lt;/a>:&lt;/p>
&lt;p>Edward Felten on some of the ludicrous extremes in the DVD-CCA license designed to limit what can be done with the technology. Keywords: &lt;a href="https://del.icio.us/synesthesia/Technology" target="_blank" rel="noopener">Technology&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.stumbleupon.com/" title="https://www.stumbleupon.com/" target="_blank" rel="noopener">StumbleUpon&lt;/a>:&lt;/p>
&lt;p>Share and find interesting web sites. Keywords: &lt;a href="https://del.icio.us/synesthesia/Internet" target="_blank" rel="noopener">Internet&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>Links Roundup</title><link>https://www.synesthesia.co.uk/2004/12/10/links-128/</link><pubDate>Fri, 10 Dec 2004 22:59:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/12/10/links-128/</guid><description>&lt;p>Shared bookmarks for &lt;a href="https://del.icio.us/" target="_blank" rel="noopener">del.icio.us&lt;/a> user &lt;a href="https://del.icio.us/synesthesia" target="_blank" rel="noopener">Synesthesia&lt;/a> on 2004-12-10&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://www.tecwizards.de/mozilla/" title="https://www.tecwizards.de/mozilla/" target="_blank" rel="noopener">Paste and Go&lt;/a>:&lt;/p>
&lt;p>This Firefox extension lets you paste a URL from the clipboard into the address bar and load it as a single step, either via the adress bar’s context menu or by pressing Ctrl-Shift-V. Similarly, you can &amp;ldquo;Paste and Search&amp;rdquo; via the search bar’s context menu Keywords: &lt;a href="https://del.icio.us/synesthesia/Firefox" target="_blank" rel="noopener">Firefox&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.wired.com/wired/archive/12.10/tail.html?pg=5" title="https://www.wired.com/wired/archive/12.10/tail.html?pg=5" target="_blank" rel="noopener">The Long Tail&lt;/a>:&lt;/p>
&lt;p>Forget squeezing millions from a few megahits at the top of the charts. The future of entertainment is in the millions of niche markets at the shallow end of the bitstream. Keywords: &lt;a href="https://del.icio.us/synesthesia/Business" target="_blank" rel="noopener">Business&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>Links Roundup</title><link>https://www.synesthesia.co.uk/2004/12/09/links-127/</link><pubDate>Thu, 09 Dec 2004 22:59:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/12/09/links-127/</guid><description>&lt;p>Shared bookmarks for &lt;a href="https://del.icio.us/" target="_blank" rel="noopener">del.icio.us&lt;/a> user &lt;a href="https://del.icio.us/synesthesia" target="_blank" rel="noopener">Synesthesia&lt;/a> on 2004-12-9&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://preferential.mozdev.org/preferences.html" title="https://preferential.mozdev.org/preferences.html" target="_blank" rel="noopener">Mozilla Preferences&lt;/a>:&lt;/p>
&lt;p>Keywords: &lt;a href="https://del.icio.us/synesthesia/Firefox" target="_blank" rel="noopener">Firefox&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://support.microsoft.com/default.aspx?scid=kb" title="https://support.microsoft.com/default.aspx?scid=kb" target="_blank" rel="noopener">Excel: How to Run a Macro When Cell Changes&lt;/a>:&lt;/p>
&lt;p>Keywords: &lt;a href="https://del.icio.us/synesthesia/Office_Tools/Excel" target="_blank" rel="noopener">Office_Tools/Excel&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://techrepublic.com.com/5100-6270_11-5165773.html?tag=e064" title="https://techrepublic.com.com/5100-6270_11-5165773.html?tag=e064" target="_blank" rel="noopener">XP Prefetch feature&lt;/a>:&lt;/p>
&lt;p>Keywords: &lt;a href="https://del.icio.us/synesthesia/Windows" target="_blank" rel="noopener">Windows&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>Links Roundup</title><link>https://www.synesthesia.co.uk/2004/12/08/links-126/</link><pubDate>Wed, 08 Dec 2004 22:59:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/12/08/links-126/</guid><description>&lt;p>Shared bookmarks for &lt;a href="https://del.icio.us/" target="_blank" rel="noopener">del.icio.us&lt;/a> user &lt;a href="https://del.icio.us/synesthesia" target="_blank" rel="noopener">Synesthesia&lt;/a> on 2004-12-8&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://portal.acm.org/citation.cfm?doid=1035134.1035164" title="https://portal.acm.org/citation.cfm?doid=1035134.1035164" target="_blank" rel="noopener">Semantic blogging and decentralized knowledge management&lt;/a>:&lt;/p>
&lt;p>Keywords: &lt;a href="https://del.icio.us/synesthesia/KM" target="_blank" rel="noopener">KM&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.charlesarthur.com/blog/index.php?p=249" title="https://www.charlesarthur.com/blog/index.php?p=249" target="_blank" rel="noopener">Apple to marry IBM? No, and no, and no&lt;/a>:&lt;/p>
&lt;p>Keywords: &lt;a href="https://del.icio.us/synesthesia/Business" target="_blank" rel="noopener">Business&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.infovis.net/E-zine/2004/num_157.htm" title="https://www.infovis.net/E-zine/2004/num_157.htm" target="_blank" rel="noopener">Bar Graphs&lt;/a>:&lt;/p>
&lt;p>Keywords: &lt;a href="https://del.icio.us/synesthesia/Mathematics" target="_blank" rel="noopener">Mathematics&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>Links Roundup</title><link>https://www.synesthesia.co.uk/2004/12/07/links-125/</link><pubDate>Tue, 07 Dec 2004 22:59:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/12/07/links-125/</guid><description>&lt;p>Shared bookmarks for &lt;a href="https://del.icio.us/" target="_blank" rel="noopener">del.icio.us&lt;/a> user &lt;a href="https://del.icio.us/synesthesia" target="_blank" rel="noopener">Synesthesia&lt;/a> on 2004-12-7&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://cscs.umich.edu/~crshalizi/weblog/232.html" title="https://cscs.umich.edu/~crshalizi/weblog/232.html" target="_blank" rel="noopener">Fitting power laws to blogging&lt;/a>:&lt;/p>
&lt;p>Keywords: &lt;a href="https://del.icio.us/synesthesia/Mathematics" target="_blank" rel="noopener">Mathematics&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://due-diligence.typepad.com/blog/2004/12/citizens_media_.html" title="https://due-diligence.typepad.com/blog/2004/12/citizens_media_.html" target="_blank" rel="noopener">Citizens’ Media Money Chase&lt;/a>:&lt;/p>
&lt;p>Tim Oren on the business model for participative media Keywords: &lt;a href="https://del.icio.us/synesthesia/Business/Media" target="_blank" rel="noopener">Business/Media&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://tomwatson.typepad.com/tom_watson/2004/12/blogs_rolling_i.html" title="https://tomwatson.typepad.com/tom_watson/2004/12/blogs_rolling_i.html" target="_blank" rel="noopener">Blogs: Rolling In It…&lt;/a>:&lt;/p>
&lt;p>Tom Watson thinks the money in citizen’s media isn’t in the content but in the supporting services and infrastructure. Keywords: &lt;a href="https://del.icio.us/synesthesia/Blogging" target="_blank" rel="noopener">Blogging&lt;/a>, &lt;a href="https://del.icio.us/synesthesia/Business/Media" target="_blank" rel="noopener">Business/Media&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.creatingthe21stcentury.org/Intro0-table.html" title="https://www.creatingthe21stcentury.org/Intro0-table.html" target="_blank" rel="noopener">Storytelling in business&lt;/a>:&lt;/p>
&lt;p>Keywords: &lt;a href="https://del.icio.us/synesthesia/Storytelling" target="_blank" rel="noopener">Storytelling&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.osteele.com/archives/2004/12/grounded-proofs" title="https://www.osteele.com/archives/2004/12/grounded-proofs" target="_blank" rel="noopener">Grounded Proofs&lt;/a>:&lt;/p>
&lt;p>Keywords: &lt;a href="https://del.icio.us/synesthesia/Mathematics" target="_blank" rel="noopener">Mathematics&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.stevedenning.com/learn.htm" title="https://www.stevedenning.com/learn.htm" target="_blank" rel="noopener">Steve Denning – Learn Storytelling&lt;/a>:&lt;/p>
&lt;p>Keywords: &lt;a href="https://del.icio.us/synesthesia/Storytelling" target="_blank" rel="noopener">Storytelling&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>Future Media</title><link>https://www.synesthesia.co.uk/2004/12/06/future-media/</link><pubDate>Mon, 06 Dec 2004 12:49:41 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/12/06/future-media/</guid><description>&lt;p>A colleague found an interesting document from IBM’s consulting practice – &lt;a href="https://www-1.ibm.com/services/us/imc/pdf/ge510-3569-01f-media-2010.pdf" target="_blank" rel="noopener">Media and entertainment 2010&lt;/a>, [PDF]. They identify the power of open media standards, the importance of companies offering different ways for consumers to interact with content and the need to “manage attention”.&lt;/p>
&lt;p>BUT they still assume a role for the “trusted media brand” as intermediary bundling up the various bits of content from producers and marketing it to the consumer (albeit a wired-in consumer with lots of choice and the ability to interact with both the content and the intermediary).&lt;/p>
&lt;p>Tim Oren (a Silicon Valley VC) offers an alternative view on this – &lt;a href="https://due-diligence.typepad.com/blog/2004/09/dissecting_the_.html" target="_blank" rel="noopener">Dissecting the Media: Trust and Transactions&lt;/a>. As Tim says:&lt;/p>
&lt;blockquote cite="https://due-diligence.typepad.com/blog/2004/09/dissecting_the_.html">
&lt;p>
&amp;#8230;But what of my original premise, that on the average the reader would prefer to avoid the granular choice or purchase of content? If the winds of change have blown apart the legacy media bundles, can the value of transaction cost reduction be recreated in another fashion, and revenue extracted for it? &amp;#8230;
&lt;/p>
&lt;/blockquote>
&lt;p>In other words if there are media intermediaries in the future they probably need a different business model.&lt;/p>
&lt;p>A related story that popped up yesterday – &lt;a href="https://news.bbc.co.uk/1/hi/technology/4067031.stm" target="_blank" rel="noopener">this BBC News report&lt;/a> [via &lt;a href="https://theobvious.typepad.com/blog/2004/12/no_shit_sherloc.html" target="_blank" rel="noopener">The Obvious?&lt;/a>] on studies with US musicians which suggests that despite the RIAA’s aggressive tactics of sueing file-sharers musicians have a far more ambivalent or even positive attitude to the internet – again it’s the intermediaries that are suffering more than the content creators.&lt;/p></description></item><item><title>Leaving Ecademy</title><link>https://www.synesthesia.co.uk/2004/12/06/leaving-ecademy/</link><pubDate>Mon, 06 Dec 2004 12:30:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/12/06/leaving-ecademy/</guid><description>&lt;p>&lt;a href="https://www.zylstra.org/blog/archives/001514.html" target="_blank" rel="noopener">Ton sums it up well&lt;/a>. As soon as I &lt;del>get&lt;/del> &lt;ins datetime="2004-11-6T13:56:55-0:00">got&lt;/ins> a response from Ecademy support telling me how to remove &lt;a href="https://www.ecademy.com/account.php?id=22690" target="_blank" rel="noopener">my profile&lt;/a> it &lt;del>will be&lt;/del> &lt;ins datetime="2004-11-6T13:56:55-0:00">was&lt;/ins> gone.&lt;/p></description></item><item><title>The Social Origin Of Good Ideas (again)</title><link>https://www.synesthesia.co.uk/2004/12/05/the-social-origin-of-good-ideas-again/</link><pubDate>Sun, 05 Dec 2004 17:17:20 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/12/05/the-social-origin-of-good-ideas-again/</guid><description>&lt;p>Although I first skimmed &lt;a href="https://web.mit.edu/sorensen/www/SOGI.pdf" target="_blank" rel="noopener">this paper&lt;/a> &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/05/28/social-origins-of-good-ideas/" target="_blank" rel="noopener">back in May&lt;/a> I’ve finally got around to reading it properly and writing some &lt;a href="https://www.synesthesia.co.uk/blog/wiki/SocialOriginOfGoodIdeas" target="_blank" rel="noopener">summary notes&lt;/a>.&lt;/p>
&lt;p>At an emotional level I feel pleased that a behaviour that I find natural (i.e. to dip into different work groups or areas of study and share ideas between them) and feel to be one of the more useful of my talents is shown to have measurable benefits. If anything it prompts the networker’s perennial question – “which groups &lt;em>haven’t&lt;/em> I tapped into yet?”&lt;/p>
&lt;p>&lt;ins datetime="2004-11-5T20:33:23-0:00">In a similar vein, serendipitously this comes into view: &lt;a href="https://hbsworkingknowledge.hbs.edu/item.jhtml?id=4516&amp;#038;t=innovation">Caves, Clusters, and Weak Ties: The Six Degrees World of Inventors&lt;/a> on the way that researchers can bring in new ideas to a company through their weak ties with other technologists.&lt;/ins>&lt;/p></description></item><item><title>A life where Tivo has always existed</title><link>https://www.synesthesia.co.uk/2004/12/02/a-life-where-tivo-has-always-existed/</link><pubDate>Thu, 02 Dec 2004 13:11:47 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/12/02/a-life-where-tivo-has-always-existed/</guid><description>&lt;p>&lt;a href="https://www.kokogiak.com/gedankengang/gedanken_arch.asp#1111200389" target="_blank" rel="noopener">A life where TiVo has always existed&lt;/a> is a great example of how subsequent generations take for granted technology that was new and strange not long ago. [via &lt;a href="https://www.theshiftedlibrarian.com/archives/2004/12/our_replaytv_ho.html" target="_blank" rel="noopener">The Shifted Librarian&lt;/a>]&lt;/p></description></item><item><title>The freedom to think</title><link>https://www.synesthesia.co.uk/2004/12/01/the-freedom-to-think/</link><pubDate>Wed, 01 Dec 2004 11:19:20 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/12/01/the-freedom-to-think/</guid><description>&lt;p>When I wrote &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/11/29/social-categorisation/" target="_blank" rel="noopener">this article&lt;/a> I started from a belief that by combining &lt;a href="https://denham.typepad.com/km/2004/11/social_categori.html" target="_blank" rel="noopener">Denham’s thoughts&lt;/a> with my &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/11/24/semantic-aggregation-and-filtering/" target="_blank" rel="noopener">earlier post&lt;/a> I had seen a new aspect of the possibilities for knowledge aggregation and filtering.&lt;/p>
&lt;p>Then I read the background links that led to &lt;a href="https://purpleslurple.net/ps.php?theurl=https://www.synesthesia.co.uk/blog/archives/2004/11/29/social-categorisation/#purp76" target="_blank" rel="noopener">this addition&lt;/a>, added in a spirit of “Oh, perhaps it wasn’t that original after all, I’d better acknowledge this other work”. In other words some of the glow of achievement I felt about spotting the earlier idea had been tarnished.&lt;/p>
&lt;p>Today via &lt;a href="https://www.nooranch.com/synaesmedia/wiki/wiki.cgi?action=browse&amp;amp;id=LinkingVsCiting" target="_blank" rel="noopener">Phil Jones’ wiki&lt;/a> I found this David Weinberger &lt;a href="https://www.hyperorg.com/backissues/joho-feb26-01.html#philosophy" target="_blank" rel="noopener">post&lt;/a> from a few years ago which has restored some of the good feelings – others may have had a similar idea before but that doesn’t reduce the value &lt;em>to me&lt;/em> of the new-to-me thought.&lt;/p></description></item><item><title>The perfectionist definition of good enough</title><link>https://www.synesthesia.co.uk/2004/11/30/the-perfectionist-definition-of/</link><pubDate>Tue, 30 Nov 2004 10:46:22 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/11/30/the-perfectionist-definition-of/</guid><description>&lt;p>This one from Curt Rosengren seemed worth a mention – &lt;a href="https://curtrosengren.typepad.com/occupationaladventure/2004/11/the_perfectioni.html" target="_blank" rel="noopener">The perfectionist definition of “good enough”&lt;/a> – it’s a pattern I’ve seen in a few high-performing coaching clients too.&lt;/p></description></item><item><title>Testing Compendium and the Illusion of Explanatory Depth</title><link>https://www.synesthesia.co.uk/2004/11/29/testing-compendium/</link><pubDate>Mon, 29 Nov 2004 23:13:05 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/11/29/testing-compendium/</guid><description>&lt;p>At the &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/10/05/projections-of-knowledge/#comment-411" target="_blank" rel="noopener">suggestion&lt;/a> of &lt;a href="https://kmi.open.ac.uk/people/marc/index.php" target="_blank" rel="noopener">Marc Eisenstadt&lt;/a> I’ve been trying &lt;a href="https://www.compendiuminstitute.org/" target="_blank" rel="noopener">Compendium&lt;/a>.&lt;/p>
&lt;p>The tool itself seems relatively straightforward (I have used both &lt;a href="https://www.banxia.com/demain.html" target="_blank" rel="noopener">cognitive mapping&lt;/a> and &lt;a href="https://www.mindjet.com/uk/" target="_blank" rel="noopener">mind map&lt;/a> software before so this may not be a fair assessment of how a beginner would get on) – the trick I suspect is in learning a methodical approach to applying it to a specific task.&lt;/p>
&lt;p>I experimented trying to map out the exchange of views in the recent “Hierarchy” exchange (&lt;a href="https://homepage.mac.com/dave_rogers/GHD11-04.html#note_1831" target="_blank" rel="noopener">1&lt;/a> &lt;a href="https://homepage.mac.com/dave_rogers/GHD11-04.html#note_1835" target="_blank" rel="noopener">2&lt;/a> &lt;a href="https://blog.wirearchy.com/blog/_archives/2004/11/27/192256.html" target="_blank" rel="noopener">3&lt;/a> &lt;a href="https://theobvious.typepad.com/blog/2004/11/a_violent_agree.html" target="_blank" rel="noopener">4&lt;/a> &lt;a href="https://homepage.mac.com/dave_rogers/GHD11-04.html#note_1836" target="_blank" rel="noopener">5&lt;/a> &lt;a href="https://blog.wirearchy.com/blog/_archives/2004/11/28/192516.html" target="_blank" rel="noopener">6&lt;/a> &lt;a href="https://theobvious.typepad.com/blog/2004/11/i_really_should.html" target="_blank" rel="noopener">7&lt;/a>) [&lt;em>order may not be quite right&lt;/em>] between &lt;a href="https://homepage.mac.com/dave_rogers/" target="_blank" rel="noopener">Dave Rogers&lt;/a> , &lt;a href="https://blog.wirearchy.com/blog" target="_blank" rel="noopener">Jon Husband&lt;/a> and &lt;a href="https://theobvious.typepad.com/blog/" target="_blank" rel="noopener">Euan Semple&lt;/a> but ran out of steam partway through analysing the second post. I don’t think that is a comment about &lt;a href="https://www.compendiuminstitute.org/" target="_blank" rel="noopener">Compendium&lt;/a>, more a facet of the difficulty of mapping this sort of writing especially when you are very rusty at that sort of thing.&lt;/p>
&lt;p>This will be the problem with creating the &lt;a href="https://www.w3.org/2001/sw/" target="_blank" rel="noopener">semantic web&lt;/a>, it’s completely conceivable to have nice well-formed &lt;a href="https://en.wikipedia.org/wiki/Resource_Description_Framework" target="_blank" rel="noopener">RDF&lt;/a> triples as a way of navigating information that is already structured but the vast majority of human knowledge is tied up in messy human-written text.&lt;/p>
&lt;p>My gut feeling is that most of us, most of the time, don’t analyse information to the depth that is needed to make good use of a tool such as Compendium. Certainly my tendency is for a strong degree of pragmatism in my learning – I’d suggest that generally knowledge-workers dig just enough to get a sufficient gist of things for the immediate purpose – as long as I have &lt;em>good enough&lt;/em> knowledge for the task in hand then why seek more precision?&lt;/p>
&lt;p>The willingness to stop digging could be increased by the &lt;a href="https://scholar.google.com/scholar?hl=en&amp;amp;lr=&amp;amp;q=cache:-k74PcAo-zIJ:www.psy.cmu.edu/~siegler/RozKeil02.pdf&amp;#43;author:Keil,&amp;#43;FC" target="_blank" rel="noopener">illusion of explanatory depth&lt;/a>. This tendency for people to over-estimate their knowledge of a subject where there are attractive intuitive explanations was identified in 2002 by &lt;a href="https://www.yale.edu/psychology/FacInfo/Keil.html" target="_blank" rel="noopener">Frank Keil&lt;/a> and &lt;a href="https://www.informatik.uni-trier.de/~ley/db/indices/a-tree/r/Rozenblit:Leonid.html" target="_blank" rel="noopener">Leonid Rozenblit&lt;/a>. &lt;em>I’m probably doing it now of course!&lt;/em>&lt;/p>
&lt;p>The next area to try Compendium will be working the other way – assembling a set of facts or assumptions about the world and seeing if it helps extrapolate meaningful abstractions. The obvious application of this will be in strategy development.&lt;/p>
&lt;p>&lt;ins datetime="2004-11-1T17:15:23-0:00">Wiki page for evaluation notes: [wiki]Compendium[/wiki]&lt;/ins>&lt;/p></description></item><item><title>Social categorisation – whose perspective?</title><link>https://www.synesthesia.co.uk/2004/11/29/social-categorisation/</link><pubDate>Mon, 29 Nov 2004 20:05:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/11/29/social-categorisation/</guid><description>&lt;p>&lt;a href="https://denham.typepad.com/" target="_blank" rel="noopener">Denham Grey&lt;/a> has been thinking about knowledge management for a long time – it looks like he has been turning his thoughts to some of the issues I touched on in &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/11/24/semantic-aggregation-and-filtering/" target="_blank" rel="noopener">Semantic Aggregation and Filtering&lt;/a>. He writes in &lt;a href="https://denham.typepad.com/km/2004/11/social_categori.html" target="_blank" rel="noopener">Social Categorisation&lt;/a>:&lt;/p>
&lt;blockquote cite="https://denham.typepad.com/km/2004/11/social_categori.html">
&lt;p>
The ability to develop and share a common taxonomy / classification / ontology is a very fundamental knowledge practice that leverages knowledge creation, communication, promotes meaning and enables sense-making.
&lt;/p>
&lt;p>
Tools to do this are far and few right now but likely to be moving toward center stage in the near future&amp;#8230;
&lt;/p>
&lt;/blockquote>
&lt;p>He adds a fourth mechanism for extracting and sharing a taxonomy&lt;/p>
&lt;blockquote cite="https://denham.typepad.com/km/2004/11/social_categori.html">
&lt;p>
The starting point for this advance may be tools to &lt;a href="https://www.voght.com/cgi-bin/pywiki?ConceptExtraction">extract key concepts&lt;/a> from free form text.
&lt;/p>
&lt;p>
Imagine if you wrote a text, ran a key concept parser, compared the extracted concepts to your groups ontology then selected the best fit meta-tags for later search and browsing &amp;#8211; Now that would really assist content sharing!
&lt;/p>
&lt;/blockquote>
&lt;p>to which I would add another nuance – as well as deploying these tools to categorise your own text how about deploying them inside a feed aggregator with mapping rules based on the reader’s frame of reference – this way in addition to using the author’s taxonomy you could decide how to categorise a piece of content &lt;em>in the reader’s context&lt;/em>.&lt;/p>
&lt;p>&lt;ins datetime="2004-10-29T21:12:39-0:00">Update: From this &lt;a href="https://orgwis.gmd.de/projects/Coins/ConceptIndex.html">article&lt;/a> via &lt;a href="https://www.voght.com/cgi-bin/pywiki?ConceptExtraction">Denham’s wiki&lt;/a> it looks like there has been a lot of work in this area already…&lt;/ins>&lt;/p></description></item><item><title>Semantic aggregation and filtering</title><link>https://www.synesthesia.co.uk/2004/11/24/semantic-aggregation-and-filtering/</link><pubDate>Wed, 24 Nov 2004 22:25:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/11/24/semantic-aggregation-and-filtering/</guid><description>&lt;p>&lt;a href="https://itc.uncc.edu/dale/su8/" target="_blank" rel="noopener">Dale Pike&lt;/a> has some interesting things to say about &lt;a href="https://itc.uncc.edu/dale/su8/archives/003558.html" target="_blank" rel="noopener">semantic focus&lt;/a> as an organising principle for understanding technology – in particular for explaining how a specific aspect of some arbitrary technology helps with specific tasks. The down side of this, he observes, is that tools tend to become pigeon-holed by the application that is first used to explain them – seeing the tool in a different context might enable new uses but for many people there is a cognitive barrier set by the first mental model they have created.&lt;/p>
&lt;p>He extends the thought to consider how context modifies the use we can make of specific pieces of information – as an example notes that are contributed to a topically-focused space such as a bulletin board or mailing list contrasted with the same note expressed in an individually-focused space such as a weblog. He sees syndication formats such as RSS as the connecting bridge that allows people to assemble published information into unique contextualised views that serve their specific needs.&lt;/p>
&lt;p>This idea seems to be teasingly close to what I have described as &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/10/05/projections-of-knowledge/" target="_blank" rel="noopener">projections of knowledge&lt;/a> – each context is a map of the knowledge space projected in a particular way. Beyond the raw mechanics of content feeds the key to assembling projections/views is being able to find and select the information you want in an automatable way. The problem is to determine which concepts are “close” to each other on the map in question.&lt;/p>
&lt;p>Most approaches that I have heard of use categorisation and filtering as a proxy for measuring conceptual proximity. Whether you use shared taxonomies or the more emergent “&lt;a href="https://atomiq.org/archives/2004/08/folksonomy_social_classification.html" target="_blank" rel="noopener">folksonomy&lt;/a>” approach a mechanism is needed to determine which labels are close to each other within the map of choice.&lt;/p>
&lt;p>I can imagine this happening in a number of ways.&lt;/p>
&lt;ul>
&lt;li>At the most basic level tools could use some shared thesaurus to identify synonomous labels.&lt;/li>
&lt;li>An enhancement would be to allow the user to view a set of available labels and identify their own associations – this could in turn be published to allow “association aggregators” to form emergent thesauri.&lt;/li>
&lt;li>Even more subtle would be to allow the user to modify the view parameters by assigning votes to the returned concepts.&lt;/li>
&lt;/ul>
&lt;p>I have a hunch that all of this is buildable with currently-available standards. There may be tools out there already but I suspect they are proprietary – what we need are the simple building blocks to allow a “small pieces loosely joined” solution.&lt;/p>
&lt;p>&lt;ins datetime="2004-10-25T21:35:27-0:00">&lt;br /> Wiki page: [wiki]SemanticAggregator[/wiki]&lt;/ins>&lt;/p></description></item><item><title>Managing Product Development</title><link>https://www.synesthesia.co.uk/2004/11/24/managing-product-development/</link><pubDate>Wed, 24 Nov 2004 11:22:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/11/24/managing-product-development/</guid><description>&lt;p>&lt;a href="https://www.jrothman.com/weblog/" target="_blank" rel="noopener">Johanna Rothman&lt;/a>‘s &lt;a href="https://www.jrothman.com/weblog/archive/2004_11_01_mpdarchive.html#110121888612513624" target="_blank" rel="noopener">Observations from a Writing Workshop&lt;/a> “If you’d like to write — or write better, start. You can start short, with 5 or 10 minute timed writing. (Write for 5 or 10 minutes. Do not stop. Keep writing. If you get stuck, write blah, blah, blah, but keep writing.)” [via &lt;a href="https://www.clarkeching.com/2004/11/writing_johanna.html" target="_blank" rel="noopener">Clarke Ching&lt;/a>]&lt;/p></description></item><item><title>A Travel Guide To Collaboration</title><link>https://www.synesthesia.co.uk/2004/11/23/a-travel-guide-to-collaboration/</link><pubDate>Tue, 23 Nov 2004 13:31:31 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/11/23/a-travel-guide-to-collaboration/</guid><description>&lt;p>Great &lt;a href="https://www.cio.com/archive/111504/guide.html" target="_blank" rel="noopener">article&lt;/a> on the why of business collaboration from CIO.com. [via &lt;a href="https://blog.larixconsulting.com/blog" target="_blank" rel="noopener">Tris Hussey&lt;/a>]&lt;/p></description></item><item><title>Hints for revising</title><link>https://www.synesthesia.co.uk/2004/11/23/hints-for-revising/</link><pubDate>Tue, 23 Nov 2004 12:29:21 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/11/23/hints-for-revising/</guid><description>&lt;p>Some excellent &lt;a href="https://www.testing.com/cgi-bin/blog/2004/11/16#two-sentences" target="_blank" rel="noopener">hints for revising your writing&lt;/a> from &lt;a href="https://www.testing.com/cgi-bin/blog" target="_blank" rel="noopener">Brian Marick&lt;/a> [via &lt;a href="https://www.clarkeching.com/" target="_blank" rel="noopener">Clarke Ching&lt;/a>]&lt;/p></description></item><item><title>Suburban Jungle</title><link>https://www.synesthesia.co.uk/2004/11/23/suburban-jungle/</link><pubDate>Tue, 23 Nov 2004 07:00:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/11/23/suburban-jungle/</guid><description>&lt;p>I was waiting for email to download this morning when I witnessed two cats and three squirrels playing “cat and tree-rat”.&lt;/p>
&lt;p>Watching the activity that spread across the gardens of four or five houses I began to see that although the cats were very good at “seizing” the symbolic and literal high ground such as garage roofs, first-floor window ledges and critical fence junctions their attempts to interdict the insurgent terror-rodents were almost completely ineffectual.&lt;/p>
&lt;p>The squirrels were busy with the life-and-death task of collecting and storing food. Occasionally one would stray near enough to one of the feline sentinels for the cat to take notice and switch to stalking mode. Standard squirrel response was “run away”, usually followed by the cat for a couple of yards until the predator gave up – these cats are all well-fed domestic pets and pursuit was at best half-hearted.&lt;/p>
&lt;p>There was much more vigorous action when one squirrel strayed into the territory of another – high-speed, high level chases until the intruder was seen off.&lt;/p>
&lt;p>All of this time there was no sign of the species that considers itself the “real” owners of these bits of territory!&lt;/p></description></item><item><title>Getting to grips with “Freedom Evolves”</title><link>https://www.synesthesia.co.uk/2004/11/14/getting-to-grips-with-freedom-evolves/</link><pubDate>Sun, 14 Nov 2004 19:29:18 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/11/14/getting-to-grips-with-freedom-evolves/</guid><description>&lt;p>I’ve started reading [bliki]Freedom Evolves[/bliki] again – I’ve had the book on my shelf for a few months but had found it difficult to stick with before. I’ve noticed that one of the ways that I stop myself from finishing “stretching” books (even though I want to learn the contents) is by failing to take notes – I’m going to try to address that by using the &lt;a href="https://www.synesthesia.co.uk/blog/wiki/" target="_blank" rel="noopener">Oddments&lt;/a> space.&lt;/p></description></item><item><title>Listening to fathers</title><link>https://www.synesthesia.co.uk/2004/11/07/listening-to-fathers/</link><pubDate>Sun, 07 Nov 2004 18:52:19 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/11/07/listening-to-fathers/</guid><description>&lt;p>Fathers have been &lt;a href="https://news.bbc.co.uk/1/hi/uk/3653986.stm" target="_blank" rel="noopener">in&lt;/a> &lt;a href="https://news.bbc.co.uk/1/hi/england/london/3646948.stm" target="_blank" rel="noopener">the&lt;/a> &lt;a href="https://news.bbc.co.uk/1/hi/uk_politics/3728617.stm" target="_blank" rel="noopener">news&lt;/a> a lot recently, not always to good effect.&lt;/p>
&lt;p>Even Bob Geldoff has lent his name to the “father’s rights” movement with a recent Channel 4 polemic.&lt;/p>
&lt;p>In the middle of all this rhetoric and emotion I’ve felt that we’ve been missing hard facts so I was pleased to see that UK family-support charity &lt;a href="https://www.parentlineplus.org.uk/" target="_blank" rel="noopener">Parentline Plus&lt;/a> has released &lt;a href="https://www.parentlineplus.org.uk/uploads/tx_policyreports/Fathers_report_2004_01.doc" target="_blank" rel="noopener">Hopes, Stress and Love – Listening to fathers&lt;/a> based on the issues that fathers raise in calls to the charity’s help line.&lt;/p>
&lt;p>They paint a picture of men who are deeply concerned about their children’s welfare, involved in their education and who care deeply about improving the family experience. This cuts across all family situations — 44% of calls in the survey were from fathers within a traditional “nuclear family”.&lt;/p>
&lt;p>More disturbingly the report identifies high levels of stress and feelings of isolation in many of their male callers and a significant level of concern about conflict with partners / ex-partners and the effect of this on the children.&lt;/p>
&lt;p>The authors conclude with a call to all family support services not only to recognise the essential role of fathers but also to understand that reticence to seek help is in many cases made worse by a perception held by many men that support services are biased against them.&lt;/p>
&lt;p>Thought-provoking stuff.&lt;/p></description></item><item><title>Why wiki doesn’t work – one person’s experience</title><link>https://www.synesthesia.co.uk/2004/10/28/why-wiki-doesnt-work-one-persons-experience/</link><pubDate>Thu, 28 Oct 2004 21:05:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/10/28/why-wiki-doesnt-work-one-persons-experience/</guid><description>&lt;p>I’ve been introducing wikis into my workplace, especially for project teams – not in any forced way but more by making the technology available and starting to use it. Understandably the takeup is mixed but I was most surprised by the very strong aversion expressed by another senior technology manager with whom I have to produce complex joint strategy documents. Last week the opportunity came up to ask “why doesn’t wiki work for you?”; I was expecting answers that were about the difference between a web interface and a wordprocessor, or perhaps issues about the markup but what he told me had nothing to do with the technology and everything to do with mental models.&lt;/p>
&lt;p>I’ve written before about &lt;a href="https://www.synesthesia.co.uk/2004/09/20/how-blog-and-wiki-fit-together-for-me/" target="_blank" rel="noopener">how blog and wiki fit together for me&lt;/a> and my mental model of document outlines and mindmaps as two dimensional &lt;a href="https://www.synesthesia.co.uk/2004/10/05/projections-of-knowledge/" target="_blank" rel="noopener">projections of knowledge&lt;/a>. In short I’ve found that for capturing and structuring “flow of thought” ideas in a way that can later be linked together the easy hypertext writing style of wikis works very well – I find myself thinking in terms of hyperlinks as I write.&lt;/p>
&lt;p>By contrast my colleague finds the typical collection of wiki pages with dense hyperlinks very difficult to map into a mental structure of information. Under some gentle questioning he explained that for him information is always hierarchical – the technique he has found that works for him when organising knowledge is to think in “high level” concepts and then expand these down into details – the sort of model that fits very well with traditional outlining or a mindmap where you are not allowed to cross-link between branches.&lt;/p>
&lt;p>What for some people is a strength of wiki – that any given page can appear in many different contexts depending on the relationship of hyperlinks – is for him a disadvantage of almost show-stopping proportions (certainly enough to make it too much effort to switch to the tool) because it is impossible to see a single clear hierarchy of information.&lt;/p>
&lt;p>The obvious workaround that we will try for areas where we have to work jointly is for him to write “his stuff” in outline form and for me to construct index pages that present a view into “my stuff”; as we work on joint editing we can then pull together further pages that present different hierarchies.&lt;/p>
&lt;p>I can sense a few vague ideas starting to bubble about how the tool itself could be changed but they aren’t making themselves articulable yet.&lt;/p></description></item><item><title>Under Reconstruction</title><link>https://www.synesthesia.co.uk/2004/10/13/under-reconstruction/</link><pubDate>Wed, 13 Oct 2004 19:14:51 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/10/13/under-reconstruction/</guid><description>&lt;p>Please excuse the mess while I transition to my new site layout…&lt;/p>
&lt;p>Still to do:&lt;/p>
&lt;ul>
&lt;li>&lt;del>Work out what to do about displaying archives list&lt;/del>&lt;/li>
&lt;li>&lt;del datetime="2005-02-23T22:06:5200:00">Re-work “print” stylesheet&lt;/del>&lt;/li>
&lt;li>Styling tweaks that I still think are needed&lt;/li>
&lt;li>&lt;del>Restore search capability&lt;/del>&lt;/li>
&lt;li>Sort out menu bug on category index pages&lt;/li>
&lt;/ul></description></item><item><title>Projections of knowledge</title><link>https://www.synesthesia.co.uk/2004/10/05/projections-of-knowledge/</link><pubDate>Tue, 05 Oct 2004 13:29:49 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/10/05/projections-of-knowledge/</guid><description>&lt;p>&lt;a href="https://www.zylstra.org/blog/archives/001426.html" target="_blank" rel="noopener">Several&lt;/a> &lt;a href="https://billives.typepad.com/portals_and_km/2004/09/global_knowledg.html" target="_blank" rel="noopener">people&lt;/a> &lt;a href="https://www.steptwo.com.au/columntwo/archives/001434.html" target="_blank" rel="noopener">have&lt;/a> blogged &lt;a href="https://www.globalknowledgereview.com/" target="_blank" rel="noopener">Global Knowledge Review&lt;/a>, the new venture from David Gurteen.&lt;/p>
&lt;p>I’m thinking about a longer post on my reactions to the whole document, however in passing wanted to flag something that &lt;a href="https://blog.mathemagenic.com/" target="_blank" rel="noopener">Lilia&lt;/a> wrote in the &lt;a href="https://www.globalknowledgereview.com/docs/SeptGKR%20UKA4.pdf" target="_blank" rel="noopener">sample copy&lt;/a> that caught my eye. &lt;ins datetime="2004-9-5T14:53:42--1:00">(update – Lilia has pointed me to her &lt;a href=" https://blog.mathemagenic.com/2004/05/20.html#a1216">original post&lt;/a> that spawned this article)&lt;/ins>&lt;/p>
&lt;blockquote cite="https://www.globalknowledgereview.com/docs/SeptGKR%20UKA4.pdf">
&lt;p>
It is probably a matter of personal preferences or thinking style, but I always have problems with tree structures. [&amp;#8230;] Another example is about mind-mapping tools [&amp;#8230;] Those that I tried force me to organise my ideas into a tree structure. Of course, visualisation is nice to get an overview of ideas (especially if you use it for others), but forced tree structure makes these maps useless for (my) thinking. I tried to use mind-mapping software to structure my ideas for writing papers, but it didn’t work. It’s fine on paper for drawing a web of relations and thinking about steps of explaining them, but drawing a tree on my screen doesn’t make any sense [&amp;#8230;] for me ideas live as webs. [&amp;#8230;]
&lt;/p>
&lt;/blockquote>
&lt;p>Reading this I was struck by the simile with &lt;a href="https://www.colorado.edu/geography/gcraft/notes/mapproj/mapproj.html" target="_blank" rel="noopener">map projections&lt;/a> – just as rendering a 3D world onto a 2D map causes distortions, rendering an interconnected web of ideas into a two dimensional tree (e.g. a mind map or an outline) will focus on a different aspect of what is being mapped.&lt;/p>
&lt;p>How does our choice of view for information affect the interpretation we place on that information?&lt;/p></description></item><item><title>Disruptive Technology – BBC News Wiki Proxy</title><link>https://www.synesthesia.co.uk/2004/10/05/disruptive-technology-bbc-news-wiki-proxy-2/</link><pubDate>Tue, 05 Oct 2004 09:09:37 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/10/05/disruptive-technology-bbc-news-wiki-proxy-2/</guid><description>&lt;p>New media activist &lt;a href="https://www.whitelabel.org/" target="_blank" rel="noopener">Stef Magdalinski&lt;/a> has produced a great example of the way new technologies allow people to interact with broadcasters in different ways – &lt;a href="https://www.whitelabel.org/wp/wikiproxy.php" title="the News Online Wiki proxy" target="_blank" rel="noopener">the News Online wikiproxy&lt;/a>&lt;/p>
&lt;p>The site proxies &lt;a href="https://news.bbc.co.uk" target="_blank" rel="noopener">BBC News online&lt;/a> and does the following things to pages retrieved through it:&lt;/p>
&lt;ul>
&lt;li>retrieves a page from News Online, and regexes out “Capitalised Phrases” and acronyms. It then tests these against a database of &lt;a href="https://en.wikipedia.org/wiki/Main_Page" target="_blank" rel="noopener">wikipedia&lt;/a> topic titles. If the phrase is a topic in wikipedia, then it’s turned into a hyperlink. This way you can see in-context links to definitions of terms or background information on topics discussed.&lt;/li>
&lt;li>uses the &lt;a href="https://www.technorati.com" target="_blank" rel="noopener">technorati API&lt;/a> to add a sidebar of links to blogs referencing the story – this way from the same page as the story you can see who else is talking about the story&lt;/li>
&lt;/ul>
&lt;p>For a good example of it working see &lt;a href="https://www.whitelabel.org/wp/wikiproxy.php?url=https://news.bbc.co.uk/1/hi/uk_politics/3711092.stm" target="_blank" rel="noopener">here&lt;/a>&lt;/p>
&lt;p>Magdalinski, who amongst other things led the &lt;a href="https://www.theyworkforyou.com/" target="_blank" rel="noopener">They Work For You&lt;/a> project, &lt;a href="https://www.whitelabel.org/archives/002248.html" target="_blank" rel="noopener">explains his rationale&lt;/a>:&lt;/p>
&lt;blockquote cite="https://www.whitelabel.org/archives/002248.html">
&lt;p>
News Online has decided to &lt;a href="https://news.bbc.co.uk/1/hi/help/3676692.stm" target=_blank class=blines3 title="Link outside of this blog">start linking to other news sites&lt;/a>.
&lt;/p>
&lt;p>
News Online is the most trafficked site in Europe, easily the most successful new media venture the BBC has produced, but to my mind has failed to really innovate since &lt;a href="https://web.archive.org/web/19981201052808/https://www.news.bbc.co.uk/" target=_blank class=blines3 title="Link outside of this blog"> launch&lt;/a>. They&amp;#8217;ve added clutter, an RSS feed or two, but it&amp;#8217;s still flat news articles with a few video clips, using hyperlinks only for navigation, much as CEEFAX use 3 digit numbers. News Online is exactly what I would expect as a &lt;em>baseline&lt;/em> from any news site, commercial or otherwise.
&lt;/p>
&lt;p>
News Online doesn&amp;#8217;t engage with its users, it doesn&amp;#8217;t provide tools that allow me, the licence payer, to slice and dice their stories, and by refusing to link from its body text, it fails to understand how hypertext works.
&lt;/p>
&lt;p>
Also, with its conservative link policy (I can&amp;#8217;t show you an example of the news stories where the tech described above is working, because the links get removed after 2 days, because they might break), that only connects the BBC to established brands, it snubs the wider web, the great teeming mass of creativity. Patrician is not authoritative. Aloof is not respected. Conservative and fearful is not engaging. The gap between the BBC&amp;#8217;s &lt;a href="https://www.bbc.co.uk/thefuture/text/bbc_bpv_complete.html" target=_blank class=blines3 title="Link outside of this blog">utterly laudable self image and ambitions&lt;/a> and delivery could not be any clearer than at News Online.
&lt;/p>
&lt;p>
Finally, by not really allowing user interaction or commenting, News Online forces that debate and activity away from its site, and out onto the wild wild web.
&lt;/p>
&lt;/blockquote>
&lt;p>Now think a year or two ahead and imagine this sort of thing done with moving pictures…&lt;/p>
&lt;p>[via &lt;a href="https://www.boingboing.net/2004/10/04/bbc_news_proxy_makes.html" target="_blank" rel="noopener">Cory Doctorow&lt;/a>, &lt;a href="https://blackbeltjones.typepad.com/work/2004/10/bbc_news_online.html" target="_blank" rel="noopener">Matt Jones&lt;/a>, &lt;a href="https://alex.halavais.net/news/index.php?p=846" target="_blank" rel="noopener">Alex Halavais&lt;/a> ]&lt;/p></description></item><item><title>Models of interest</title><link>https://www.synesthesia.co.uk/2004/09/28/models-of-interest/</link><pubDate>Tue, 28 Sep 2004 18:21:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/28/models-of-interest/</guid><description>&lt;p>&lt;a href="https://matt.blogs.it/" target="_blank" rel="noopener">Matt&lt;/a> is thinking about &lt;a href="https://matt.blogs.it/2004/09/27.html#a1564" target="_blank" rel="noopener">modelling&lt;/a> the power of different interests.&lt;/p>
&lt;blockquote cite="https://matt.blogs.it/2004/09/27.html#a1564">
&lt;p>
I&amp;#8217;m trying to come up with a mathematic model that allows me to expresses interests, their strengths, and how they change over time. My original thinking was simply to model what is current as most interesting and anything prior to that as less interesting on some scale. But I started asking myself questions about how interests are shaped and changed.&lt;br /> [&amp;#8230;]&lt;br /> the model has to encompass ideas like continuity of interest. In the more realistic world where we talk about different things at once and leave and come back to topics as our interests wax and wane, well lets just say I don&amp;#8217;t have a clear shape for this in my head yet.
&lt;/p>
&lt;/blockquote>
&lt;p>In a comment I suggested that perhaps “&lt;a href="https://www.systemdynamics.org/DL-IntroSysDyn/stock.htm" target="_blank" rel="noopener">stocks and flows&lt;/a>” would be a useful model here…&lt;/p>
&lt;ul>
&lt;li>Model a given topic as a “stock”.&lt;/li>
&lt;li>Time spent thinking about the topic, effort expended on it etc. etc. drive the input “flow”&lt;/li>
&lt;li>You could have a time-based outflow, perhaps with an exponential to model some kind of half life.&lt;/li>
&lt;/ul>
&lt;p>Probably the behaviour this doesn’t easily model is when a new set of interests completely and suddenly displace the old – perhaps this would be better modelled by thinking of interests as peaks (or troughs) on a &lt;a href="https://www.calresco.org/attract.htm" target="_blank" rel="noopener">fitness landscape&lt;/a>…&lt;/p>
&lt;p>&lt;em>“Interests as attractors”&lt;/em> seems an appealing meme!&lt;/p></description></item><item><title>SAP management blogs</title><link>https://www.synesthesia.co.uk/2004/09/28/sap-management-blogs/</link><pubDate>Tue, 28 Sep 2004 17:53:52 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/28/sap-management-blogs/</guid><description>&lt;p>Even SAP have &lt;a href="https://www50.sap.com/community/pub/blogs.aspx" target="_blank" rel="noopener">blogs&lt;/a> now. Still some signs of old fashioned marketing thinking though – you have to register for their “Community” to read the blogs… Via &lt;a href="https://www.corporateblogging.info/2004/09/blogging-company-promotes-blogging-to.asp" target="_blank" rel="noopener">CorporateBlogging&lt;/a>&lt;/p></description></item><item><title>Commenting changes</title><link>https://www.synesthesia.co.uk/2004/09/26/commenting-changes/</link><pubDate>Sun, 26 Sep 2004 18:11:25 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/26/commenting-changes/</guid><description>&lt;p>I’ve installed the &lt;a href="https://weblogtoolscollection.com/archives/2004/09/24/three-strikes-and-out-damned-spam-out-i-say/" target="_blank" rel="noopener">Three Strikes&lt;/a> plugin from &lt;a href="https://weblogtoolscollection.com/" target="_blank" rel="noopener">Mark Ghosh&lt;/a>. Any problems commenting (i.e. keep getting redirected to a strange site) then please let me know by email to blog at this domain.&lt;/p>
&lt;p>Credit for pointing to the plugin goes to &lt;a href="https://www.charlesarthur.com/blog/" target="_blank" rel="noopener">Charles Arthur&lt;/a>&lt;/p></description></item><item><title>Patterns of Blog Posts</title><link>https://www.synesthesia.co.uk/2004/09/23/patterns-of-blog-posts/</link><pubDate>Thu, 23 Sep 2004 18:05:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/23/patterns-of-blog-posts/</guid><description>&lt;p>&lt;a href="https://blog.contentious.com/" target="_blank" rel="noopener">Amy Gahran&lt;/a> has started &lt;a href="https://blog.contentious.com/archives/2004/09/22/blogging-style-the-basic-posting-formats-series-index#more-340" target="_blank" rel="noopener">documenting&lt;/a> patterns of blog posts. 3 of 7 posted so far. I think this a type 2!&lt;/p></description></item><item><title>Blogging your bliss</title><link>https://www.synesthesia.co.uk/2004/09/22/blogging-your-bliss/</link><pubDate>Wed, 22 Sep 2004 22:40:05 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/22/blogging-your-bliss/</guid><description>&lt;p>&lt;a href="https://www.decafbad.com/blog/2004/09/22/bloggingyourbliss" target="_blank" rel="noopener">Blogging your bliss&lt;/a> – Lesley Orchard gets it.&lt;/p></description></item><item><title>Blogwalk IV – developing the work</title><link>https://www.synesthesia.co.uk/2004/09/22/blogwalk-iv-developing-the-work/</link><pubDate>Wed, 22 Sep 2004 22:16:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/22/blogwalk-iv-developing-the-work/</guid><description>&lt;p>Over at &lt;a href="https://headshift.com/moments.cfm" target="_blank" rel="noopener">Headshift&lt;/a> &lt;a href="https://chocnvodka.blogware.com/blog" target="_blank" rel="noopener">Suw Charman&lt;/a> has done a &lt;a href="https://headshift.com/archives/002150.cfm" target="_blank" rel="noopener">great job&lt;/a> of capturing the 11 core themes from the &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/09/18/blogwalk-iv/" target="_blank" rel="noopener">Blogwalk&lt;/a> “&lt;a href="https://headshift.com/archives/002152.cfm" target="_blank" rel="noopener">Window Wiki&lt;/a>“. As people reflect on the event there is discussion about how to best develop the ideas from this session and how to ensure better learning next time. Here’s my three-ha’porth, modified slightly from my own &lt;a href="https://purpleslurple.net/ps.php?theurl=https://headshift.com/archives/002150.cfm#purp269" target="_blank" rel="noopener">comment&lt;/a> to that discussion:&lt;/p>
&lt;p>&lt;strong>Reflection and Memory&lt;/strong>&lt;/p>
&lt;p>Memory-wise I find the “little black book” with a few key phrases or bullet points essential to remember the flow of the day.&lt;/p>
&lt;p>However I’m not keen to have a formal plenary “writing it down” session; partly so as to make best use of face-to-face time; partly because I find that writing a too-detailed set of notes tends to freeze the thinking at that point rather than allow the ideas to ferment and mature over time. &lt;a href="https://www.psybertron.org/" target="_blank" rel="noopener">Ian Glendinning&lt;/a> strikes the right chord &lt;a href="https://purpleslurple.net/ps.php?theurl=https://headshift.com/archives/002150.cfm#purp230" target="_blank" rel="noopener">here&lt;/a> for me.&lt;/p>
&lt;p>I do think that a reflection period at the end of each session would be a good way to surface and anchor thoughts without over-formalising.&lt;/p>
&lt;p>&lt;strong>Developing the Ideas&lt;/strong>&lt;/p>
&lt;p>The converse is also true – to continue the conversations amongst a geographically-dispersed group we are going to need to write it down on blogs, wikis, emails, IM etc. etc. – perhaps that is where we will begin to express a written emergence of our thinking?&lt;/p>
&lt;p>I’m beginning to think that as well as having the “seed” themes (the &lt;a href="https://purpleslurple.net/ps.php?theurl=https://headshift.com/archives/002150.cfm#purp156" target="_blank" rel="noopener">11 groupings&lt;/a> from the window) to work with it would be very helpful to have some candidate “research questions” in each of those areas to focus our output. Each question should combine a focus for the thinking with a “how could we test this in real life?”. Food for a later set of posts?&lt;/p>
&lt;p>&lt;strong>Technology&lt;/strong>&lt;/p>
&lt;p>Of course we already have one target output in terms of defining the right toolset (the [bliki]IntraBliki[/bliki]).&lt;/p>
&lt;p>The overwhelming majority of issues discussed on the day were around people, interactions, emotions and the psychology of blogging in business – indeed as &lt;a href="https://partnerships.typepad.com/civic/" target="_blank" rel="noopener">David Wilcox&lt;/a> &lt;a href="https://partnerships.typepad.com/civic/2004/09/window_wiki_the.html" target="_blank" rel="noopener">notes&lt;/a> many of these issues are those that relate to any organisational change. However I think it would be dangerous to think that there are no technology challenges left at all. In my experience unless the technology hurdle is very very low then it becomes a great hook for people to hang their “resistance to change” issues on. &lt;a href="https://www.scalefree.info/" target="_blank" rel="noopener">Anu Gupta&lt;/a> has &lt;a href="https://www.scalefree.info/2004/09/4_ways_to_pick_.html" target="_blank" rel="noopener">picked up&lt;/a> on this by referring to this Harvard Business School &lt;a href="https://hbswk.hbs.edu/item.jhtml?id=4378&amp;amp;t=strategy" title="How to pick a winning product" target="_blank" rel="noopener">article&lt;/a>&lt;/p>
&lt;p>Don’t forget that we are, by definition, a self-selected group who have been prepared to deal with the technology to get our ideas “out there”. The use of social software in the workplace will only succeed (what’s more &lt;em>should&lt;/em> only succeed) if it is successful in letting people do what they need to do more easily – a means not an end.&lt;/p></description></item><item><title>Updated feeds to use Feedburner</title><link>https://www.synesthesia.co.uk/2004/09/21/updated-feeds-to-use-feedburner/</link><pubDate>Tue, 21 Sep 2004 19:13:33 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/21/updated-feeds-to-use-feedburner/</guid><description>&lt;p>I’ve updated all the feeds for this site to use &lt;a href="https://feedburner.com/" target="_blank" rel="noopener">Feedburner&lt;/a>:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://feeds.feedburner.com/Synesthesia" target="_blank" rel="noopener">Blog + Linklog&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://feeds.feedburner.com/SynesthesiaComments" target="_blank" rel="noopener">Comments&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://feeds.feedburner.com/SynesthesiaOddments" target="_blank" rel="noopener">Latest Oddments&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://feeds.feedburner.com/SynesthesiaWiki" target="_blank" rel="noopener">Wiki Recent Changes&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Please point your reader at the new links.&lt;/p>
&lt;p>I’ve also updated all the &lt;code>&amp;lt;link&amp;gt;&amp;lt;/link&amp;gt;&lt;/code> tags in the page header to point to these feeds, so autodiscovery tools like the &lt;a href="https://www.bloglines.com/" target="_blank" rel="noopener">Bloglines&lt;/a> &lt;a href="https://jayseae.cxliv.org/2004/09/16/bloglines_toolkit_v1r4m1.html" target="_blank" rel="noopener">Toolkit&lt;/a> from &lt;a href="https://jayseae.cxliv.org/" target="_blank" rel="noopener">Chad Everett&lt;/a> and the new &lt;a href="https://www.mozilla.org/products/firefox/" target="_blank" rel="noopener">Firebird&lt;/a> &lt;a href="https://www.mozilla.org/products/firefox/releases/#new" target="_blank" rel="noopener">Live Bookmarks&lt;/a> feature will also pick up the correct feeds..&lt;/p>
&lt;p>(What do you mean you don’t use those tools yet?)&lt;/p></description></item><item><title>Stylesheet tweaks</title><link>https://www.synesthesia.co.uk/2004/09/21/stylesheet-tweaks/</link><pubDate>Tue, 21 Sep 2004 17:08:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/21/stylesheet-tweaks/</guid><description>&lt;p>Thanks to &lt;a href="https://www.johnniemoore.com/blog/" target="_blank" rel="noopener">Johnnie Moore&lt;/a> for pointing out that my style sheet was broken on IE6&lt;/p>
&lt;p>IE6 doesn’t seem to recognise the &lt;code>max-width&lt;/code> tag, so I’ve added an &lt;code>overflow:hidden&lt;/code> to the right-hand menu bar that stops it splurging all over the page in IE6 if one of the text items is too long.&lt;/p></description></item><item><title>How blog and wiki fit together (for me)</title><link>https://www.synesthesia.co.uk/2004/09/20/how-blog-and-wiki-fit-together-for-me/</link><pubDate>Mon, 20 Sep 2004 19:00:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/20/how-blog-and-wiki-fit-together-for-me/</guid><description>&lt;p>In the same &lt;a href="https://www.johnniemoore.com/blog/archives/000467.php" target="_blank" rel="noopener">post&lt;/a> that I just &lt;a href="https://www.synesthesia.co.uk/2004/09/20/mental-models-and-the-ladder-of-inference/" target="_blank" rel="noopener">blogged&lt;/a> Johnnie Moore goes on to say:&lt;/p>
&lt;blockquote>
&lt;p>Traditional models of group thinking seem based on me trying to cement my well-formed brick of thought to your well-formed brick. Increasingly, I find much more satisfaction in sharing the less-formed ideas and responses I have to conversations. I sense that by doing so, it’s possible to create some sense of joint intelligence that can get beyond existing mental models.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>I suppose that my blogging process tends towards bricks, as I write down ideas and get to tweak and edit them and improve them, to make them more palatable to the outside world.&lt;/p>
&lt;/blockquote>
&lt;p>For me this is the nub of why I need a blog plus &lt;a href="https://www.synesthesia.co.uk/blog/wiki/" target="_blank" rel="noopener">me-writable&lt;/a> and &lt;a href="https://www.synesthesia.co.uk/wiki/" target="_blank" rel="noopener">world-writable&lt;/a> wikis.&lt;/p>
&lt;p>Blog posts by their nature are a snapshot at a point in time and therefore imply some form of stasis. Wiki pages however are timeless and hence never finished, always open to flux.&lt;/p>
&lt;p>I’ve found the writing style that has started to evolve since I had this combination of tools is to scatter thoughts around the wiki-spaces until some juxtaposition forms that is sufficiently clear to create a blog-entry. The blog-entry becomes a picture of my thinking at a point in time and therefore essential to mapping out some kind of path. The state of the wiki pages continues to evolve – by looking where there is activity you can see which parts of my mental associations are currently to the forefront of attention.&lt;/p></description></item><item><title>Mental models and the ladder of inference</title><link>https://www.synesthesia.co.uk/2004/09/20/mental-models-and-the-ladder-of-inference/</link><pubDate>Mon, 20 Sep 2004 18:57:02 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/20/mental-models-and-the-ladder-of-inference/</guid><description>&lt;p>&lt;a href="https://www.johnniemoore.com/blog/" target="_blank" rel="noopener">Johnnie Moore&lt;/a> is thinking about &lt;a href="https://www.johnniemoore.com/blog/archives/000467.php" target="_blank" rel="noopener">changing mental models&lt;/a> , in particular how to ensure that group work really does take advantage of the collective intelligence of the group rather than falling back to s simple comparison or accumulation of everyone’s individual world view.&lt;/p>
&lt;p>This reminded me of the work published by Chris Argyris, Peter Senge and others on the [bliki]LadderOfInference[/bliki] . I wonder how we could encapsulate this thinking into the world of the blog?&lt;/p></description></item><item><title>A couple of tools</title><link>https://www.synesthesia.co.uk/2004/09/20/a-couple-of-tools/</link><pubDate>Mon, 20 Sep 2004 09:34:47 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/20/a-couple-of-tools/</guid><description>&lt;p>As requested by various people at Blogwalk, details of a couple of content tools I use / am investigating&lt;/p>
&lt;p>“Wikidpad”:https://www.jhorman.org/wikidPad/ is a personal wiki-like notepad for Windows. I use the registered version of this every day as my main personal note-taking tool at work.&lt;/p>
&lt;p>“Qumana”:https://qumana.com/ is currently in beta – a microcontent editing / publishing tool that is designed to make it easy to pull together links and text then post to various destinations.&lt;/p></description></item><item><title>The physics of high heels</title><link>https://www.synesthesia.co.uk/2004/09/19/the-physics-of-high-heels/</link><pubDate>Sun, 19 Sep 2004 13:10:25 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/19/the-physics-of-high-heels/</guid><description>&lt;p>&lt;a href="https://physics.iop.org/IOP/Press/PR1804.html" target="_blank" rel="noopener">The physics of high heels&lt;/a>&lt;/p></description></item><item><title>BlogWalk IV : IntraBliki</title><link>https://www.synesthesia.co.uk/2004/09/19/blogwalk-iv-intrabliki/</link><pubDate>Sun, 19 Sep 2004 09:10:32 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/19/blogwalk-iv-intrabliki/</guid><description>&lt;p>The theme of &lt;a href="https://blogwalk.mediapedagogy.com/" target="_blank" rel="noopener">Blogwalk IV&lt;/a> was the use of social software inside the firewall.&lt;/p>
&lt;p>We noted that there were certain technological barriers to be overcome before the tools were sufficiently invisible to support a wide acceptance of corporate blogging / wiki etc.&lt;/p>
&lt;p>I agreed to start some work to define the requirements of the ideal internal corporate blog / wiki tool so I’ve started writing some initial user requirements in the wiki. The root of the notes is at [wiki]IntraBliki[/wiki], please join in if you are interested.&lt;/p></description></item><item><title>Blogwalk IV</title><link>https://www.synesthesia.co.uk/2004/09/18/blogwalk-iv/</link><pubDate>Sat, 18 Sep 2004 09:30:36 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/18/blogwalk-iv/</guid><description>&lt;p>Yesterday was &lt;a href="https://blogwalk.mediapedagogy.com/" target="_blank" rel="noopener">Blogwalk IV&lt;/a> – a very enjoyable and mind-stretching day talking with other bloggers on the theme of “How will the world of work change as a result of social software use inside the firewall”.&lt;/p>
&lt;p>Thanks to the excellent “light touch” facilitation from &lt;a href="https://blog.mathemagenic.com" target="_blank" rel="noopener">Lilia Efimova&lt;/a> and &lt;a href="https://www.johnniemoore.com/blog/" target="_blank" rel="noopener">Johnnie Moore&lt;/a> we covered a range of topics technical, cultural, managerial, commercial and more… (there will be more posts over the next few days as I and others get on with our agreed actions!)&lt;/p>
&lt;p>Some of the other people there: (apologies if I’ve left you off)&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.psybertron.org/" target="_blank" rel="noopener">Ian Glendinning&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://partnerships.typepad.com/civic/" target="_blank" rel="noopener">David Wilcox&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.scalefree.info/" target="_blank" rel="noopener">Anu Gupta&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.codewitch.org/" target="_blank" rel="noopener">Riccardo Cambiassi&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://chocnvodka.blogware.com/" target="_blank" rel="noopener">Suw Charman&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.roell.net/weblog/" target="_blank" rel="noopener">Martin Roell&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.blogger.com/profile/1765762" target="_blank" rel="noopener">Chris Macrae&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.knowledgeboard.com" target="_blank" rel="noopener">Ed Mitchell&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.louiseferguson.com/cityofbits.htm" target="_blank" rel="noopener">Louise Ferguson&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.perfectpath.co.uk/" target="_blank" rel="noopener">Lloyd Davis&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://toutlemonde.com/Blogger/viewEntries.do?blogname=Songlian" target="_blank" rel="noopener">Desiree Gosby&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.savaje.com/" target="_blank" rel="noopener">Omar Green&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://home.btconnect.com/glottalstop/blog/" target="_blank" rel="noopener">Mark Brady&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.betaroad.com/weblog/" target="_blank" rel="noopener">Paul Goodison&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://www.headshift.com/" target="_blank" rel="noopener">Lee Bryant&lt;/a> dropped in for lunch&lt;/p>
&lt;p>and &lt;a href="https://matt.blogs.it/" target="_blank" rel="noopener">Matt Mower&lt;/a> joined for dinner…&lt;/p>
&lt;p>Disappointed that &lt;a href="https://www.community-intelligence.com/blogs/public/" target="_blank" rel="noopener">George Por&lt;/a> couldn’t make it but I’m sure we will catch up again soon George!&lt;/p></description></item><item><title>Hypertasking</title><link>https://www.synesthesia.co.uk/2004/09/08/hypertasking/</link><pubDate>Wed, 08 Sep 2004 08:40:12 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/08/hypertasking/</guid><description>&lt;p>&lt;a href="https://ming.tv/" target="_blank" rel="noopener">Ming&lt;/a> &lt;a href="https://ming.tv/flemming2.php/__show_article/_a000010-001356.htm?time=1094629163" target="_blank" rel="noopener">links&lt;/a> to this &lt;a href="https://www.azcentral.com/news/articles/0904hypertasking04.html" target="_blank" rel="noopener">article&lt;/a> about research into “Hypertasking” which suggests that although frantic multi-tasking (with the help of phones, IM, email, feeds, etc., etc., etc.) has the appearance of productivity the reality is of significantly reduced performance on the individual cognitive tasks. This is not the first study to suggest that multi-tasking makes you perform less well – for example &lt;a href="https://www.umich.edu/~bcalab/articles/UPIArticle2001.html" target="_blank" rel="noopener">this&lt;/a>, &lt;a href="https://www.eurekalert.org/pub_releases/2001-07/cmu-cms072601.php" target="_blank" rel="noopener">this&lt;/a> and &lt;a href="https://www.umich.edu/~bcalab/multitasking.html" target="_blank" rel="noopener">this&lt;/a>.&lt;/p>
&lt;p>In the comments to Ming’s post there are a range of views expressed but two themes emerge:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>using the tools available today to _filter_ incoming information and tasks, allowing you to concentrate on the important things&lt;/p>
&lt;/li>
&lt;li>
&lt;p>there is indeed a very sharp limit to the power of conscious processing to handle multiple tasks (Miller’s [bliki]SevenPlusOrMinusTwo[/bliki]) but the unconscious mind is capable of many many simultaneous activities.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>From my own subjective experience I would suggest that one reason why having too many things to do “simultaneously” hits productivity is because it ignores the way the mind transfers things into unconscious processing.&lt;/p>
&lt;p>The trick seems to be to concentrate on one thing sufficiently long that you build up a whole set of pathways relating to it, then “put it down” and move on to something else – the unconscious will still be working away. Do this and you will be surprised how often the answer “just appears” a few hours or days later.&lt;/p>
&lt;p>Time-slicing too finely in the conscious domain seems to have the effect that no topic creates enough energy to engage the unconscious learning circuits, so I’m left relying on the distractable power of the conscious alone.&lt;/p>
&lt;p>It would be interesting to explore the &lt;a href="https://www.google.com/search?q=neuroscience&amp;#43;memory" target="_blank" rel="noopener">neuroscience&lt;/a> of this a bit further…&lt;/p>
&lt;p>From a [bliki]TheoryOfConstraints[/bliki] perspective it would appear that conscious attention is the constraint, so useful questions to consider might be:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>How do I get the most out of my conscious processing power?&lt;/p>
&lt;/li>
&lt;li>
&lt;p>What else do I have to change to allow my conscious attention to work at its best?&lt;/p>
&lt;/li>
&lt;li>
&lt;p>How can I find other ways of processing information (e.g. exploiting my unconscious mind)?&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>Reed’s law in several places</title><link>https://www.synesthesia.co.uk/2004/09/07/reeds-law-in-several-places/</link><pubDate>Tue, 07 Sep 2004 19:15:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/07/reeds-law-in-several-places/</guid><description>&lt;p>It is the nature of mind to filter experience through the most recent or most strongly held concepts.&lt;/p>
&lt;p>No wonder then that after (finally) coming across “Reed’s Law”:https://www.reed.com/Papers/GFN/reedslaw.html thanks to “this”:https://smartpei.typepad.com/robert_patersons_weblog/2004/08/reeds_law_and_t.html thought-provoking article by “Robert Paterson”:https://smartpei.typepad.com/ I shortly noticed these two:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Adina Levin in “describing”:https://alevin.com/weblog/archives/001477.html the recent “experiments”:https://alex.halavais.net/news/index.php?p=794 to test Wikipedia’s resilience spots that the real power of Wikipedia’s “defensive techniques”:https://frassle.rura.org/wikipediaShowsIts lies in the effect they have of turning the site &lt;q cite="https://alevin.com/weblog/archives/001477.html">into a warren of virtual neighborhoods&lt;/q>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>In [bliki]Building Public Value[/bliki] the “BBC”:https://www.bbc.co.uk/ is seeking to link its strategy with the greater public good in support of the argument for Charter Renewal. A lot of the BBC document talks about the power of that unique organisation to build a sense of community amongst various parts of the British population (an example of an activity that specifically stimulates group-forming would be “iCan”:https://www.bbc.co.uk/dna/ican/). Could this strategic direction be the best example yet of a broadcast-based organisation learning to tap the power of “Reed’s Law”:https://www.reed.com/Papers/GFN/reedslaw.html ??&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>Integrating blog and wiki</title><link>https://www.synesthesia.co.uk/2004/09/07/integrating-blog-and-wiki/</link><pubDate>Tue, 07 Sep 2004 10:55:42 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/07/integrating-blog-and-wiki/</guid><description>&lt;p>I’ve started collecting my ideas about integrating blog and wiki at [bliki]WikiBlogIntegration[/bliki]. Note to self to review what “Ton”:https://www.zylstra.org/blog/ is “up to”:https://www.zylstra.org/blog/archives/001390.html …&lt;/p></description></item><item><title>More site changes</title><link>https://www.synesthesia.co.uk/2004/09/05/more-site-changes/</link><pubDate>Sun, 05 Sep 2004 21:43:43 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/09/05/more-site-changes/</guid><description>&lt;p>See [bliki]TikiWikiHasGone[/bliki] for details.&lt;/p></description></item><item><title>Johnny Depp World</title><link>https://www.synesthesia.co.uk/2004/08/24/johnny-depp-world/</link><pubDate>Tue, 24 Aug 2004 10:46:10 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/08/24/johnny-depp-world/</guid><description>&lt;p>Another modern parenting milestone – my daughter has her first &lt;a href="https://mildred-deppspage.blogspot.com/" target="_blank" rel="noopener">blog&lt;/a>…&lt;/p></description></item><item><title>Testing Meme Propagation In Blogspace: Add Your Blog!</title><link>https://www.synesthesia.co.uk/2004/08/03/testing-meme-propagation-in-blogspace-add-your-blog/</link><pubDate>Tue, 03 Aug 2004 10:23:12 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/08/03/testing-meme-propagation-in-blogspace-add-your-blog/</guid><description>&lt;p>This posting is a community experiment that tests how a meme, represented by this blog posting, spreads across blogspace, physical space and time. It will help to show how ideas travel across blogs in space and time and how blogs are connected. It may also help to show which blogs are most influential in the propagation of memes. The dataset from this experiment will be public, and can be located via Google (or Technorati) by doing a search for the GUID for this meme (below).&lt;/p>
&lt;p>The original posting for this experiment is located at: Minding the Planet (Permalink: &lt;a href="https://novaspivack.typepad.com/nova" target="_blank" rel="noopener">https://novaspivack.typepad.com/nova&lt;/a>_spivacks_weblog/2004/08/a_sonar_ping_of.html) — results and commentary will appear there in the future.&lt;/p>
&lt;p>Please join the test by adding your blog (see instructions, below) and inviting your friends to participate — the more the better. The data from this test will be public and open; others may use it to visualize and study the connectedness of blogspace and the propagation of memes across blogs.&lt;/p>
&lt;p>The GUID for this experiment is: as098398298250swg9e98929872525389t9987898tq98wteqtgaq62010920352598gawst (this GUID enables anyone to easily search Google (or Technorati) for all blogs that participate in this experiment). Anyone is free to analyze the data of this experiment. Please publicize your analysis of the data, and/or any comments by adding comments onto the original post (see URL above). (Note: it would be interesting to see a geographic map or a temporal animation, as well as a social network map of the propagation of this meme.)&lt;/p>
&lt;p>INSTRUCTIONS&lt;/p>
&lt;p>To add your blog to this experiment, copy this entire posting to your blog, and then answer the questions below, substituting your own information, below, where appropriate. Other than answering the questions below, please do not alter the information, layout or format of this post in order to preserve the integrity of the data in this experiment (this will make it easier for searchers and automated bots to find and analyze the results later).&lt;/p>
&lt;p>REQUIRED FIELDS (Note: Replace the answers below with your own answers)&lt;/p>
&lt;p>(1) I found this experiment at URL: &lt;a href="https://www.wingedpig.com/" target="_blank" rel="noopener">https://www.wingedpig.com/&lt;/a>&lt;/p>
&lt;p>(2) I found it via “Newsreader Software” or “Browsing the Web” or “Searching the Web” or “An E-Mail Message”: Newsreader Software&lt;/p>
&lt;p>(3) I posted this experiment at URL: &lt;a href="https://synesthesia.co.uk/blog/" target="_blank" rel="noopener">https://synesthesia.co.uk/blog/&lt;/a>&lt;/p>
&lt;p>(4) I posted this on date (day, month, year): 03/08/04&lt;/p>
&lt;p>(5) I posted this at time (24 hour time): 11:19:00&lt;/p>
&lt;p>(6) My posting location is (city, state, country): London, London, UK&lt;/p>
&lt;p>OPTIONAL SURVEY FIELDS (Replace the answers below with your own answers):&lt;/p>
&lt;p>(7) My blog is hosted by: WordPress&lt;/p>
&lt;p>(8) My age is: 43&lt;/p>
&lt;p>(9) My gender is: Male&lt;/p>
&lt;p>(10) My occupation is: CIO&lt;/p>
&lt;p>(11) I use the following RSS/Atom reader software: Bloglines&lt;/p>
&lt;p>(12) I use the following software to post to my blog:&lt;/p>
&lt;p>(13) I have been blogging since (day, month, year): 22/09/01&lt;/p>
&lt;p>(14) My web browser is: Mozilla&lt;/p>
&lt;p>(15) My operating system is: Windows 98 / XP&lt;/p></description></item><item><title>The Power of Context</title><link>https://www.synesthesia.co.uk/2004/07/27/the-power-of-context/</link><pubDate>Tue, 27 Jul 2004 21:49:22 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/07/27/the-power-of-context/</guid><description>&lt;p>&lt;a href="https://blog.contentious.com/" target="_blank" rel="noopener">Amy Gahran&lt;/a> writes about the power of context – &lt;a href="https://blog.contentious.com/archives/000288.html" target="_blank" rel="noopener">How Arranging Ideas Spawns New Ideas&lt;/a> – to stimulate new thoughts around a subject:&lt;/p>
&lt;blockquote>
&lt;p>No idea exists in a vacuum. It is connected to related ideas, and to the real world, and to other people’s perspectives. Those connecting threads of context are where the vast creative potential of the human mind lies. cite=”https://blog.contentious.com/archives/000288.html”&lt;/p>
&lt;/blockquote>
&lt;p>The idea that the mind works associatively is pretty well established – amongst many other things it’s the key behind &lt;a href="https://www.mind-map.com/EN/index.html" target="_blank" rel="noopener">mind mapping&lt;/a>. Making public some of my own associations I can see a connection between Amy’s thoughts, Tony Goodson’s &lt;a href="https://tonygoodson.typepad.com/tonygoodson/2004/04/butterfly_momen.html" target="_blank" rel="noopener">Butterfly moments and bricolage&lt;/a> (worth noting that Tony is a fervent advocate of mind mapping) and the ideas I tried to capture &lt;a href="https://www.synesthesia.co.uk/2004/05/10/unpredictable-emergence-of-learning/">here&lt;/a>, in particular:&lt;/p>
&lt;blockquote>
&lt;p>The benefits of any specific piece of knowledge are not always forseeable until the right combination of circumstances and other people arises – in other words unpredictable emergent behaviour;&lt;/p>
&lt;/blockquote>
&lt;p>Another possible connection is to &lt;a href="https://www.synesthesia.co.uk/2004/05/28/social-origins-of-good-ideas/">The Social Origins of Good Ideas&lt;/a>&lt;/p>
&lt;p>Where Amy particularly extends our thinking is the way she then derives some very specific ideas for enhancements to knowledge management tools that would take advantage of associative thinking:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Random elements […]&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Visual juxtaposition […]&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Embedded brainstorming tools&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Sticky notes (that capture context for the thought) […]&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>There’s an interesting challenge for developers here but not an insurmountable one I think… Just needs someone with the skill to hang together a few existing tools perhaps?&lt;/p>
&lt;p>In a sense a blog entry like this is a form of the fourth item (“Sticky notes”) because it captures an idea and via a combination of hyperlinks and the use of trackbacks captures a a lot of the context as well – but it’s not exactly fast – how many ideas slip by before you can grab the idea and it’s context? I think we need a system that treats “ideas” as some kind of atom and deals with the messy business of collecting and managing &lt;abbrev title="Uniform Resource Identifier">URI&lt;/abbrev>s in the background.&lt;/p>
&lt;p>For embedded brainstorming tools could someone integrate &lt;a href="https://freemind.sourceforge.net/" target="_blank" rel="noopener">Freemind&lt;/a> with a &lt;a href="https://en.wikipedia.org/wiki/Bliki" target="_blank" rel="noopener">bliki&lt;/a>?&lt;/p>
&lt;p>Are there any open source developers out there who feel inspired by this?&lt;/p></description></item><item><title>What is The Plural of Wiki?</title><link>https://www.synesthesia.co.uk/2004/07/15/what-is-the-plural-of-wiki/</link><pubDate>Thu, 15 Jul 2004 21:37:18 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/07/15/what-is-the-plural-of-wiki/</guid><description>&lt;p>I’ve added a “second wiki”:https://www.synesthesia.co.uk/blog/wiki/ for no particularly good reason other than I saw how the anonymous author of Weblog Tools Collection had “integrated”:https://weblogtoolscollection.com/archives/2004/07/05/wordpress-12-wiki-integration/ [bliki]ErfurtWiki[/bliki] into WordPress and decided I wanted one too! This one is just for me – a different sort of publishing space without the time-bound nature of the blog but closely integrated into it.&lt;/p>
&lt;p>I shall still keep the original, more fully-featured “Tiki-based”:https://tikiwiki.org/ “wiki”:https://www.synesthesia.co.uk/tiki/ for more collaborative or “major” bits of writing – not quite sure what the difference between the two areas is but they feel as if they both have a place…&lt;/p>
&lt;p>+Updated – see [bliki]TikiWikiHasGone[/bliki]+&lt;/p></description></item><item><title>The Lure of Slide Rules</title><link>https://www.synesthesia.co.uk/2004/07/11/the-lure-of-slide-rules/</link><pubDate>Sun, 11 Jul 2004 14:47:14 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/07/11/the-lure-of-slide-rules/</guid><description>&lt;p>Over at “Davos Newbies”:https://www.davosnewbies.com/ Lance Knobel is writing about “the lure of the slide rule”:https://www.davosnewbies.com/2004/07/08#theLureOfTheSlideRule:&lt;/p>
&lt;p>bq. “Those of us who love slide rules are by definition not Luddites. It’s the tactile nature of the technology that excites, rather than a revulsion against the technologies that replaced it. There were gains provided by electronic calculators. Our work, lives and society are being dramatically transformed – and I believe generally improved – through near-ubiquitous computing. But there are losses from the slide rule age that are more than nostalgia. It’s better to be a tool user than a tool manager.”&lt;/p>
&lt;p>I too was one of the last generation at school not only to learn about this device but to use it on a daily basis. Lance touches (!) on the tactile nature of the tool yet this goes beyond pure pleasure – I don’t think it is too far-fetched to say that using a slide rule gives you a real _feel_ for numbers… After all how else can you easily demonstrate that to multiply two numbers you can add the logarithms? (yes, we used log tables too!).&lt;/p></description></item><item><title>Tv tropes</title><link>https://www.synesthesia.co.uk/2004/07/11/tv-tropes/</link><pubDate>Sun, 11 Jul 2004 13:02:21 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/07/11/tv-tropes/</guid><description>&lt;p>Does that TV show seem familiar? Check out those recurrent themes at the “TV Tropes Wiki”:https://tvwiki.sytes.net/&lt;/p></description></item><item><title>Collaborative Note-taking</title><link>https://www.synesthesia.co.uk/2004/07/08/collaborative-note-taking/</link><pubDate>Thu, 08 Jul 2004 11:45:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/07/08/collaborative-note-taking/</guid><description>&lt;p>Steph Booth gives a really clear explanation of &lt;a href="https://climbtothestars.org/archives/2004/07/08/taking-collaborative-notes-at-blogtalk/" target="_blank" rel="noopener">Taking Collaborative Notes at BlogTalk&lt;/a>&lt;/p>
&lt;p>[via &lt;a href="https://chocnvodka.blogware.com/blog/_archives/2004/7/8/101784.html" target="_blank" rel="noopener">Chocolate and Vodka&lt;/a>]&lt;/p></description></item><item><title>WordPress Modifications</title><link>https://www.synesthesia.co.uk/2004/07/08/wordpress-modifications/</link><pubDate>Thu, 08 Jul 2004 10:36:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/07/08/wordpress-modifications/</guid><description>&lt;p>Lots of “WordPress Modifications”:https://weblog.burningbird.net/archives/2004/07/07/wordpress-modifications/fulltext/ from “Shelley”:https://weblog.burningbird.net/&lt;/p></description></item><item><title>Enterprise Architecture</title><link>https://www.synesthesia.co.uk/2004/07/08/enterprise-architecture-2/</link><pubDate>Thu, 08 Jul 2004 08:51:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/07/08/enterprise-architecture-2/</guid><description>&lt;p>On Monday this week I sent myself on a one day course from “Architecting The Enterprise”:https://www.architecting-the-enterprise.com/ – a management introduction to the “TOGAF”:https://www.opengroup.org/architecture/togaf/ enterprise architecture framework.&lt;/p>
&lt;p>Hard going in parts because (by their nature) architecture frameworks are very conceptual – I was struggling a bit on the day to see how this could be applied in the messy real world of work. However over the next couple of days it has gelled with some conversations about work goals for the next year and I’ve started seeing new ways of doing things as a result of having the new concepts.&lt;/p>
&lt;p>Still struggling a bit with how to use and adapt, but I think I can see a path…&lt;/p>
&lt;p>I’d love to blog the whole process of incorporating the model into my work, adapting it to work for us – unfortunately that would cross my “no public blogging about work” boundary. If I can extract some generalisable concepts though I’ll post them here…&lt;/p></description></item><item><title>Shivers</title><link>https://www.synesthesia.co.uk/2004/06/30/shivers/</link><pubDate>Wed, 30 Jun 2004 22:33:57 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/30/shivers/</guid><description>&lt;p>In NLP they’re called anchors.&lt;/p>
&lt;p>Simple sensory inputs that trigger a whole range of feelings, memories, thoughts, imagined futures, new capabilities…&lt;/p>
&lt;p>For most people music can be one of the most powerful anchors – the idea of “our song” is not a lover’s cliche without reason.&lt;/p>
&lt;p>A sign of my age (and a serious lack of music buying during the later years) – a significant majority of my music collection is still on vinyl. Despite the lack of a functioning deck for several years I’ve lugged a couple of hundred LPs through a divorce and a couple of house moves. The most recent move was enough to ensure that I did something about the situation.&lt;/p>
&lt;p>Thanks to Google I found &lt;a href="https://www.musonic.co.uk" target="_blank" rel="noopener">Musonic UK&lt;/a>, just down the road in Watford, manufacturers of replacement styli. Waiting on my doormat when I got home from work today was a small padded envelope containg the desired item and within a few minutes I had the deck hooked up and ready to play.&lt;/p>
&lt;p>What to play first? Almost at random I selected “Victims of the Fury” – a &lt;a href="https://www.trowerpower.com/" target="_blank" rel="noopener">Robin Trower&lt;/a> album from 1980 that I’d not heard in many, many years.&lt;/p>
&lt;p>As the first powerful, wailing chords of “Jack and Jill” filled my living room I was taken straight back to my 18 year old self, recovering once-dark memories of the short-lived love for which this album (and in particular this track) were the “mourning” songs…&lt;/p>
&lt;p>Within seconds that spine-shivery, chest-warming feeling was back – the power of music that stays dormant inside ready to awake.&lt;/p>
&lt;p>I’ve missed this.&lt;/p></description></item><item><title>Unwritten Entries</title><link>https://www.synesthesia.co.uk/2004/06/28/unwritten-entries/</link><pubDate>Mon, 28 Jun 2004 12:42:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/28/unwritten-entries/</guid><description>&lt;p>Added a wiki page to capture ideas that aren’t yet ready to be articles [wiki]UnwrittenEntries[/wiki]&lt;/p></description></item><item><title>RSS sidebar</title><link>https://www.synesthesia.co.uk/2004/06/28/rss-sidebar/</link><pubDate>Mon, 28 Jun 2004 11:47:05 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/28/rss-sidebar/</guid><description>&lt;p>Added sidebar lists of Wiki Changes and deli.icio.us links using “CG-Feedread”:https://www.chait.net/index.php?p=85&lt;/p>
&lt;p>Minor tweak to suppress feed titles see [wiki]BlogFeedReader[/wiki]&lt;/p></description></item><item><title>Remember, always take a backup</title><link>https://www.synesthesia.co.uk/2004/06/26/remember-always-take-a-backup/</link><pubDate>Sat, 26 Jun 2004 18:00:24 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/26/remember-always-take-a-backup/</guid><description>&lt;p>Something in tikiwiki broke the main database table. I’d restore it from backup but… (you know what comes next). Chance for some “major refactoring” !&lt;/p></description></item><item><title>Cory on DRM</title><link>https://www.synesthesia.co.uk/2004/06/18/cory-on-drm/</link><pubDate>Fri, 18 Jun 2004 14:52:06 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/18/cory-on-drm/</guid><description>&lt;p>Cory Doctorow has “posted”:https://craphound.com/msftdrm.txt the talk on DRM(Digital Rights Management) he gave this week to Microsoft Research&lt;/p>
&lt;p>bq. Here’s what I’m here to convince you of:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>That DRM systems don’t work&lt;/p>
&lt;/li>
&lt;li>
&lt;p>That DRM systems are bad for society&lt;/p>
&lt;/li>
&lt;li>
&lt;p>That DRM systems are bad for business&lt;/p>
&lt;/li>
&lt;li>
&lt;p>That DRM systems are bad for artists&lt;/p>
&lt;/li>
&lt;li>
&lt;p>That DRM is a bad business-move for MSFT&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>+and now someone has turned it into a “wiki”:https://www.commonhouse.net/wiki/drm/FrontPage+&lt;/p>
&lt;p>+and an “HTML version”:https://junk.haughey.com/doctorow-drm-ms.html+&lt;/p></description></item><item><title>The Reality of Running Away from Stuff</title><link>https://www.synesthesia.co.uk/2004/06/17/the-reality-of-running-away-from-stuff/</link><pubDate>Thu, 17 Jun 2004 17:28:05 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/17/the-reality-of-running-away-from-stuff/</guid><description>&lt;p>When movie chase scenes get it wrong – “The Reality of Running Away from Stuff”:https://www.cc.gatech.edu/people/home/idris/Movie_Reviews/Reality_of_Running_Away.html [via “BoingBoing”:https://www.boingboing.net/]&lt;/p></description></item><item><title>Sources</title><link>https://www.synesthesia.co.uk/2004/06/17/sources/</link><pubDate>Thu, 17 Jun 2004 13:06:41 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/17/sources/</guid><description>&lt;p>Added sidebar link for my “blogroll”:https://www.synesthesia.co.uk/blog/sources.php and “my del.icio.us linklist”:https://del.icio.us/synesthesia&lt;/p></description></item><item><title>Wish-of-the-Month Club</title><link>https://www.synesthesia.co.uk/2004/06/17/wish-of-the-month-club/</link><pubDate>Thu, 17 Jun 2004 11:04:13 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/17/wish-of-the-month-club/</guid><description>&lt;p>Leslie Orchard is “automating”:wishlist.https://www.decafbad.com/blog/2004/06/16/wishofthemonthclub1 the process of buying himself things from his Amazon wishlist&lt;/p></description></item><item><title>Jack Elve 1917-2000</title><link>https://www.synesthesia.co.uk/2004/06/14/jack-elve/</link><pubDate>Mon, 14 Jun 2004 06:04:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/14/jack-elve/</guid><description>&lt;p>Today would have been my father’s 87th birthday. For some reason it seems more important to remember him on this day than on the anniversary of his death – perhaps because the things I remember about him are about life, in particular the things I learnt without knowing – that only now I am learning to recognise in me too.&lt;/p></description></item><item><title>The Boy Outside the Classroom</title><link>https://www.synesthesia.co.uk/2004/06/13/boy-outside-the-classroom/</link><pubDate>Sun, 13 Jun 2004 21:26:03 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/13/boy-outside-the-classroom/</guid><description>&lt;p>In “An Evening of Blues and Separateness”:https://bookoflife.blogs.com/welcome/2004/06/blues_and_separ.html Denny Coates writes about his observations at a social event:&lt;/p>
&lt;p>bq. I’m aware that most of the people I encounter in my world are part of the mainstream, and I departed from that a long time ago. This evening, I was aware that most of these good people were operating from a set of assumptions that I no longer relate to. In the old days, my feeling of separateness might have been called “alienation.” In truth, I’m happy with my perspective. It’s what allows me to be true to myself, to be real, to encounter, as best I can, the world as it is, without expectations or assumptions. Which is my source of happiness and spirituality. But I do sometimes feel like a “stranger in a strange land.”&lt;/p>
&lt;p>I found a resonance with my own feelings in this post. A few years ago, whilst doing my NLP training, I rediscovered an image from my early years that seemed to have affected a lot of my life – I remember when I was 5, in my first year of school, I was set some extra work (allegedly a “bright” child!) and for some reason the teacher sent me outside to work in the corridor.&lt;/p>
&lt;p>From exploring this image during my training I began to see the impact it had had on my life and the power it had as a metaphor of seperateness – a conflict between “doing well” and connecting with my peers. Now as a mature man I have learned how to feel connection, how to engage and associate in the moment but the “boy outside the classroom” remains – I have learned how to use his power rather than fear what seperateness and difference might mean, to appreciate the insights he still sends me.&lt;/p>
&lt;p>Some of the questions that come to me as I think about the people Denny calls “the mainstream”: do they not feel this, or do they get a hint of it and as a result try even harder to connect and conform? Are people like Denny and I gifted or cursed? Are we shamans or (incipient, potential) sociopaths? Are we over or under developed? It’s all about perspective and framing I suggest…&lt;/p>
&lt;p>Denny responded to some of these questions in the “comments”:https://bookoflife.blogs.com/welcome/2004/06/blues_and_separ.html :&lt;/p>
&lt;p>bq. Are independent thinkers gifted or cursed? Surely there are the downsides, the so-called alienation, which can bring acute discomfort if one lets it. Personally, I’ve learned to cherish my separateness as the best part of me; it’s what makes everything else work. It’s kind of like living in a state of ambiguity, but that’s cool, because so much of life is truly unknowable anyway. Living that truth makes for a lot of excitement. It’s certainly not a worldview I would promote to anyone, however, but simply something that helps me affirm my own life in my own way.&lt;/p>
&lt;p>Similar-but-different to how I feel about it. For me the “boy outside” contributes to at least two aspects of who I am today. In part he has turned into the observer part of my mind – able to stand back even when the rest of me is fully engaged and take a look at what’s going on. It’s a great attribute for coaching or negotiating or any kind of face-to-face communication – although one that is almost impossible to explain to people. The other descendant is my independence of thought – although I have my upbringing to thank for that as well – my father in particular managed to put across the message that you should make your own mind up, especially about the important things.&lt;/p></description></item><item><title>A guide to Theory of Constraints</title><link>https://www.synesthesia.co.uk/2004/06/11/a-guide-to-theory-of-constraints/</link><pubDate>Fri, 11 Jun 2004 14:24:02 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/11/a-guide-to-theory-of-constraints/</guid><description>&lt;p>“A Guide to Implementing the Theory of Constraints (TOC)”:https://www.dbrmfg.co.nz/Preface.htm [via “Frank Patrick”:https://www.focusedperformance.com/blogger.html]&lt;/p></description></item><item><title>GPS Drawing Gallery</title><link>https://www.synesthesia.co.uk/2004/06/11/gps-drawing-gallery/</link><pubDate>Fri, 11 Jun 2004 14:15:40 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/11/gps-drawing-gallery/</guid><description>&lt;p>“GPS Drawing Gallery”:https://www.gpsdrawing.com/gallery.htm [via “The Obvious?”:https://theobvious.typepad.com/blog/2004/06/staggering_.html]&lt;/p></description></item><item><title>Keeping Your Options Open</title><link>https://www.synesthesia.co.uk/2004/06/11/keeping-your-options-open/</link><pubDate>Fri, 11 Jun 2004 13:40:11 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/11/keeping-your-options-open/</guid><description>&lt;p>“Extreme Programming and the Economics of Flexibility”:https://www.favaro.net/john/home/publications/xpecon.pdf [PDF] via “Agile Business Coach”:https://abc.truemesh.com/&lt;/p></description></item><item><title>Knowledge Management in the Real World</title><link>https://www.synesthesia.co.uk/2004/06/11/knowledge-management-in-the-real-world/</link><pubDate>Fri, 11 Jun 2004 13:20:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/11/knowledge-management-in-the-real-world/</guid><description>&lt;p>“Knowledge Management in the Real World”:https://www.readwriteweb.com/archives/001946.php&lt;/p></description></item><item><title>Ming on Dreaming</title><link>https://www.synesthesia.co.uk/2004/06/11/ming-on-dreaming/</link><pubDate>Fri, 11 Jun 2004 12:53:13 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/11/ming-on-dreaming/</guid><description>&lt;p>Ming on “Dreaming”:https://ming.tv/flemming2.php/__show_article/_a000010-001280/&lt;/p></description></item><item><title>Broadcatching Roundup</title><link>https://www.synesthesia.co.uk/2004/06/11/broadcatching-roundup/</link><pubDate>Fri, 11 Jun 2004 12:48:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/11/broadcatching-roundup/</guid><description>&lt;p>Interesting roundup of “broadcatching”:https://www.corante.com/importance/archives/004274.html#more – the impact of web technologies such as RSS(Really Simple Syndication) on broadcasting&lt;/p></description></item><item><title>Dream weblog / wiki tool</title><link>https://www.synesthesia.co.uk/2004/06/11/dream-weblog-wiki-tool/</link><pubDate>Fri, 11 Jun 2004 12:35:11 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/11/dream-weblog-wiki-tool/</guid><description>&lt;p>“Lilia Efimova”:https://blog.mathemagenic.com/ is writing about her “dream weblog / wiki tool”:https://blog.mathemagenic.com/2004/06/08.html#a1233. Some really interesting ideas about how to combine the tools to support her “favoured approach”:https://blog.mathemagenic.com/2004/04/08.html#a1160 of blog to capture inital thoughts and wiki to refactor into output documents. I think the only factor I would add would be good support for an integrated drawing tool in both the blog and wiki – many systems-related ideas are much easier to convey in pictures than words…&lt;/p></description></item><item><title>Da Vinci Notebooks</title><link>https://www.synesthesia.co.uk/2004/06/08/da-vinci-notebooks/</link><pubDate>Tue, 08 Jun 2004 17:44:15 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/08/da-vinci-notebooks/</guid><description>&lt;p>“Day-by-day Da Vinci”:https://www.interconnected.org/home/more/davinci Read the pages of Leonardo Da Vinci’s Notebooks by RSS, one at a time.&lt;/p>
&lt;p>“Matt Webb”:https://www.interconnected.org/home/ via “LibrarianInBlack”:https://librarianinblack.typepad.com/librarianinblack/2004/06/davinci_noteboo.html&lt;/p></description></item><item><title>Business value approach to requirements</title><link>https://www.synesthesia.co.uk/2004/06/08/business-value-approach-to-requirements/</link><pubDate>Tue, 08 Jun 2004 16:49:16 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/08/business-value-approach-to-requirements/</guid><description>&lt;p>“Chris Matts”:https://abc.truemesh.com/ “points”:https://abc.truemesh.com/archives/000306.html to a paper he co-authored with “Andy Pols”:https://www.pols.co.uk/blog/index.html on “Business Value-driven Software Development”:https://www.pols.co.uk/business-coach/BusinessValueDrivenDevelopment.pdf (PDF) Sounds like obvious common sense to me, which presumably means it doesn’t happen as much as it could in the real world! 🙂&lt;/p>
&lt;p>In “another post(Documents Create Antagonism)”:https://abc.truemesh.com/archives/000305.html he also puts his finger on a common problem with “Big Design Up Front”:https://c2.com/cgi/wiki?BigDesignUpFront projects – namely the dysfunctional behaviour driven on both business and development sides of a project by too much early specification that does not consider the value of requested features.&lt;/p></description></item><item><title>TheyWorkForYou</title><link>https://www.synesthesia.co.uk/2004/06/08/theyworkforyou/</link><pubDate>Tue, 08 Jun 2004 07:15:31 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/08/theyworkforyou/</guid><description>&lt;p>&lt;a href="https://www.theyworkforyou.com/" target="_blank" rel="noopener">TheyWorkForYou.com: Is your MP working for you in Parliament?&lt;/a> Public beta of new site that let’s you access your MP’s voting record, search for what they have said in debates etc.&lt;/p></description></item><item><title>OpenOffice</title><link>https://www.synesthesia.co.uk/2004/06/08/openoffice/</link><pubDate>Tue, 08 Jun 2004 07:06:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/08/openoffice/</guid><description>&lt;p>Tim Bray &lt;a href="https://www.tbray.org/ongoing/When/200x/2004/03/26/OpenOffice" target="_blank" rel="noopener">on OpenOffice&lt;/a>&lt;/p></description></item><item><title>Why an MBA May Not Be Worth It</title><link>https://www.synesthesia.co.uk/2004/06/04/why-an-mba-may-not-be-worth-it/</link><pubDate>Fri, 04 Jun 2004 12:34:40 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/04/why-an-mba-may-not-be-worth-it/</guid><description>&lt;p>&lt;a href="https://www.fortune.com/fortune/careers/articles/0,15114,644753,00.html?promoid=cnn?yes=cnn" target="_blank" rel="noopener">Fortune.com – Why an MBA May Not Be Worth It&lt;/a>&lt;/p></description></item><item><title>FreeMind</title><link>https://www.synesthesia.co.uk/2004/06/04/freemind/</link><pubDate>Fri, 04 Jun 2004 11:25:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/04/freemind/</guid><description>&lt;p>&lt;a href="https://freemind.sourceforge.net/" target="_blank" rel="noopener">FreeMind&lt;/a> – free Java-based mind mapping software&lt;/p></description></item><item><title>oopm</title><link>https://www.synesthesia.co.uk/2004/06/03/oopm/</link><pubDate>Thu, 03 Jun 2004 17:51:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/03/oopm/</guid><description>&lt;p>OpenOffice are starting on a “project management tool”:https://oopm.openoffice.org/ [via “Clarke Ching”:https://www.clarkeching.com/2004/06/new_openoffice_.html]&lt;/p></description></item><item><title>Diseconomies of Scale</title><link>https://www.synesthesia.co.uk/2004/06/03/diseconomies-of-scale/</link><pubDate>Thu, 03 Jun 2004 06:55:53 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/03/diseconomies-of-scale/</guid><description>&lt;p>From “Management By Baseball”:https://cmdr-scott.blogspot.com/ a piece on the “Diseconomies of Scale”:https://cmdr-scott.blogspot.com/2004/05/new-york-mets-confrontthe-diseconomies.html [via “Jack Vinson”:https://jackvinson.com/archives/2004/06/02/diseconomies_of_scale.html]&lt;/p></description></item><item><title>The Art of Getting Things Done</title><link>https://www.synesthesia.co.uk/2004/06/03/the-art-of-getting-things-done/</link><pubDate>Thu, 03 Jun 2004 06:34:35 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/03/the-art-of-getting-things-done/</guid><description>&lt;p>&lt;a href="https://www.fastcompany.com/online/35/smith.html" target="_blank" rel="noopener">The Art of Getting Things Done&lt;/a>&lt;/p></description></item><item><title>Xkey</title><link>https://www.synesthesia.co.uk/2004/06/02/xkey/</link><pubDate>Wed, 02 Jun 2004 09:57:12 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/02/xkey/</guid><description>&lt;p>&lt;a href="https://www.engadget.com/entry/8662345244622102/" target="_blank" rel="noopener">Xkey 2.0&lt;/a> USB key drive with a 32-bit processor inside&lt;/p></description></item><item><title>Showerstar</title><link>https://www.synesthesia.co.uk/2004/06/02/showerstar/</link><pubDate>Wed, 02 Jun 2004 09:52:24 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/02/showerstar/</guid><description>&lt;p>&lt;a href="https://www.showerstar.net/energy.html" target="_blank" rel="noopener">Showerstar&lt;/a> – pointless but amusing&lt;/p></description></item><item><title>Blockbuster Conspiracy</title><link>https://www.synesthesia.co.uk/2004/06/02/blockbuster-conspiracy/</link><pubDate>Wed, 02 Jun 2004 09:49:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/02/blockbuster-conspiracy/</guid><description>&lt;p>&lt;a href="https://www.oligopolywatch.com/2004/05/29.html#a365" target="_blank" rel="noopener">Oligopoly Watch&lt;/a> on the economic pressures that are creating endless boring “Blockbuster” movies&lt;/p></description></item><item><title>Broadband killed the TV star</title><link>https://www.synesthesia.co.uk/2004/06/02/broadband-killed-the-tv-star/</link><pubDate>Wed, 02 Jun 2004 09:44:24 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/02/broadband-killed-the-tv-star/</guid><description>&lt;p>&lt;a href="https://www.theregister.co.uk/2004/05/27/broadband_threatens_tv/" target="_blank" rel="noopener">Broadband killed the TV star&lt;/a>&lt;/p></description></item><item><title>Shirky: Nomic World</title><link>https://www.synesthesia.co.uk/2004/06/02/nomic-world/</link><pubDate>Wed, 02 Jun 2004 07:03:47 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/06/02/nomic-world/</guid><description>&lt;p>&lt;a href="https://shirky.com/writings/nomic.html" target="_blank" rel="noopener">Clay Shirky: Nomic World: By the players, for the players&lt;/a> – drawing parallels between Nomic online games (where the rules can change) and real life societies [via &lt;a href="https://alevin.com/weblog/archives/001406.html#001406" target="_blank" rel="noopener">Adina Levin&lt;/a> who thinks he’s wrong and says why…]&lt;/p></description></item><item><title>introducing informal education</title><link>https://www.synesthesia.co.uk/2004/05/31/introducing-informal-education/</link><pubDate>Mon, 31 May 2004 22:38:26 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/31/introducing-informal-education/</guid><description>&lt;p>&lt;a href="https://www.infed.org/hp-intro.htm" target="_blank" rel="noopener">infed&lt;/a> . &lt;q>What is informal education, where does it happen and how does it fit in?&lt;/q> [via &lt;a href="https://www.psybertron.org/index.html" target="_blank" rel="noopener">Psybertron&lt;/a>]&lt;/p></description></item><item><title>Rss2Outlook</title><link>https://www.synesthesia.co.uk/2004/05/29/rss2outlook/</link><pubDate>Sat, 29 May 2004 11:56:48 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/29/rss2outlook/</guid><description>&lt;p>&lt;a href="https://www.kingtiny.net/weblog/RSStoOutlook.html" target="_blank" rel="noopener">RSS2Outlook&lt;/a> – the beginnings of a tool that will have lots of uses. [via &lt;a href="https://blog.contentious.com/archives/000214.html" target="_blank" rel="noopener">Contentious&lt;/a>]&lt;/p></description></item><item><title>My Brilliant Failure: Wikis In Classrooms | Kairosnews</title><link>https://www.synesthesia.co.uk/2004/05/28/my-brilliant-failure-wikis-in-classrooms-kairosnews/</link><pubDate>Fri, 28 May 2004 16:51:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/28/my-brilliant-failure-wikis-in-classrooms-kairosnews/</guid><description>&lt;p>&lt;a href="https://kairosnews.org/node/view/3794" target="_blank" rel="noopener">My Brilliant Failure: Wikis In Classrooms&lt;/a> Heather James’ experiences using wiki as a teaching adjunct.&lt;/p></description></item><item><title>Social Origins of Good Ideas</title><link>https://www.synesthesia.co.uk/2004/05/28/social-origins-of-good-ideas/</link><pubDate>Fri, 28 May 2004 13:26:15 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/28/social-origins-of-good-ideas/</guid><description>&lt;p>&lt;a href="https://web.mit.edu/sorensen/www/SOGI.pdf" target="_blank" rel="noopener">Social Origins of Good Ideas&lt;/a> (PDF) via &lt;a href="https://www.nooranch.com/synaesmedia/wiki/wiki.cgi?HomePage" target="_blank" rel="noopener">Phil Jones&lt;/a> in earlier &lt;a href="https://www.synesthesia.co.uk/2004/05/10/unpredictable-emergence-of-learning/#comment-148" target="_blank" rel="noopener">comment on this post (now lost)&lt;/a>&lt;/p></description></item><item><title>overhaulin</title><link>https://www.synesthesia.co.uk/2004/05/27/overhaulin/</link><pubDate>Thu, 27 May 2004 06:42:57 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/27/overhaulin/</guid><description>&lt;p>&lt;a href="https://blog.noetech.com/archives/2004/04/13/overhaulin.shtml" target="_blank" rel="noopener">This&lt;/a> is very very funny, and deeply scary at the same time! (these people have nukes!)&lt;/p></description></item><item><title>Executing JavaScript on page load</title><link>https://www.synesthesia.co.uk/2004/05/27/addloadevent/</link><pubDate>Thu, 27 May 2004 00:49:55 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/27/addloadevent/</guid><description>&lt;p>&lt;a href="https://simon.incutio.com/archive/2004/05/26/addLoadEvent" target="_blank" rel="noopener">Executing JavaScript on page load&lt;/a> Elegant cross-browser method from Simon Willison&lt;/p></description></item><item><title>Textism: Tools: Textile</title><link>https://www.synesthesia.co.uk/2004/05/26/textism-tools-textile/</link><pubDate>Wed, 26 May 2004 21:04:48 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/26/textism-tools-textile/</guid><description>&lt;p>&lt;a href="https://www.textism.com/tools/textile/index.html" target="_blank" rel="noopener">Textism: Tools: Textile&lt;/a> Interactive tester for Textile&lt;/p></description></item><item><title>Conversational Blogging</title><link>https://www.synesthesia.co.uk/2004/05/25/conversational-blogging/</link><pubDate>Tue, 25 May 2004 21:22:16 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/25/conversational-blogging/</guid><description>&lt;p>&lt;a href="https://radio.weblogs.com/0121664/2004/05/18.html#a432" target="_blank" rel="noopener">Conversational Blogging&lt;/a> Dina Mehta writes her blog as if it was spoken and contrasts Ming’s &lt;a href="https://ming.tv/flemming2.php/__show_article/_a000010-001253/" target="_blank" rel="noopener">similar view&lt;/a> with &lt;a href="https://blogs.salon.com/0002007/2004/05/03.html#a719" target="_blank" rel="noopener">Dave Pollard&lt;/a>.&lt;/p></description></item><item><title>Make Your Partner Look Good</title><link>https://www.synesthesia.co.uk/2004/05/25/make-your-partner-look-good/</link><pubDate>Tue, 25 May 2004 21:17:18 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/25/make-your-partner-look-good/</guid><description>&lt;p>&lt;a href="https://thinksmart.typepad.com/good_morning_thinkers/2004/05/make_your_partn.html" target="_blank" rel="noopener">Make Your Partner Look Good&lt;/a> Applying the lessons of improv comedy to business change.&lt;/p></description></item><item><title>In line linkblog with WordPress</title><link>https://www.synesthesia.co.uk/2004/05/25/wordpress-linkblog/</link><pubDate>Tue, 25 May 2004 19:10:33 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/25/wordpress-linkblog/</guid><description>&lt;p>In an &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/05/24/still-testing-layout-changes/" target="_blank" rel="noopener">earlier post&lt;/a> I described first attempt at creating an inline link blog.&lt;/p>
&lt;p>After a fair bit of hacking I have achieved the effect I wanted – with the quick links for a given day appearing at the end of that day’s posts.&lt;/p>
&lt;p>Details in this wiki entry: [wiki]WordPressInlineLinkBlog[/wiki]&lt;/p>
&lt;p>+wiki updated with a couple of bug fixes+&lt;/p></description></item><item><title>Free Culture</title><link>https://www.synesthesia.co.uk/2004/05/25/free-culture/</link><pubDate>Tue, 25 May 2004 00:42:03 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/25/free-culture/</guid><description>&lt;p>&lt;a href="https://chocnvodka.blogware.com/blog" target="_blank" rel="noopener">Suw Charman&lt;/a> has written a long and informative &lt;a href="https://chocnvodka.blogware.com/blog/_archives/2004/5/24/75489.html" target="_blank" rel="noopener">post&lt;/a> about the explosion of innovative ways that people have found to spread the message of &lt;a href="https://www.lessig.org/blog/" target="_blank" rel="noopener">Lawrence Lessig&lt;/a>‘s &lt;a href="https://www.free-culture.cc/" target="_blank" rel="noopener">Free Culture&lt;/a>, making use of the &lt;a href="https://www.creativecommons.org/" target="_blank" rel="noopener">Creative Commons&lt;/a> &lt;em>some rights reserved&lt;/em> licence.&lt;/p>
&lt;p>The article quotes Lessig&lt;/p>
&lt;blockquote cite="https://chocnvodka.blogware.com/blog/_archives/2004/5/24/75489.html">
&lt;p>
&amp;#8220;Economists, of course, will tell you that this is the efficient way to sell, to make the content available, because where a marginal cost is zero the price is zero, where the marginal cost is positive you should charge a positive price.&amp;#8221;
&lt;/p>
&lt;/blockquote>
&lt;p>and describes how the new models of information-sharing, constrained to non-commercial use in this case by the Creative Commons licence, drive a word-of-mouth market for the (paid-for) physical product that is probably far in excess of that which would otherwise exist.&lt;/p>
&lt;p>Suw, a professional writer, goes on to describe her frustrating experience of trying to discuss the issues raised by Lessig’s book on screenwriters’ home &lt;a href="https://www.zoetrope.com/" target="_blank" rel="noopener">zoetrope.com&lt;/a> – a general lack of interest broken only by intractable opposition.&lt;/p>
&lt;p>It’s at this point that I have to admit to a lingering element of confusion in my mind about Lessig’s message. I find the ideas of the Creative Commons intellectually interesting at a personal level, but in my professional life at the overlap of media and technology I am involved in a world where we take the concepts of (the value of) intellectual property and licenses very seriously indeed.&lt;/p>
&lt;p>As yet I have not been able to draw a scenario for deploying the &lt;acronym title="Creative Commons">CC&lt;/acronym> approach in that world that convinces me, let alone others. My hunch (and it would take more economics knowledge than I possess to develop this argument) is that a key difference between the areas where &lt;acronym title="Creative Commons">CC&lt;/acronym> is taking off and those where it has yet to make it’s mark relates to the relationships between:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>cost of original production of “the work” and cost of distributed product;&lt;/p>
&lt;/li>
&lt;li>
&lt;p>the differences in value between different formats or versions of the distributed product;&lt;/p>
&lt;/li>
&lt;li>
&lt;p>the possible value to the originator of “word of mouth”;&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;em>perceived&lt;/em> control of the means of distribution&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>In the arena where most attention seems to have been paid to &lt;acronym title="Creative Commons">CC&lt;/acronym>, let’s say the general case of the written word, as in the Lessig example, the cost of production of “the work” is moderate as is the cost of distributing the “paid for” article. (i.e. a physical book). However the paid-for article has (in most people’s eyes) a value somewhat above the free version (e.g. a PDF). The value to the originator of “word-of-mouth” is two-fold as it potentially drives both direct reward (greater sales of the book) and indirect reward (higher profile and professional esteem potentially leading to more interesting and/or financially rewarding work).&lt;/p>
&lt;p>More extreme still are the current &lt;a href="https://observer.guardian.co.uk/business/story/0,6903,1168763,00.html" target="_blank" rel="noopener">rifts&lt;/a> in academic publishing, where the reward to the originator is almost entirely indirect through advanced professional standing (and thus advanced by the widest possible dissemination of ideas) and is in almost direct conflict with the interests of the journal publishers.&lt;/p>
&lt;p>By contrast, consider movies or high-end TV. In this case the cost of original production and distribution are very high, yet to the end-user the value of a cheaply copied DVD is almost as high as the “authentic” product. Combine this mismatch with a selection of commercial models that are almost entirely built around controlling access to the product (e.g. pay-per-view, selecting what is on a specific channel, advertising interspersed with the content etc.) and it is little surprise that most media companies take a similar view to the &lt;a href="https://www.riaa.com/" target="_blank" rel="noopener">RIAA&lt;/a>.&lt;/p>
&lt;p>What might change this? The key commercial factors are probably:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>increased viewer choice due to massively increased numbers of ways of accessing content;&lt;/p>
&lt;/li>
&lt;li>
&lt;p>leading to reduced audiences for each item; and&lt;/p>
&lt;/li>
&lt;li>
&lt;p>decreased relevance of the “channel brand”&lt;/p>
&lt;/li>
&lt;li>
&lt;p>together (perhaps) with sociological changes leading to increased consumer resistance to direct advertising models&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>all of which directly attack the revenue models of commercial broadcasters and film distributors.&lt;/p>
&lt;p>What steps might they take?&lt;/p>
&lt;p>One obvious answer is the approach some of them &lt;em>are&lt;/em> taking – “writs at dawn” for anything or anyone who they perceive as threatening their business. For a while that will work but I suggest that in the limit it is a zero sum game – as more and more choices appear for accessing content then fewer and fewer people will be prepared to pay the prices asked for material that is less and less imaginative and entertaining.&lt;/p>
&lt;p>Perhaps though the more imaginative might begin to think generatively and realise that in a world of choice where you are competing for attention then it helps to focus on creativity and originality – making sure that you have informative, imaginative and entertaining content on offer, lots of ways for people to “spread the word” and lots of ways for people to get to you. Once you’ve got people’s attention then you are halfway towards finding a way to generate money to sustain the process…&lt;/p>
&lt;p>And this I think is where the commercial logic of the media business might actually join up with the &lt;a href="https://creativecommons.org/learn/aboutus/" target="_blank" rel="noopener">aspirations&lt;/a> of Creative Commmons.&lt;/p>
&lt;p>Lots more to be worked out, not least how a viable business model is created with proper protections, and I haven’t even begun to touch on the debate about the role of &lt;a href="https://www.bbccharterreview.org.uk/" target="_blank" rel="noopener">publically-funded&lt;/a> high quality content in the digital world.&lt;/p>
&lt;p>If you’re an economist and can help turn this into a tighter argument please stop by and leave a comment!&lt;/p>
&lt;p>Standard disclaimer: my opinion, no-one else’s. &lt;acronym title="Your Mileage May Vary!">YMMV&lt;/acronym>.&lt;/p></description></item><item><title>Still testing layout changes</title><link>https://www.synesthesia.co.uk/2004/05/24/still-testing-layout-changes/</link><pubDate>Mon, 24 May 2004 20:18:31 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/24/still-testing-layout-changes/</guid><description>&lt;p>&lt;ins datetime="2004-4-25T21:57:48--1:00">This post has now been superceded by &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/05/25/wordpress-linkblog/">this one&lt;/a>&lt;/ins>&lt;/p>
&lt;p>What I’m trying to achieve is an inline-linkblog type effect, with the posts to the quicklink category being displayed all together after all of that day’s main posts (if any).&lt;/p>
&lt;p>At present (as you can see) they are displaying at the bottom of the page (because I have put them in a second loop). What I want to do is find how to trap the date header code in the main loop so I can display this set at the bottom of the day …&lt;/p>
&lt;p>Basic category detection and formatting code based on Matt’s &lt;a href="https://photomatt.net/archives/2004/05/19/asides/" target="_blank" rel="noopener">Asides&lt;/a>, modified to catch all of the quicklink posts in an array for later posting.&lt;/p>
&lt;p>before the main loop:&lt;/p>
&lt;p>&lt;code>&amp;lt;br /&amp;gt; $quicklinks = array();&amp;lt;br /&amp;gt; &lt;/code>&lt;/p>
&lt;p>In the main loop:&lt;/p>
&lt;p>&lt;code>&amp;lt;br /&amp;gt; if (in_category(35) &amp;amp;&amp;amp; !$single) {&amp;lt;br /&amp;gt; $quicklinks[] = $post;&amp;lt;br /&amp;gt; } else {&amp;lt;br /&amp;gt; //do normal post here&amp;lt;br /&amp;gt; }&amp;lt;br /&amp;gt; &lt;/code>&lt;/p>
&lt;p>And after the main loop:&lt;/p>
&lt;p>&lt;code>&amp;lt;br /&amp;gt; if ($quicklinks) : foreach ($quicklinks as $post) : start_wp();&amp;lt;br /&amp;gt; //HTML here to display the quicklinks in an unordered list (as per Matt's Asides)&amp;lt;br /&amp;gt; endforeach; else: _e('Sorry, no posts matched your criteria.');&amp;lt;br /&amp;gt; endif;&amp;lt;br /&amp;gt; &lt;/code>&lt;/p></description></item><item><title>On the move</title><link>https://www.synesthesia.co.uk/2004/05/23/on-the-move/</link><pubDate>Sun, 23 May 2004 22:28:33 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/23/on-the-move/</guid><description>&lt;p>As you can see I’ve started the process of moving to WordPress. Main blog converted, redirect in place for the archives. The sub-blogs are still to be done, as is the final front page design.&lt;/p></description></item><item><title>eggbaconchipsandbeans</title><link>https://www.synesthesia.co.uk/2004/05/18/eggbaconchipsandbeans/</link><pubDate>Tue, 18 May 2004 15:20:45 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/18/eggbaconchipsandbeans/</guid><description>&lt;p>&lt;a href="https://russelldavies.typepad.com/eggbaconchipsandbeans/" target="_blank" rel="noopener">In celebration of the greasy spoon&lt;/a>&lt;/p>
&lt;p>[via &lt;a href="https://www.timemachinego.com/linkmachinego/" target="_blank" rel="noopener">LinkmachineGo&lt;/a>]&lt;/p></description></item><item><title>Setting Clear Priorities</title><link>https://www.synesthesia.co.uk/2004/05/18/setting-clear-priorities/</link><pubDate>Tue, 18 May 2004 12:32:38 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/18/setting-clear-priorities/</guid><description>&lt;p>&lt;a href="https://www.computerworld.com/developmenttopics/development/story/0,10801,89106,00.html" target="_blank" rel="noopener">Setting Clear Priorities&lt;/a> Advice by Esther Derby on how to focus on what’s important&lt;/p></description></item><item><title>The Trap of Overwhelming Demands</title><link>https://www.synesthesia.co.uk/2004/05/18/the-trap-of-overwhelming-demands/</link><pubDate>Tue, 18 May 2004 12:30:45 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/18/the-trap-of-overwhelming-demands/</guid><description>&lt;p>&lt;a href="https://hbswk.hbs.edu/item.jhtml?id=4128&amp;amp;t=career_effectiveness" target="_blank" rel="noopener">The Trap of Overwhelming Demands&lt;/a> In this excerpt from the new book A Bias for Action, Heike Bruch and the late Sumantra Ghoshal look at a work hazard that managers often confront.&lt;/p>
&lt;p>[ via &lt;a href="https://www.estherderby.com/weblog/blogger.html" target="_blank" rel="noopener">Esther Derby&lt;/a>]&lt;/p></description></item><item><title>WikidPad</title><link>https://www.synesthesia.co.uk/2004/05/16/wikidpad/</link><pubDate>Sun, 16 May 2004 17:52:19 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/16/wikidpad/</guid><description>&lt;p>&lt;a href="https://www.jhorman.org/wikidPad/" target="_blank" rel="noopener">WikidPad&lt;/a> – wiki notebook/outliner for windows&lt;/p></description></item><item><title>The KJ-technique</title><link>https://www.synesthesia.co.uk/2004/05/12/the-kj-technique/</link><pubDate>Wed, 12 May 2004 13:12:28 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/12/the-kj-technique/</guid><description>&lt;p>&lt;a href="https://www.uie.com/articles/kj_technique/" target="_blank" rel="noopener">The KJ-technique&lt;/a>. Good summary of this group process for establishing priorities.&lt;/p>
&lt;p>[via &lt;a href="https://www.steptwo.com.au/columntwo/" target="_blank" rel="noopener">Column Two&lt;/a>]&lt;/p></description></item><item><title>Juggling Boosts Brain Power</title><link>https://www.synesthesia.co.uk/2004/05/12/juggling-boosts-brain-power/</link><pubDate>Wed, 12 May 2004 10:17:55 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/12/juggling-boosts-brain-power/</guid><description>&lt;p>&lt;a href="https://webcenter.health.webmd.netscape.com/content/Article/79/96364.htm" target="_blank" rel="noopener">Juggling Boosts Brain Power&lt;/a> A new study shows learning how to juggle can actually change the structure of the brain in adults and increase areas involved in thought and processing.&lt;/p>
&lt;p>[via &lt;a href="https://www.mikeaxelrod.com/" target="_blank" rel="noopener">Mike’s Digital Laboratory&lt;/a>]&lt;/p></description></item><item><title>Watching Alone</title><link>https://www.synesthesia.co.uk/2004/05/12/watching-alone/</link><pubDate>Wed, 12 May 2004 10:09:34 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/12/watching-alone/</guid><description>&lt;p>&lt;a href="https://www.bbc.co.uk/info/policies/watching_alone.shtml" target="_blank" rel="noopener">Watching Alone&lt;/a>. Watching Alone: Social Capital and Public Service Broadcasting – a report by economist Martin Brookes sponsored by BBC and The Work Foundation [PDF]&lt;/p></description></item><item><title>Managing for Serendipity</title><link>https://www.synesthesia.co.uk/2004/05/12/managing-for-serendipity/</link><pubDate>Wed, 12 May 2004 10:03:15 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/12/managing-for-serendipity/</guid><description>&lt;p>&lt;a href="https://www.waterweb.org/wis/wis6/papers/Snowden_03_1.pdf" target="_blank" rel="noopener">Managing for Serendipity …or why we should lay off ‘best practice’ in KM. PDF of 2003 paper by Dave Snowden&lt;/a>&lt;/p></description></item><item><title>Unpredictable Emergence of Learning</title><link>https://www.synesthesia.co.uk/2004/05/10/unpredictable-emergence-of-learning/</link><pubDate>Mon, 10 May 2004 23:15:52 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/10/unpredictable-emergence-of-learning/</guid><description>&lt;p>Interesting synchronicity of posts that have caught my attention in the last 24 hours&lt;/p>
&lt;p>Yesterday I &lt;a href="https://www.synesthesia.co.uk/2004/05/09/polymaths/">blogged&lt;/a> Suw Charman’s &lt;a href="https://chocnvodka.blogware.com/blog/_archives/2004/5/8/54483.html" target="_blank" rel="noopener">thoughts&lt;/a> about being a generalist / polymath, in particular the tendency for useful real-world knowledge to come out of the unique overlaps between fields created by the particular experiences of one person.&lt;/p>
&lt;p>Earlier today I &lt;a href="https://www.synesthesia.co.uk/linkblog/archives/2004_05.php#000378" target="_blank" rel="noopener">linked&lt;/a> to Tony Goodson on &lt;a href="https://tonygoodson.typepad.com/tonygoodson/2004/04/butterfly_momen.html" target="_blank" rel="noopener">Butterfly Moments and Bricolage&lt;/a> (&lt;a href="https://web.archive.org/web/20040519140227/https://tonygoodson.typepad.com/tonygoodson/2004/04/butterfly_momen.html" target="_blank" rel="noopener">archive&lt;/a>) (inspired in turn by &lt;a href="https://www.johnniemoore.com/butterfly-moments" target="_blank" rel="noopener">Johnnie Moore&lt;/a>) – his experience that general &lt;em>tinkering about&lt;/em> across various subjects and ideas often leads to unexpected benefits at later times.&lt;/p>
&lt;p>And now I’ve just read George Por writing on &lt;a href="https://web.archive.org/web/20040606221615/http://www.community-intelligence.com/blogs/public/archives/000263.html" target="_blank" rel="noopener">How local meetings with global experts can boost CI&lt;/a> in which he advocates &lt;q cite="https://www.community-intelligence.com/blogs/public/archives/000263.html">cross-fertilization of generative ideas and transformative practices, across organizational cultural and geographic boundaries&lt;/q> and goes on to advocate &lt;a href="https://web.archive.org/web/20040526110842/http://www.eccop.com/blogs/public/archives/000106.html" target="_blank" rel="noopener">horizontalization of learning&lt;/a> &lt;q>in a given domain between those who have been giving more or less attention to explore and contribute to that domain&lt;/q> – that to me sounds like conversations between &lt;em>specialists&lt;/em> and &lt;em>generalists&lt;/em> …&lt;/p>
&lt;p>George ends his post by extolling the virues of asynchronous methods such as blogs to make the best of face-to-face conversations.&lt;/p>
&lt;p>So what is the link between these entries?&lt;/p>
&lt;p>For me there are several:&lt;/p>
&lt;ul>
&lt;li>&lt;em>Generalist / Polymath&lt;/em> learning exists, contributes knowledge and helps the horizontal distribution of knowledge;&lt;/li>
&lt;li>The public, linked, asynchronous nature of blogs and related technologies both exposes conversations to a wider pool of people and helps the ideas start to flow before any face-to-face meeting;&lt;/li>
&lt;li>The benefits of any specific piece of knowledge are not always forseeable until the right combination of circumstances and other people arises – in other words unpredictable emergent behaviour;&lt;/li>
&lt;/ul>
&lt;p>&lt;ins datetime="2004-05-11T17:18:09+00:00">Update&lt;/ins>&lt;/p>
&lt;p>[bliki]Fragmentation And Wholeness[/bliki]&lt;/p></description></item><item><title>Butterfly Moments and Bricolage</title><link>https://www.synesthesia.co.uk/2004/05/10/butterfly-moments-and-bricolage/</link><pubDate>Mon, 10 May 2004 15:01:55 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/10/butterfly-moments-and-bricolage/</guid><description>&lt;p>Butterfly Moments and Bricolage. Tony Goodson on how indulging in ‘tinkering about’ somehow primes him for ‘Butterfly Moments’ that change his world.&lt;/p>
&lt;p>I think this is one of the mechanisms behind the strength of generalists, as &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/05/09/polymaths/" target="_blank" rel="noopener">blogged&lt;/a> yesterday.&lt;/p>&lt;/p></description></item><item><title>Ten Pitfalls Keeping You From Your Career Goals</title><link>https://www.synesthesia.co.uk/2004/05/10/ten-pitfalls-keeping-you-from-your-career-goals/</link><pubDate>Mon, 10 May 2004 14:36:29 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/10/ten-pitfalls-keeping-you-from-your-career-goals/</guid><description>&lt;p>&amp;lt;a href=&amp;ldquo;&amp;ldquo;&lt;a href="https://www.improvingme.com/article1078.shtml%22%3eTen" target="_blank" rel="noopener">https://www.improvingme.com/article1078.shtml">Ten&lt;/a> Pitfalls Keeping You From Your Career Goals&lt;/p>
&lt;p>[via &lt;a href="https://curtrosengren.typepad.com/occupationaladventure/" target="_blank" rel="noopener">The Occupational Adventure&lt;/a>]&lt;/p></description></item><item><title>Hire talent and passion over skill and experience</title><link>https://www.synesthesia.co.uk/2004/05/10/hire-talent-and-passion-over-skill-and-experience/</link><pubDate>Mon, 10 May 2004 14:26:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/10/hire-talent-and-passion-over-skill-and-experience/</guid><description>&lt;p>&lt;a href="https://news.zdnet.co.uk/business/employment/0,39020648,2125761,00.htm" target="_blank" rel="noopener">Hire talent and passion over skill and experience&lt;/a>. The importance of looking beyond skills and competencies in recruitment.&lt;/p>
&lt;p>[via &lt;a href="https://curtrosengren.typepad.com/occupationaladventure/" target="_blank" rel="noopener">The Occupational Adventure&lt;/a>]&lt;/p>
&lt;p>Note to self – probably root of a full post on here discussing meta-programs and their use in recruitment…&lt;/p></description></item><item><title>Can absence make a team grow stronger</title><link>https://www.synesthesia.co.uk/2004/05/10/can-absence-make-a-team-grow-stronger/</link><pubDate>Mon, 10 May 2004 13:13:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/10/can-absence-make-a-team-grow-stronger/</guid><description>&lt;p>&lt;a href="https://www.efios.com/blog/2004/05/05.html#a184" target="_blank" rel="noopener">Can absence make a team grow stronger?&lt;/a> Erik van Bekkum comments on HBR article about teams that work better from a distance.&lt;/p></description></item><item><title>Virtual Audio Cable</title><link>https://www.synesthesia.co.uk/2004/05/10/virtual-audio-cable/</link><pubDate>Mon, 10 May 2004 11:09:43 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/10/virtual-audio-cable/</guid><description>&lt;p>&lt;a href="https://spider.nrcde.ru/music/software/eng/vac.html" target="_blank" rel="noopener">Virtual Audio Cable&lt;/a>. Virtual Audio Cable is a Windows multimedia driver allowing you to transfer audio (wave) streams from one application to another.&lt;/p>
&lt;p>[via &lt;a href="https://matt.blogs.it/2004/05/05.html" target="_blank" rel="noopener">Matt Mower&lt;/a>]&lt;/p></description></item><item><title>User-friendly feeds</title><link>https://www.synesthesia.co.uk/2004/05/10/user-friendly-feeds/</link><pubDate>Mon, 10 May 2004 10:58:46 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/10/user-friendly-feeds/</guid><description>&lt;p>&lt;a href="https://diveintomark.org/archives/2004/05/04/user-friendly-feeds-2" target="_blank" rel="noopener">User-friendly feeds&lt;/a>. Mark Pilgrim is doing interesting things with Atom feeds and XSL to make feeds look good in a browser…&lt;/p></description></item><item><title>Polymaths</title><link>https://www.synesthesia.co.uk/2004/05/09/polymaths/</link><pubDate>Sun, 09 May 2004 22:55:28 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/09/polymaths/</guid><description>&lt;p>&lt;a href="https://chocnvodka.blogware.com/blog" target="_blank" rel="noopener">Suw Charman&lt;/a> writes a long &lt;a href="https://chocnvodka.blogware.com/blog/_archives/2004/5/8/54483.html" target="_blank" rel="noopener">article&lt;/a> on the benefits (and also the drawbacks) of being a generalist.&lt;/p>
&lt;p>I can empathise with what she says – I too have a “grasshopper” mind – this I think is why I find blogging and wikis useful – by allowing the grasshopper to leave a track as it jumps where it may these tools help the more reflective parts of mind to see progress within each area.&lt;/p>
&lt;p>I know that many aspects of my work draw on skills I have learned from a range of experiences – for example my approach to coaching is hugely benefited by my understanding of systems and feedback, on the other hand my abilities with a project team are helped by my coaching. Nothing is wasted, it is all a part of the complete package you bring to a job.&lt;/p>
&lt;p>The problem lies, I think, with the question of measuring or proving this skill. Our entire academic system of qualifications is built around narrower and narrower specialism as you push forward the boundaries of knowledge in one particular area.&lt;/p>
&lt;p>How do you measure achievement or knowledge creation that relies on new syntheses?&lt;/p></description></item><item><title>DNS Stuff</title><link>https://www.synesthesia.co.uk/2004/05/07/dns-stuff/</link><pubDate>Fri, 07 May 2004 17:08:22 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/07/dns-stuff/</guid><description>&lt;p>&lt;a href="https://www.dnsstuff.com/" target="_blank" rel="noopener">DNS Stuff&lt;/a> DNS tools, WHOIS, tracert, ping, and other network tools.&lt;/p>
&lt;p>[via &lt;a href="https://www.mcgeesmusings.net/index.html" target="_blank" rel="noopener">McGee’s Musings&lt;/a>]&lt;/p></description></item><item><title>How many Google machines</title><link>https://www.synesthesia.co.uk/2004/05/07/how-many-google-machines/</link><pubDate>Fri, 07 May 2004 17:01:04 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/07/how-many-google-machines/</guid><description>&lt;p>&lt;a href="https://www.tnl.net/blog/entry/How_many_Google_machines" target="_blank" rel="noopener">How many Google machines&lt;/a>. Tristan Louis has worked out how many computers Google has by reverse-engineering their IPO&lt;/p>
&lt;p>[via &lt;a href="https://weblog.garyturner.net/index.html" target="_blank" rel="noopener">Gary Turner&lt;/a>]&lt;/p></description></item><item><title>XP on a Large Project</title><link>https://www.synesthesia.co.uk/2004/05/06/xp-on-a-large-project/</link><pubDate>Thu, 06 May 2004 11:12:48 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/06/xp-on-a-large-project/</guid><description>&lt;p>&lt;a href="https://homepage.mac.com/keithray/blog/2004/05/05/#XPonaLargeProject" target="_blank" rel="noopener">XP on a Large Project&lt;/a> Keith Ray points to document by Thoughtworks&lt;/p></description></item><item><title>Situated Software</title><link>https://www.synesthesia.co.uk/2004/05/04/situated-software/</link><pubDate>Tue, 04 May 2004 12:02:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/04/situated-software/</guid><description>&lt;p>&lt;a href="https://www.monkeyx.com/archives/scitech/situated_software.html" target="_blank" rel="noopener">Situated Software&lt;/a>. Commentary by MonkeyX on Clay Shirky’s &lt;a href="https://www.shirky.com/writings/situated_software.html" target="_blank" rel="noopener">Situated Software&lt;/a> essay&lt;/p></description></item><item><title>Vegas</title><link>https://www.synesthesia.co.uk/2004/05/03/vegas/</link><pubDate>Mon, 03 May 2004 22:00:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/03/vegas/</guid><description>&lt;p>One of the things that has kept me away from this blog for so long was a week-long business trip to Las Vegas to visit the &lt;a href="https://www.nabshow.com/" target="_blank" rel="noopener">NAB trade show&lt;/a>&lt;/p>
&lt;p>Several Americans I know have said “please don’t judge our country on Vegas” – so I won’t. It’s a city based on flesh and money, but so are parts of many others across the world…&lt;/p>
&lt;p>Two things that I will comment on though…&lt;/p>
&lt;p>First one was at the Apple product launch – although I know people who use (and therefore evangelise about) Apples I had not previously experienced the full Apple acolyte experience in the mass. Imagine the scene – 2000 people in the Venetian Hotel. Apple’s Rob Schoeben came on stage and more or less said “We’ve 5 new products” and that was enough for the room to erupt in vigorous applause. The same theme followed for 90 minutes after every statement. My colleagues and I – techno-sceptics all – felt we had just left normality behind out on the Strip (!) and wandered into a very strange place…&lt;/p>
&lt;p>Now I’ve upset all the Apple-philes…&lt;/p>
&lt;p>The other thing that struck me was the number of examples of poor customer service that lurked under the surface of tips for everything…&lt;/p>
&lt;p>My example is taken from the breakfast buffet of the &lt;a href="https://www.vegas.com/resorts/flamingo/" target="_blank" rel="noopener">hotel&lt;/a>. As befitted a 3600 bedroom hotel, the &lt;a href="https://www.vegas.com/searchagent/restaurant/ViewRestaurant.do?restaurantId=3542" target="_blank" rel="noopener">buffet area&lt;/a> was huge, capable (at a guess) of seating about a thousand people. For much of the time it was only 10-15% full but regardless of the spare capacity there was always a long wait to get in. There were in fact two queues – firstly to pay, which even with 3 cashiers seemed to move very slowly – each transaction seemed to take at least two or three minutes to pay for a single-priced item.&lt;/p>
&lt;p>Secondly you had to queue for several minutes for a single waitress to pull people from the queue in the group size that seemed to suit the tables she wanted to fill. All of this at a snail’s pace. Plenty of other waiting staff wandering around delivering coffee and clearing tables (remember this is a buffet so you fetch your own food) but no-one moving very fast.&lt;/p>
&lt;p>Looking at this from a process point of view still doesn’t make much sense – the company is happy because everyone has paid before they get in. Having a large “buffer stock” of customers waiting to be seated would make sense if there was a shortage of tables which had to be kept busy, but even at the busiest period I never saw the place at more than 50% utilisation. The constraint seemed to be completely artificial by insisting that everyone was led to a table by one particular member of staff.&lt;/p>
&lt;p>I’d love it if someone who is more familiar with US catering operations could explain the logic!&lt;/p></description></item><item><title>The Emergence of CI</title><link>https://www.synesthesia.co.uk/2004/05/03/the-emergence-of-ci/</link><pubDate>Mon, 03 May 2004 21:33:46 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/03/the-emergence-of-ci/</guid><description>&lt;p>&lt;a href="https://www.community-intelligence.com/blogs/public/archives/000251.html" target="_blank" rel="noopener">The Emergence of CI&lt;/a>. George Por offers an online experiment to explore the factors contributing to the growth of collective intelligence&lt;/p></description></item><item><title>A Vampire-free zone…</title><link>https://www.synesthesia.co.uk/2004/05/02/a-vampire-free-zone/</link><pubDate>Sun, 02 May 2004 00:05:54 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/05/02/a-vampire-free-zone/</guid><description>&lt;p>…is not a phrase you would normally associate with a gathering of bloggers but as anyone who has sampled “Garlic and Shots”:https://www.fluidfoundation.com/venueDetails.asp?BarRef=372′ penchant for putting the allium into every item of food and a good sampling of the drinks will know it is not a venue in which the undead would remain comfortable for long.&lt;/p>
&lt;p>So, another one of “those blogger meetup things” graced by (amongst others) “Doc”:https://doc.weblogs.com/, “Cory”:https://www.craphound.com/, “Danah”:https://www.zephoria.org/thoughts/, “Suw”:https://chocnvodka.blogware.com/blog, “Matt”:https://matt.blogs.it/, “James”:https://www.imajes.info/, “Tom”:https://www.plasticbag.org/, “Gary”:https://weblog.garyturner.net/index.html, “Tom”:https://www.sparklefluff.com/blatantoptimism/, “Paul”:https://www.paranoidfish.org/ and of course “Euan”:https://www.theobviousblog.net/blog/&lt;/p>
&lt;p>We did the usual untramelled conversation thing, – isn’t it amazing how that is now becoming somewhat expected in these meetups rather than the great surprise it was to everyone a while ago!&lt;/p>
&lt;p>Gary (of course) was the first to moblog the event , Doc had the best camera, Danah the wildest hat and Suw the best idea (but that’s for her to tell…)&lt;/p></description></item><item><title>Weblog Scenarios</title><link>https://www.synesthesia.co.uk/2004/03/29/weblog-scenarios/</link><pubDate>Mon, 29 Mar 2004 16:14:10 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/03/29/weblog-scenarios/</guid><description>&lt;p>&lt;a href="https://itc.uncc.edu/dale/su8/archives/002975.html" target="_blank" rel="noopener">Weblog Scenarios&lt;/a>. Dale Pike identifies seven useful scenarios for weblogs in a professional knowledge context.&lt;/p></description></item><item><title>Riding the White Moment</title><link>https://www.synesthesia.co.uk/2004/03/17/riding-the-white-moment/</link><pubDate>Wed, 17 Mar 2004 16:57:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/03/17/riding-the-white-moment/</guid><description>&lt;p>&lt;a href="https://www.psychologytoday.com/htdocs/prod/PTOArticle/PTO-19920301-000031.ASP" target="_blank" rel="noopener">Riding the White Moment&lt;/a>. Article from Psychology Today looking at the thought processes that stimulate creativity.&lt;/p>
&lt;p>[via &lt;a href="https://www.innovationtools.com/Weblog/innovation-weblog.asp" target="_blank" rel="noopener">Innovation Weblog&lt;/a>]&lt;/p></description></item><item><title>Cyclical knowledge development</title><link>https://www.synesthesia.co.uk/2004/03/17/cyclical-knowledge-development/</link><pubDate>Wed, 17 Mar 2004 13:14:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/03/17/cyclical-knowledge-development/</guid><description>&lt;p>&lt;a href="https://www.psybertron.org/index.html" target="_blank" rel="noopener">Ian Glendenning&lt;/a> (Psybertron Knowledge Modelling WebLog) &lt;a href="https://www.psybertron.org/2004_03_01_archive.html#107884455898240791" target="_blank" rel="noopener">points&lt;/a> to some articles from disparate domains on cyclical approaches to building knowledge:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.cs.tcd.ie/publications/tech-reports/reports.99/TCD-CS-1999-36.pdf" target="_blank" rel="noopener">Knowledge Engineering in a Real World Case-based Reasoning Application&lt;/a>&lt;/li>
&lt;li>[Acquiring Personal Knowledge for Theory and Therapy][4]&lt;/li>
&lt;li>[Knowledge Management – Aspects of Knowledge][5]&lt;/li>
&lt;/ul>
&lt;p>I’ve cross-filed these in the [Action Research][6] category because I think they may have relevance to [Reflection 2][7]&lt;/p>
&lt;p>[4]: &lt;a href="https://www.psyc.nott.ac.uk/staff/Nick.Milton/Milton" target="_blank" rel="noopener">https://www.psyc.nott.ac.uk/staff/Nick.Milton/Milton&lt;/a> paper
[5]: &lt;a href="https://www.akri.org.uk/papers/cw.htm" target="_blank" rel="noopener">https://www.akri.org.uk/papers/cw.htm&lt;/a>
[6]: &lt;a href="https://www.synesthesia.co.uk/blog/archives/category/action-research/" target="_blank" rel="noopener">https://www.synesthesia.co.uk/blog/archives/category/action-research/&lt;/a>
[7]: &lt;a href="https://www.synesthesia.co.uk/blog/archives/2004/02/09/reflection-2" target="_blank" rel="noopener">https://www.synesthesia.co.uk/blog/archives/2004/02/09/reflection-2&lt;/a>&lt;/p></description></item><item><title>From pirate dwarves to ninja elves…</title><link>https://www.synesthesia.co.uk/2004/03/17/from-pirate-dwarves-to-ninja-elves/</link><pubDate>Wed, 17 Mar 2004 09:53:05 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/03/17/from-pirate-dwarves-to-ninja-elves/</guid><description>&lt;p>&lt;a href="https://www.plasticbag.org/archives/2004/03/from_pirate_dwarves_to_ninja_elves.shtml" target="_blank" rel="noopener">From pirate dwarves to ninja elves…&lt;/a> Tom Coates has found a new way of categorising people – the dwarf/elf and pirate/ninja axes…&lt;/p></description></item><item><title>Supporting enterprise KM with weblogs</title><link>https://www.synesthesia.co.uk/2004/03/12/supporting-enterprise-km-with-weblogs/</link><pubDate>Fri, 12 Mar 2004 11:58:15 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/03/12/supporting-enterprise-km-with-weblogs/</guid><description>&lt;p>&lt;a href="https://urlgreyhot.com/drupal/node/view/1481" target="_blank" rel="noopener">Supporting enterprise KM with weblogs&lt;/a>. Notes and slides from Michael Angeles’ presentation to Computers in Libraries conference about ‘Supporting enterprise knowledge management with weblogs: A weblog services roadmap’&lt;/p></description></item><item><title>Disruptive Incrementalism</title><link>https://www.synesthesia.co.uk/2004/03/08/disruptive-incrementalism/</link><pubDate>Mon, 08 Mar 2004 17:36:10 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/03/08/disruptive-incrementalism/</guid><description>&lt;p>&lt;a href="https://www.technologyreview.com/articles/schrage0304.asp" target="_blank" rel="noopener">Disruptive Incrementalism&lt;/a>. Sometimes a cosmetic change can be the innovation that makes a product catch fire.&lt;/p>
&lt;p>[via &lt;a href="https://www.innovationtools.com/Weblog/innovationblog-detail.asp?ArticleID=380" target="_blank" rel="noopener">Innovation Blog&lt;/a>]&lt;/p></description></item><item><title>Instant Messages in Knowledge-Making</title><link>https://www.synesthesia.co.uk/2004/03/08/instant-messages-in-knowledge-making/</link><pubDate>Mon, 08 Mar 2004 17:03:38 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/03/08/instant-messages-in-knowledge-making/</guid><description>&lt;p>&lt;a href="https://radio.weblogs.com/0106698/2004/03/06.html#a227" target="_blank" rel="noopener">Instant Messages in Knowledge-Making&lt;/a> Spike Hall adds Instant Messaging to his structured process for knowledge workers…&lt;/p></description></item><item><title>PHP and MySQL: How to collect referrer data</title><link>https://www.synesthesia.co.uk/2004/03/08/php-and-mysql-how-to-collect-referrer-data/</link><pubDate>Mon, 08 Mar 2004 11:37:32 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/03/08/php-and-mysql-how-to-collect-referrer-data/</guid><description>&lt;p>&lt;a href="https://www.tbotcotw.com/archives/001159.php" target="_blank" rel="noopener">PHP and MySQL: How to collect referrer data&lt;/a>&lt;/p></description></item><item><title>Tracking entry referrers with PHP in MT</title><link>https://www.synesthesia.co.uk/2004/03/08/tracking-entry-referrers-with-php-in-mt/</link><pubDate>Mon, 08 Mar 2004 11:13:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/03/08/tracking-entry-referrers-with-php-in-mt/</guid><description>&lt;p>&lt;a href="https://blog.codefront.net/archives/2003/08/16/tracking_entry_referrers_with_php_in_mt.php" target="_blank" rel="noopener">Tracking entry referrers with PHP in MT&lt;/a>&lt;/p></description></item><item><title>Ideas for Action Research Projects</title><link>https://www.synesthesia.co.uk/2004/03/03/ideas-for-action-research-projects/</link><pubDate>Wed, 03 Mar 2004 19:14:52 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/03/03/ideas-for-action-research-projects/</guid><description>&lt;p>Currently incubating three ideas for &lt;wiki>ActionResearchProjects&lt;/wiki>:&lt;/p>
&lt;p># Coaching as knowledge creation (&lt;wiki>CoachingAsKnowledgeCreation&lt;/wiki>)&lt;/p>
&lt;p># Strategy development through conversation (&lt;wiki>StrategyDevelopment&lt;/wiki>)&lt;/p>
&lt;p># Improving software systems development&lt;/p></description></item><item><title>Still here</title><link>https://www.synesthesia.co.uk/2004/03/03/still-here/</link><pubDate>Wed, 03 Mar 2004 00:09:28 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/03/03/still-here/</guid><description>&lt;p>In between working too hard and squeezing in odd days off to use up holiday I seem to have been spending most of my time doing things which either I can’t/won’t blog about or which haven’t stimulated any blogging-related thought!&lt;/p>
&lt;p>The online Action Research “course”:https://www.scu.edu.au/schools/gcm/ar/areol/areolhome.html I mentioned “earlier”:https://www.synesthesia.co.uk/blog/archives/action_research/000289.php has kicked off – there have been two modules published. Traffic on the discussion group seems so far to be about 10 emails per day, mostly still intros of participants. I can however see that I shall have to explicitly schedule time to take this in, work with the materials, contribute to the groups.&lt;/p></description></item><item><title>Personal Intellectual Capital</title><link>https://www.synesthesia.co.uk/2004/02/13/personal-intellectual-capital/</link><pubDate>Fri, 13 Feb 2004 09:24:14 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/13/personal-intellectual-capital/</guid><description>&lt;p>“Personal Intellectual Capital”:https://www.internettime.com/blog/archives/001226.html Jay Cross says ‘Ultimately, you’re responsible for the life you lead. It’s up to you to learn what you need to succeed. That makes you responsible for your own knowledge management, learning architecture, instructional design and evaluation.’&lt;/p></description></item><item><title>Collaboration Pattern: Lightning Conductor</title><link>https://www.synesthesia.co.uk/2004/02/12/collaboration-pattern-lightning-conductor/</link><pubDate>Thu, 12 Feb 2004 13:04:54 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/12/collaboration-pattern-lightning-conductor/</guid><description>&lt;p>When I “blogged”:https://www.synesthesia.co.uk/blog/archives/collaboration/000348.php “Sam Ruby’s”:https://www.intertwingly.net “slides”:https://intertwingly.net/slides/2004/etcon/ from his “presentation”:https://conferences.oreillynet.com/cs/et2004/view/e_sess/4613 at “ETCon”:https://conferences.oreillynet.com/etech/ on lessons learned from running the “!Echo wiki”:https://www.intertwingly.net/wiki/pie/FrontPage I noted that I thought he had hit on the basics of several collaboration patterns.&lt;/p>
&lt;p>I’ve put together the first draft of “LightningConductor”:https://www.synesthesia.co.uk/tiki/tiki-index.php?page=LightningConductor (named in honour of the metaphor “Sam uses”:https://intertwingly.net/slides/2004/etcon/37.html):&lt;/p>
&lt;p>*Name*&lt;/p>
&lt;p>Lightning Conductor&lt;/p>
&lt;p>*Context*&lt;/p>
&lt;p>Group of people working collaboratively on a project or problem, especially if they are from diverse backgrounds or interest groups.&lt;/p>
&lt;p>*Problem*&lt;/p>
&lt;p>Discussions become emotionally-charged, often in a negative way. Some people may deliberately act in ways that impede or disrupt the group effort. The “HiddenAgenda”:https://www.synesthesia.co.uk/tiki/tiki-index.php?page=HiddenAgenda “antipattern”:https://www.synesthesia.co.uk/tiki/tiki-index.php?page=AntiPattern may be apparent.&lt;/p>
&lt;p>*Forces*&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Perceived historical slights&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Vested interests&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Unwillingness to negotiate over desired local outcomes in interest of better overal lresult&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Lack of training / experience with collaborative working&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Malicious intent from some&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>*Solution*&lt;/p>
&lt;p>One or more members of the group adopt the role of Lightning Conductor – allowing themselves to be seen as representative of the overall effort, allowing themselves to be made a target for emotional attacks and choosing their responses carefully to avoid escalation.&lt;/p>
&lt;p>*Resulting Context*&lt;/p>
&lt;p>The negative emotional energy of the collaboration is discharged and diffused, allowing work to proceed more effectively. Many participants find it possible to work constructively together once they have expressed their negative feelings or concerns. Others, who perhaps had malicious intent, will become frustrated at the lack of a matching emotional response and drift away in search of more responsive prey.&lt;/p></description></item><item><title>Wiki Lessons Learned</title><link>https://www.synesthesia.co.uk/2004/02/11/wiki-lessons-learned/</link><pubDate>Wed, 11 Feb 2004 13:37:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/11/wiki-lessons-learned/</guid><description>&lt;p>“Sam Ruby”:https://www.intertwingly.net has posted the “slides”:https://intertwingly.net/slides/2004/etcon/ from his “presentation”:https://conferences.oreillynet.com/cs/et2004/view/e_sess/4613 at “ETCon”:https://conferences.oreillynet.com/etech/ on lessons learned from running the “!Echo wiki”:https://www.intertwingly.net/wiki/pie/FrontPage He notes:&lt;/p>
&lt;p>bq.:https://intertwingly.net/slides/2004/etcon/20.html If you have a coherently aligned and focused community, a wiki can be a very powerful thing, allowing collaboration to proceed at an astounding pace.&lt;/p>
&lt;p>If you have a community in imperfect alignment, a wiki will accurately reflect this state. Given a group with a genuine desire to align, a wiki can provide a powerful and positive feedback loop.&lt;/p>
&lt;p>But what happens when you have an unbounded community with divergent goals?&lt;/p>
&lt;p>He also mentions the enormous energy that has gone in to the project, resulting in over 1000 pages on the Wiki – some of that energy is deliberately disruptive or destructive – resulting in the need for a role he describes:&lt;/p>
&lt;p>bq.:https://intertwingly.net/slides/2004/etcon/37.html In addition to host, a role that I have played is one of lightning rod. A number of hurtful and untrue things have been said about me, and the company I work for.&lt;/p>
&lt;p>&lt;em>“A grounded metal rod placed high on a structure to prevent damage by conducting lightning to the ground.”&lt;/em>&lt;/p>
&lt;p>Note the recurring theme of energy production, absorption, and dissipation…&lt;/p>
&lt;p>He compares the characteristics of “mailing lists”:https://intertwingly.net/slides/2004/etcon/39.html and “blogs”:https://intertwingly.net/slides/2004/etcon/49.html with the wiki; flags the importance of “snapshots”:https://intertwingly.net/slides/2004/etcon/52.html ;and concludes with the following lessons:&lt;/p>
&lt;p># “Time counts”:https://intertwingly.net/slides/2004/etcon/59.html&lt;/p>
&lt;p># “Cultivate contributors”:https://intertwingly.net/slides/2004/etcon/63.html&lt;/p>
&lt;p># “Use a mix of strategies”:https://intertwingly.net/slides/2004/etcon/64.html&lt;/p>
&lt;p>It strikes me that there are some good candidate “collaboration patterns”:https://www.synesthesia.co.uk/blog/archives/systems/000336.php here – I’ll play around on the “Synesthesia wiki”:https://synesthesia.co.uk/tiki/ and blog when I have some drafts…&lt;/p></description></item><item><title>Foiling Cross Site Attacks</title><link>https://www.synesthesia.co.uk/2004/02/11/foiling-cross-site-attacks/</link><pubDate>Wed, 11 Feb 2004 08:50:29 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/11/foiling-cross-site-attacks/</guid><description>&lt;p>“Foiling Cross Site Attacks”:https://www.phparch.com/issuedata/articles/article_66.pdf Useful article [PDF] on defending PHP sites from Cross-Site Request Forgeries and Cross-Site Scripting attacks&lt;/p></description></item><item><title>Value-Driven Intranet Design</title><link>https://www.synesthesia.co.uk/2004/02/10/value-driven-intranet-design/</link><pubDate>Tue, 10 Feb 2004 23:48:04 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/10/value-driven-intranet-design/</guid><description>&lt;p>“Value-Driven Intranet Design”:https://www.boxesandarrows.com/archives/valuedriven_intranet_design.php &lt;q>Within most corporations, taking ownership of an intranet is an unglamorous, exhausting, and thankless job for a new intranet manager. Many corporate intranets lack thoughtful, focused, and disciplined design and are often extremely large and unwieldy. Fixing these intranets can seem an impossible and futile task.&lt;/q>&lt;/p>
&lt;p>[via&lt;/p>
&lt;p>&lt;a href="https://www.steptwo.com.au/columntwo/" target="_blank" rel="noopener">Column Two&lt;/a>]&lt;/p></description></item><item><title>Managing the Complexity of Content Management</title><link>https://www.synesthesia.co.uk/2004/02/10/managing-the-complexity-of-content-management/</link><pubDate>Tue, 10 Feb 2004 23:44:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/10/managing-the-complexity-of-content-management/</guid><description>&lt;p>“Managing the Complexity of Content Management”:https://www.boxesandarrows.com/archives/managing_the_complexity_of_content_management.php &lt;q>Content management systems suck. Or so you would think from the strife heard from analysts and practitioners alike.&lt;br /> &lt;/q>&lt;/p>
&lt;p>[via &lt;a href="https://www.steptwo.com.au/columntwo/" target="_blank" rel="noopener">Column Two&lt;/a>]&lt;/p></description></item><item><title>Wiki upgrade and other changes</title><link>https://www.synesthesia.co.uk/2004/02/10/wiki-upgrade-and-other-changes/</link><pubDate>Tue, 10 Feb 2004 20:08:15 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/10/wiki-upgrade-and-other-changes/</guid><description>&lt;p>Upgraded the “Wiki”:/tiki/ to “TikiWiki 1.8”:https://tikiwiki.org&lt;/p>
&lt;p>Few hairy moments when I thought I’d lost all the pages, but a little hackery of the SQL dump I’d made beforehand meant I was able to restore the data. If you see something that looks broken please let me know&lt;/p>
&lt;p>&lt;ins datetime="2004-4-26T21:28:57--1:00">&lt;em>Also&lt;/em> I’ve deleted a few superfluous feeds – RSS 2.0 should be enough for now until Atom settles a bit more (IMHO!)&lt;/ins>&lt;/p></description></item><item><title>MTCodeBeautifier</title><link>https://www.synesthesia.co.uk/2004/02/10/mtcodebeautifier/</link><pubDate>Tue, 10 Feb 2004 16:14:41 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/10/mtcodebeautifier/</guid><description>&lt;p>“MTCodeBeautifier”:https://voisen.org/archives/projects/000239.php MTCodeBeautifier is a plugin for Movable Type that provides syntax highlighting and code beautification (indenting, etc.) on input for a variety of programming languages.&lt;/p></description></item><item><title>Reflection 2</title><link>https://www.synesthesia.co.uk/2004/02/09/reflection-2/</link><pubDate>Mon, 09 Feb 2004 23:14:52 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/09/reflection-2/</guid><description>&lt;p>I &lt;a href="https://www.synesthesia.co.uk/blog/archives/action_research/000289.php" target="_blank" rel="noopener">mentioned&lt;/a> earlier that I was looking at &lt;a href="https://www.scu.edu.au/schools/gcm/ar/areol/areolhome.html" target="_blank" rel="noopener">this free course&lt;/a> on Action Research.&lt;/p>
&lt;p>In one of the &lt;a href="https://purpleslurple.net/ps.php?theurl=https://www.scu.edu.au/schools/gcm/ar/arp/naive.html" target="_blank" rel="noopener">background documents&lt;/a> Bob Dick describes a number of typical questions that one might ask during an Action Research intervention. Working through these (see &lt;wiki>QuestionsToGuideReflection&lt;/wiki>) it seems to me that what he is describing is a form of double reflection around action…&lt;/p>
&lt;img src="https://www.synesthesia.co.uk/blog/images/modifiedcycle.gif" width="408" height="267" />
&lt;p>&lt;strong>Reflection 1&lt;/strong> occurs as part of the planning process, and serves to make explicit the mental models being used in the planning process.&lt;/p>
&lt;p>&lt;strong>Reflection 2&lt;/strong> is (perhaps) the more familiar one from the &lt;wiki>KolbLearningCycle&lt;/wiki> that serves to update mental models as a result of learning from action…&lt;/p>
&lt;p>As someone from a pragmatic background rather than an academic training, the attraction I can see in learning Action Research is the greater skill it will give me at reflecting on practice. The nuance of Reflection 1 &amp;amp; 2, I suspect, will take that even further…&lt;/p></description></item><item><title>I’m sorry, has your brain broken?</title><link>https://www.synesthesia.co.uk/2004/02/09/im-sorry-has-your-brain-broken/</link><pubDate>Mon, 09 Feb 2004 20:52:03 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/09/im-sorry-has-your-brain-broken/</guid><description>&lt;p>“I’m sorry, has your brain broken?”:https://www.guardian.co.uk/life/opinion/story/0,12981,1133207,00.html Self-taught scientist Steve Grand built his own intelligent android. Now he’s seeking intelligent life among the newsreaders, television producers and yoghurt advertisers who label things as ‘science’&lt;/p></description></item><item><title>Strange CSS bug in Mozilla Firefox</title><link>https://www.synesthesia.co.uk/2004/02/09/strange-css-bug-in-mozilla-firefox/</link><pubDate>Mon, 09 Feb 2004 18:26:49 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/09/strange-css-bug-in-mozilla-firefox/</guid><description>&lt;p>Just upgraded to &lt;a href="https://www.mozilla.org/products/firefox/" target="_blank" rel="noopener">Firefox&lt;/a> and discovered that all my hyperlinks were jumping to the right when I hovered over them…&lt;/p>
&lt;p>Replacing the original style declaration of&lt;/p>
&lt;p>&lt;code>A:hover { border-bottom: 1px dashed #555; }&lt;/code>&lt;/p>
&lt;p>with&lt;/p>
&lt;p>&lt;code>A:hover { color: #999999; text-decoration: none;}&lt;/code>&lt;/p>
&lt;p>has worked around it…&lt;/p>
&lt;p>Anyone know how to report bugs to Mozilla?&lt;/p></description></item><item><title>Exploring Footers</title><link>https://www.synesthesia.co.uk/2004/02/09/exploring-footers/</link><pubDate>Mon, 09 Feb 2004 15:04:21 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/09/exploring-footers/</guid><description>&lt;p>“Exploring Footers”:https://www.alistapart.com/articles/footers/ This article explores the ways you can position footers using web standards, although the same techniques may be used to vertically position other elements.&lt;/p>
&lt;p>[via &amp;lt;a href=&amp;ldquo;&amp;ldquo;https://www.zeldman.com/daily/0204c.shtml&amp;gt;Jeffrey Zeldman&lt;/a>]&lt;/p></description></item><item><title>Pattern Synchronicity</title><link>https://www.synesthesia.co.uk/2004/02/09/pattern-synchronicity/</link><pubDate>Mon, 09 Feb 2004 13:41:11 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/09/pattern-synchronicity/</guid><description>&lt;p>Flemming is “looking for patterns of collaboration”:https://tinyurl.com/25ecz – so I pointed him to “Blue Oxen’s”:https://www.blueoxen.org/ “CollabWiki(CollaborationCollaboratory) “:https://collab.blueoxen.net/cgi-bin/wiki.pl?HomePage&lt;/p>
&lt;p>At about the same time, I was starting to wonder if patterns might be useful as part of understanding “CoachingAsKnowledgeCreation”:https://www.synesthesia.co.uk/tiki/tiki-index.php?page=CoachingAsKnowledgeCreation. I think I might get to a set of patterns around Coaching – but first (I think) I need to apply some “ActionResearch”:https://www.synesthesia.co.uk/tiki/tiki-index.php?page=ActionResearch principles to my practice in order to surface my underlying theory. I’ve a feeling that the thoughts I’m exploring at “QuestionsToGuideReflection”:https://www.synesthesia.co.uk/tiki/tiki-index.php?page=QuestionsToGuideReflection might be fruitful as a way of developing a model…&lt;/p></description></item><item><title>The Valley of Vision</title><link>https://www.synesthesia.co.uk/2004/02/08/the-valley-of-vision/</link><pubDate>Sun, 08 Feb 2004 21:04:43 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/08/the-valley-of-vision/</guid><description>&lt;p>Walking around &lt;a href="https://www.victorianweb.org/painting/palmer/" target="_blank" rel="noopener">Samuel Palmer&lt;/a>‘s “Valley of Vision”, between Otford (TQ532594) and Eynsford (TQ535649) in Kent. Again, inspired by &lt;a href="https://www.synesthesia.co.uk/library/archives/000305.php" target="_blank" rel="noopener">Time Out Book of Country Walks&lt;/a>, this time a modified version of Walk 23 (left out the dip down into Shoreham for lunch)… I think I’m starting to notice the positive effect of these walks – certainly felt much stronger towards the end of this walk than in earlier weeks – and was rewarded with a fabulous sunset…&lt;/p></description></item><item><title>SimpleCode</title><link>https://www.synesthesia.co.uk/2004/02/06/simplecode/</link><pubDate>Fri, 06 Feb 2004 11:15:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/06/simplecode/</guid><description>&lt;p>“SimpleCode”:https://www.simplebits.com/archives/2004/02/05/simplecode.html Perl script to turn ordinary markup into entity-coded XHTML markup&lt;/p></description></item><item><title>CSS Validator Changes the Rules</title><link>https://www.synesthesia.co.uk/2004/02/05/css-validator-changes-the-rules/</link><pubDate>Thu, 05 Feb 2004 17:15:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/05/css-validator-changes-the-rules/</guid><description>&lt;p>“CSS Validator Changes the Rules”:https://www.zeldman.com/daily/0204b.shtml The W3C�s CSS validation service has changed the way it interprets CSS authoring practices. Many sites that were designed valid no longer validate.&lt;/p></description></item><item><title>When Word-to-XML Conversions Get Nasty</title><link>https://www.synesthesia.co.uk/2004/02/03/when-word-to-xml-conversions-get-nasty/</link><pubDate>Tue, 03 Feb 2004 21:11:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/03/when-word-to-xml-conversions-get-nasty/</guid><description>&lt;p>“When Word-to-XML Conversions Get Nasty”:https://www.dclab.com/wordtoxml.asp Mike Gross, Chief Technology Officer at Data Conversion Laboratory, Inc., reveals the five ways your conversion engine can get broken when converting MS Word documents to XML.&lt;/p></description></item><item><title>Showing your face</title><link>https://www.synesthesia.co.uk/2004/02/03/showing-your-face/</link><pubDate>Tue, 03 Feb 2004 18:58:31 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/03/showing-your-face/</guid><description>&lt;p>“Andy Borrows(Older and growing…)”:https://olderandgrowing.blogspot.com/ has discovered the soul of a writer inside an engineer. One of his better recent pieces is as a “guest writer(Heart @ Work)”:https://www.heartatwork.blogspot.com/2004_02_01_heartatwork_archive.html#107579760624826228&lt;/p>
&lt;p>on “Heart at Work(Heart at Work: Lois Annich’s weblog)”:https://www.heartatwork.blogspot.com, in which he ends with a metaphor that works superbly for me too…&lt;/p>
&lt;blockquote cite="https://www.heartatwork.blogspot.com/2004_02_01_heartatwork_archive.html#107579760624826228">
&lt;p>
It struck me that blogging is like walking around showing your face to the world, making eye contact with those you pass on the street, open to your surroundings. There&amp;#8217;s too much isolation in this world. Bloggers are breaking down the walls.
&lt;/p>
&lt;/blockquote></description></item><item><title>Project Rhythms</title><link>https://www.synesthesia.co.uk/2004/02/03/project-rhythms/</link><pubDate>Tue, 03 Feb 2004 17:45:55 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/03/project-rhythms/</guid><description>&lt;p>“Project Rhythms”:https://www.jrothman.com/weblog/archive/2004_02_01_mpdarchive.html#107581894680764235&lt;/p></description></item><item><title>Coaching as Mutual Knowledge Creation – 2</title><link>https://www.synesthesia.co.uk/2004/02/03/coaching-as-mutual-knowledge-creation-2/</link><pubDate>Tue, 03 Feb 2004 09:58:13 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/03/coaching-as-mutual-knowledge-creation-2/</guid><description>&lt;p>Continuing to develop thoughts on &lt;wiki>CoachingAsKnowledgeCreation&lt;/wiki>&lt;/p>
&lt;p>(see &lt;a href="https://www.synesthesia.co.uk/blog/archives/coaching/000324.php" target="_blank" rel="noopener">earlier&lt;/a>).&lt;/p>
&lt;p>I’ve started collecting links on different knowledge models at &lt;wiki>CoachingKnowledgeResearch&lt;/wiki>&lt;/p>
&lt;p>&lt;del>MT macro for Wiki name obviously not working yet!&lt;/del>&lt;/p></description></item><item><title>Definition lists – misused or misunderstood?</title><link>https://www.synesthesia.co.uk/2004/02/01/definition-lists-misused-or-misunderstood/</link><pubDate>Sun, 01 Feb 2004 18:30:34 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/01/definition-lists-misused-or-misunderstood/</guid><description>&lt;p>“Definition lists – misused or misunderstood?”:https://www.maxdesign.com.au/presentation/definition/ What are definition lists? When are they appropriate? And how to style them to look like tables, image galleries, calendar of events and more.&lt;/p></description></item><item><title>Bloxpert</title><link>https://www.synesthesia.co.uk/2004/02/01/bloxpert/</link><pubDate>Sun, 01 Feb 2004 17:02:30 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/01/bloxpert/</guid><description>&lt;p>“Bloxpert”:https://www.pyrojection.com/bloxpert.html Bloxpert is a formatting plugin designed to overcome the limitations of Movable Type’s “convert breaks” option.&lt;/p></description></item><item><title>Bullfighter</title><link>https://www.synesthesia.co.uk/2004/02/01/bullfighter/</link><pubDate>Sun, 01 Feb 2004 11:58:54 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/02/01/bullfighter/</guid><description>&lt;p>“Bullfighter”:https://www.dc.com/insights/bullfighter/ Stripping The Bull Out Of Business. A consulting jargon fighter from Deloitte&lt;/p>
&lt;p>[via &lt;a href="https://blog.org/" target="_blank" rel="noopener">blog.org&lt;/a>]&lt;/p></description></item><item><title>Hutton Aftermath</title><link>https://www.synesthesia.co.uk/2004/01/31/hutton-aftermath/</link><pubDate>Sat, 31 Jan 2004 15:31:58 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/31/hutton-aftermath/</guid><description>&lt;p>I don’t normally write about work here, but I wanted to note that I was one of the 10,000 people who contributed to &lt;a href="https://news.bbc.co.uk/1/hi/uk_politics/3446819.stm" title="BBC staff statement in the Daily Telegraph" target="_blank" rel="noopener">this&lt;/a> – I’m one of the 6,000 whose name didn’t appear due to lack of space.&lt;/p></description></item><item><title>Coaching As Knowledge Creation</title><link>https://www.synesthesia.co.uk/2004/01/30/coaching-as-knowledge-creation/</link><pubDate>Fri, 30 Jan 2004 18:30:51 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/30/coaching-as-knowledge-creation/</guid><description>&lt;p>I was talking about the coaching process with my Coaching Supervisor. we were discussing the implicit power-relationship in coaching (Expert – Novice) and how we could work with any positive aspects of that and reduce any negative aspects.&lt;/p>
&lt;p>I wondered if it was useful to think of the coaching process as a form of mutual learning – or indeed as a form of mutual knowledge creation…&lt;/p>
&lt;p>&lt;a href="https://synesthesia.co.uk/tiki/tiki-index.php?page=CoachingAsKnowledgeCreation" title="Synesthesia : CoachingAsKnowledgeCreation" target="_blank" rel="noopener">continued on the wiki&lt;/a>&lt;/p></description></item><item><title>abbr-cadabra</title><link>https://www.synesthesia.co.uk/2004/01/26/abbr-cadabra/</link><pubDate>Mon, 26 Jan 2004 17:22:20 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/26/abbr-cadabra/</guid><description>&lt;p>“abbr-cadabra”:https://dean.edwards.name/my/abbr-cadabra.html Fixing &lt;abbr> in IE without code [via &lt;a href="https://www.paranoidfish.org" target="_blank" rel="noopener">paranoidfish&lt;/a>]&lt;/p></description></item><item><title>Ten Mistakes Writers Don’t See</title><link>https://www.synesthesia.co.uk/2004/01/26/ten-mistakes-writers-dont-see/</link><pubDate>Mon, 26 Jan 2004 16:39:48 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/26/ten-mistakes-writers-dont-see/</guid><description>&lt;p>“Ten Mistakes Writers Don’t See”:https://www.holtuncensored.com/ten_mistakes.html&lt;/p></description></item><item><title>Saturday Walk: Constable Country</title><link>https://www.synesthesia.co.uk/2004/01/25/saturday-walk-constable-country/</link><pubDate>Sun, 25 Jan 2004 19:34:32 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/25/saturday-walk-constable-country/</guid><description>&lt;p>Again, a walk taken from the &lt;a href="https://www.synesthesia.co.uk/library/archives/000305.php" target="_blank" rel="noopener">Time Out Book of Country Walks&lt;/a>, walk 39, circular based on Manningtree in Essex (TM094322)&lt;/p>
&lt;p>Although fairly flat, this area on the border of Essex and Suffolk (The Dedham Vale &lt;acronym title="Area of Outstanding Natural Beauty">AONB&lt;/acronym>) has some delightful views. Inevitably, given the geography and the time of year, parts of the walk were very wet, with a couple of detours around flooding needed and a fair amount of mud (on which I blame the rather disproportionate ache in my legs today!)&lt;/p>
&lt;p>The area is most famous for the paintings of John Constable, born in East Bergholt. The walk passes the scenes of a number of his paintings, including&lt;/p>
&lt;p>&lt;a href="https://www.nationalgallery.org.uk/cgi-bin/WebObjects.dll/CollectionPublisher.woa/wa/largeImage?collectionSection=work&amp;amp;workNumber=NG130" title="The Cornfield, by John Constable, National Gallery London" target="_blank" rel="noopener">The Cornfield&lt;/a> (TM069340) and &lt;a href="https://www.nationalgallery.org.uk/cgi-bin/WebObjects.dll/CollectionPublisher.woa/wa/largeImage?collectionSection=work&amp;amp;workNumber=NG1207" title="The Hay Wain, by John Constable, National Gallery London" target="_blank" rel="noopener">The Hay Wain&lt;/a> (TM077332).&lt;/p>
&lt;p>Although you can see the impact of modern agriculture – even a couple of field boundaries shown on a 1998 map have disappeared – you can imagine that much of the area looks unchanged – in particular the view at Flatford Mill shown in The Hay Wain looks almost identical…&lt;/p></description></item><item><title>Finding grid coordinates from UK Postcode</title><link>https://www.synesthesia.co.uk/2004/01/19/finding-grid-coordinates-from-uk-postcode/</link><pubDate>Mon, 19 Jan 2004 12:48:03 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/19/finding-grid-coordinates-from-uk-postcode/</guid><description>&lt;p>“Finding grid coordinates from UK Postcode”:https://www.jibble.org/ukpostcodes/ [via &lt;a href="https://www.paranoidfish.org/" target="_blank" rel="noopener">paranoidfish&lt;/a>]&lt;/p></description></item><item><title>Persistent Login Cookie Best Practice</title><link>https://www.synesthesia.co.uk/2004/01/19/persistent-login-cookie-best-practice/</link><pubDate>Mon, 19 Jan 2004 12:37:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/19/persistent-login-cookie-best-practice/</guid><description>&lt;p>“Persistent Login Cookie Best Practice”:https://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice Charles Miller presents a more robust way of using persistent cookies for user authentication…&lt;/p></description></item><item><title>Saturday Walk: Pangbourne</title><link>https://www.synesthesia.co.uk/2004/01/18/saturday-walk-pangbourne/</link><pubDate>Sun, 18 Jan 2004 10:30:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/18/saturday-walk-pangbourne/</guid><description>&lt;p>Another walk from the &lt;a href="https://www.synesthesia.co.uk/library/archives/000305.php" target="_blank" rel="noopener">Time Out Book of Country Walks&lt;/a>. Walk 4 this time – a circular walk based on Pangbourne in Berkshire (SU633767) via Cray’s Pond (SU637805).&lt;/p>
&lt;p>This time I thought I’d hook up with a group from the self-organising &lt;a href="https://www.walkingclub.org.uk/" target="_blank" rel="noopener">Saturday Walking Club&lt;/a>. According to the schedule in the book it was the vigorous section “doing” the Pangbourne walk this week. As part of the reason for getting back into walking is to get fit I thought this was a suitable challenge – not least because the ethos of the group is that everyone goes at their own pace – so if I did fall behind I wouldn’t be holding up the rest. (And yes, I know this is not how you run a walking group when you are out in more hazardous territory – there you go at the pace of the slowest to keep the group together and adjust the itinerary to suit)&lt;/p>
&lt;p>As it turned out the pace was fine – albeit quite brisk (8 miles in 2.5 hours split either side of a lunch stop). Slight chagrin at being comprehensively “dropped” up one hill by a couple of people who were both older than me but it’s a useful reminder of the state of your CV system!&lt;/p>
&lt;p>The weather was beautiful on Saturday – crisp, clear and sunny. An early part of the walk (SU622785 to SU615795) was along a wooded cliff above the Thames, and the low January sunlight did a superb job of picking out the landscape. (Mental note to save up for a digital camera!)&lt;/p></description></item><item><title>Minimizing Flickering CSS Background Images in IE6</title><link>https://www.synesthesia.co.uk/2004/01/16/minimizing-flickering-css-background-images-in-ie6/</link><pubDate>Fri, 16 Jan 2004 13:44:30 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/16/minimizing-flickering-css-background-images-in-ie6/</guid><description>&lt;p>“Minimizing Flickering CSS Background Images in IE6”:https://www.fivesevensix.com/studies/ie6flicker/ [via &lt;a href="https://www.paranoidfish.org/" target="_blank" rel="noopener">paranoidfish&lt;/a>]&lt;/p></description></item><item><title>Technology Predictor Success Matrix</title><link>https://www.synesthesia.co.uk/2004/01/14/technology-predictor-success-matrix/</link><pubDate>Wed, 14 Jan 2004 21:43:26 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/14/technology-predictor-success-matrix/</guid><description>&lt;p>“Technology Predictor Success Matrix”:https://www.tbray.org/ongoing/When/200x/2004/01/03/TPM1 [via &lt;a href="https://www.monkeyx.com/archives/scitech/tim_bray_technology_predictor_success_matrix.html" target="_blank" rel="noopener">MonkeyX&lt;/a>]&lt;/p></description></item><item><title>Klein Bottle Hats</title><link>https://www.synesthesia.co.uk/2004/01/13/klein-bottle-hats/</link><pubDate>Tue, 13 Jan 2004 16:41:57 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/13/klein-bottle-hats/</guid><description>&lt;p>“Klein Bottle Hats”:https://www.kleinbottle.com/klein_bottle_hats.htm [via &lt;a href="https://www.thewormbook.com/helmintholog/archives/001027.html" target="_blank" rel="noopener">helmintholog&lt;/a>]&lt;/p></description></item><item><title>cmsWiki</title><link>https://www.synesthesia.co.uk/2004/01/12/cmswiki/</link><pubDate>Mon, 12 Jan 2004 12:29:50 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/12/cmswiki/</guid><description>&lt;p>“cmsWiki”:https://www.semioticpixels.com/wiki/&lt;/p></description></item><item><title>CMS Wiki</title><link>https://www.synesthesia.co.uk/2004/01/12/cms-wiki/</link><pubDate>Mon, 12 Jan 2004 12:27:54 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/12/cms-wiki/</guid><description>&lt;p>“CMS Wiki”:https://www.cmswiki.com/tiki-index.php&lt;/p></description></item><item><title>Integrating javascript into stylesheets</title><link>https://www.synesthesia.co.uk/2004/01/12/integrating-javascript-into-stylesheets/</link><pubDate>Mon, 12 Jan 2004 11:56:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/12/integrating-javascript-into-stylesheets/</guid><description>&lt;p>“Integrating javascript into stylesheets”:https://milov.nl/2389&lt;/p></description></item><item><title>Styling in IE</title><link>https://www.synesthesia.co.uk/2004/01/12/styling-abbr-in-ie/</link><pubDate>Mon, 12 Jan 2004 11:33:43 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/12/styling-abbr-in-ie/</guid><description>&lt;p>“Styling &lt;abbr> in IE”:https://www.sovavsiti.cz/css/abbr.html Internet Explorer for Windows does not support the &lt;abbr> element that should be used on web pages for proper markup of abbreviations. Marek Prokop has a client-side way of fixing this.&lt;/p></description></item><item><title>Making meaning</title><link>https://www.synesthesia.co.uk/2004/01/12/making-meaning/</link><pubDate>Mon, 12 Jan 2004 11:19:10 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/12/making-meaning/</guid><description>&lt;p>“Making meaning”:https://denham.typepad.com/km/2004/01/making_meaning.html Denham Grey explains how we come to share meaning and the relation between meaning, understanding, ontology and knowledge.&lt;/p></description></item><item><title>Web Developer extension for Firebird</title><link>https://www.synesthesia.co.uk/2004/01/11/web-developer-extension-for-firebird/</link><pubDate>Sun, 11 Jan 2004 22:01:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/11/web-developer-extension-for-firebird/</guid><description>&lt;p>“Web Developer extension for Firebird”:https://chrispederick.myacen.com/work/firebird/webdeveloper/index.php [via &lt;a href="https://www.highcontext.com/" target="_blank" rel="noopener">High Context&lt;/a>]&lt;/p></description></item><item><title>Rake</title><link>https://www.synesthesia.co.uk/2004/01/11/rake/</link><pubDate>Sun, 11 Jan 2004 19:43:40 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/11/rake/</guid><description>&lt;p>“Rake”:https://rake.rubyforge.org/ A simple ruby build program with capabilities similar to make. [via &lt;a href="https://martinfowler.com/bliki/" target="_blank" rel="noopener">Martin Fowler&lt;/a>]&lt;/p></description></item><item><title>Saturday Walk: Otford</title><link>https://www.synesthesia.co.uk/2004/01/11/saturday-walk-otford/</link><pubDate>Sun, 11 Jan 2004 19:25:13 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/11/saturday-walk-otford/</guid><description>&lt;p>In the period before Christmas I’d already decided that the New Year would be a great excuse to dig out my walking boots and start getting some more fresh air – seeing &lt;a href="https://www.theobviousblog.net/blog/archives/000337.html#000337" target="_blank" rel="noopener">these&lt;/a> &lt;a href="https://www.theobviousblog.net/blog/archives/000342.html#000342" target="_blank" rel="noopener">three&lt;/a> &lt;a href="https://www.theobviousblog.net/blog/archives/000352.html#000352" target="_blank" rel="noopener">posts&lt;/a> from Euan just spurred things on a little…&lt;/p>
&lt;p>Santa was kind enough to bring me the &lt;a href="https://www.synesthesia.co.uk/library/archives/000305.php" target="_blank" rel="noopener">Time Out Book of Country Walks&lt;/a> – 53 easy to moderate walks all within about 90 minutes train journey of the capital – so this weekend it was time to try one out.&lt;/p>
&lt;p>For a combination of reasons ended up picking walk 43 – a circular walk based on &lt;a href="https://www.otford.org/" target="_blank" rel="noopener">Otford&lt;/a> in Kent (TQ532594) going via the Fox and Hounds at Romney Street (TQ550614).&lt;/p>
&lt;p>I’ve not been walking in this area before but the landscape seems very similar to the Chilterns – mixture of farmland and woods with typical lowland chalk landscape – i.e. smallish (but steep-sided!) valleys and lots of mud. Perhaps someone should research the clever physics of mud – how can the same substance be both sticky and slippery, depending on the angle to the vertical?&lt;/p>
&lt;p>The walk was hugely enjoyable – short enough to do during a short winter day with a late-ish start – but also far enough both to remind me of how sedentary I’ve been lately (ouch!) and to bring on that simple inner calmness brought about by a combination of exercise, fresh air and being out in the English countryside.&lt;/p></description></item><item><title>Faux Columns</title><link>https://www.synesthesia.co.uk/2004/01/09/faux-columns/</link><pubDate>Fri, 09 Jan 2004 17:28:43 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/09/faux-columns/</guid><description>&lt;p>“Faux Columns”:https://www.alistapart.com/articles/fauxcolumns/&lt;/p></description></item><item><title>Integrated Quicklinks Tutorial</title><link>https://www.synesthesia.co.uk/2004/01/07/integrated-quicklinks-tutorial/</link><pubDate>Wed, 07 Jan 2004 11:36:06 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/07/integrated-quicklinks-tutorial/</guid><description>&lt;p>“Integrated Quicklinks Tutorial”:https://www.hitormiss.org/archives/2004/01/integrated-quicklinks-tutorial for Moveable Type&lt;/p></description></item><item><title>Clean Language discussion forum</title><link>https://www.synesthesia.co.uk/2004/01/06/clean-language-discussion-forum/</link><pubDate>Tue, 06 Jan 2004 17:41:57 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/06/clean-language-discussion-forum/</guid><description>&lt;p>Phil Swallow has pointed me to his new &lt;a href="https://www.cleanforum.com/" target="_blank" rel="noopener">discussion forum&lt;/a> for exploring Metaphor, Clean Language, Clean Space and Symbolic Modelling. The forum looks like it will turn out to be a terrific resource if people use it. Probably the quickest way for me to explain “Clean Language” is to quote Phil from the FAQ section:&lt;/p>
&lt;blockquote cite="https://www.cleanforum.com/phpBB2/viewtopic.php?t=35">
&lt;p>
The word &amp;#8216;clean&amp;#8217; is a metaphor. In this context, it represents the intention of the facilitator to keep their own stuff as separate as they can from the client&amp;#8217;s stuff, where &amp;#8216;stuff&amp;#8217; equals &amp;#8216;metaphors, opinions, suggestions, orders, analysis, comments&amp;#8217; and so on.
&lt;/p>
&lt;p>
&lt;b>I think it&amp;#8217;s worth making the point that when we are being &amp;#8216;clean&amp;#8217;, it IS our intention to influence our clients &amp;#8211; we do not pretend to be invisible or outside of the process. &lt;/b> [JE emphasis]
&lt;/p>
&lt;p>
The way we intend to influence them is by directing their attention to aspects of their own experience, to help them to model themselves. With the understanding of self that that brings, their system can self-organise to create the kinds of experience they want to have. [&amp;#8230;]
&lt;/p>
&lt;p>
James Lawley describes what &amp;#8216;clean&amp;#8217; represents more elegantly and accurately in his post &lt;a href="https://www.cleanforum.com/phpBB2/viewtopic.php?t=41">What is Clean Language?&lt;/a>.
&lt;/p>
&lt;/blockquote>
&lt;p>For a contrasting analysis, try this &lt;a href="https://www.devco.demon.co.uk/meta-states.html" title="THE META-STATES IN SYMBOLIC MODELING by L. Michael Hall, Ph.D." target="_blank" rel="noopener">critique&lt;/a> of Symbolic Modelling from a meta-states / neuro-semantics perspective. by L. Michael Hall. Although very supportive of the work in developing the use of metaphor:&lt;/p>
&lt;blockquote cite="https://purpleslurple.net/ps.php?theurl=https://www.devco.demon.co.uk/meta-states.html#purp456">
&lt;p>
The book and model of these authors is a good one and adds much to the NLP model by enriching it, integrating current research in Cognitive Linguistics, systems, and brain research. It enriches the modeling we do in NLP and NS also as it opens up yet another way to model experience and excellence by listening to and exploring the Metaphorical Landscape that people live in.
&lt;/p>
&lt;/blockquote>
&lt;p>he also says:&lt;/p>
&lt;blockquote cite="https://purpleslurple.net/ps.php?theurl=https://www.devco.demon.co.uk/meta-states.html#purp313">
&lt;p>
As much as Grove and these authors [Lawley &amp; Tompkins] may want to believe that such questions keep the results &amp;#8220;clean,&amp;#8221; they do not. They cannot. These are the words that invite people to invent all kinds of things that was not there before. Yes, focusing on the person&amp;#8217;s words and symbols does create a focus on a single event, and to some extent explores the person&amp;#8217;s mental world, but it also invites creating things by that very focus. The symbolic domain, like all facets of consciousness, changes and transforms by the very accessing of it. All memories are like that. With every re-accessing of a memory, the memory will change.
&lt;/p>
&lt;/blockquote>
&lt;p>I think Phil’s more recent &lt;a href="https://www.cleanforum.com/phpBB2/viewtopic.php?t=35" target="_blank" rel="noopener">definition&lt;/a> (quoted in bold above) reflects this critique and shows how the understanding within the metaphor community may have developed – I’d be interested in his view on this…&lt;/p>
&lt;p>&lt;ins>Fixed link to Phil’s &lt;a href="https://www.cleanforum.com//">discussion forum&lt;/a>. The conversation continues &lt;a href="https://www.cleanforum.com/phpBB2/viewtopic.php?p=114#114">over there&lt;/a>&lt;/ins>&lt;/p></description></item><item><title>People, Process, and Predicting Project Success</title><link>https://www.synesthesia.co.uk/2004/01/06/people-process-and-predicting-project-success/</link><pubDate>Tue, 06 Jan 2004 17:38:10 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/06/people-process-and-predicting-project-success/</guid><description>&lt;p>“People, Process, and Predicting Project Success”:https://www.jrothman.com/weblog/archive/2004_01_01_mpdarchive.html#107340710092303867&lt;/p></description></item><item><title>Mandala – Art Psychotherapy</title><link>https://www.synesthesia.co.uk/2004/01/06/mandala-art-psychotherapy/</link><pubDate>Tue, 06 Jan 2004 16:33:45 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/06/mandala-art-psychotherapy/</guid><description>&lt;p>“Mandala – Art Psychotherapy”:https://www.geocities.com/plansze/mandala.html &lt;a href="https://curtrosengren.typepad.com/occupationaladventure/2004/01/creative_selfex.html" target="_blank" rel="noopener">via [The Occupational Adventure]&lt;/a>&lt;/p></description></item><item><title>IP Address Locator</title><link>https://www.synesthesia.co.uk/2004/01/06/ip-address-locator/</link><pubDate>Tue, 06 Jan 2004 11:16:41 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/06/ip-address-locator/</guid><description>&lt;p>“IP Address Locator”:https://www.geobytes.com/IpLocator.htm?GetLocation [ via &lt;a href="https://blogs.it/0100198/" target="_blank" rel="noopener">Marc’s Voice&lt;/a>]&lt;/p></description></item><item><title>New pub entertainment</title><link>https://www.synesthesia.co.uk/2004/01/05/new-pub-entertainment/</link><pubDate>Mon, 05 Jan 2004 17:01:53 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/05/new-pub-entertainment/</guid><description>&lt;p>“New pub entertainment”:https://www.guardian.co.uk/online/story/0,3605,1108992,00.html&lt;/p></description></item><item><title>OpenOffice.org XML Essentials</title><link>https://www.synesthesia.co.uk/2004/01/05/openofficeorg-xml-essentials/</link><pubDate>Mon, 05 Jan 2004 16:14:36 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/05/openofficeorg-xml-essentials/</guid><description>&lt;p>“OpenOffice.org XML Essentials”:https://books.evc-cit.info/ [via &lt;a href="https://www.webmink.net/" target="_blank" rel="noopener">WebMink&lt;/a>]&lt;/p></description></item><item><title>Systems Thinking links</title><link>https://www.synesthesia.co.uk/2004/01/03/systems-thinking-links/</link><pubDate>Sat, 03 Jan 2004 11:35:16 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/03/systems-thinking-links/</guid><description>&lt;p>Some useful “Systems Thinking links”:https://onepine.blogspot.com/2003_12_01_onepine_archive.html#107148432841907048 from OnePine, a UK librarian…&lt;/p></description></item><item><title>MTpaginate extension</title><link>https://www.synesthesia.co.uk/2004/01/03/mtpaginate-extension/</link><pubDate>Sat, 03 Jan 2004 10:39:44 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/03/mtpaginate-extension/</guid><description>&lt;p>“MTpaginate extension”:https://www.nonplus.net/software/mt/MTPaginate.htm&lt;/p></description></item><item><title>Visualizing Blogs</title><link>https://www.synesthesia.co.uk/2004/01/02/visualizing-blogs/</link><pubDate>Fri, 02 Jan 2004 17:43:25 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/02/visualizing-blogs/</guid><description>&lt;p>Using Treemap to “visualise blogs”:https://www.furrygoat.com/archives/000812.html&lt;/p></description></item><item><title>OpenGIS Documents</title><link>https://www.synesthesia.co.uk/2004/01/02/opengis-documents/</link><pubDate>Fri, 02 Jan 2004 09:53:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2004/01/02/opengis-documents/</guid><description>&lt;p>“OpenGIS Documents”:https://www.opengis.org/specs/?page=specs&lt;/p></description></item><item><title>Looking forwards: Action Research</title><link>https://www.synesthesia.co.uk/2003/12/31/looking-forwards-action-research/</link><pubDate>Wed, 31 Dec 2003 12:45:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/31/looking-forwards-action-research/</guid><description>&lt;p>&lt;a href="https://blog.zylstra.org/archives/001162.html" title="Ton&amp;#39;s Interdependent Thoughts: Action Research" target="_blank" rel="noopener">Ton&lt;/a> points to this &lt;a href="https://www.scu.edu.au/schools/gcm/ar/areol/areolhome.html" title="Action research and evaluation on line" target="_blank" rel="noopener">free course&lt;/a> on &lt;a href="https://www.standards.dfes.gov.uk/research/glossary#_A" title="Definition of Action Research" target="_blank" rel="noopener">Action Research&lt;/a>&lt;/p>
&lt;p>I’ve looked at the course notes and they’re very impressive. Reading &lt;a href="https://purpleslurple.net/ps.php?theurl=https://www.scu.edu.au/schools/gcm/ar/areol/areol-session01.html#purp407" target="_blank" rel="noopener">What is Action Research?&lt;/a> I realised that an awful lot of what I do in my work loosely follows this model – no two projects are quite alike. Inevitably in a work environment, the focus is always on the “action” part of the cycle – not for the first time I’m thinking that more emphasis on reflection would be useful…&lt;/p>
&lt;p>So what might I like to get from studying this course?&lt;/p>
&lt;ul>
&lt;li>
&lt;p>A theoretical model to put a context around my project-based learning at work&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Practical tools to help me build in reflective thinking&lt;/p>
&lt;/li>
&lt;li>
&lt;p>An opportunity to see if I can focus on a topic long enough for anything more than a shallow understanding (!)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>An opportunity to practice existing skills&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Although mindful of &lt;a href="https://blog.mathemagenic.com/" target="_blank" rel="noopener">Lilia&lt;/a>‘s &lt;a href="https://purpleslurple.net/ps.php?theurl=https://www.zylstra.org/blog/archives/001162.html#purp369" target="_blank" rel="noopener">warning&lt;/a> about the time involved I have emailed asking to sign up for the full (and still free!) email version of the course in February.&lt;/p>
&lt;p>&lt;ins datetime="20040106">Update: I have set up some &lt;a href="https://synesthesia.co.uk/tiki/tiki-index.php?page=ARCourseNotesRoot">wiki pages&lt;/a> for my course notes.&lt;/ins>&lt;/p></description></item><item><title>Turn of the year</title><link>https://www.synesthesia.co.uk/2003/12/31/turn-of-the-year/</link><pubDate>Wed, 31 Dec 2003 12:37:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/31/turn-of-the-year/</guid><description>&lt;div class="inlineimg">
&lt;img class="aligncenter size-medium wp-image-1755" title="Janus, Roman God of Beginnings" src="Janus-Vatican.jpg" alt="Janus, Roman God of Beginnings" width="300" height="263" />
&lt;/div></description></item><item><title>Parsing RSS in ASP</title><link>https://www.synesthesia.co.uk/2003/12/31/parsing-rss-in-asp/</link><pubDate>Wed, 31 Dec 2003 10:40:02 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/31/parsing-rss-in-asp/</guid><description>&lt;p>“Parsing RSS in ASP”:https://home.att.net/~codeLibrary/XML/rss.htm&lt;/p></description></item><item><title>Magpie RSS Parser</title><link>https://www.synesthesia.co.uk/2003/12/30/magpie-rss-parser/</link><pubDate>Tue, 30 Dec 2003 17:43:24 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/30/magpie-rss-parser/</guid><description>&lt;p>“Magpie RSS Parser”:https://magpierss.sourceforge.net/ XML-based RSS parser in PHP&lt;/p></description></item><item><title>Selecting a Lifecycle</title><link>https://www.synesthesia.co.uk/2003/12/30/selecting-a-lifecycle/</link><pubDate>Tue, 30 Dec 2003 15:29:30 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/30/selecting-a-lifecycle/</guid><description>&lt;p>“Selecting a Lifecycle”:https://www.jrothman.com/weblog/archive/2003_12_01_mpdarchive.html#107175699965592377 Useful summary from Johanna Rothman on choosing a project lifecycle&lt;/p></description></item><item><title>Action research and evaluation on line</title><link>https://www.synesthesia.co.uk/2003/12/30/action-research-and-evaluation-on-line/</link><pubDate>Tue, 30 Dec 2003 12:26:25 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/30/action-research-and-evaluation-on-line/</guid><description>&lt;p>“Action research and evaluation on line”:https://www.scu.edu.au/schools/gcm/ar/areol/areolhome.html&lt;/p></description></item><item><title>The Phenomenology of Synaesthesia</title><link>https://www.synesthesia.co.uk/2003/12/30/the-phenomenology-of-synaesthesia/</link><pubDate>Tue, 30 Dec 2003 11:46:47 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/30/the-phenomenology-of-synaesthesia/</guid><description>&lt;p>“The Phenomenology of Synaesthesia”:https://www.imprint.co.uk/pdf/R_H-follow-up.pdf PDF of paper by V.S. Ramachandran and E.M. Hubbard – had to capture this one! [via &lt;a href="https://radio.weblogs.com/0121664/" title="Conversations with Dina" target="_blank" rel="noopener">Dina&lt;/a>]&lt;/p></description></item><item><title>GetXML Plugin for Movable Type</title><link>https://www.synesthesia.co.uk/2003/12/30/getxml-plugin-for-movable-type/</link><pubDate>Tue, 30 Dec 2003 11:20:54 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/30/getxml-plugin-for-movable-type/</guid><description>&lt;p>“GetXML Plugin for Movable Type”:https://www.staggernation.com/mtplugins/GetXMLReadMe.html&lt;/p></description></item><item><title>Location Plugin for Movable Type</title><link>https://www.synesthesia.co.uk/2003/12/30/location-plugin-for-movable-type/</link><pubDate>Tue, 30 Dec 2003 10:44:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/30/location-plugin-for-movable-type/</guid><description>&lt;p>“Location Plugin for Movable Type”:https://www.freewisdom.org/archives/2003/12/20/00.53.14&lt;/p></description></item><item><title>Blogger’s block, collapsing facets and the number 150</title><link>https://www.synesthesia.co.uk/2003/12/30/bloggers-block-collapsing-facets-and-the-number-150/</link><pubDate>Tue, 30 Dec 2003 00:02:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/30/bloggers-block-collapsing-facets-and-the-number-150/</guid><description>&lt;p>“Blogger’s block, collapsing facets and the number 150”:https://joi.ito.com/archives/2003/12/23/bloggers_block_collapsing_facets_and_the_number_150.html&lt;/p></description></item><item><title>The Presentation of Self in Everyday Life</title><link>https://www.synesthesia.co.uk/2003/12/29/the-presentation-of-self-in-everyday-life/</link><pubDate>Mon, 29 Dec 2003 23:54:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/29/the-presentation-of-self-in-everyday-life/</guid><description>&lt;p>Erving Goffman’s “The Presentation of Self in Everyday Life”:https://www.cfmc.com/adamb/writings/goffman.htm, published in 1959, provides a detailed description and analysis of process and meaning in mundane interaction&lt;/p></description></item><item><title>Which comes first, technology or social norms?</title><link>https://www.synesthesia.co.uk/2003/12/29/which-comes-first-technology-or-social-norms/</link><pubDate>Mon, 29 Dec 2003 23:49:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/29/which-comes-first-technology-or-social-norms/</guid><description>&lt;p>Joi Ito asks “Which comes first, technology or social norms?”:https://joi.ito.com/archives/2003/12/30/which_comes_first_technology_or_social_norms.html&lt;/p></description></item><item><title>Vapor</title><link>https://www.synesthesia.co.uk/2003/12/22/vapor/</link><pubDate>Mon, 22 Dec 2003 14:04:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/22/vapor/</guid><description>&lt;p>“Vapor”:https://vapor.rubyforge.org/ : a persistent Object-Repository for Ruby&lt;/p></description></item><item><title>Ruby-ODBC</title><link>https://www.synesthesia.co.uk/2003/12/22/ruby-odbc/</link><pubDate>Mon, 22 Dec 2003 13:25:11 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/22/ruby-odbc/</guid><description>&lt;p>“Ruby-ODBC”:https://www.ch-werner.de/rubyodbc/&lt;/p></description></item><item><title>Playing the Live Jazz of Project Management</title><link>https://www.synesthesia.co.uk/2003/12/22/playing-the-live-jazz-of-project-management/</link><pubDate>Mon, 22 Dec 2003 12:41:17 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/22/playing-the-live-jazz-of-project-management/</guid><description>&lt;p>“Playing the Live Jazz of Project Management”:https://www.projectjazz.com/docs/ProjectJazz01.pdf Ths similarities between project management and playing improvisational jazz [PDF file]&lt;/p></description></item><item><title>RubyUnit</title><link>https://www.synesthesia.co.uk/2003/12/16/rubyunit/</link><pubDate>Tue, 16 Dec 2003 11:51:50 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/16/rubyunit/</guid><description>&lt;p>“RubyUnit”:https://homepage1.nifty.com/markey/ruby/rubyunit/index_e.html Unit testing framework for Ruby&lt;/p></description></item><item><title>Ruby/Mock 1.0</title><link>https://www.synesthesia.co.uk/2003/12/16/rubymock-10/</link><pubDate>Tue, 16 Dec 2003 11:51:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/16/rubymock-10/</guid><description>&lt;p>“Ruby/Mock 1.0”:https://www.b13media.com/dev/ruby/mock.html Mock objects for RubyUnit&lt;/p></description></item><item><title>Ruby Garden</title><link>https://www.synesthesia.co.uk/2003/12/15/ruby-garden/</link><pubDate>Mon, 15 Dec 2003 18:52:34 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/15/ruby-garden/</guid><description>&lt;p>“Ruby Garden”:https://www.rubygarden.org/ Ruby wiki&lt;/p></description></item><item><title>&lt;rubyXML></title><link>https://www.synesthesia.co.uk/2003/12/15/rubyxml/</link><pubDate>Mon, 15 Dec 2003 18:50:34 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/15/rubyxml/</guid><description>&lt;p>“&lt;rubyXML>”:https://www.rubyxml.com/&lt;/p></description></item><item><title>Programming Ruby</title><link>https://www.synesthesia.co.uk/2003/12/15/programming-ruby/</link><pubDate>Mon, 15 Dec 2003 17:55:10 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/15/programming-ruby/</guid><description>&lt;p>“Programming Ruby”:https://www.rubycentral.com/book/index.html&lt;/p></description></item><item><title>Ruby Users’ Guide</title><link>https://www.synesthesia.co.uk/2003/12/15/ruby-users-guide/</link><pubDate>Mon, 15 Dec 2003 17:54:11 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/15/ruby-users-guide/</guid><description>&lt;p>“Ruby Users’ Guide”:https://www.ruby-doc.org/docs/UsersGuide/rg/index.html&lt;/p></description></item><item><title>REXML</title><link>https://www.synesthesia.co.uk/2003/12/15/rexml/</link><pubDate>Mon, 15 Dec 2003 17:52:51 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/15/rexml/</guid><description>&lt;p>“REXML”:https://www.germane-software.com/software/rexml/#id2594384 is an XML processor for the language Ruby&lt;/p></description></item><item><title>Writing Efficient CSS</title><link>https://www.synesthesia.co.uk/2003/12/12/writing-efficient-css/</link><pubDate>Fri, 12 Dec 2003 17:03:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/12/writing-efficient-css/</guid><description>&lt;p>“Writing Efficient CSS”:https://www.communitymx.com/content/article.cfm?cid=A43B828960590F55&lt;/p></description></item><item><title>Apparently I’m a Canadian</title><link>https://www.synesthesia.co.uk/2003/12/03/apparently-im-a-canadian/</link><pubDate>Wed, 03 Dec 2003 20:07:49 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/03/apparently-im-a-canadian/</guid><description>&lt;p>Or more exactly, I share world-view and values with a lot of Canadians…Dave Pollard &lt;a href="https://blogs.salon.com/0002007/2003/12/03.html#a541" target="_blank" rel="noopener">points&lt;/a> to the survey at &lt;a href="https://fireandice.environics.net/surveys/fireandice/main/fireandice.asp?surveyID=1" target="_blank" rel="noopener">Fire &amp;amp; Ice: The US, Canada and the Myth of Converging Values&lt;/a> and notes that median scores for Americans are in the upper-left quadrant, whilst median scores for Canadians are in the lower-right &lt;em>and the gap is growing&lt;/em>.&lt;/p>&lt;/p>
&lt;p>The author of the survey explains the result chart as follows:&lt;/p>
&lt;blockquote cite="Survey explanation at fireandice.environics.net">
&lt;p>
Your personal position can be interpreted along two major explanatory dimensions, or axes of social values. The first axis of explanation of social values, shown here as the vertical or y-axis, describes a general orientation toward the acceptance versus rejection of long-standing social norms in society, that is, an outlook that is either deferential to traditional mores and institutions, labelled &amp;#8220;Authority&amp;#8221;, or one that is more modern and questioning, labelled &amp;#8220;Individuality&amp;#8221;. The second axis, shown here as the horizontal or x-axis, describes a general outlook toward, and valuing of, pragmatism and competitiveness, labelled &amp;#8220;Survival&amp;#8221;, or a world view that is more idealistic and postmodern, here labelled &amp;#8220;Fulfillment.&amp;#8221;
&lt;/p>
&lt;p>
Taken together, these two axes form four general quadrants of explanation or meaning underlying people&amp;#8217;s values. People in the upper left are fundamentally motivated by needs for stability, security and status, and exhibit a strong work ethic. Those in the upper right most value ethics, duty, and responsibility within their families and communities. Meanwhile, those with values that place them in the lower right primarily search for personal control, and are open-minded, flexible and idealistic. And finally, individuals in the lower left pursue, above all else, novelty, excitement and risk.
&lt;/p>
&lt;/blockquote>
&lt;img class="floatright" alt="Image showing my results from Fire and Ice Survey" src="https://www.synesthesia.co.uk/blog/images/fireice.jpg" width="280" height="302" border="0" />
&lt;p>Having dutifully completed the survey I seem to come out firmly in the “Idealism and Autonomy” quadrant. Apparently the signatures of this quadrant are:&lt;/p>
&lt;ul>
&lt;li>Key Characteristics
&lt;ul>
&lt;li>Self-reliant and in control of their own destiny&lt;/li>
&lt;li>Idealistic and open-minded&lt;/li>
&lt;li>Rejecting out-dated norms and institutions&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Fundamental Motivations and Values
&lt;ul>
&lt;li>Personal Control&lt;/li>
&lt;li>Question Authority&lt;/li>
&lt;li>Global Consciousness&lt;/li>
&lt;li>Adaptability to Complexity&lt;/li>
&lt;li>Flexible Families&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>I don’t feel uncomfortable with those values, but I am surprised at the extreme placement of my result – I don’t consider myself an extreme example of any of those views when compared with others I know. It would be interesting to see a similar survey calibrated to include the UK and other European countries…&lt;/p></description></item><item><title>Actionable Knowledge</title><link>https://www.synesthesia.co.uk/2003/12/02/actionable-knowledge/</link><pubDate>Tue, 02 Dec 2003 10:21:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/02/actionable-knowledge/</guid><description>&lt;p>&lt;a href="https://blog.zylstra.org/archives/001149.html" target="_blank" rel="noopener">Ton&lt;/a>, &lt;a href="https://blog.mathemagenic.com/2003/11/30.html#a855" target="_blank" rel="noopener">Lilia&lt;/a>, &lt;a href="https://radio.weblogs.com/0121664/2003/11/28.html#a319" target="_blank" rel="noopener">Dina&lt;/a> and &lt;a href="https://www.teledyn.com/mt/archives/001508.html" target="_blank" rel="noopener">Gary&lt;/a> have been discussing how to turn blogs into actionable knowledge.&lt;/p>
&lt;p>Amongst the attractors of the conversation are frustration at not taking the loose ends of blog-nurtured ideas further;&lt;/p>
&lt;blockquote cite="https://blog.zylstra.org/archives/001149.html">
&lt;p>
I do have a feeling that I&amp;#8217;m not responsive enough in picking up the thoughts we dream up here in the blogosphere and turn them into action. The blogs reveal emerging patterns, and we can nurture the memes we think important, and block or criticise the ones we think are not.&lt;br /> But I seem to be less succesfull at moving stuff from the complex and un-ordered realm (to adopt some of &lt;a href="https://www.research.ibm.com/journal/sj/423/kurtz.pdf" title="Link to 'The new dynamics of strategy: Sense-making in a complex and complicated world' by C. F. Kurtz and D. J. Snowden [PDF 193kB]">Dave Snowden&amp;#8217;s vocabulary&lt;/a>) where my addiction is fed, to the more ordered realm of the knowable and practice.
&lt;/p>
&lt;/blockquote>
&lt;p>and equally a concern that we should not close off interesting avenues through premature crystallisation into action:&lt;/p>
&lt;blockquote cite="https://www.teledyn.com/mt/archives/001508.html#001508">
&lt;p>
The loose ends offer me a sense of the possible, a landscape that can go anywhere, a sense of adventure that keeps coaxing me back to explore a little more. I wouldn&amp;#8217;t want it tidied up in a tight focused and deadlined bundle because I know, philosophically, to do so would require closing off many of these possibilities, discarding the undiscovered territories.
&lt;/p>
&lt;/blockquote>
&lt;p>After I’d let these posts mull around in my mind for a day or two, the first thought that came to me was this – just because I don’t neccessarily blog about actions I have taken as a result of blog-inspired knowledge creation, that doesn’t mean there wasn’t actionable knowledge created!&lt;/p>
&lt;p>We all make decisions (often subconsciously) about what to blog and what not to blog. For many people (myself included) the most potent area of such decisions is around our relationship to our employer (or clients for the self-employed)&lt;/p>
&lt;p>My “day job” and most of my coaching work are both in the context of the same organisation – an organisation that has a very high public profile and puts strong confidentiality clauses in our contracts… I’ve had conversations with other bloggers who work in the same place about how we tread that line between bringing insight from the things we do there whilst keeping ourselves employed – for most people this comes down to not explicitly naming the place and generalising sufficiently from things that happen so that specifics cannot be identified.&lt;/p>
&lt;p>The second aspect of work-based discretion relates to the very nature of the work – particularly in my case to coaching – for obvious reasons I am not going to relate things on a public site that could be identified by a specific coachee.&lt;/p>
&lt;p>The third area of discretion relates to friends / partners, children – although many people do blog about their personal lives I choose not to.&lt;/p>
&lt;p>But just because I blog carefully (or not at all) about those areas of my life does not mean that I don’t derive actionable knowledge from blogging that I can apply to those domains. The dilemma though is how to report that back? Some actions won’t make it through my blog-filters; others may be delayed or distorted; in either case there is a break in the learning cycle with my blog learning colleagues.&lt;/p>
&lt;p>This is not about the trust I have in the people with whom I have blogosphere conversations, it is more about who else is eavesdropping. Is there any way to resolve this whilst still using an open channel? I’m not convinced there is – the contradiction we need to resolve is that a completely public channel will inevitably cause us to filter what we write, whilst part of the power of the blogsosphere is the opportunity to discuss ideas with people from very different contexts. As Lilia said:&lt;/p>
&lt;blockquote cite="https://blog.mathemagenic.com/2003/11/30.html#a855">
&lt;p>
I said to a couple of people on my first Skype round that I wish to be able to get many of us to work together at the same place, but I guess it&amp;#8217;s not feasible 🙂 And even if it would be I don&amp;#8217;t think it would work well: the power of our joint discoveries comes from &amp;#8220;weak-tied&amp;#8221; nature of our connections, different backgrounds, different countries and different lives. Still, sometimes I wish to know easy ways to turn weak ties into strong ones, at least for the time needed to develop ideas that worth it.
&lt;/p>
&lt;/blockquote>
&lt;p>I wonder if the more sophisticated Wiki tools would help here – the ones that allow sections to be made secure? Or some other way of easily forming a secure group that is (paradoxically) open and easy to use for those in that group?&lt;/p></description></item><item><title>Executive Dashboards</title><link>https://www.synesthesia.co.uk/2003/12/02/executive-dashboards/</link><pubDate>Tue, 02 Dec 2003 07:45:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/02/executive-dashboards/</guid><description>&lt;p>Boxes and Arrows article by Alex Kirtland on putting together “Executive Dashboards”:https://www.boxesandarrows.com/archives/executive_dashboards.php [via &lt;a href="https://www.paranoidfish.org/" target="_blank" rel="noopener">paranoidfish.org&lt;/a>]&lt;/p></description></item><item><title>Advanced CSS Ornamentation</title><link>https://www.synesthesia.co.uk/2003/12/01/advanced-css-ornamentation/</link><pubDate>Mon, 01 Dec 2003 22:06:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/01/advanced-css-ornamentation/</guid><description>&lt;p>“Advanced CSS Ornamentation”:https://nemesis1.f2o.org/articles&lt;/p></description></item><item><title>Selectutorial: CSS selectors</title><link>https://www.synesthesia.co.uk/2003/12/01/selectutorial-css-selectors/</link><pubDate>Mon, 01 Dec 2003 21:44:14 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/01/selectutorial-css-selectors/</guid><description>&lt;p>“Selectutorial: CSS selectors”:https://css.maxdesign.com.au/selectutorial/index.htm [via &lt;a href="https://www.paranoidfish.org/" target="_blank" rel="noopener">paranoidfish.org&lt;/a>]&lt;/p></description></item><item><title>Demystifying Innovation</title><link>https://www.synesthesia.co.uk/2003/12/01/demystifying-innovation/</link><pubDate>Mon, 01 Dec 2003 16:48:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/01/demystifying-innovation/</guid><description>&lt;p>“Demystifying Innovation”:https://www.kmadvantage.com/docs/km_articles/Demystifying_Innovation.pdf (PDF) A model that makes the process of recognizing and measuring innovativeness a bit easier and less subjective. The study starts by defining innovation as a robust creative process that turns out a very distinct output with significant impact on the market. [ via &lt;a href="https://blogs.salon.com/0002007/" target="_blank" rel="noopener">Dave Pollard&lt;/a>]&lt;/p></description></item><item><title>Integrating SCRUM and User-centred Design</title><link>https://www.synesthesia.co.uk/2003/12/01/integrating-scrum-and-user-centred-design/</link><pubDate>Mon, 01 Dec 2003 16:19:47 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/01/integrating-scrum-and-user-centred-design/</guid><description>&lt;p>“Integrating SCRUM and User-centred Design”:https://www.colfelt.com/blog/rapid_application_development/000074.shtml Notes on a possible lifecycle to combine these two approaches…&lt;/p></description></item><item><title>CSS Design: Going to Print</title><link>https://www.synesthesia.co.uk/2003/12/01/css-design-going-to-print/</link><pubDate>Mon, 01 Dec 2003 13:43:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/01/css-design-going-to-print/</guid><description>&lt;p>“CSS Design: Going to Print”:https://www.alistapart.com/articles/goingtoprint/ &lt;q>One of the wonderful things about CSS is that it allows authors to create media-specific styles for a single document.&lt;/q>&lt;/p></description></item><item><title>Wifi comes to UK Trains</title><link>https://www.synesthesia.co.uk/2003/12/01/wifi-comes-to-uk-trains/</link><pubDate>Mon, 01 Dec 2003 12:42:58 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/01/wifi-comes-to-uk-trains/</guid><description>&lt;p>“Wifi comes to UK Trains”:https://www.gnermobileoffice.co.uk/GNERMobileOffice/ [via &lt;a href="https://wifi.ecademy.com/module.php?mod=blog&amp;amp;op=view&amp;amp;uid=1" target="_blank" rel="noopener">Julian Bond&lt;/a>]&lt;/p></description></item><item><title>The Big Bluejack Heist at Waterloo</title><link>https://www.synesthesia.co.uk/2003/12/01/the-big-bluejack-heist-at-waterloo/</link><pubDate>Mon, 01 Dec 2003 12:06:02 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/12/01/the-big-bluejack-heist-at-waterloo/</guid><description>&lt;p>“The Big Bluejack Heist at Waterloo”:https://www.mbites.co.uk/article.php?story=20031128182439185&lt;/p></description></item><item><title>What’s Your Google Number?</title><link>https://www.synesthesia.co.uk/2003/11/27/whats-your-google-number/</link><pubDate>Thu, 27 Nov 2003 15:55:46 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/27/whats-your-google-number/</guid><description>&lt;p>“What’s Your Google Number?”:https://www.hr.com/hrcom/general/pf.cfm?oID=5635CFB8-953A-4776-AAD8B1E1404DC46FInformation&lt;/p></description></item><item><title>Neurobiological basis of romantic love</title><link>https://www.synesthesia.co.uk/2003/11/27/neurobiological-basis-of-romantic-love/</link><pubDate>Thu, 27 Nov 2003 13:36:17 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/27/neurobiological-basis-of-romantic-love/</guid><description>&lt;p>In new studies, scientists are discovering the “neurobiological basis of romantic love”:https://straddle3.net/context/03/en/2003_11_26.html&lt;/p></description></item><item><title>URI Parsing in XSLT</title><link>https://www.synesthesia.co.uk/2003/11/27/uri-parsing-in-xslt/</link><pubDate>Thu, 27 Nov 2003 13:33:43 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/27/uri-parsing-in-xslt/</guid><description>&lt;p>“URI Parsing in XSLT”:https://lojjic.net/blog/20031127-211048.rdf.html Some named templates, which recursively call themselves to process the URI piece-by-piece&lt;/p></description></item><item><title>Sliding Doors of CSS</title><link>https://www.synesthesia.co.uk/2003/11/25/sliding-doors-of-css/</link><pubDate>Tue, 25 Nov 2003 14:05:46 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/25/sliding-doors-of-css/</guid><description>&lt;p>“Sliding Doors of CSS”:https://www.alistapart.com/articles/slidingdoors/ new way of doing tabbed nav in CSS&lt;/p></description></item><item><title>Jesse’s Bookmarklets Site</title><link>https://www.synesthesia.co.uk/2003/11/25/jesses-bookmarklets-site/</link><pubDate>Tue, 25 Nov 2003 13:49:46 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/25/jesses-bookmarklets-site/</guid><description>&lt;p>“Jesse’s Bookmarklets Site”:https://www.squarefree.com/bookmarklets/ Bookmarklets are free tools to help with repetitive or otherwise impossible tasks in your web browser [via &lt;a hrref="https://simon.incutio.com/">Simon Willison&lt;/a>]&lt;/p></description></item><item><title>iSociety Report on Technology in UK workplaces</title><link>https://www.synesthesia.co.uk/2003/11/25/isociety-report-on-technology-in-uk-workplaces/</link><pubDate>Tue, 25 Nov 2003 11:05:49 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/25/isociety-report-on-technology-in-uk-workplaces/</guid><description>&lt;p>&lt;a href="https://theworkfoundation.com/research/isociety/index.jsp" title="The Work Foundation - iSociety" target="_blank" rel="noopener">iSociety&lt;/a>, part of &lt;a href="https://www.theworkfoundation.com/index.jsp" title="The Work Foundation - research, consultancy and advocacy" target="_blank" rel="noopener">The Work Foundation&lt;/a> (previously known as The Industrial Society) have published &lt;a href="https://www.theworkfoundation.com/research/isociety/gettingby_main.jsp" title="The Work Foundation - iSociety, Getting by, not getting on" target="_blank" rel="noopener">Getting by, not getting on: Technology in UK workplaces&lt;/a>.&lt;/p>
&lt;p>From the abstract:&lt;/p>
&lt;blockquote title="Abstract of 'Getting by, not getting on: Technology in UK workplaces'" cite="https://www.theworkfoundation.com/research/isociety/gettingby_main.jsp">
&lt;p>
Three quarters of British workers now use a PC or other ICT at work. Over the past decade, new technology has swept across Britains workplaces. It has been the most dramatic change in British companies for a decade. But workplaces across the UK are suffering from a low tech equilibrium: they are getting by, not getting on. This report draws on original research in eight very different British workplaces to provide a wart[s]-and-all look at how technology really works, how it is really used and what people really think about it. It shows how we are not getting the most out of ICT in the workplace, and sets out practical steps for Government, managers and the technology industry to help us move forward.
&lt;/p>
&lt;/blockquote>
&lt;p>The report itself is quite thick, so it’s worth starting with the &lt;a href="https://www.theworkfoundation.com/research/isociety/gettingby_summary.jsp" title="Go to executive summary of the report" target="_blank" rel="noopener">executive summary&lt;/a>.&lt;/p>
&lt;p>These two items from the summary go to the heart of the matter:&lt;/p>
&lt;blockquote cite="https://www.theworkfoundation.com/research/isociety/gettingby_summary.jsp">
&lt;table width="100%" border="0" cellspacing="0" cellpadding="0">
&lt;tr valign="top" class="text">
&lt;td>
&lt;div align="center">
&lt;strong>9.&lt;/strong>
&lt;/div>
&lt;/td>
&lt;pre>&lt;code> &amp;lt;td&amp;gt;
While technology can influence people, the reverse influence is just as strong. &amp;lt;strong&amp;gt;What organisations do &amp;amp;#8211; or fail to do &amp;amp;#8211; with technology is a more important predictor of success than any technical specification&amp;lt;/strong&amp;gt;. The &amp;amp;#8216;productivity paradox&amp;amp;#8217; illuminates this point. Research suggests that investment in ICT has modest returns in the first year, comparable to most capital expenditure: over a 5-7 year timeframe, however, the return can increase five-fold. But &amp;amp;#8211; and it is big but &amp;amp;#8211; these returns depend on time-consuming organisational changes. Firms that simply install new technology will see a dismal return. &amp;lt;strong&amp;gt;It is the &amp;lt;em&amp;gt;indirect&amp;lt;/em&amp;gt; contribution of ICT that is significant &amp;amp;#8211; which comes only when technology is coupled with other organisational changes&amp;lt;/strong&amp;gt;.
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; class=&amp;quot;text&amp;quot;&amp;gt;
&amp;lt;td&amp;gt;
&amp;amp;nbsp;
&amp;lt;/td&amp;gt;
&amp;lt;td&amp;gt;
&amp;amp;nbsp;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; class=&amp;quot;text&amp;quot;&amp;gt;
&amp;lt;td&amp;gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;
&amp;lt;strong&amp;gt;10.&amp;lt;/strong&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td&amp;gt;
Getting the best out of ICT therefore requires an understanding of how it fits into the &amp;lt;strong&amp;gt;ecology of the organisation&amp;lt;/strong&amp;gt; &amp;amp;#8211; its attitudes, culture, rituals, structure, networks, processes and behaviour. &amp;lt;strong&amp;gt;Simply dropping ICT into an organisation is unlikely to pay many dividends. It has to be embedded.&amp;lt;/strong&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&lt;/code>&lt;/pre>
&lt;/table>
&lt;/blockquote>
&lt;p>[via &lt;a href="https://www.computing.co.uk/News/1149574" target="_blank" rel="noopener">VNUNet&lt;/a>, via &lt;a href="https://www.ecademy.com/module.php?mod=blog&amp;amp;uid=2084" target="_blank" rel="noopener">Tim Strafford-Taylor&lt;/a>]&lt;/p></description></item><item><title>Marriage is made in hell</title><link>https://www.synesthesia.co.uk/2003/11/24/marriage-is-made-in-hell/</link><pubDate>Mon, 24 Nov 2003 15:57:18 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/24/marriage-is-made-in-hell/</guid><description>&lt;p>&lt;a href="https://observer.guardian.co.uk/comment/story/0,6903,1037049,00.html" target="_blank" rel="noopener">Marriage is made in hell&lt;/a> American writer Laura Kipnis has provoked a storm in the US with a new book attacking marriage. Here, she explains why monogamy turns nice people into petty dictators and household tyrants. [ via &lt;a href="https://human-nature.com/nibbs/" target="_blank" rel="noopener">Human Nature Daily Review&lt;/a>]&lt;/p></description></item><item><title>Does Your Career Meet Your Personal Needs?</title><link>https://www.synesthesia.co.uk/2003/11/24/does-your-career-meet-your-personal-needs/</link><pubDate>Mon, 24 Nov 2003 13:18:12 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/24/does-your-career-meet-your-personal-needs/</guid><description>&lt;p>“Does Your Career Meet Your Personal Needs?”:https://www.careers.wsj.com/jobhunting/change/20031002-moses.html [ via &lt;a href="https://curtrosengren.typepad.com/occupationaladventure/" target="_blank" rel="noopener">The Occupational Adventure&lt;/a>]&lt;/p></description></item><item><title>No Margin for Error</title><link>https://www.synesthesia.co.uk/2003/11/24/no-margin-for-error/</link><pubDate>Mon, 24 Nov 2003 13:03:32 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/24/no-margin-for-error/</guid><description>&lt;p>Gotchas with CSS margin collapse: “No Margin for Error”:https://www.andybudd.com/blog/archives/000114.html [via &lt;a href="https://www.paranoidfish.org/links/" target="_blank" rel="noopener">paranoidfish&lt;/a>]&lt;/p></description></item><item><title>MySQL Gotchas</title><link>https://www.synesthesia.co.uk/2003/11/24/mysql-gotchas/</link><pubDate>Mon, 24 Nov 2003 12:04:58 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/24/mysql-gotchas/</guid><description>&lt;p>“MySQL Gotchas”:https://sql-info.de/mysql/gotchas.html [via &lt;a href="https://www.paranoidfish.org/links/" target="_blank" rel="noopener">paranoidfish.org&lt;/a>]&lt;/p></description></item><item><title>Integrating weblog aggregation data with enterprise data</title><link>https://www.synesthesia.co.uk/2003/11/24/integrating-weblog-aggregation-data-with-enterprise-data/</link><pubDate>Mon, 24 Nov 2003 10:00:58 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/24/integrating-weblog-aggregation-data-with-enterprise-data/</guid><description>&lt;p>“Integrating weblog aggregation data with enterprise data”:https://urlgreyhot.com/drupal/node/view/1312 [via &lt;a href="https://dijest.com/aka/" target="_blank" rel="noopener">A Klog Apart&lt;/a>]&lt;/p></description></item><item><title>Native Win32 ports of some GNU utilities</title><link>https://www.synesthesia.co.uk/2003/11/22/native-win32-ports-of-some-gnu-utilities/</link><pubDate>Sat, 22 Nov 2003 23:30:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/22/native-win32-ports-of-some-gnu-utilities/</guid><description>&lt;p>“Native Win32 ports”:https://unxutils.sourceforge.net of some GNU utilities [via &lt;a href="https://kennethhunt.com/" target="_blank" rel="noopener">Kenneth Hunt – Tech Observer&lt;/a>]&lt;/p></description></item><item><title>Positive Psychology</title><link>https://www.synesthesia.co.uk/2003/11/22/positive-psychology/</link><pubDate>Sat, 22 Nov 2003 20:29:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/22/positive-psychology/</guid><description>&lt;p>&lt;a href="https://www.guardian.co.uk/g2/story/0,3604,1088065,00.html" target="_blank" rel="noopener">How To Be Happy&lt;/a> in the &lt;a href="https://www.guardian.co.uk/" target="_blank" rel="noopener">Guardian&lt;/a> on Thursday tells the story of the “&lt;a href="https://www.positivepsychology.org/" target="_blank" rel="noopener">positive psychologists&lt;/a>” who have been meeting at the &lt;a href="https://www.royalsoc.ac.uk/" title="The Royal Society - the UK national academy of science" target="_blank" rel="noopener">Royal Society&lt;/a> to &lt;a href="https://www.royalsoc.ac.uk/events/discussion_meetings/level_2/nov_well03.htm" title="The science of well-being: integrating neurobiology, psychology and social science" target="_blank" rel="noopener">discuss&lt;/a> “the science of well-being”.&lt;/p>
&lt;p>Leading light of this movement is &lt;a href="https://www.psych.upenn.edu/~seligman/" target="_blank" rel="noopener">Martin Seligman&lt;/a> who is quoted in the article thus:&lt;/p>
&lt;blockquote cite="https://www.guardian.co.uk/g2/story/0,3604,1088065,00.html">
&lt;p>
I used to think that all you had to do to get a happy person was get rid of the negatives in their life, but if that&amp;#8217;s all you do, you don&amp;#8217;t get a happy person, you get an empty person. You need the positives too
&lt;/p>
&lt;/blockquote>
&lt;p>The article goes on with more of Seligman’s views:&lt;/p>
&lt;blockquote cite="https://www.guardian.co.uk/g2/story/0,3604,1088065,00.html">
&lt;p>
He believes there are three routes to happiness, which he calls the &amp;#8220;pleasant life&amp;#8221;, the &amp;#8220;good life&amp;#8221; and the &amp;#8220;meaningful life&amp;#8221;. Some are better than others, although a mix of all three is ideal.
&lt;/p>
&lt;p>
The pleasant life sees superficial pleasures as the key to happiness, and it is this that many people mistakenly pursue, he says. &amp;#8220;The biggest mistake that people in the rich west make is to be enchanted with the Hollywood idea of happiness, which is really just giggling and smiling a lot,&amp;#8221; he says. While a life bent on instant pleasure and gratification offers some degree of happiness, it is ultimately unsatisfying on its own, he says.
&lt;/p>
&lt;p>
Money, it turns out, isn&amp;#8217;t the answer either. Seligman believes that once we have enough to pay for life&amp;#8217;s basics such as food and a roof over our heads, more money adds little to our happiness.
&lt;/p>
&lt;/blockquote>
&lt;p>Seligman identifies &lt;em>signature strengths&lt;/em> as keys to the good and meaningful life – applying these signature strengths to our lives leads to an increasing sense of &lt;a href="https://www.brainchannels.com/thinker/mihaly.html" target="_blank" rel="noopener">flow&lt;/a> – what he calls “the good life” – whilst he suggests that applying them to help others adds meaning to our lives.&lt;/p>
&lt;p>There is (of course) a &lt;amazonlink asin="1857883292">book&lt;/amazonlink> and a &lt;a href="https://www.authentichappiness.org" target="_blank" rel="noopener">website&lt;/a> – the site allows you to take the quizzes in the book, in particular to identify your own &lt;em>signature strengths&lt;/em>&lt;/p>
&lt;p>Having filled in the quiz, it identifies my signature strengths as: (full results in extended entry)&lt;/p>
&lt;ul>
&lt;li>Love of learning&lt;/li>
&lt;li>Creativity, ingenuity, and originality&lt;/li>
&lt;li>Curiosity and interest in the world&lt;/li>
&lt;li>Judgment, critical thinking, and open-mindedness&lt;/li>
&lt;li>Perspective (wisdom)&lt;/li>
&lt;/ul>
&lt;p>All of which feel like a good fit to the things I enjoy, and when applied to work an equally good fit to the things I do well. So on this sample of one it makes sense!&lt;/p>
&lt;p>Finally, is it scientific? There are critics who say the approach is not research-based. The last word belongs to Seligman:&lt;/p>
&lt;blockquote cite="https://www.guardian.co.uk/g2/story/0,3604,1088065,00.html">
&lt;p>
If it&amp;#8217;s not backed up by good scientific data, it will collapse like a house of cards, and it will deserve to
&lt;/p>
&lt;/blockquote>
&lt;p>These were the results I got from the VIA Signature Strengths Survey at &lt;a href="https://www.authentichappiness.org" target="_blank" rel="noopener">authentichappiness.org&lt;/a>:&lt;/p>
&lt;div align="center">
&lt;center>
&lt;/p>
&lt;pre>&lt;code>&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
Top Strength
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
This is a Signature Strength for you.
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
Date: November 22, 2003
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; colspan=&amp;quot;2&amp;quot;&amp;gt;
&amp;lt;b&amp;gt;Love of learning&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;You love learning new things, whether in a class or on your own. You have always loved school, reading, and museums-anywhere and everywhere there is an opportunity to learn.
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; colspan=&amp;quot;2&amp;quot;&amp;gt;
&amp;lt;p&amp;gt;
On this strength, you scored as high as or higher than . . .&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
97% of all Web site users
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/97.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
97% of all male respondents
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/97.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
97% of all 35 to 44 years old
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/97.gif' /&amp;gt;
&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
96% of occupation group MG
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/96.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
97% of all with Bachelors degrees
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/97.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
97% of those living outside US
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/97.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;isb&amp;quot;&amp;gt;
Second Strength
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;ish&amp;quot;&amp;gt;
This is a Signature Strength for you.
&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
Date: November 22, 2003
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;amp;nbsp;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; colspan=&amp;quot;2&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;b&amp;gt;Creativity, ingenuity, and originality&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Thinking of new ways to do things is a crucial part of who you are. You are never content with doing something the conventional way if a better way is possible.
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; colspan=&amp;quot;2&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
On this strength, you scored as high as or higher than . . .
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
89% of all Web site users
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/89.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
85% of all male respondents
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/85.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
89% of all 35 to 44 years old
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/89.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
89% of occupation group MG
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/89.gif' /&amp;gt;
&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
90% of all with Bachelors degrees
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/90.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
89% of those living outside US
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/89.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;isb&amp;quot;&amp;gt;
Third Strength
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;ish&amp;quot;&amp;gt;
This is a Signature Strength for you.
&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
Date: November 22, 2003
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;amp;nbsp;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; colspan=&amp;quot;2&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;b&amp;gt;Curiosity and interest in the world&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;You are curious about everything. You are always asking questions, and you find all subjects and topics fascinating. You like exploration and discovery.
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; colspan=&amp;quot;2&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
On this strength, you scored as high as or higher than . . .
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
87% of all Web site users
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/87.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
88% of all male respondents
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/88.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
88% of all 35 to 44 years old
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/88.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
85% of occupation group MG
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/85.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
88% of all with Bachelors degrees
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/88.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
88% of those living outside US
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/88.gif' /&amp;gt;
&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;isb&amp;quot;&amp;gt;
Fourth Strength
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;ish&amp;quot;&amp;gt;
This is a Signature Strength for you.
&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
Date: November 22, 2003
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;amp;nbsp;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; colspan=&amp;quot;2&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;b&amp;gt;Judgment, critical thinking, and open-mindedness&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Thinking things through and examining them from all sides are important aspects of who you are. You do not jump to conclusions, and you rely only on solid evidence to make your decisions. You are able to change your mind.
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; colspan=&amp;quot;2&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
On this strength, you scored as high as or higher than . . .
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
86% of all Web site users
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/86.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
85% of all male respondents
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/85.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
86% of all 35 to 44 years old
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/86.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
85% of occupation group MG
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/85.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
87% of all with Bachelors degrees
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/87.gif' /&amp;gt;
&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
87% of those living outside US
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/87.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;isb&amp;quot;&amp;gt;
Fifth Strength
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;ish&amp;quot;&amp;gt;
This is a Signature Strength for you.
&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
Date: November 22, 2003
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;amp;nbsp;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; colspan=&amp;quot;2&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;b&amp;gt;Perspective (wisdom)&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Although you may not think of yourself as wise, your friends hold this view of you. They value your perspective on matters and turn to you for advice. You have a way of looking at the world that makes sense to others and to yourself.
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;100%&amp;quot; valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; colspan=&amp;quot;2&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
On this strength, you scored as high as or higher than . . .
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
92% of all Web site users
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/92.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
92% of all male respondents
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/92.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
93% of all 35 to 44 years old
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/93.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
92% of occupation group MG
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/92.gif' /&amp;gt;
&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
94% of all with Bachelors degrees
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/94.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td width=&amp;quot;40%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
93% of those living outside US
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;td width=&amp;quot;60%&amp;quot; valign=&amp;quot;middle&amp;quot; align=&amp;quot;left&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;is&amp;quot;&amp;gt;
&amp;lt;img src='https://www.authentichappiness.org/images/93.gif' /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;
&amp;lt;p&amp;gt;
&amp;lt;/center&amp;gt; &amp;lt;/div&amp;gt;
&lt;/code>&lt;/pre></description></item><item><title>You You</title><link>https://www.synesthesia.co.uk/2003/11/15/you-you/</link><pubDate>Sat, 15 Nov 2003 10:30:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/15/you-you/</guid><description>&lt;p>&lt;a href="https://www.wguides.com/city/1/134_53940.cfm" target="_blank" rel="noopener">Maison Bertaux&lt;/a> in Greek Street is a long-established patisserie in a seedy-ish bit of Soho. An unprepossessing shopfront admits you to a cramped room filled with four small tables where you can consume good coffee and the best French cakes in London…&lt;/p>
&lt;p>If you go there on a Sunday morning you will most likely be served by &lt;a href="https://66.102.11.104/search?q=cache:RwpLGAvFlzgJ:www.actornet.co.uk/metin-marlow/metinmarlow.pdf&amp;#43;metin&amp;#43;marlow&amp;amp;hl=en&amp;amp;ie=UTF-8" target="_blank" rel="noopener">Metin&lt;/a> – a friendly articulate guy perhaps early 50s. But on Thursday night Maison Bertaux was transformed into the Maison Bertaux Theatre Club, and Metin is the writer, director and lead actor of “You You”.&lt;/p>
&lt;blockquote class="aligncenter" cite="'You You' by Metin Marlow ">
&lt;p>
Elephant. A pachyderm with a prehensile proboscis
&lt;/p>
&lt;/blockquote>
&lt;p>We are greeted by Johann – another sometime worker in the shop – who pours us a glass of wine and leaves us (the 7 people that &lt;em>are&lt;/em> the audience) to sit and chat, eyes wandering over the Victorian shopfittings and &lt;a href="https://www.bbc.co.uk/homes/glossary/glossary_l.shtml" target="_blank" rel="noopener">Lincrusta&lt;/a>-covered walls.&lt;/p>
&lt;p>A little after 9:00 Johann picks up his piano-accordion and announces that he will play us in to the strains of the “You-You waltz” – so we troop upstairs and settle in the 15′ x 15′ upstairs room, lit only by four desk lamps with red bulbs.&lt;/p>
&lt;p>Three actors (&lt;a href="https://66.102.11.104/search?q=cache:RwpLGAvFlzgJ:www.actornet.co.uk/metin-marlow/metinmarlow.pdf&amp;#43;metin&amp;#43;marlow&amp;amp;hl=en&amp;amp;ie=UTF-8" target="_blank" rel="noopener">Metin Marlow&lt;/a>, Tania Wade, Guy Manning), dressed in black file in and proceed to entrance us for the next 45 minutes. No props. No scenery. Just inter-action and swirling, trance-making dialogue.&lt;/p>
&lt;blockquote class="aligncenter" cite="'You You' by Metin Marlow ">
&lt;p>
..The lunatic, the sane&lt;br /> The brain, the brain&lt;br /> The brain can&amp;#8217;t explain&amp;#8230;
&lt;/p>
&lt;/blockquote>
&lt;p>What’s it about?&lt;/p>
&lt;p>About a man trying to buy a greyhound in a public toilet.&lt;/p>
&lt;p>About a friend who “will die for him”.&lt;/p>
&lt;p>About lust so strong that both man and woman are reduced to half-sentences.&lt;/p>
&lt;p>About loneliness.&lt;/p>
&lt;p>About regret for missed opportunities, passion unexpressed.&lt;/p>
&lt;p>About life lived to the core – but also a sense that even in the deepest of relationships our lives merely touch tangentially before continuing their own trajectories…&lt;/p>
&lt;p>But &lt;em>you&lt;/em> could see other things there – that’s the power…&lt;/p>
&lt;blockquote class="aligncenter" cite="'You You' by Metin Marlow ">
&lt;p>
I remember remembering you since I first remember.
&lt;/p>
&lt;/blockquote></description></item><item><title>How Do Scrum and CCPM Compare?</title><link>https://www.synesthesia.co.uk/2003/11/14/how-do-scrum-and-ccpm-compare/</link><pubDate>Fri, 14 Nov 2003 15:30:29 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/14/how-do-scrum-and-ccpm-compare/</guid><description>&lt;p>“How Do Scrum and CCPM Compare?”:https://weblog.halmacomber.com/2003_11_09_archive.html#106882243673415487 Hal Macomber posts comparison of the two methods by Clarke Ching&lt;/p></description></item><item><title>MT Wiki</title><link>https://www.synesthesia.co.uk/2003/11/13/mt-wiki/</link><pubDate>Thu, 13 Nov 2003 17:25:24 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/13/mt-wiki/</guid><description>&lt;p>“MT Wiki”:https://wiki.virtualvenus.org Wiki for users of Moveable Type via &lt;a href="https://www.henshall.com/blog/" target="_blank" rel="noopener">Stuart Henshall&lt;/a>&lt;/p></description></item><item><title>Questions Matter</title><link>https://www.synesthesia.co.uk/2003/11/13/questions-matter/</link><pubDate>Thu, 13 Nov 2003 17:11:21 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/13/questions-matter/</guid><description>&lt;p>“Questions Matter”:https://denham.typepad.com/km/2003/11/questions_matte.html Denham Grey on the importance of questions&lt;/p></description></item><item><title>Bloggers at Balzac</title><link>https://www.synesthesia.co.uk/2003/11/13/bloggers-at-balzac/</link><pubDate>Thu, 13 Nov 2003 14:55:36 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/13/bloggers-at-balzac/</guid><description>&lt;img class="floatright" alt="balzac.jpg" src="https://www.synesthesia.co.uk/blog/images/balzac.jpg" width="300" height="144" border="0" align="right" />
&lt;p>Had the hugely enjoyable experience of lunch with &lt;a href="https://radio.weblogs.com/0121664/" target="_blank" rel="noopener">Dina Mehta&lt;/a>, &lt;a href="https://ming.tv/" target="_blank" rel="noopener">Flemming Funch&lt;/a> and &lt;a href="https://scarletjewels.com/" target="_blank" rel="noopener">Julie Solheim-Roe&lt;/a>. I can report another positive example of the transfer of blog-affinity into energy-filled real-life conversations – we ploughed straight in to a whole range of topics, including:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Do the bloggers we gravitate to have similar values?&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The importance of “abundance” thinking in stimulating the open sharing of ideas&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The way in which young Indians are completely immersed in SMS and IM, email isn’t relevant&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Online journals and the growing emotional openness of young men&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Different approaches to blog writing&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Blog writing as meditation&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Paradigm shifts in the way people inter-relate, including the growth of EBay based businesses&lt;/p>
&lt;/li>
&lt;li>
&lt;p>How do we get senior generalist managers to engage with online /community software in large organisations?&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>In summary – a hugely enjoyable and stimulating couple of hours!&lt;/p></description></item><item><title>Artima.com Interviews</title><link>https://www.synesthesia.co.uk/2003/11/12/artimacom-interviews/</link><pubDate>Wed, 12 Nov 2003 16:55:04 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/12/artimacom-interviews/</guid><description>&lt;p>“Artima.com Interviews”:https://www.artima.com/intv/ Loads of useful stuff on programming&lt;/p></description></item><item><title>Building a living glossary</title><link>https://www.synesthesia.co.uk/2003/11/12/building-a-living-glossary/</link><pubDate>Wed, 12 Nov 2003 16:03:04 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/12/building-a-living-glossary/</guid><description>&lt;p>“Building a living glossary”:https://denham.typepad.com/km/2003/11/_building_a_liv.html Denham Grey on the power of building a common language&lt;/p>
&lt;blockquote cite="https://denham.typepad.com/km/2003/11/_building_a_liv.html">
&lt;p>
A &amp;#8216;living&amp;#8217; glossary where the community is actively involved in selection, collaborative writing, annealing and evangelism is a powerful way to create alignment, share meaning, improve communication, focus attention and help with making key distinctions.
&lt;/p>
&lt;/blockquote></description></item><item><title>The Document Triangle</title><link>https://www.synesthesia.co.uk/2003/11/12/the-document-triangle/</link><pubDate>Wed, 12 Nov 2003 10:51:21 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/12/the-document-triangle/</guid><description>&lt;p>“The Document Triangle”:https://www.bogieland.com/postings/post_interdependence.htm The interdependence of the structure, information and presentation dimensions of any document.&lt;/p></description></item><item><title>Yet another blockquotes script</title><link>https://www.synesthesia.co.uk/2003/11/11/yet-another-blockquotes-script/</link><pubDate>Tue, 11 Nov 2003 07:15:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/11/yet-another-blockquotes-script/</guid><description>&lt;p>“Yet another blockquotes script”:https://www.1976design.com/blog/archive/2003/11/10/46/ Dunstan Orchard improves Simon Willison’s script by handling non-URL citations&lt;/p></description></item><item><title>Blockquote Citations</title><link>https://www.synesthesia.co.uk/2003/11/10/blockquote-citations/</link><pubDate>Mon, 10 Nov 2003 17:13:46 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/10/blockquote-citations/</guid><description>&lt;p>“Blockquote Citations”:https://www.paranoidfish.org/boxes/2002/12/20/ Paul Hammond shows how to insert a source link in blockquotes&lt;/p></description></item><item><title>Boyd &amp; Military Strategy</title><link>https://www.synesthesia.co.uk/2003/11/10/boyd-military-strategy/</link><pubDate>Mon, 10 Nov 2003 13:38:24 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/10/boyd-military-strategy/</guid><description>&lt;p>“Boyd &amp;amp; Military Strategy”:https://www.d-n-i.net/second_level/boyd_military.htm Collection of papers by John Boyd (of OODA(Observe, Orient, Decide, Act) ) fame) via &lt;a href="https://members.rogers.com/snorrie/weblog/" target="_blank" rel="noopener">s.norrie&lt;/a>&lt;/p></description></item><item><title>The Solutions Focus</title><link>https://www.synesthesia.co.uk/2003/11/09/the-solutions-focus/</link><pubDate>Sun, 09 Nov 2003 15:28:02 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/09/the-solutions-focus/</guid><description>&lt;p>“The Solutions Focus”:https://www.thesolutionsfocus.com/ Website about solution-focused coaching&lt;/p></description></item><item><title>Mentoring for Change</title><link>https://www.synesthesia.co.uk/2003/11/09/mentoring-for-change/</link><pubDate>Sun, 09 Nov 2003 15:25:43 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/09/mentoring-for-change/</guid><description>&lt;p>“Mentoring for Change”:https://www.mentoringforchange.co.uk/ Lots of coaching-related articles at home page for Mike Munro-Turner’s coaching and mentoring practice&lt;/p></description></item><item><title>Wiki Change</title><link>https://www.synesthesia.co.uk/2003/11/09/wiki-change/</link><pubDate>Sun, 09 Nov 2003 14:43:13 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/09/wiki-change/</guid><description>&lt;p>I’ve been experimenting again… and have moved the &lt;a href="https://www.synesthesia.co.uk/tiki/">Wiki&lt;/a> over to the &lt;a href="https://www.tikiwiki.org/" target="_blank" rel="noopener">TikiWiki&lt;/a> package. On the basis of a few days experimentation this package looks incredibly powerful.&lt;/p>
&lt;p>If you have links to the old Wiki please update them. if any .htaccess gurus out there want to advise me on how to set up automatic redirects then all advice welcome! 🙂&lt;/p>
&lt;p>&lt;ins>I’ve added a basic directory-level redirect – if anyone finds examples of links that still go to the wrong place please let me know!&lt;/ins>&lt;/p></description></item><item><title>Solution-focused Coaching part 2</title><link>https://www.synesthesia.co.uk/2003/11/09/solution-focused-coaching-part-2/</link><pubDate>Sun, 09 Nov 2003 13:40:04 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/09/solution-focused-coaching-part-2/</guid><description>&lt;p>I’m indebted to my colleague (and coaching supervisor) Jenny Mitchell _(no online reference available)_ who, after reading my earlier &lt;a href="https://www.synesthesia.co.uk/blog/archives/coaching/000193.php" title="synesthesia: Solution-focused Coaching" target="_blank" rel="noopener">article&lt;/a> on Solution-focused Coaching has sent me a large stack of references and related reading:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://www.thesolutionsfocus.com/article1.cfm" title="Harry Enfield, Hamlet and the Solutions Focus - by Paul Z Jackson and Mark McKergow; Organisations and People 8, No 1 pp 26 - 31 (2001)" target="_blank" rel="noopener">Harry Enfield, Hamlet and the Solutions Focus&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.thesolutionsfocus.com/article4.cfm" title="A Comparison of Appreciative Inquiry and Solutions Focus by Kendy Rossi, Tricia Lustig &amp;amp; Mark McKergow" target="_blank" rel="noopener">A Comparison of Appreciative Inquiry and Solutions Focus&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.thesolutionsfocus.com/article3.cfm" title="The Solutions Focus: Keeping It SIMPLE In The Learning Organisation by Mark McKergow" target="_blank" rel="noopener">The Solutions Focus: Keeping It SIMPLE In The Learning Organisation&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.google.com/search?q=cache:PPsoJ8M067YJ:www.solution-focused-management.com/en/inhoud/SolFoc.doc&amp;#43;Solution&amp;#43;focused&amp;#43;corporate&amp;#43;coaching&amp;amp;hl=en&amp;amp;ie=UTF-8" title="Solution focused Corporate Coaching by Lois Cauffman and Insoo Kim Berg" target="_blank" rel="noopener">Solution focused Corporate Coaching&lt;/a> _[HTML converson from Word via Google]_&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.mentoringforchange.co.uk/classic/solution.shtml" title="Classic Models - Solution-Focused Coaching by Dr Mike Munro Turner" target="_blank" rel="noopener">Classic Models – Solution-Focused Coaching&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>“Solutions-focus and the five messages of the Schnäpper” by Peter Szabo _[no online version found]_&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Also Mark McKergow, author of several of the articles listed above commented on my earlier &lt;a href="https://www.synesthesia.co.uk/blog/archives/coaching/000193.php" title="synesthesia: Solution-focused Coaching" target="_blank" rel="noopener">entry&lt;/a> flagging up his &lt;a href="https://www.thesolutionsfocus.com/articles.cfm" target="_blank" rel="noopener">web site&lt;/a> and book &lt;amazonlink asin="1857882709">The Solutions Focus: The SIMPLE Way To Positive Change&lt;/amazonlink> (haven’t read the book yet so can’t comment on it…)&lt;/p></description></item><item><title>Project Portfolio Links</title><link>https://www.synesthesia.co.uk/2003/11/02/project-portfolio-links/</link><pubDate>Sun, 02 Nov 2003 19:05:51 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/02/project-portfolio-links/</guid><description>&lt;p>Frank Patrick has collected a whole bunch of useful links on “Project Portfolio Management”:https://www.focusedperformance.com/2003_10_01_blarch.html#106752721595327660&lt;/p></description></item><item><title>Knowledge Worker Spaces</title><link>https://www.synesthesia.co.uk/2003/11/02/knowledge-worker-spaces/</link><pubDate>Sun, 02 Nov 2003 16:48:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/11/02/knowledge-worker-spaces/</guid><description>&lt;p>“Knowledge Worker Spaces”:https://blog.mathemagenic.com/2003/10/30.html#a818 Lilia Efimova categorises knowledge work as &lt;q>a system of activity in three interrelated spaces’: Idea Space, People Space, I Space&lt;/q>&lt;/p></description></item><item><title>Study notes – “Lean Software Development” Chapter 3</title><link>https://www.synesthesia.co.uk/2003/10/19/study-notes-lean-software-development-chapter-3/</link><pubDate>Sun, 19 Oct 2003 23:50:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/19/study-notes-lean-software-development-chapter-3/</guid><description>&lt;p>Continuing to work through &lt;a href="https://www.synesthesia.co.uk/library/archives/000197.php" target="_blank" rel="noopener">Lean Software Development&lt;/a> by Mary &amp;amp; Tom Poppendieck.&lt;/p>
&lt;p>*Chapter 3 – Decide As Late As Possible*&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Concurrent development – the importance of both knowledge and collaboration.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Cost escalation curves for changes – the old “exponential” model for increasing cost of late change really only applies to critical constraints (e.g. major technical architecture decisions)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Use “breadth first” approach for the major constraints – for other aspects defer decision as long as possible through iterative development&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Importance of keeping options open until “last responsible moment”&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Share information early – don’t wait for it to be “complete”&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Direct worker-to-worker collaboration&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Learn how to deal with change&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Breadth-first decision making works best when business domain is evolving&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Simple rules allow robust and flexible response to real-world variation&lt;/p>
&lt;/li>
&lt;/ul>
&lt;div class="inlineimg">
&lt;a target="_blank" href="https://www.julian.elve.dial.pipex.com/mindmaps/leanswdev/LeanSoftwareDevMM03.jpg">&lt;img align="center" width="400" height="521" src="https://www.julian.elve.dial.pipex.com/mindmaps/leanswdev/LeanSoftwareDevMMthmb03.jpg" alt="Mindmap" />&lt;/a>&lt;/p>
&lt;div class="caption">
Mindmap: &lt;a target="_blank" title="Open JPEG of Mindmap in a new Window" href="https://www.julian.elve.dial.pipex.com/mindmaps/leanswdev/LeanSoftwareDevMM03.jpg">JPEG&lt;/a> [110kb], &lt;a title="Link to MindManager file of mind map" href="https://www.julian.elve.dial.pipex.com/mindmaps/leanswdev/Lean Software Development.mmp">MindManager&lt;/a>
&lt;/div>
&lt;/div></description></item><item><title>Cothrel on Communities</title><link>https://www.synesthesia.co.uk/2003/10/17/cothrel-on-communities/</link><pubDate>Fri, 17 Oct 2003 11:47:25 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/17/cothrel-on-communities/</guid><description>&lt;p>“Cothrel on Communities”:https://www.onlinecommunityreport.com/features/cothrel2 Joseph Cothrel says &lt;q>the many want to talk to the few, but the few only want to talk among themselves. I think that’s one thing that blogs manage very nicely, enabling interaction at a very high level among the few, without shutting out the ability of the many to read and even comment.&lt;/q> [via &lt;a href="https://blog.mathemagenic.com/2003/10/17.html" target="_blank" rel="noopener">Lilia&lt;/a>]&lt;/p></description></item><item><title>Frames Around Arnold</title><link>https://www.synesthesia.co.uk/2003/10/16/frames-around-arnold/</link><pubDate>Thu, 16 Oct 2003 14:22:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/16/frames-around-arnold/</guid><description>&lt;p>“Frames Around Arnold”:https://www.alternet.org/story.html?StoryID=16947 George Lakoff on the frames of reference that were used in the media coverage of Arnold Schwartzenegger’s election victory. [via &lt;a href="https://doc.weblogs.com/" target="_blank" rel="noopener">Doc Searls&lt;/a>]&lt;/p></description></item><item><title>Mapping the process of Knowledge Making</title><link>https://www.synesthesia.co.uk/2003/10/16/mapping-the-process-of-knowledge-making/</link><pubDate>Thu, 16 Oct 2003 13:19:36 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/16/mapping-the-process-of-knowledge-making/</guid><description>&lt;p>A couple of weeks ago &lt;a href="https://radio.weblogs.com/0106698/" title="Connectivity - Spike Hall&amp;#39;s Weblog" target="_blank" rel="noopener">Spike Hall&lt;/a> wrote about &lt;a href="https://radio.weblogs.com/0106698/2003/09/23.html#a184" target="_blank" rel="noopener">Mapping Knowledge-Making Efforts&lt;/a> – inspired by &lt;a href="https://mamamusings.net/" target="_blank" rel="noopener">Liz Lawley&lt;/a>‘s &lt;a href="https://mamamusings.net/archives/2003/09/21/the_unbearable_impermanence_of_blogging.php" target="_blank" rel="noopener">criticism&lt;/a> of the &lt;q>short attention span of the blogosphere&lt;/q> he proposed a web-based tool to co-ordinate longer term collective knowledge making efforts.&lt;/p>
&lt;p>In a &lt;a href="https://radiocomments.userland.com/comments?u=106698&amp;amp;p=184&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0106698%2F2003%2F09%2F23.html%23a184" target="_blank" rel="noopener">comment&lt;/a> to that earlier entry I expressed interest balanced by a concern that there are significant socio-cultural and emotional influences operating in blogging which urge us to a set of behaviours I would now summarise as &lt;em>read fast, skim the surface, post often&lt;/em>. I suggested that we should look to the “Rules of Discourse” for the new tool that would be necessary to balance out those influences and create the behaviour Spike is seeking.&lt;/p>
&lt;p>In a &lt;a href="https://radio.weblogs.com/0106698/2003/10/14.html#a196" target="_blank" rel="noopener">followup article&lt;/a> Spike builds on that comment to ask:&lt;/p>
&lt;blockquote>
&lt;p>What”rules of discourse”[standing for wired in structure and processes, decision-making rules, etc.] will take care of such issues as :&lt;/p>
&lt;ul>
&lt;li>a) attracting, educating, recognizing/rewarding, assigning and, for that matter, retiring players,&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;blockquote>
&lt;ul>
&lt;li>b) folding player knowledge products into a meta-knowledge corpus,&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;blockquote>
&lt;ul>
&lt;li>c) signaling depth and frequency of change to knowledge consumers, players and underwriters&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;blockquote>
&lt;ul>
&lt;li>d) critically evaluating product as it is developed&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;blockquote>
&lt;p>inspite of the presence of natural entropic counter-forces to the contrary??&lt;/p>
&lt;/blockquote>
&lt;p>In thinking about this I was reminded of &lt;a href="https://www.synesthesia.co.uk/blog/archives/organisations/000102.php" target="_blank" rel="noopener">Coase’s Penguin&lt;/a> – Benckler’s paper on the application of lessons from the Open Source software movement to a generalised model of the Peer Production of knowledge. The two key principles Benckler identifies are the appropriation model (i.e. how do participants extract economic value from their work) and related issue of how the rights to the products of production are assigned.&lt;/p>
&lt;p>Benckler identifies that peer production models are best suited to environments where the contributors are moving towards an indirect appropriation model – e.g. an increase in reputation from contributing to a body of knowledge, that reputation leading to increased opportunities for making money e.g. from consultancy etc. If the system is designed around this model then the intellectual property rules within the system have to prevent the situation where a sub-set of members claim ownership of the direct output, thus killing the production process.&lt;/p>
&lt;p>So before we can answer Spike’s first question I think we have to ask about the motivating factors of our expected participants.&lt;/p>
&lt;p>When we move on to consider recognition, signalling and evaluation I think it would be fruitful to look at other community moderation schemes – for example&lt;/p>
&lt;p>&lt;a href="https://www.kuro5hin.org/" title="Kuro5hin" target="_blank" rel="noopener">Kuro5hin&lt;/a> and &lt;a href="https://www.slashdot.org/" title="Slashdot" target="_blank" rel="noopener">Slashdot&lt;/a>. &lt;a href="https://www.plasticbag.org/" title="Plasticbag.org" target="_blank" rel="noopener">Tom Coates&lt;/a> has written a couple of &lt;a href="https://www.plasticbag.org/archives/2003/10/political_economies_in_selfmoderating_communities.shtml" target="_blank" rel="noopener">recent&lt;/a> &lt;a href="https://www.plasticbag.org/archives/2003/10/the_final_solution_for_persistent_trolls.shtml" target="_blank" rel="noopener">articles&lt;/a> on moderation and has just set up a &lt;a href="https://www.everythinginmoderation.org/" title="Everything In Moderation" target="_blank" rel="noopener">site&lt;/a> specifically &lt;a href="https://www.plasticbag.org/archives/2003/10/introducing_everything_in_moderation.shtml" target="_blank" rel="noopener">“designed to find creative ways to manage online communities and user-generated content”&lt;/a> so I think a little mining of his ideas might be fruitful too…&lt;/p></description></item><item><title>Enterprise Architecture</title><link>https://www.synesthesia.co.uk/2003/10/13/enterprise-architecture/</link><pubDate>Mon, 13 Oct 2003 20:38:16 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/13/enterprise-architecture/</guid><description>&lt;p>“Enterprise Architecture”:https://martinfowler.com/bliki/EnterpriseArchitecture.html Martin Fowler says &lt;q>As it turns out, I can get pretty cynical about enterprise architecture. This cynicism comes from what seems to be the common life-cycle of enterprise architecture initiatives. Usually they begin in a blaze of glory and attention as the IT group launches a major initiative that will be bring synergy, reuse, and all the other benefits that can come by breaking down the stovepipes of application islands (and other suitable analogies). Two or three years later, not much has been done and the enterprise architecture group isn’t getting their phone calls returned. A year or two after that and the initiative quietly dies, but soon enough another one starts and the boom and bust cycle begins again.&lt;/q>&lt;/p></description></item><item><title>Combining KM and IT</title><link>https://www.synesthesia.co.uk/2003/10/13/combining-km-and-it/</link><pubDate>Mon, 13 Oct 2003 13:58:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/13/combining-km-and-it/</guid><description>&lt;p>“Combining KM and IT”:https://blogs.salon.com/0002007/2003/10/08.html#a468 Dave Pollard thinks &lt;q>that for pragmatic reasons KM should be organizationally part of IT, rather than a separate department or a part of HR or Sales &amp;amp; Marketing&lt;/q>&lt;/p></description></item><item><title>Doing things with words</title><link>https://www.synesthesia.co.uk/2003/10/08/doing-things-with-words/</link><pubDate>Wed, 08 Oct 2003 13:15:02 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/08/doing-things-with-words/</guid><description>&lt;p>Anne Galloway is “Doing Things With Words”:https://www.purselipsquarejaw.org/2003_10_01_blogger_archives.php#106554539935276817 &lt;q>But mostly I like thinking about the relationships between words, contexts and who we can – and cannot – be.&lt;/q>&lt;/p></description></item><item><title>Creativity Riff</title><link>https://www.synesthesia.co.uk/2003/10/08/creativity-riff/</link><pubDate>Wed, 08 Oct 2003 00:39:35 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/08/creativity-riff/</guid><description>&lt;p>Just getting around to reviewing my notes from another workshop with a coach from &lt;a href="https://www.themindgym.com/" target="_blank" rel="noopener">The Mind Gym&lt;/a>, this time called &lt;strong>“Unleash Your Creativity”&lt;/strong> (see also &lt;a href="https://www.synesthesia.co.uk/blog/archives/creativity_tools/000122.php">Creativity for Logical Thinkers&lt;/a>)&lt;/p>
&lt;p>&lt;strong>Workshop outline:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Beliefs about Creativity
&lt;ul>
&lt;li>What is creativity?&lt;/li>
&lt;li>Why is it important?&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Preferred style
&lt;ul>
&lt;li>Innovators&lt;/li>
&lt;li>Connectors&lt;/li>
&lt;li>Enhancers&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Pattern Breaking
&lt;ul>
&lt;li>barriers – circumstances&lt;/li>
&lt;li>barriers – beliefs&lt;/li>
&lt;li>barriers – environment&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Techniques
&lt;ul>
&lt;li>Brainstorming / Brainwriting&lt;/li>
&lt;li>Collective Build&lt;/li>
&lt;li>Random Picture / Word&lt;/li>
&lt;li>Creative Break&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>8 Rules for success
&lt;ol>
&lt;li>Believe you can be creative&lt;/li>
&lt;li>Be clear about objective&lt;/li>
&lt;li>Don’t evaluate until the creative part of the session is over&lt;/li>
&lt;li>Persevere&lt;/li>
&lt;li>Create an environment that enhances creativity&lt;/li>
&lt;li>Use creative techniques&lt;/li>
&lt;li>Make sure you evaluate at the end of the session&lt;/li>
&lt;li>Take creative breaks&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;p>Whilst I was absorbing and reflecting on that I noticed that a few people in my blogosphere have also been paying attention to the subject of creativity.&lt;/p>
&lt;p>One of the most prolific is &lt;a href="https://radio.weblogs.com/0121664/" target="_blank" rel="noopener">Dina Mehta&lt;/a> who has been &lt;a href="https://radio.weblogs.com/0121664/categories/creativity/" target="_blank" rel="noopener">collecting&lt;/a> lots of links to creativity &lt;a href="https://radio.weblogs.com/0121664/categories/creativity/2003/08/09.html#a207" target="_blank" rel="noopener">discussions&lt;/a> and &lt;a href="https://www.mycoted.com/creativity/techniques/index.php" target="_blank" rel="noopener">creativity&lt;/a> &lt;a href="https://www.innovationtools.com/" target="_blank" rel="noopener">tools&lt;/a> for some time.&lt;/p>
&lt;p>Also this week I see &lt;a href="https://www.teledyn.com/mt/" target="_blank" rel="noopener">Gary Murphy&lt;/a> is &lt;a href="https://www.teledyn.com/mt/archives/001361.html" title="TeledyN: Demarking the Line" target="_blank" rel="noopener">pointing&lt;/a> to &lt;a href="https://www.newsandevents.utoronto.ca/bin5/030930b.asp" title="News@UofT -- Biological basis for creativity linked to mental illness -- September 30, 2003" target="_blank" rel="noopener">this&lt;/a> that suggests creative people have brains that are more open to incoming stimuli from the environment. This shows up as low values of &lt;a href="https://www.google.com/search?q=latent.inhibition" target="_blank" rel="noopener">latent inhibition&lt;/a>, a property that is shared with certain forms of mental illness.&lt;/p>
&lt;p>So maybe the old saying “you need to be a little mad to be creative” has some truth in it after all… 🙂&lt;/p></description></item><item><title>Study notes – “Lean Software Development” Chapter 2</title><link>https://www.synesthesia.co.uk/2003/10/07/study-notes-lean-software-development-chapter-2/</link><pubDate>Tue, 07 Oct 2003 23:33:38 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/07/study-notes-lean-software-development-chapter-2/</guid><description>&lt;p>Continuing to work through &lt;a href="https://www.synesthesia.co.uk/library/archives/000197.php" target="_blank" rel="noopener">Lean Software Development&lt;/a> by Mary &amp;amp; Tom Poppendieck.&lt;/p>
&lt;p>Chapter 2 – Amplify Learning&lt;/p>
&lt;p>The problems solved by software do not have “right” answers, rather it is a case of seeking to reduce uncertainty as the project progresses – uncertainty about customer requirements, uncertainty about technology. Software development is therefore a process of learning and like all learning inherently cyclical.&lt;/p>
&lt;p>The tools introduced in this chapter are primarily about adopting maximising opportunities for learning, enhancing communication between the people who understand different parts of the problem domain and allowing solutions to emerge that meet the needs of all stakeholders.&lt;/p>
&lt;blockquote>
&lt;p>An iteration should be considered a demonstration of a possible solution; it should not be considered an only solution […] As iterations progress and more choices are made, the design space should be gradually narrowed&lt;/p>
&lt;/blockquote>
&lt;p>Tool 3 – Feedback&lt;/p>
&lt;p>Tool 4 – Iterations&lt;/p>
&lt;p>Tool 5 – Synchronisation&lt;/p>
&lt;p>Tool 6 – Set-based Development&lt;/p>
&lt;p>Reading this chapter I was struck by the importance of trust between all stakeholders – I’m looking forward to see how that might be dealt with when they discuss teams, committment, motivation and contracting issues…&lt;/p>
&lt;div class="inlineimg">
&lt;a target="_blank" href="https://www.julian.elve.dial.pipex.com/mindmaps/leanswdev/LeanSoftwareDevMM02.jpg">&lt;img align="center" width="400" height="468" src="https://www.julian.elve.dial.pipex.com/mindmaps/leanswdev/LeanSoftwareDevMMthmb02.jpg" alt="Mindmap" />&lt;/a>&lt;/p>
&lt;div class="caption">
Mindmap: &lt;a target="_blank" title="Open JPEG of Mindmap in a new Window" href="https://www.julian.elve.dial.pipex.com/mindmaps/leanswdev/LeanSoftwareDevMM02.jpg">JPEG&lt;/a> [155kb], &lt;a title="Link to MindManager file of mind map" href="https://www.julian.elve.dial.pipex.com/mindmaps/leanswdev/Lean Software Development.mmp">MindManager&lt;/a>
&lt;/div>
&lt;/div>
&lt;p>&lt;ins>Updated 2003-10-13&lt;/ins>&lt;/p>
&lt;p>Re-reading the chapter, and as the result of a couple of real-life project conversations that have happened since the original entry, I’ve realised the importance of the concept of &lt;strong>variable scope&lt;/strong>. In the book the Poppendiecks cite &lt;a href="https://www.xp2003.org/talksinfo/johnson.pdf" title="ROI, It&amp;#39;s your job" target="_blank" rel="noopener">ROI, It’s your job [PDF 716kb]&lt;/a> by Jim Johnson of &lt;a href="https://www.standishgroup.com/" target="_blank" rel="noopener">The Standish Group&lt;/a>. In that document Johnson refers to a study of over 35,000 application development projects which found that in a typical system &lt;q cite="https://www.xp2003.org/talksinfo/johnson.pdf">45 percent of features are never used and 19 percent are rarely used&lt;/q>&lt;/p>
&lt;p>The Poppendiecks note (p32):&lt;/p>
&lt;blockquote>
&lt;p>Since customers often don’t know exactly what they want at the beginning of a project, they tend to ask for everything they think they might need, especially if they think they will only get one shot at it. This is one of the best ways we know to increase the scope of a project well beyond what is necessary to accomplish the project’s overall mission. […] If you let customers ask only for their highest priority features, deliver them quickly, then ask for the next highest priority, you are more likely to get short lists of what is important. […] This approach to project management may seem to lead to unpredictable results, but quite the opposite is true. Once a track record of delivering working software is established it is easy to project how much work will be done in each iteration […] by tracking the team &lt;em>velocity&lt;/em> you can forecast from past work how much work will probably be done in the future.&lt;/p>
&lt;/blockquote></description></item><item><title>Faceted Movable Type</title><link>https://www.synesthesia.co.uk/2003/10/07/faceted-movable-type/</link><pubDate>Tue, 07 Oct 2003 13:13:30 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/07/faceted-movable-type/</guid><description>&lt;p>“Faceted Movable Type”:https://www.pixelcharmer.com/fieldnotes/archives/process_designing/2003/000348.html#000348 *Pixelcharmer explains how to build a faceted classification scheme in MT&lt;/p></description></item><item><title>The Top 10 Ways Software Projects are Different</title><link>https://www.synesthesia.co.uk/2003/10/07/the-top-10-ways-software-projects-are-different/</link><pubDate>Tue, 07 Oct 2003 09:03:41 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/07/the-top-10-ways-software-projects-are-different/</guid><description>&lt;p>“The Top 10 Ways Software Projects are Different”:https://www.pmforum.org/library/papers/Top10WaysSoftwareProjectsRDifferent.html James Bullock explains for non-software project managers…&lt;/p>
&lt;p>via &lt;a href="https://www.vrtprj.com/weblog/" target="_blank" rel="noopener">Virtual Projects&lt;/a>&lt;/p></description></item><item><title>Study notes – “Lean Software Development” Chapter 1</title><link>https://www.synesthesia.co.uk/2003/10/06/study-notes-lean-software-development-chapter-1/</link><pubDate>Mon, 06 Oct 2003 23:11:38 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/06/study-notes-lean-software-development-chapter-1/</guid><description>&lt;p>Started to work through &lt;a href="https://www.synesthesia.co.uk/library/archives/000197.php" target="_blank" rel="noopener">Lean Software Development&lt;/a> by Mary &amp;amp; Tom Poppendieck.&lt;/p>
&lt;p>Chapter 1 – Eliminate Waste&lt;/p>
&lt;p>waste = non-value added activity&lt;/p>
&lt;p>value = customer perception&lt;/p>
&lt;p>Tool 1 = seeing waste&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Partially Done Work&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Extra Processes&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Extra Features&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Task Switching&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Waiting&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Motion&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Defects&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Tool 2 – Value Chain mapping&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Map process flow&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Value-added&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Non-value-added&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Prioritise improvements&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Repeat&lt;/p>
&lt;/li>
&lt;/ul>
&lt;div class="inlineimg">
&lt;a target="_blank" href="https://www.julian.elve.dial.pipex.com/mindmaps/leanswdev/LeanSoftwareDevMM01.jpg">&lt;img align="center" width="400" height="207" src="https://www.julian.elve.dial.pipex.com/mindmaps/leanswdev/LeanSoftwareDevMMthmb01.jpg" alt="Mindmap" />&lt;/a>&lt;/p>
&lt;div class="caption">
Mindmap: &lt;a target="_blank" title="Open JPEG of Mindmap in a new Window" href="https://www.julian.elve.dial.pipex.com/mindmaps/leanswdev/LeanSoftwareDevMM01.jpg">JPEG&lt;/a> [93kb], &lt;a title="Link to MindManager file of mind map" href="https://www.julian.elve.dial.pipex.com/mindmaps/leanswdev/Lean Software Development.mmp">MindManager&lt;/a>
&lt;/div>
&lt;/div></description></item><item><title>Four Quick Stories of Lean</title><link>https://www.synesthesia.co.uk/2003/10/06/four-quick-stories-of-lean/</link><pubDate>Mon, 06 Oct 2003 13:28:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/06/four-quick-stories-of-lean/</guid><description>&lt;p>“Four Quick Stories of Lean”:https://joeelylean.blogspot.com/2003_09_28_joeelylean_archive.html#106521026202218281 Here are four useful illustrations of Lean Joe Ely has come across in the past week.&lt;/p></description></item><item><title>Headcloud</title><link>https://www.synesthesia.co.uk/2003/10/06/headcloud/</link><pubDate>Mon, 06 Oct 2003 07:51:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/06/headcloud/</guid><description>&lt;p>“Headcloud”:https://www.pmbrowser.info/hublog/archives/000513.html HeadCloud is a Napster-style service, where people connect to a central hub, send a list of the thoughts they want to share, and search the database of other people’s thoughts to see who they want to connect to. It’s called HeadCloud after the original vision – being able to walk down the street and see little clouds above people’s heads that showed what they were thinking.&lt;/p>
&lt;p>via &lt;a href="https://www.corante.com/many/" target="_blank" rel="noopener">Many2Many&lt;/a>&lt;/p></description></item><item><title>Bloggingworks Summary</title><link>https://www.synesthesia.co.uk/2003/10/06/bloggingworks-summary/</link><pubDate>Mon, 06 Oct 2003 07:43:33 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/10/06/bloggingworks-summary/</guid><description>&lt;p>“Bloggingworks Summary”:https://jackvinson.com/archives/002252.html Series of posts by Jack Vinson summarising Bloggingworks workshops about blogging in business&lt;/p></description></item><item><title>Solution-focused Coaching</title><link>https://www.synesthesia.co.uk/2003/09/30/solution-focused-coaching/</link><pubDate>Tue, 30 Sep 2003 22:30:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/09/30/solution-focused-coaching/</guid><description>&lt;p>I went to a seminar last week on this topic given by Harvey Ratner from the &lt;a href="https://www.briefconsultancy.com" target="_blank" rel="noopener">Brief Consultancy&lt;/a>.&lt;/p>
&lt;p>Solution-focused Coaching is the application of the &lt;a href="https://www.brief-therapy.org/" target="_blank" rel="noopener">Solution-focused Brief Therapy&lt;/a> approach to coaching. In outline the approach seems to be:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Elicit client’s “best hopes” for the meeting&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Elicit client’s ideal future&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Identify signs that progress has been made already&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Calibrate where the client thinks he/she is and what would be needed to make an incremental improvement&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>the whole thing infused with lots of positive feedback about what is working, a constant drawing-out of sensory descriptions of the desired state, an exploration of different perceptual positions and an underlying assumption that the client will develop his/her own detailed action plans…&lt;/p>
&lt;p>One of the key differences from other approaches seems to be the future bias – in NLP terms a lot of focus on helping the client build a really strong representation of the “Desired State” (DS), combined with “ecology” checks, exploration of different perceptual positions and lots of reinforcement of the client’s resources.&lt;/p>
&lt;p>I would tend to do most of that in my normal coaching approach but I would also spend time exploring the current state (CS) and why it was persistent – looking for ways to loosen the “stuckness”. When another participant asked about this Harvey’s response was that from a solution-focused point of view any time spent talking about “now” rather than “then” tended to strengthen the hold of the past/present…&lt;/p>
&lt;p>During the seminar we did a couple of exercises, one of which was related to the “calibration” stage – a very simple question “thinking about your job, and your ideal situation, where would you say you had got to on a scale of 0 – 10” […] “and what tells you that you are that point and not a 0?” […] “and what do others see you doing that contributes to you being at that point?” (of course the skill is in the way the questioner asks the questions and especially in the way they keep going to elicit more and more…)&lt;/p>
&lt;p>Being on the receiving end of that questioning (even though I “knew” it was “just” an exercise) I was surprised by the sense of momentum and energy that was created in me by an in-depth appraisal of all the good things I have already achieved.&lt;/p>
&lt;p>I can see how that energy focuses the mind so that the “and what would you have to do to just add one point on the scale?” questions trigger “it’s obvious…” answers from the client, perhaps also how that energy combined with the “pull” of a clear desired future would be enough to unstick from the power of the past. I’m very tempted to take a training in the approach, certainly I shall spend some time reflecting how I can usefully strengthen my coaching with what I’ve learned.&lt;/p>
&lt;p>Whilst musing about that sudden rush of energy I was also reminded of the &lt;a href="https://www.appreciative-inquiry.org/" target="_blank" rel="noopener">Appreciative Inquiry&lt;/a> approach to organisational change – again that focuses on what already works with a team, in an organisation, as a prelude to moving on to even better things – on the surface the parallels seem obvious, but I need to think a bit more about whether there might be an underlying model that could explain both…&lt;/p></description></item><item><title>Patterns for Change</title><link>https://www.synesthesia.co.uk/2003/09/16/patterns-for-change/</link><pubDate>Tue, 16 Sep 2003 10:54:50 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/09/16/patterns-for-change/</guid><description>&lt;p>&lt;a href="https://blog.mathemagenic.com/" target="_blank" rel="noopener">Lilia Efimova&lt;/a> &lt;a href="https://blog.mathemagenic.com/2003/08/31.html#a733" target="_blank" rel="noopener">points&lt;/a> to &lt;a href="https://www.cs.unca.edu/~manns/intropatterns.html" target="_blank" rel="noopener">Introducing New Ideas Into Organisations&lt;/a>, in particular the &lt;a href="https://www.cs.unca.edu/~manns/PDFVersionOnWeb.pdf" target="_blank" rel="noopener">collection of patterns&lt;/a> [PDF, 454 kB].&lt;/p>
&lt;p>This is 123 pages, so I’ve only just started to work through it, but on first reading it’s fascinating – you know the “ah ha” moment when someone codifies stuff that you’ve been doing intuitively…&lt;/p>
&lt;p>Certainly I recognised many patterns here as things I and others have learned the hard way as ways of introducing our ideas into the daily life of the organisations we work with – and I think many of us will also be able to learn from it.&lt;/p>
&lt;p>The patterns are grouped into the following categories:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Roles&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Events&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Keeping the Idea Visible&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Dealing with Sceptics&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Early Activities&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Reaching Out&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Convincing Others&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Teaching and Learning the Idea&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Long-term activities&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>I’m sure this will be a great resource for coaching – an inherent assumption of the NLP approach is that if you can identifiy the patterns under a successful piece of behaviour you can teach it to others.&lt;/p></description></item><item><title>Flow, or not</title><link>https://www.synesthesia.co.uk/2003/08/29/flow-or-not/</link><pubDate>Fri, 29 Aug 2003 13:50:47 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/08/29/flow-or-not/</guid><description>&lt;p>It’s raining so it must be time to start blogging again… 🙂&lt;/p>
&lt;p>I’ve been wondering (yet again) about the importance of going with what feels right, the natural flow, and acknowledging your own energy level (or lack of it…)&lt;/p>
&lt;p>In the last two weeks I’ve:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>thoroughly enjoyed a long weekend in Paris (photos to follow when I remember to send off the film – you do remember film don’t you?)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>had an activity-filled week at home in London with my children&lt;/p>
&lt;/li>
&lt;li>
&lt;p>two manic days of meetings at work&lt;/p>
&lt;/li>
&lt;li>
&lt;p>helped a colleague celebrate his 50th in the traditional manner&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>…yet for some reason this morning, as I sat staring at my PC trying to get back into the flow of writing a document I started three weeks ago I couldn’t understand why my thoughts weren’t coming – just how out-of-touch do you have to be to not realise that you’re tired? 🙂&lt;/p>
&lt;p>Fresh air and walking about required!&lt;/p></description></item><item><title>Catch up</title><link>https://www.synesthesia.co.uk/2003/08/11/catch-up/</link><pubDate>Mon, 11 Aug 2003 17:03:36 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/08/11/catch-up/</guid><description>&lt;p>It’s tempting to quote &lt;a href="https://www.zylstra.org/blog/" target="_blank" rel="noopener">Ton&lt;/a> and explain away my break from blogging as a period of attending to “&lt;a href="https://blog.zylstra.org/archives/001079.html" target="_blank" rel="noopener">the mundane task of broadening the base of [my] knowledge pyramid&lt;/a>“. Perhaps true on one level or another but also a period of being very busy with work and generally enjoying the outdoors rather than being in front of the computer…&lt;/p>
&lt;p>In terms of reading, as usual I have had several books on the go at once, but the one that seems to have kept its presence in my work bag for those snatches of reading-catchup on the Tube has been &lt;a href="https://www.synesthesia.co.uk/library/archives/000176.php" target="_blank" rel="noopener">Guns, Germs and Steel&lt;/a>&lt;/p>
&lt;p>With my “work hat” on I’ve been filling up my research time reading around topics such as &lt;a href="https://www.agilemodeling.com/" target="_blank" rel="noopener">Agile Modelling&lt;/a> and &lt;a href="https://members.rogers.com/snorrie/weblog/2003_06_01_archive.htm#105603068256311144" target="_blank" rel="noopener">QFD for Software Development&lt;/a>&lt;/p>
&lt;p>Cultural highlight of the last month has to be my first visit, last Saturday, to &lt;a href="https://www.shakespeares-globe.org/" target="_blank" rel="noopener">Shakespeare’s Globe&lt;/a>, to see “Dido, Queen of Carthage”. If you are not familiar with this reconstruction of what the original Globe theatre is believed to have looked like, one of the most striking features is “the Yard” – basically if you are prepared to stand for the whole production you get the best view in the house &lt;em>and&lt;/em> the cheapest tickets. As a “Groundling” you get a great sense of engagement with the actors, you can almost touch them if you go right to the front… And it’s from that vantage that you begin to get a real sense of the dynamic interaction between the players (this isn’t a recording it’s live!) and the audience. Addictive (and affordable) stuff, now checking out when to see the other four plays in this season!&lt;/p></description></item><item><title>Seven Survival Tips for Knowledge Managers</title><link>https://www.synesthesia.co.uk/2003/07/18/seven-survival-tips-for-knowledge-managers/</link><pubDate>Fri, 18 Jul 2003 17:30:15 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/07/18/seven-survival-tips-for-knowledge-managers/</guid><description>&lt;p>&lt;a href="https://blogs.salon.com/0002007/" target="_blank" rel="noopener">Dave Pollard&lt;/a> offers &lt;a href="https://blogs.salon.com/0002007/2003/07/16.html#a312" title="How to Save the World" target="_blank" rel="noopener">Seven Survival Tips for Knowledge Managers&lt;/a>&lt;/p>
&lt;blockquote cite="https://blogs.salon.com/0002007/2003/07/16.html#a312">
&lt;ol>
&lt;li>
Focus knowledge and learning systems on &amp;#8216;know-who&amp;#8217;, not &amp;#8216;know-how&amp;#8217;
&lt;/li>
&lt;li>
Introduce new social network enablement software and weblogs to capture the &amp;#8216;know-who&amp;#8217;.
&lt;/li>
&lt;li>
Keep only selected, highly-filtered knowledge in your central repositories.
&lt;/li>
&lt;li>
Don&amp;#8217;t overlook the value of plain-old &amp;#8216;data&amp;#8217;.
&lt;/li>
&lt;li>
The bibliography may be more valuable than the document itself.
&lt;/li>
&lt;li>
Don&amp;#8217;t wait for people to look for it, send it out, using &amp;#8216;killer&amp;#8217; channels.
&lt;/li>
&lt;li>
Create an internal market for your offerings by giving valuable stuff away.
&lt;/li>
&lt;/ol>
&lt;/blockquote></description></item><item><title>Renewal</title><link>https://www.synesthesia.co.uk/2003/07/13/renewal/</link><pubDate>Sun, 13 Jul 2003 23:18:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/07/13/renewal/</guid><description>&lt;p>On Tom Peter’s site the &lt;a href="https://www.tompeters.com/toms_world/brand_you.asp#renew" target="_blank" rel="noopener">Renewal 50&lt;/a>. Selected favourites:&lt;/p>
&lt;blockquote>
&lt;ol>
&lt;li>
&lt;p>Go to the nearest magazine shop. Now. Spend 20 minutes. Pick up 20-twenty!-magazines. None should be ones you normally read. Spend the better part of a day perusing them. Tear stuff out. Make notes. Create files. Goal: Stretch! Repeat… monthly… or at least bimonthly.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Go to the Web. Now. Relax. Follow your bliss! Visit at least 15 sites you haven’t visited before. Follow any chain that is even a little intriguing. Bookmark a few of the best. Repeat… once a week.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Take off this Wednesday afternoon. Wander the closest mall… for two hours. Note the stuff you like. (And hate.) Products, merchandising, whatever. Repeat… bimonthly.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Buy a packet of 3×5-inch notecards. Carry them around with you. Always. Record cool stuff. Awful stuff. Daily. Review your card pack every Sunday. (Obsess on this!)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Project stuck in a rut? Look through your Rolodex. Who’s the oddest duck in there? Call her/him. Invite her/him to lunch. Pick her/his brain for a couple of hours about your project.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Create a new habit: Visit your Rolodex. Once a month. Pick a name of someone interesting you’ve lost touch with. Take her/him to lunch… next week.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>New habit: You’re in a meeting. Someone you don’t know makes an interesting contribution. Invite him/her to lunch… in the next two weeks.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>You run across somebody interesting. As a matter of course, ask her (him) what’s the best thing she/he’s read in the last 90 days. Order it from Amazon.com… this afternoon.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Take tomorrow afternoon off. Rain or shine. Wander a corner of the city you’ve never explored before.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Go to the local Rite Aid. Buy a $2 notebook. Title it Observations I. Start recording. Now. Anything and everything. (Now=Now)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Read a provocative article in a business journal. Triggers a thought? E-mail the author. So what if you never hear back? (The odds are actually pretty high that you will. Trust me.)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Get up from your desk. Now. Take a two-hour walk on the beach. In the hills. Whatever. Repeat… once every couple of weeks. (Weekly?)&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>[via &lt;a href="https://www.estherderby.com/weblog/blogger.html" target="_blank" rel="noopener">Esther Derby&lt;/a>]&lt;/p></description></item><item><title>Parsing FOAF with PHP</title><link>https://www.synesthesia.co.uk/2003/07/07/parsing-foaf-with-php/</link><pubDate>Mon, 07 Jul 2003 18:40:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/07/07/parsing-foaf-with-php/</guid><description>&lt;p>“Parsing FOAF with PHP”:https://www.semanticplanet.com/2003/05/parsingFOAFWithPHP.html&lt;/p></description></item><item><title>Zempt – multi platform posting for Moveable Type</title><link>https://www.synesthesia.co.uk/2003/07/07/zempt-multi-platform-posting-for-moveable-type/</link><pubDate>Mon, 07 Jul 2003 15:39:31 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/07/07/zempt-multi-platform-posting-for-moveable-type/</guid><description>&lt;p>&lt;a href="https://www.theshiftedlibrarian.com/" target="_blank" rel="noopener">The Shifted Librarian&lt;/a> points to &lt;a href="https://www.zempt.com/" title="Zempt :: Multi-platform posting for Movable Type :: Zempt" target="_blank" rel="noopener">Zempt&lt;/a> – a multi-platform (so far Windows but Linux and Mac planned) tool for posting to multiple &lt;a href="https://www.moveabletype.org/" target="_blank" rel="noopener">Moveable Type&lt;/a> blogs. In my situation where I have three personal blogs (main page, library, linkblog) plus two corporate ones inside the firewall this could be a real boon. Key features:&lt;/p>
&lt;blockquote>
&lt;ul>
&lt;li>Intuitive, easy-to-use interface&lt;/li>
&lt;li>Post entries to your Movable Type blog&lt;/li>
&lt;li>Full support for Movable Type entry fields including:
&lt;ul>
&lt;li>Title&lt;/li>
&lt;li>Body&lt;/li>
&lt;li>Extended Entry&lt;/li>
&lt;li>Excerpt&lt;/li>
&lt;li>Keywords&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Multiple categories&lt;/li>
&lt;li>Comment Status&lt;/li>
&lt;li>TrackBack status&lt;/li>
&lt;li>Send TrackBack pings&lt;/li>
&lt;li>Edit entry date and time&lt;/li>
&lt;li>Easy text and paragraph markup. Add bold, links, blockquotes, and paragraph alignment quickly and easily.&lt;/li>
&lt;li>Preview your posts&lt;/li>
&lt;li>Save posts as draft&lt;/li>
&lt;li>Manage multiple blogs on multiple sites&lt;/li>
&lt;li>Spell-checker&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p>And if you can see this it works!&lt;/p></description></item><item><title>Learning Organisations and Constraints pt 6</title><link>https://www.synesthesia.co.uk/2003/07/06/learning-organisations-and-constraints-pt-6/</link><pubDate>Sun, 06 Jul 2003 11:31:03 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/07/06/learning-organisations-and-constraints-pt-6/</guid><description>&lt;p>In the &lt;a href="https://www.synesthesia.co.uk/cgi-bin/mt-comments.cgi?entry_id=158" target="_blank" rel="noopener">comments&lt;/a> to the &lt;a href="https://www.synesthesia.co.uk/blog/archives/constraints/000158.php" target="_blank" rel="noopener">last entry&lt;/a> &lt;a href="https://www.focusedperformance.com/blogger.html" target="_blank" rel="noopener">Frank Patrick&lt;/a> raised a “clarity reservation” (&lt;acronym title="Theory of Constraints">TOC&lt;/acronym>-speak for “huh?”). I’m not surprised, those were both entities which assumed a considerable amount of background knowledge – so I’ve added the following two tree fragments: &lt;a href="https://www.synesthesia.co.uk/blog/images/OOD-CRT-frag-tiu.php" onclick="window.open('/blog/images/OOD-CRT-frag-tiu.php','popup','width=700,height=700,scrollbars=yes,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">T-i-U dictates strategies people use&lt;/a> and &lt;a href="https://www.synesthesia.co.uk/blog/images/OOD-CRT-frag-model-I.php" onclick="window.open('https://www.synesthesia.co.uk/blog/images/OOD-CRT-frag-model-I.php','popup','width=700,height=700,scrollbars=yes,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">People have Model I Theory-In-Use&lt;/a>&lt;/p>
&lt;p>The entire CRT(Current Reality Tree) so far can be seen in this &lt;a href="https://www.synesthesia.co.uk/blog/docs/ood-wip-20030706.pdf">PDF&lt;/a>&lt;/p></description></item><item><title>Learning Organisations and Constraints</title><link>https://www.synesthesia.co.uk/2003/07/05/learning-organisations-and-constraints/</link><pubDate>Sat, 05 Jul 2003 12:20:20 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/07/05/learning-organisations-and-constraints/</guid><description>&lt;p>While the wiki is offline, &lt;a href="https://www.synesthesia.co.uk/blog/images/OOD-CRT-01.php" onclick="window.open('https://www.synesthesia.co.uk/blog/images/OOD-CRT-01.php','popup','width=596,height=612,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">here&lt;/a>&lt;/p>
&lt;p>is the first part of the &lt;acronym title="Current Reality Tree">CRT&lt;/acronym> I’m building from the Argyris &lt;a href="https://www.synesthesia.co.uk/library/archives/000150.php" title="Overcoming Organizational Defenses" target="_blank" rel="noopener">book&lt;/a>&lt;/p></description></item><item><title>Wiki problems</title><link>https://www.synesthesia.co.uk/2003/07/04/wiki-problems/</link><pubDate>Fri, 04 Jul 2003 18:21:35 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/07/04/wiki-problems/</guid><description>&lt;p>Have had to take the Wiki offline as one of the scripts was causing my hosts major problems.&lt;/p>
&lt;p>&lt;ins>updated 07/07/03 the problems were being caused in the RCSLite part of TWiki – this is an optional feature for use when RCS is not available (as it isn’t on my new host) The problem was the rdiff script which calls RCSlite – going off somewhere strange and hitting 95% processor utilisation to the understandable disgruntlement of the host company… I’m experimenting with some other wiki software, hopefully back soon… &lt;/ins>&lt;/p></description></item><item><title>Learning Organisations and Constraints – more</title><link>https://www.synesthesia.co.uk/2003/07/04/learning-organisations-and-constraints-more/</link><pubDate>Fri, 04 Jul 2003 14:10:21 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/07/04/learning-organisations-and-constraints-more/</guid><description>&lt;p>&lt;ins>Hyperlinks to broken Wiki deleted&lt;/ins>&lt;/p>
&lt;p>The work following on from ealier posts &lt;a href="https://www.synesthesia.co.uk/blog/archives/learning_organisations/000132.php" target="_blank" rel="noopener">1&lt;/a> &lt;a href="https://www.synesthesia.co.uk/blog/archives/constraints/000134.php" target="_blank" rel="noopener">2&lt;/a> &lt;a href="https://www.synesthesia.co.uk/blog/archives/constraints/000138.php" target="_blank" rel="noopener">3&lt;/a> was starting to get too convoluted for blog posts, so I&lt;del>‘ve&lt;/del> set up a Constraints section on the Wiki, and started to document my process there&lt;/p>
&lt;p>Having discovered the Twiki Draw plugin, I think a wiki with a drawing tool could well be the perfect tool for developing this sort of exchange…&lt;/p></description></item><item><title>Bringing it all together</title><link>https://www.synesthesia.co.uk/2003/07/04/bringing-it-all-together/</link><pubDate>Fri, 04 Jul 2003 09:47:32 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/07/04/bringing-it-all-together/</guid><description>&lt;p>“Choreography – Bringing it all together”:https://www.looselycoupled.com/stories/2003/choreo-bp0702.html&lt;/p></description></item><item><title>Jay Fienberg says “FOAF gets my OK vote”</title><link>https://www.synesthesia.co.uk/2003/07/03/jay-fienberg-says-foaf-gets-my-ok-vote/</link><pubDate>Thu, 03 Jul 2003 17:31:22 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/07/03/jay-fienberg-says-foaf-gets-my-ok-vote/</guid><description>&lt;p>Jay Fienberg says “FOAF gets my OK vote”:https://icite.net/blog/200307/foaf_ok.html&lt;/p></description></item><item><title>Inspiration</title><link>https://www.synesthesia.co.uk/2003/07/03/inspiration/</link><pubDate>Thu, 03 Jul 2003 13:04:22 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/07/03/inspiration/</guid><description>&lt;p>&lt;a href="https://theobviousblog.net/blog/" target="_blank" rel="noopener">Euan&lt;/a> &lt;a href="https://www.theobviousblog.net/blog/archives/000920.html#000920" target="_blank" rel="noopener">points&lt;/a> to a motivating quote by &lt;a href="https://gassho.blogspot.com/" target="_blank" rel="noopener">Jack Ricchiuto&lt;/a> :&lt;/p>
&lt;p>bq. In our communities of work, trade, life, faith, and practice, we need to have conversations about what we most deeply care about as we form karmic images of our personal and collaborative futures. We need to inspire one another in ways never thought possible before. We gain nothing by pretending we lack this power. We gain everything by honoring it.&lt;/p>
&lt;p>I found the Rilke quote powerful too:&lt;/p>
&lt;p>bq. You must give birth to your images. They are the future waiting to be born. Fear not the uncertainty you feel; the future must enter you long before it happens&lt;/p></description></item><item><title>New Site</title><link>https://www.synesthesia.co.uk/2003/06/30/new-site/</link><pubDate>Mon, 30 Jun 2003 20:23:37 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/06/30/new-site/</guid><description>&lt;p>If you can see this entry then you are looking at the new site for my blog – hopefully the DNS entries will propagate fairly quickly…&lt;/p>
&lt;p>I’m still with the same &lt;a href="https://www.dc-hosting.com/" target="_blank" rel="noopener">hosting company&lt;/a> – they are good value and are always very responsive to support calls. I’ve moved hosts from one of their older Unix accounts onto the new Linux space they are offering – faster, better control panel, more up to date features…&lt;/p></description></item><item><title>Lean Project Management – it’s about what you notice</title><link>https://www.synesthesia.co.uk/2003/06/24/lean-project-management-its-about-what-you-notice/</link><pubDate>Tue, 24 Jun 2003 12:34:42 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/06/24/lean-project-management-its-about-what-you-notice/</guid><description>&lt;p>Over at &lt;a href="https://weblog.halmacomber.com/" title="Reforming Project Management Theory and Practice" target="_blank" rel="noopener">Reforming Project Management&lt;/a> Hal Macomber is seeking to &lt;a href="https://weblog.halmacomber.com/2003_06_22_archive.html#105640043946027061" target="_blank" rel="noopener">transfer&lt;/a> the learning from Lean Production into the project management world.&lt;/p>
&lt;p>In Lean Production there exists the concept of the “visual workplace”, commonly expressed through the &lt;a href="https://www.superfactory.com/lean_concepts/5s.htm" target="_blank" rel="noopener">5S&lt;/a> model. Hal &lt;a href="https://weblog.halmacomber.com/2003_06_08_archive.html#200405622" target="_blank" rel="noopener">points out&lt;/a> that projects may not always involve material products and resources but always involve people and conversations; it therefore makes sense to translate the 5S model into what he calls the &lt;a href="https://weblog.halmacomber.com/2003_06_08_archive.html#200415393" target="_blank" rel="noopener">5R Protocol for a Listening Workplace&lt;/a>:&lt;/p>
&lt;ol>
&lt;li>Roles&lt;/li>
&lt;li>Rules&lt;/li>
&lt;li>Reflection&lt;/li>
&lt;li>Relationships&lt;/li>
&lt;li>Routines&lt;/li>
&lt;/ol>
&lt;p>What’s interesting is the way his own thinking is developing as he &lt;a href="https://weblog.halmacomber.com/2003_06_15_archive.html#105620161404827968" target="_blank" rel="noopener">reflects&lt;/a> on this model and the conditions that need to be in place for real changes to happen – critically the need for having the right mental distinctions to notice what is really important and then taking action based on those distinctions:&lt;/p>
&lt;blockquote>
&lt;p>What we notice has to do with the distinctions we can make and the routines that we follow. Both our noticing and effectiveness in action increase as we take action. If we want to work in a lean way we need the distinctions of lean and we need to take action. […] Learning to operate in a lean way happens by doing projects in a lean way.&lt;/p>
&lt;/blockquote>
&lt;p>For me this sits well with the model of cognition used by NLP:&lt;/p>
&lt;img alt="nlpcomm-t.gif" src="https://www.synesthesia.co.uk/blog/images/nlpcomm-t.gif" width="450" height="489" border="0" />
&lt;p>Our habitual perceptual filters control what we actually notice in our surroundings – an engineer will notice different things from an HR expert. The mental programs we use (or habitual ways of thinking) will then influence what meaning we ascribe to those things and therefore influence our conscious intent about what to do. Those same mental programs will distort our conscious intent into our everyday strategies, which in turn result in actions and words that fit with our perceptual filters. &lt;strong>The whole system is both recursive and self-reinforcing – the success of actions we take in the world tends to strengthen the perceptual filters and mental programs that led to us choosing those actions.&lt;/strong>&lt;/p>
&lt;p>In such a model changing behaviour often needs the conscious adoption of new filters and disctinctions re-inforced by action until new unconscious mental programs take hold. This is where coaching is especially useful to remind the person who is changing what they should be paying attention to.&lt;/p>
&lt;p>What Hal is doing with his 5R model is start to express the things that make a difference in order to get “Lean Projects” right – it will be interesting to see how he develops this into practical tools that can not only be applied but through their application embed new ways of thinking.&lt;/p></description></item><item><title>Learning Organisations and TOC pt 3</title><link>https://www.synesthesia.co.uk/2003/06/23/learning-organisations-and-toc-pt-3/</link><pubDate>Mon, 23 Jun 2003 23:30:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/06/23/learning-organisations-and-toc-pt-3/</guid><description>&lt;p>Continuing to work through &lt;a href="https://www.synesthesia.co.uk/library/archives/000150.php" target="_blank" rel="noopener">Overcoming Organizational Defenses&lt;/a> to find links with the &lt;acronym title="Theory of Constraints">TOC&lt;/acronym> approach it struck me that creating a &lt;acronym title="Current Reality Tree">CRT&lt;/acronym> was in itself a form of &lt;a href="https://www.banxia.com/depaper.html" target="_blank" rel="noopener">Cognitive Mapping&lt;/a>.&lt;/p>
&lt;p>In other words by extracting the key concepts from the book into a &lt;acronym title="Current Reality Tree">CRT&lt;/acronym> it should be possible to graphically display and test the book’s argument at the same time as comprehending it.&lt;/p>
&lt;p>In the first chapter Argyris gives some strong clues about the sort of Undesirable Effects (UDEs) we might see in the real world…&lt;/p>
&lt;p>Argyris gives examples of seven symptoms commonly seen in organisations:&lt;/p>
&lt;blockquote title="Overcoming Organizational Defenses chapter 1">
&lt;ol>
&lt;li>
Actions intended to increase understanding and trust often produce misunderstanding and mistrust
&lt;/li>
&lt;li>
Blaming others or the system for poor decisions
&lt;/li>
&lt;li>
Organisational inertia: The tried and proven ways of doing things dominate organisational life
&lt;/li>
&lt;li>
Upward communications for difficult issues are often lacking
&lt;/li>
&lt;li>
Budget ganmes are necessary evils
&lt;/li>
&lt;li>
People do not behave reasonably, even when it is in their best interest
&lt;/li>
&lt;li>
The management team is often a myth
&lt;/li>
&lt;/ol>
&lt;/blockquote>
&lt;p>He then suggests that for rational, well-meaning human beings to consistently create these sort of problems there must be something wrong with their thinking processes, especially when dealing with business issues that are embarrassing or threatening – they must be using what he calls “Defensive Reasoning” – the three symptoms of which are:&lt;/p>
&lt;ul>
&lt;li>Individuals hold premises the validity of which is questionable yet they think it is not&lt;/li>
&lt;li>Individuals make inferences that do not necessarily follow from the premises yet they think they do&lt;/li>
&lt;li>Individuals reach conclusions that they believe they have tested carefully yet they have not (because the way they have been framed makes them untestable)&lt;/li>
&lt;/ul>
&lt;p>Using the terminology of the &lt;acronym>TOC&lt;/acronym> thinking processes I’m going to take these as the initial &lt;acronym title="Undesirable Effects">UDEs&lt;/acronym>&lt;/p>
&lt;p>Argyris states that the causes of this defensive reasoning are four-fold:&lt;/p>
&lt;ol>
&lt;li>The human programs held by the people concerned about dealing with embarrassment or threat&lt;/li>
&lt;li>The fact that they use those programs skillfully&lt;/li>
&lt;li>The organisational defence routines that result&lt;/li>
&lt;li>The organisational “fancy footwork” used to protect the defensive routines&lt;/li>
&lt;/ol>
&lt;p>We can use those &lt;acronym title="Undesirable Effects">UDEs&lt;/acronym> and causes to start making a skeleton &lt;acronym title="Current Reality tree">CRT&lt;/acronym>.&lt;/p>
&lt;div class="inlineimg">
&lt;a href="https://www.synesthesia.co.uk/blog/archives/clo3a.php" onclick="window.open('https://www.synesthesia.co.uk/blog/archives/clo3a.php','popup','width=630,height=350,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">&lt;img alt="Initial CRT - click to view full size" src="https://www.synesthesia.co.uk/blog/archives/clo3a-t.gif" width="450" height="250" border="1" />&lt;br /> &lt;/a>
&lt;/div>
&lt;p>At the moment the the logical jumps between the entities seem too large to start plotting cause-effect arrows; as I work through the following chapters of the book I’ll develop the tree in line with Argyris’s argument.&lt;/p>
&lt;p>Earlier articles:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://www.synesthesia.co.uk/blog/archives/learning_organisations/000165.php" target="_blank" rel="noopener">Invisible dogma and learning organisations&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://www.synesthesia.co.uk/blog/archives/constraints/000169.php" target="_blank" rel="noopener">Learning Organisations and TOC pt 2&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>Gurteen Knowledge Conference and XKM</title><link>https://www.synesthesia.co.uk/2003/06/23/gurteen-knowledge-conference-and-xkm/</link><pubDate>Mon, 23 Jun 2003 21:37:14 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/06/23/gurteen-knowledge-conference-and-xkm/</guid><description>&lt;p>&lt;a href="https://matt.blogs.it/" target="_blank" rel="noopener">Matt Mower&lt;/a> has some good summary posts ( &lt;a href="https://matt.blogs.it/2003/06/23.html#a967" target="_blank" rel="noopener">1&lt;/a> &lt;a href="https://matt.blogs.it/2003/06/19.html#a959" target="_blank" rel="noopener">2&lt;/a> &lt;a href="https://matt.blogs.it/2003/06/19.html#a958" target="_blank" rel="noopener">3&lt;/a> &lt;a href="https://matt.blogs.it/2003/06/19.html#a957" target="_blank" rel="noopener">4&lt;/a> &lt;a href="https://matt.blogs.it/2003/06/19.html#a956" target="_blank" rel="noopener">5&lt;/a> ) from the &lt;a href="https://www.gurteen.com/gurteen/gurteen.nsf/0/9C7E34B34F92686A80256CE200715C3C/" target="_blank" rel="noopener">Gurteen Knowledge conference&lt;/a>.&lt;/p>
&lt;p>Also on his site Matt has a fledgling &lt;a href="https://linux.evectors.it/wiki/XKM/" target="_blank" rel="noopener">wiki&lt;/a> dedicated to the subject of e&lt;strong>X&lt;/strong>treme &lt;strong>K&lt;/strong>nowledge &lt;strong>M&lt;/strong>anagement (XKM) &lt;q>“a lightweight KM methodology”&lt;/q>&lt;/p></description></item><item><title>Photoblogroll and FOAF?</title><link>https://www.synesthesia.co.uk/2003/06/23/photoblogroll-and-foaf/</link><pubDate>Mon, 23 Jun 2003 21:13:10 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/06/23/photoblogroll-and-foaf/</guid><description>&lt;p>&lt;a href="https://www.zylstra.org/blog/" target="_blank" rel="noopener">Ton&lt;/a> has &lt;a href="https://blog.zylstra.org/archives/001010.html" target="_blank" rel="noopener">added photos&lt;/a> to his blogroll. I wondered if he was doing it by searching people’s &lt;acronym title="Friend Of A Friend: An RDF vocabulary for describing social networks">FOAF&lt;/acronym> files but apparently not (it was pure coincidence that he added my photo about a day after I linked it from &lt;a href="https://www.synesthesia.co.uk/blog/foaf.rdf" target="_blank" rel="noopener">my FOAF&lt;/a> file)&lt;/p></description></item><item><title>The periodic table of dessert</title><link>https://www.synesthesia.co.uk/2003/06/23/the-periodic-table-of-dessert/</link><pubDate>Mon, 23 Jun 2003 19:16:20 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/06/23/the-periodic-table-of-dessert/</guid><description>&lt;p>&lt;a href="https://www.eblong.com/zarf/periodic/index.html" title="The Periodic Table of Dessert" target="_blank" rel="noopener">The Periodic Table of Dessert&lt;/a> – not just fun, has some logical structure too! [via &lt;a href="https://www.raygirvan.co.uk/apoth/thought.htm" target="_blank" rel="noopener">Apothecary’s Drawer&lt;/a> via &lt;a href="https://blogs.salon.com/0002007/" target="_blank" rel="noopener">Dave Pollard&lt;/a>]&lt;/p></description></item><item><title>Learning Organisations and TOC pt 2</title><link>https://www.synesthesia.co.uk/2003/06/18/learning-organisations-and-toc-pt-2/</link><pubDate>Wed, 18 Jun 2003 10:09:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/06/18/learning-organisations-and-toc-pt-2/</guid><description>&lt;p>As noted in an earlier &lt;a href="https://www.synesthesia.co.uk/blog/archives/learning_organisations/000165.php" target="_blank" rel="noopener">article&lt;/a> I’ve started re-reading &lt;a href="https://www.synesthesia.co.uk/library/archives/000150.php" target="_blank" rel="noopener">Overcoming Organizational Defenses&lt;/a> with the intent of seeing how to integrate Argyris’s approach with &lt;acronym title="Theory of Constraints">TOC&lt;/acronym>.&lt;/p>
&lt;p>Confirmation that my intuition may have taken me down a fruitful path comes from Chapter 1 “Puzzles”:&lt;/p>
&lt;blockquote>
&lt;p>“The players in these studies also take for granted policies and practices that are contrary to their managerial stewardship. They bypass root causes. They equate being realistic with being simplistic. They make all these actions undiscussable. They thus wind up creating a world in which the bad is tied up with the good so that producing the latter guarantees the former. Finally all of this is done with the best of intentions”&lt;/p>
&lt;/blockquote>
&lt;p>Which also sounds like the sort of situation a &lt;acronym title="Current Reality Tree - one of the TOC Thinking Tools">CRT&lt;/acronym> was designed to explore!&lt;/p></description></item><item><title>Theory-in-Use meets Neuro-Semantics</title><link>https://www.synesthesia.co.uk/2003/06/17/theory-in-use-meets-neuro-semantics/</link><pubDate>Tue, 17 Jun 2003 23:29:30 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/06/17/theory-in-use-meets-neuro-semantics/</guid><description>&lt;p>Another piece of the jigsaw I started in the &lt;a href="https://www.synesthesia.co.uk/blog/archives/learning_organisations/000165.php" target="_blank" rel="noopener">previous article&lt;/a> – &lt;a href="https://www.peakperformer.co.za/argyris.htm" target="_blank" rel="noopener">Coaching: Dealing with subliminal �Theories in Use”&lt;/a> from &lt;a href="www.neurosemantics.com">Neuro-Semanticist&lt;/a> &lt;a href="https://www.peakperformer.co.za" target="_blank" rel="noopener">Armand Kruger&lt;/a> [via &lt;a href="https://onepine.blogspot.com/" target="_blank" rel="noopener">OnePine&lt;/a> ]&lt;/p></description></item><item><title>Invisible dogma and learning organisations</title><link>https://www.synesthesia.co.uk/2003/06/17/invisible-dogma-and-learning-organisations/</link><pubDate>Tue, 17 Jun 2003 22:00:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/06/17/invisible-dogma-and-learning-organisations/</guid><description>&lt;p>I’ve been reading ideas from &lt;a href="https://www.ratcliffe.com/bizblog/2003/04/11.html#a983" target="_blank" rel="noopener">Mitch Ratcliffe&lt;/a> and &lt;a href="https://www.focusedperformance.com/2003_04_01_blarch.html#200187875" target="_blank" rel="noopener">Frank Patrick&lt;/a> on how the technology deployed in a business both embodies and is constrained by the hidden, unspoken mental models held by the sponsors, specifiers, implementers and users of the technology.&lt;/p>
&lt;p>Reading this I was reminded of the work of &lt;a href="https://www.onepine.info/pargy.htm" target="_blank" rel="noopener">Chris Argyris&lt;/a>, particularly the “theory in use”/”espoused theory” difference and organisational defensive routines. I wonder how we might usefully combine insights and tools from those different perspectives?&lt;/p>
&lt;p>In &lt;a href="https://www.ratcliffe.com/bizblog/2003/04/11.html#a983" target="_blank" rel="noopener">Invisible Dogma – Perpetuating Paradigms&lt;/a> &lt;a href="https://www.ratcliffe.com/bizblog/" target="_blank" rel="noopener">Mitch Ratcliffe&lt;/a> explores how the hidden, unspoken assumptions in business affect the choices of technology we make and how in turn the technology freezes those assumptions in use, perhaps long after the real world has moved on… Just one quote to give a flavour:&lt;/p>
&lt;blockquote>
&lt;p>“…Simply put, the source of dogmas is our own laziness about addressing systemic issues in our organizations and in recording the reasons we do things within a company. We opt, for instance, for “collaboration” software to make people collaborate instead of teaching them to work together respectfully and constructively. We fail to appreciate how these tools change the requirements when hiring new employees, and often blame the employees when they fail to thrive in the stunted learning environments we’ve created. If management wants to take credit for success, the institutionalization of critical thinking about our choices of information tools is absolutely essential to the role of a manager in the information age…”&lt;/p>
&lt;/blockquote>
&lt;p>Frank Patrick adds &lt;a href="https://www.focusedperformance.com/2003_04_01_blarch.html#200187875" target="_blank" rel="noopener">useful thoughts&lt;/a> on the relevance of Constraints to this thinking:&lt;/p>
&lt;blockquote>
&lt;p>It’s the paradigms (invisible dogma), policies (visible dogma or litany), and practices or processes (decisions and behaviors supported, and more and more institutionalized, by technology), IN THAT ORDER, that will define what an organization accomplishes in terms of fulfilling its purpose or goal. Technology must be subordinate to appropriate processes, which are, in the end, rationalized through the view of the current dogma&lt;/p>
&lt;/blockquote>
&lt;p>Chris Argyris has done enormous amounts of work on the unseen and undiscussable patterns in organisations that prevent learning (see &lt;a href="https://www.onepine.info/pargy.htm" target="_blank" rel="noopener">here&lt;/a> for a good summary and link collection). In &lt;a href="https://www.synesthesia.co.uk/library/archives/000150.php" target="_blank" rel="noopener">Overcoming Organizational Defenses&lt;/a> he sets out a practical approach for surfacing and changing these assumptions.&lt;/p>
&lt;p>The question for me is how can we synthesise these various approaches to lead to a more effective way to specify technology solutions?&lt;/p>
&lt;p>On the way to answering that I suspect we will have to answer some other questions:&lt;/p>
&lt;ul>
&lt;li>What benefit might we get if we could examine the “invisible dogmas”?&lt;/li>
&lt;li>What are the factors that prevent an honest examination of them?&lt;/li>
&lt;li>What approaches to defining a business process/systems issue are likely to be most productive?&lt;/li>
&lt;/ul></description></item><item><title>TOC and “Human Capital”</title><link>https://www.synesthesia.co.uk/2003/06/17/toc-and-human-capital/</link><pubDate>Tue, 17 Jun 2003 21:50:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/06/17/toc-and-human-capital/</guid><description>&lt;p>&lt;a href="https://dijest.com/aka/" target="_blank" rel="noopener">Phil Wolff&lt;/a> is wondering &lt;a href="https://dijest.com/aka/2003/06/16.html#a2444" target="_blank" rel="noopener">Can you apply Theory of Constraints to Human Capital?&lt;/a>.&lt;/p>
&lt;p>Interesting questions – although the term “Human Capital” makes me cringe slightly… &lt;ins>(Update – David Gurteen seems to have the &lt;a href="https://www.gurteen.com/gurteen/gurteen.nsf/0/4E981D1E0F1010AF80256D29002FF160/">same reaction&lt;/a> to these labels too!)&lt;/ins> However in the context of workforce planning one of his questions seems to go to a pretty core issue &lt;q>“How can we […] spend more time spent in meaningful conversation and less on paperwork?”&lt;/q>&lt;/p></description></item><item><title>Blogs on Constraints</title><link>https://www.synesthesia.co.uk/2003/06/12/blogs-on-constraints/</link><pubDate>Thu, 12 Jun 2003 15:59:24 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/06/12/blogs-on-constraints/</guid><description>&lt;p>Further to the &lt;a href="https://www.synesthesia.co.uk/blog/archives/constraints/000162.php" target="_blank" rel="noopener">last article&lt;/a> here are a few blogs that make frequent reference to Theory of Constraints together with a few sample posts (some of which they wrote in parallel):&lt;/p>
&lt;p>&lt;a href="https://www.focusedperformance.com/blogger.html" target="_blank" rel="noopener">Focused Performance&lt;/a> (Frank Patrick):&lt;/p>
&lt;ul>
&lt;li>Down ‘n Dirty with TOC and Project Management &lt;a href="https://www.focusedperformance.com/2003_04_01_blarch.html#200142061" target="_blank" rel="noopener">1&lt;/a> &lt;a href="https://www.focusedperformance.com/2003_04_01_blarch.html#200147100" target="_blank" rel="noopener">2&lt;/a> &lt;a href="https://www.focusedperformance.com/2003_04_01_blarch.html#200153001" target="_blank" rel="noopener">3&lt;/a> &lt;a href="https://www.focusedperformance.com/2003_04_01_blarch.html#200158350" target="_blank" rel="noopener">4&lt;/a> &lt;a href="https://www.focusedperformance.com/2003_04_01_blarch.html#200163678" target="_blank" rel="noopener">5&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://weblog.halmacomber.com/" target="_blank" rel="noopener">Reforming Project Management&lt;/a> (Hal Macomber) :&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Down ‘n Dirty with the Theory of Constraints &lt;a href="https://halmacomber.com/jammin/2003_04_13_archive.html#200141919" target="_blank" rel="noopener">1&lt;/a> &lt;a href="https://weblog.halmacomber.com/2003_04_13_archive.html#200146916" target="_blank" rel="noopener">2&lt;/a> &lt;a href="https://weblog.halmacomber.com/2003_04_13_archive.html#200152502" target="_blank" rel="noopener">3&lt;/a> &lt;a href="https://weblog.halmacomber.com/2003_04_13_archive.html#200157736" target="_blank" rel="noopener">4&lt;/a> &lt;a href="https://weblog.halmacomber.com/2003_04_13_archive.html#200163600" target="_blank" rel="noopener">5&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://weblog.halmacomber.com/2003_04_13_archive.html#200167764" target="_blank" rel="noopener">Customers, Promises and TOC&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://joeelylean.blogspot.com/" target="_blank" rel="noopener">Learning about Lean&lt;/a> (Joe Ely)&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://joeelylean.blogspot.com/2003_04_13_joeelylean_archive.html#200142178" target="_blank" rel="noopener">Down and Dirty with TOC and Lean&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Applying the Theory Of Constraints</title><link>https://www.synesthesia.co.uk/2003/06/12/applying-the-theory-of-constraints/</link><pubDate>Thu, 12 Jun 2003 13:10:19 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/06/12/applying-the-theory-of-constraints/</guid><description>&lt;p>Real life processes are messy and complex – changing them can be risky. With this in mind I’ve started a project in the organisation where I work looking at how we can understand better the problems in our area of the business and find out where to focus our improvement efforts.&lt;/p>
&lt;p>We’re using an approach based on the &lt;em>Theory of Constraints&lt;/em>. Lots of people have written more eleoquently than I on the details of TOC (See links at end of article) but although labelled “theory” this is a very practical approach that helps you answer three ‘Big Questions’:&lt;/p>
&lt;ul>
&lt;li>What are we going to change?&lt;/i>
&lt;ul>
&lt;li>What are we going to change to?&lt;/i>
&lt;ul>
&lt;li>
&lt;p>How are we going to do the change?&lt;/i> &lt;/ul>
We are still at the early stages – understanding how the area we are looking at really works – but already we’re finding that the approach is a great help in seeing what is really going on. As one of the team put it:&lt;/p>
&lt;blockquote>
&lt;p>When you used to ask me why something didn’t work I could only say “well it’s everything” – now we understand things much better. I don’t think anyone has ever looked at these processes in this way.&lt;/p>
&lt;/blockquote>
&lt;p>That comment illustrates the double appeal to me of these methods – the diagrams and hard logic please the analytical part of my mind but beyond that there is the human benefit from working with a team to help them understand and express their issues in a systemic and systematic way. OK some of that might just be &lt;a href="https://pespmc1.vub.ac.be/ASC/HAWTHO_EFFEC.html" target="_blank" rel="noopener">Hawthorne effect&lt;/a> but I also believe there is something fundamentally empowering in helping people improve things that matter to them and express their issues in logical ways that can be used to influence others&lt;/p>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>Eliyahu Goldratt has set out his “Theory of Constraints” approach to transforming businesses in books such as &lt;amazonlink asin="0566074184">The Goal&lt;/amazonlink>, &lt;amazonlink asin="0566076276">It’s Not Luck&lt;/amazonlink>, &lt;amazonlink asin="0566080389">Critical Chain&lt;/amazonlink>&lt;/p>
&lt;pre>&lt;code> and &amp;lt;amazonlink asin=&amp;quot;0884271706&amp;quot;&amp;gt;Necessary But Not Sufficient&amp;lt;/amazonlink&amp;gt;.
Very simply the theory can be summed up as &amp;amp;#8220;a chain is as strong as its weakest link&amp;amp;#8221; &amp;amp;#8211; in any complex system (like a business) the overall performance will be constrained by the weakest part of the system.
The TOC approach to continuous improvement is summed up in Goldratt&amp;amp;#8217;s &amp;amp;#8220;Five Focussing Steps&amp;amp;#8221; (slightly reworded):
1. Identify the System Constraint
2. Decide how to get the most out of the constraint
3. Focus all your efforts on this
4. Improve or remove the constraint
5. Start all over again to find the new constraint!
In order to do this he also invented the Five Thinking Tools:
* Current Reality Tree
* Conflict Resolution Diagram
* Future Reality Tree
* Prerequisite Tree
* Transition Tree
In Goldratt&amp;amp;#8217;s books these are referred to but not really explained &amp;amp;#8211; for a &amp;amp;#8220;how-to&amp;amp;#8221; guide see &amp;lt;amazonlink asin=&amp;quot;0873893700&amp;quot;&amp;gt;Dettmer&amp;lt;/amazonlink&amp;gt;.
**Sources of Further Information**
&amp;lt;u&amp;gt;Books&amp;lt;/u&amp;gt;
* &amp;lt;amazonlink asin=&amp;quot;0566074184&amp;quot;&amp;gt;The Goal&amp;lt;/amazonlink&amp;gt; Eliyahu Goldratt &amp;amp; Jeff Cox
* &amp;lt;amazonlink asin=&amp;quot;0566076276&amp;quot;&amp;gt;It&amp;amp;#8217;s Not Luck&amp;lt;/amazonlink&amp;gt; Eliyahu Goldratt
* &amp;lt;amazonlink asin=&amp;quot;0566080389&amp;quot;&amp;gt;Critical Chain&amp;lt;/amazonlink&amp;gt; Eliyahu Goldratt
* &amp;lt;amazonlink asin=&amp;quot;0884271706&amp;quot;&amp;gt;Necessary but not Sufficient&amp;lt;/amazonlink&amp;gt; Eliyahu Goldratt, Carol A. Ptak &amp;amp; Eli Shragenheim
* &amp;lt;amazonlink asin=&amp;quot;0873893700&amp;quot;&amp;gt;Goldratt&amp;amp;#8217;s Theory of Constraints &amp;amp;#8211; A Systems Approach to Continuous Improvement
&amp;lt;/amazonlink&amp;gt; H. William Dettmer
&amp;lt;u&amp;gt;Websites&amp;lt;/u&amp;gt;
* [Goldratt Institute][2]
* [Crazy about Constraints][3]
* [TOC for me][4]
* [DMOZ: Business: Management: Theory of Constraints][5]
* [Search Google][6]
&amp;lt;u&amp;gt;Email List&amp;lt;/u&amp;gt;
* &amp;lt;https://www.apics.org/lists/joining.asp#CMSIG&amp;gt;
&lt;/code>&lt;/pre></description></item><item><title>Sun, or lack of it</title><link>https://www.synesthesia.co.uk/2003/04/09/sun-or-lack-of-it/</link><pubDate>Wed, 09 Apr 2003 14:23:06 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/04/09/sun-or-lack-of-it/</guid><description>&lt;p>As I’ve noted before, my blogging seems to be in inverse proportion to sunlight – the last few weeks have been a fabulous spring here in South East England so I’ve found myself losing interest in scouring the network for things to comment on. That, plus catching up with friends, &lt;a href="https://www.ruislipwoods.co.uk/" title="Ruislip Woods" target="_blank" rel="noopener">playing&lt;/a> on a new &lt;a href="https://www.specialized.com/SBCBkFamily.jsp?bl=mountain&amp;amp;my=2003&amp;amp;fan=Hardrock" title="My new bike!" target="_blank" rel="noopener">bike&lt;/a>, and a couple of events I’ll blog about later…&lt;/p>
&lt;p>But now the UK seems to have returned to Winter again, at least for a while, so maybe I’ll catch up on some things!&lt;/p></description></item><item><title>Towards Structured Blogging</title><link>https://www.synesthesia.co.uk/2003/03/16/towards-structured-blogging/</link><pubDate>Sun, 16 Mar 2003 19:43:51 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/03/16/towards-structured-blogging/</guid><description>&lt;p>&lt;a href="https://radio.weblogs.com/0110772/" target="_blank" rel="noopener">Sébastien Paquet&lt;/a>: &lt;a href="https://radio.weblogs.com/0110772/stories/2003/03/13/towardsStructuredBlogging.html" target="_blank" rel="noopener">Towards Structured Blogging&lt;/a>.&lt;/p>
&lt;p>And of course this post is an example of that which he describes – pinging as it does both &lt;a href="https://www.highcontext.com/kmpings/" target="_blank" rel="noopener">KMPings&lt;/a> and the Blog-Network &lt;a href="https://www.blog-network.com/" target="_blank" rel="noopener">Metablog&lt;/a>&lt;/p></description></item><item><title>Communication Filters</title><link>https://www.synesthesia.co.uk/2003/03/15/communication-filters/</link><pubDate>Sat, 15 Mar 2003 12:22:41 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/03/15/communication-filters/</guid><description>&lt;p>&lt;a href="https://weblog.burningbird.net/fires/000968.htm" target="_blank" rel="noopener">Shelley&lt;/a> writes &lt;a href="https://weblog.burningbird.net/fires/000968.htm" title="Burningbird: We Be Three: Intellect, Spirit, and Heart" target="_blank" rel="noopener">We Be Three: Intellect, Spirit, and Heart&lt;/a> in which she suggests a new model for understanding the way people communicate (especially in writing) – which filter are they using, Intellect, Spirit, or Heart. She exemplifies each style as:&lt;/p>
&lt;p>bq. Intellect: I think.&lt;/p>
&lt;p>Spirit: I believe.&lt;/p>
&lt;p>Heart: I feel.&lt;/p>
&lt;p>All of these are at a meta-level to the primary experience – indeed in a &lt;a href="https://weblog.burningbird.net/fires/000968.htm#comment5215" target="_blank" rel="noopener">comment&lt;/a> to Shelley’s post &lt;a href="https://www.tomgraves.com.au/" target="_blank" rel="noopener">Tom Graves&lt;/a> adds reference to the physical layer “I act”.&lt;/p>
&lt;p>Shelley writes eloquently about the effects of matching and mismatching these filtering styles, she also notes her own incongruence signal:&lt;/p>
&lt;p>bq. However, it doesn’t take much for me to begin feeling out of place, even inferior, and these feelings are signs that I need to re-focus my energy on my strengths, rather than expend it in arenas that just don’t work for me. This is the most important lesson I’ve learned, and I’m still learning it. Self-doubt is your mind’s way of telling you to change your environment.&lt;/p>
&lt;p>This is a fresh (to me) way of looking at habitual ways of expressing oneself, but I wonder if the preferred filters are as immutable as Shelley suggests? Surely it is possible to install an ability to operate in any of these models? What are the characteristic values and beliefs held by a person who prefers to operate in each mode? What self-awareness does a person hold in each mode? if it were a conversation, how would they express each mode in their posture?&lt;/p>
&lt;p>Since this post is written in the “intellect” filter, let me answer those questions for myself as I write….&lt;/p>
&lt;p>Values: ideas, dialogue, debate&lt;/p>
&lt;p>Beliefs: other’s views are important as they shed light in ideas, ideas develop through conversation,&lt;/p>
&lt;p>Body awareness: almost entirely in the head – lots of visual thinking.&lt;/p>
&lt;p>If it was a conversation I can imagine talking very quickly, with an amount of gesturing, then pausing to hear the other person, we’d probably interrupt each other a lot to keep up with the idea flow…&lt;/p>
&lt;p>Any people with preferences for the other styles care to comment?&lt;/p></description></item><item><title>Blogs as stories</title><link>https://www.synesthesia.co.uk/2003/03/10/blogs-as-stories/</link><pubDate>Mon, 10 Mar 2003 13:35:36 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/03/10/blogs-as-stories/</guid><description>&lt;p>In &lt;a href="https://interdependent.blogspot.com/2003_03_01_interdependent_archive.html#90411373" target="_blank" rel="noopener">Blogs and Knowledge Sharing&lt;/a>, &lt;a href="https://interdependent.blogspot.com/" target="_blank" rel="noopener">Ton&lt;/a> picks up the story of &lt;a href="https://www.synesthesia.co.uk/blog/archives/meta_blogging/000156.php" title="Synesthesia : Why do we do this?" target="_blank" rel="noopener">why we do this&lt;/a> by considering blogs as story-telling – more specifically a way of telling the story of how the writer has discovered some knowledge complete with all the false leads and wrong turns.&lt;/p></description></item><item><title>Why do we do this?</title><link>https://www.synesthesia.co.uk/2003/03/09/why-do-we-do-this/</link><pubDate>Sun, 09 Mar 2003 13:28:11 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/03/09/why-do-we-do-this/</guid><description>&lt;p>&lt;a href="https://weblog.garyturner.net/" target="_blank" rel="noopener">Gary Turner&lt;/a> is &lt;a href="https://weblog.garyturner.net/2003_03_01_archive.html#90426090" target="_blank" rel="noopener">writing&lt;/a> about what he’s learned from blogging. Rather than try to extract sensibly here, I suggest you read it…&lt;/p>
&lt;p>His post struck a chord with me – my response (adapted from the comment I posted over at Gary’s) was something like this…&lt;/p>
&lt;p>I have a tendency to see links between ideas from totally disparate fields (or fields that are totally disparate according to our subject-driven way of categorising knowledge) – that’s the way my mind seems to work. I used to think that was “just” my way of making sense of things, and previously I’ve been exposed to comments from “domain experts” that suggest that I’m only seeing links because I don’t “really understand the depth of the subject”. In fairness, I have never claimed “academic rigour” for what I think – I have a more pragmatic approach. As I’ve grown older though I have become more confident that these syntheses are valid knowledge in their own right – one of the pleasures I’ve found from blogging is when occasional others have said the same thing.&lt;/p>
&lt;p>As I said, my approach (and from the sound of it Gary’s too) has a heavy element of pragmatism – when I’ve stumbled upon a nugget of thought I’ll tend to just go off and use it out in the world. (the sort of engineering creativity &lt;a href="https://radio.weblogs.com/0101546/" target="_blank" rel="noopener">JT&lt;/a> refers to in the comments to Gary’s post). The spirit of innovation and creativity moulds and shapes it’s own working models as it goes – if you find a blockage work around it, or take a sidestep to a different path that leads to the goal.&lt;/p>
&lt;p>What I’ve tended not to be so hot on is an explicit linking those ideas and the results of their application to the next thing – that’s another reason I blog – to try and capture the long-form development of my thinking which is normally inarticulate in the pressure of here-and-now, to make explicit my own tacit knowledge, and by contrasting it with others’ thoughts find even more ways to move on…&lt;/p>
&lt;p>Are we all prisoners of our own success? The sorts of thinking Gary and I are describing have stuck with us because they work for us in the situations we find ourselves in. Recognising those patterns is the first step to changing them – the blog helps to do that because it extends our time horizon.&lt;/p></description></item><item><title>Searching the blogsphere</title><link>https://www.synesthesia.co.uk/2003/03/08/searching-the-blogsphere/</link><pubDate>Sat, 08 Mar 2003 02:18:17 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/03/08/searching-the-blogsphere/</guid><description>&lt;p>&lt;a href="https://www.alpern.org/weblog/" target="_blank" rel="noopener">Micha Alpern&lt;/a> &lt;a href="https://www.alpern.org/weblog/php/blogsearch/writeup.html" title="Searching the BlogSphere" target="_blank" rel="noopener">says&lt;/a>&lt;/p>
&lt;p>bq. Some times I want to know what the world thinks (google)&lt;/p>
&lt;p>Some times I want to know what I think (my weblog)&lt;/p>
&lt;p>Some times I want to know what those I respect think (blogs I read)….&lt;/p>
&lt;p>… and backs it up with code…&lt;/p>
&lt;p>[ via “The Shifted Librarian”:https://www.theshiftedlibrarian.com/]&lt;/p></description></item><item><title>Creativity for Logical Thinkers</title><link>https://www.synesthesia.co.uk/2003/03/06/creativity-for-logical-thinkers/</link><pubDate>Thu, 06 Mar 2003 19:52:29 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/03/06/creativity-for-logical-thinkers/</guid><description>&lt;p>Participated in a training session today with this title with a coach from &lt;a href="https://www.themindgym.com/" target="_blank" rel="noopener">The Mind Gym&lt;/a>.&lt;/p>
&lt;p>Covered three main tools:&lt;/p>
&lt;p># Outrageous Opposites&lt;/p>
&lt;p># The Idea Beam&lt;/p>
&lt;p># The Morphological Matrix&lt;/p>
&lt;p>*Outrageous Opposites*&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Agree objective&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Brainstorm solutions&lt;/p>
&lt;/li>
&lt;li>
&lt;p>What are the “outrageous opposites” to these?&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Evaluate&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>*The Idea Beam*&lt;/p>
&lt;p>_A very practical application of chunking up and down logical levels_&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Choose an objective&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Brainstorm ideas – classify on the fly as Broad Ideas, Specific Ideas, Actions&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Use questioning to explore up, down, sideways&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>*The Morphological Matrix*&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Agree objective&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Brainstorm attributes of the solution&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select best attributes&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Brainstorm options for each attribute&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Select combinations across attributes&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Evaluate&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>*Recommended Reading*&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;amazonlink asin="0749918993">The Right Brain Manager&lt;/amazonlink>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;amazonlink asin="1857027094">Hare Brain, Tortoise Mind&lt;/amazonlink>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;amazonlink asin="0140296662">Six Thinking Hats&lt;/amazonlink>&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>More on Creative Commons, economics of IP etc</title><link>https://www.synesthesia.co.uk/2003/02/25/more-on-creative-commons-economics-of-ip-etc/</link><pubDate>Tue, 25 Feb 2003 10:32:11 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/02/25/more-on-creative-commons-economics-of-ip-etc/</guid><description>&lt;p>Notes to self to read and digest later…&lt;/p>
&lt;p>&lt;a href="https://blog.tph-lex.com/" title="Math class for poets" target="_blank" rel="noopener">Tim Hadley&lt;/a> on &lt;a href="https://blog.tph-lex.com/archives/weekly/week_2003_02_23.html#000113" target="_blank" rel="noopener">the long-term effects of Creative Commons licences&lt;/a> [via &lt;a href="https://radio.weblogs.com/0104634/" target="_blank" rel="noopener">Ernie the Attorney&lt;/a>]&lt;/p>
&lt;p>Douglas Clement writes “Does innovation require intellectual property rights?”:https://www.reason.com/0303/fe.dc.creation.shtml reviewing this “paper(Perfectly Competitive Innovation [PDF 253kb])”:https://minneapolisfed.org/research/sr/sr303.pdf by Michele Boldrin and David K. Levine [ via “TeledyN”:https://www.teledyn.com/mt/ ]&lt;/p></description></item><item><title>Site updates: MT-Textile, Wiki feed</title><link>https://www.synesthesia.co.uk/2003/02/23/site-updates-mt-textile-wiki-feed/</link><pubDate>Sun, 23 Feb 2003 13:49:26 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/02/23/site-updates-mt-textile-wiki-feed/</guid><description>&lt;p># Have added a feed of recently updated &lt;a href="https://www.synesthesia.co.uk/cgi-bin/view.cgi/Main/">Wiki&lt;/a> topics to the side bar &lt;span class = "badge2">&lt;a href="https://www.synesthesia.co.uk/cgi-bin/view.cgi/Main/SiteRss?skin=rss" title="Recent Wiki changes (RSS 1.0)">Wiki&lt;/a>&lt;/span>&lt;/p>
&lt;p># Have just installed the “MT-Textile”:https://www.bradchoate.com/past/mttextile.php plug-in&lt;/p>
&lt;p>(extended entry is just tests)&lt;/p>
&lt;p>A normal para with _emphasis_ *strong* +inserted+ -deleted- ??citation?? ^superscript^ ~subscript~ “A link (my home page)”:https://www.synesthesia.co.uk TLA(Three Letter Abbreviation) ™ (c) (r)&lt;/p>
&lt;p>bq. blockquote this text&lt;/p>
&lt;p># numbered&lt;/p>
&lt;p># list&lt;/p>
&lt;ul>
&lt;li>
&lt;p>bullets&lt;/p>
&lt;/li>
&lt;li>
&lt;p>in a list&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>| *heading 1* | *heading 2* |&lt;/p>
&lt;p>| table | format |&lt;/p>
&lt;p>| like wiki ||&lt;/p></description></item><item><title>Personal Knowledge, Universal Knowledge</title><link>https://www.synesthesia.co.uk/2003/02/21/personal-knowledge-universal-knowledge/</link><pubDate>Fri, 21 Feb 2003 13:46:58 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/02/21/personal-knowledge-universal-knowledge/</guid><description>&lt;p>&lt;a href="https://radio.weblogs.com/0106698/" title="Connectivity: Spike Hall&amp;#39;s RU Weblog" target="_blank" rel="noopener">Spike Hall&lt;/a> is thinking about &lt;a href="https://radio.weblogs.com/0106698/2003/02/18.html#a124" target="_blank" rel="noopener">Knowledge-making&lt;/a> and distinguishes between personal knowledge and universal knowledge:&lt;/p>
&lt;blockquote>
&lt;p>Take learning to ride a bike, for example; […] at the end the learner can do more […] and has, therefore, ‘made knowledge’. But it’s not knowlege-making in the universal sense. The universal sense applies when our new knowledge is also [provably, arguably] new for EVERYBODY. Claims for knowledge-making in the universal sense are addressed in the academic and scientific literature.&lt;/p>
&lt;/blockquote>
&lt;p>I suggest that this universal knowledge is a facet of what General Semanticists would call &lt;a href="https://www.google.com/search?sourceid=navclient&amp;#038;ie=UTF-8&amp;#038;oe=UTF-8&amp;#038;q=%22general+semantics%22+time%2Dbinding" target="_blank">time-binding&lt;/a>, the ability of human beings to learn from prior generations. He continues:&lt;/p>
&lt;blockquote>
&lt;p>The pursuit of a bit of universal knowledge won’t be unlike the pursuit of personal knowledge; the quest, before it ends, will , however, be more rigorous. This would be so first because establishing its newness in a universal sense has one communicating, explaining, demonstrating to a broad audience. Those that are skeptical about its newness or it’s utility in the environment to which it will apply (remember the equilibrium between individual and environment) will have to be satisfied, through reading descriptions of the inventor’s efforts of study and research, first, and her/his communication/explanation of the artifact itself, second, that it is both useful and new.&lt;/p>
&lt;/blockquote>
&lt;p>…and goes on to wonder how weblogging relates to this&lt;/p>
&lt;blockquote>
&lt;p>In my next entry I will reconstruct a nonweblogged knowledge-making experience and then I will speculate how the same effort might have been different with weblog mediation.&lt;/p>
&lt;/blockquote>
&lt;p>I’m going to speculate that the way weblogging could help this is as follows:&lt;/p>
&lt;dl>
&lt;dt>Communication&lt;/dt>
&lt;dd>The obvious benefits of any online medium – wide visibility. The ease of update of a blog helps currency, the use of “recently updated” sites and syndication feeds helps visibility, the tendency of other bloggers to comment on things they have found also increases visibility.&lt;/dd>
&lt;dt>Presenting antecedents and research&lt;/dt>
&lt;dd>Again, any online medium offers (through hyperlinks) potentially easy access to prior art. The use of a frequently updated format such as a weblog has, by effectively publishing the research journal, potential to map out the process clearly and show where the new thoughts have been introduced.&lt;/dd>
&lt;dt>Open dialogue&lt;/dt>
&lt;dd>Through comments and trackbacks there is a visible record of discussion – challenge and response&lt;/dd>
&lt;/dl></description></item><item><title>Learning XML / XSLT / XPATH</title><link>https://www.synesthesia.co.uk/2003/02/19/learning-xml-xslt-xpath/</link><pubDate>Wed, 19 Feb 2003 17:43:22 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/02/19/learning-xml-xslt-xpath/</guid><description>&lt;p>As per a &lt;a href="https://www.synesthesia.co.uk/blog/archives/creativity_tools/000147.php" target="_blank" rel="noopener">previous entry&lt;/a> I’ve started playing with these technologies as a way of interfacing between &lt;a href="https://www.mindjet.co.uk/" target="_blank" rel="noopener">MindManager&lt;/a> and arbitrary document formats. On the way I’ve found an excellent freeware &lt;a href="https://www.xmlcooktop.com/" title="XML Cooktop" target="_blank" rel="noopener">editor&lt;/a>. Debugging &lt;a href="https://www.w3.org/TR/xpath" target="_blank" rel="noopener">XPATH&lt;/a> statements to understand why the latest “&amp;lt;xsl:apply-templates select =” hasn’t selected what I thought it would is a real “refresher” for the logical parts of the mind!&lt;/p></description></item><item><title>Wiki blues</title><link>https://www.synesthesia.co.uk/2003/02/19/wiki-blues/</link><pubDate>Wed, 19 Feb 2003 17:32:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/02/19/wiki-blues/</guid><description>&lt;p>Been having problems with the &lt;a href="https://www.synesthesia.co.uk/cgi-bin/view.cgi" target="_blank" rel="noopener">Wiki&lt;/a>. I’ve upgraded the &lt;a href="https://www.twiki.org" target="_blank" rel="noopener">Twiki&lt;/a> scripts to the latest (Feb 2003) release and all is not well. Frustratingly it appears to work in some areas but not others. I’ve been through the upgrade instructions with the proverbial fine-tooth comb so I’m beginning to conclude it must be something to do with my hosting ISP. Unlike some of the more prolific bloggers out there I find that concentrating on a techie task like that severely reduces my ability and motivation to write… hence the gap…&lt;/p>
&lt;p>&lt;ins>Update&lt;/ins>&lt;/p>
&lt;p>Did line by line check of the twiki.cfg file and now it &lt;em>seems&lt;/em> to be working OK. Hmmm don’t have the satisfying feeling of knowing exactly what made the difference….&lt;/p></description></item><item><title>Mind-mapping for projects and Wikis</title><link>https://www.synesthesia.co.uk/2003/02/10/mind-mapping-for-projects-and-wikis/</link><pubDate>Mon, 10 Feb 2003 20:06:15 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/02/10/mind-mapping-for-projects-and-wikis/</guid><description>&lt;p>I’ve been spending time re-familiarising myself with the nuances of &lt;a href="https://www.mindjet.co.uk/" title="Mindmanager" target="_blank" rel="noopener">this&lt;/a> tool. I’ve been using it for about six months, and now use it for planning meetings and pretty much any major document. I’m about to start a project that will also benefit from its ability to link with MS Project and Powerpoint, so I’ve been digging into that part of the functionality.&lt;/p>
&lt;p>What I love about the project management link is the way the functionality of this tool complements the total left-brain-ness of standard project management tools. The most important part of any project is the first meeting where the people involved get engaged with breaking the scope down into manageable chunks – to be able to do that with a mindmapping tool and then export a first-cut &lt;acronym title="Work Breakdown Structure">WBS&lt;/acronym> or &lt;acronym title="Product Breakdown Structure">PBS&lt;/acronym> is just…cool…&lt;/p>
&lt;p>I’ve played around a bit with &lt;a href="https://www.mind-map.com/mindmaps_definition.htm" target="_blank" rel="noopener">mind-mapping&lt;/a> for a number of years and although you can’t beat the flexibility of pen and paper for personal notes, for collaborative work some kind of electronic tool seems essential. (apart from anything else, I &lt;em>lose&lt;/em> paper!)&lt;/p>
&lt;p>&lt;ins>Links to old broken wiki removed&lt;/ins>&lt;/p>
&lt;p>The other idea that’s nagging me tonight is a need for a MMToWiki tool. I’ve slowly started putting some NLP Wiki pages together but I’m finding the flat-file format of a Wiki rather frustrating when writing a set of interlinked documents. I’d love to be able to outline and write the first major tranche of those pages in MindManager, then export to a set of Wiki-formatted text files.&lt;/p>
&lt;p>Hmmm… and when, I wonder, is tool-building a displacement activity from the writing? 🙂&lt;/p>
&lt;p>&lt;ins>[update 2003-02-13] Have found &lt;a href="https://www.bluebridge.de/products/mind2xml/">Mind2XML&lt;/a> an add-in for MindManager that does “exactly what it says on the tin”. So now the gap in my knowledge that comes into focus is how little I know about &lt;acronym title="eXtensible Stylesheet Language">XSL&lt;/acronym>&lt;/ins>&lt;/p>
&lt;p>&lt;ins>[update 2007–4-11] And almost exactly 4 years after I wrote this post, a &lt;a href="https://www.activityowner.com/2007/04/09/map2wiki/">very similar idea&lt;/a> about the combined use of wiki and mindmaps emerges over at &lt;a href="https://www.activityowner.com/">Activityowner.Com&lt;/a> – with the big difference that he has actually produced a first draft of a conversion tool… &lt;/ins>&lt;/p></description></item><item><title>Books and trains</title><link>https://www.synesthesia.co.uk/2003/02/10/books-and-trains/</link><pubDate>Mon, 10 Feb 2003 20:02:54 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/02/10/books-and-trains/</guid><description>&lt;p>Been having something of “blogger’s block” for a few days – I blame the time and energy that is being consumed by &lt;a href="https://news.bbc.co.uk/1/hi/england/2738337.stm" title="BBC NEWS | England | Central Line woes to continue" target="_blank" rel="noopener">this&lt;/a>. On the bright side it &lt;em>has&lt;/em> meant that I can catch up on my &lt;a href="https://www.synesthesia.co.uk/library/archives/cat_current_reading.php" title="link to my current reading list" target="_blank" rel="noopener">current reading&lt;/a>…&lt;/p></description></item><item><title>Is knowledge work improvable?</title><link>https://www.synesthesia.co.uk/2003/02/07/is-knowledge-work-improvable/</link><pubDate>Fri, 07 Feb 2003 13:13:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/02/07/is-knowledge-work-improvable/</guid><description>&lt;p>&lt;a href="https://www.mcgeesmusings.net/index.html" target="_blank" rel="noopener">Jim McGee&lt;/a> is asking &lt;a href="https://www.mcgeesmusings.net/2003/02/06.html#a2955" title="McGee&amp;#39;s Musings" target="_blank" rel="noopener">Is Knowledge work improvable?&lt;/a>. He contrasts the &lt;q cite="https://www.gurustrategic.com/pdf/Knowledge-Net.pdf">“organic”&lt;/q> approach of &lt;q cite="https://www.gurustrategic.com/pdf/Knowledge-Net.pdf">“knowledge-enablers”&lt;/q> &lt;a href="https://www.gurustrategic.com/pdf/Knowledge-Net.pdf" target="_blank" rel="noopener">espoused&lt;/a> by &lt;a href="https://www.asla.nsw.edu.au/asla2002/sbarceak.htm" target="_blank" rel="noopener">Kim Sbarcea&lt;/a> and others with &lt;a href="https://www.fordham.edu/halsall/mod/1911taylor.html" target="_blank" rel="noopener">Taylorism&lt;/a>. Sbarcea attacks the Taylorist, “command and control” approach to KM, but McGee rebuts with &lt;q cite="https://www.mcgeesmusings.net/2003/02/06.html#a2955">“it is a mistake to confound the issue of what to call knowledge management with objections to Taylorism.”&lt;/q>&lt;/p>
&lt;p>McGee goes on to &lt;a href="https://www.mcgeesmusings.net/2003/02/06.html#a2954" target="_blank" rel="noopener">link in&lt;/a> thoughts triggered by Peter Drucker’s 1999 article “Knowledge-Worker Productivity: The Biggest Challenge.” and identifies that knowledge work is a process replete with feedback loops.&lt;/p>
&lt;p>In a similar head-space, &lt;a href="https://excitedutterances.blogspot.com/" target="_blank" rel="noopener">excited utterances&lt;/a> points to &lt;a href="https://www.steptwo.com.au/papers/kmc_metrics/index.html" target="_blank" rel="noopener">Metrics for CM and KM&lt;/a> by &lt;a href="https://steptwo.com.au/about/staff/jamesr/index.html" target="_blank" rel="noopener">James Robertson&lt;/a>&lt;/p>
&lt;p>My instinct is that all of these approaches are useful, especially if you can apply them synergistically. The key, I believe, is good stakeholder analysis around the relevant knowledge-work process, asking questions such as:&lt;/p>
&lt;ul>
&lt;li>Who are the groups affected by this process?&lt;/li>
&lt;li>What values do they associate with the work and it’s outcomes?&lt;/li>
&lt;li>What do they need to see from “improvements” to convince them the change is worthwhile?&lt;/li>
&lt;/ul>
&lt;p>For example, whilst the management who are investing in systems, tools, training etc. will want to see metrics that show a hard ROI, the practitioners and their immediate “customers” might be more concerned about how it helps them solve problems, or whether their knowledge contributions and expertise are recognised…&lt;/p></description></item><item><title>More about online influence, meta-frames and context</title><link>https://www.synesthesia.co.uk/2003/02/03/more-about-online-influence-meta-frames-and-context/</link><pubDate>Mon, 03 Feb 2003 17:13:05 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/02/03/more-about-online-influence-meta-frames-and-context/</guid><description>&lt;p>Steve at &lt;a href="https://www.onepotmeal.com/blog" target="_blank" rel="noopener">OnePotMeal&lt;/a> is &lt;a href="https://www.onepotmeal.com/blog/archives/001187.html#001187" title="OnePotMeal: Untangling the strands" target="_blank" rel="noopener">untangling the strands&lt;/a> of online influence.&lt;/p>
&lt;p>He starts by agreeing with &lt;a href="https://www.seabury.edu/MT/akma/000671.html#000671" target="_blank" rel="noopener">AKMA&lt;/a> that, regardless of the sometimes high noise-signal ratio on the web:&lt;/p>
&lt;blockquote cite ="https://www.seabury.edu/MT/akma/000671.html#000671">
&lt;p>
we can devise and sustain persistent salutary connections online in new ways that would have been significantly less workable and durable under the limitations of physical interaction
&lt;/p>
&lt;/blockquote>
&lt;p>and adds a nuance from &lt;a href="https://www.purselipsquarejaw.org/2003_01_01_blogger_archives.php#90223727" target="_blank" rel="noopener">Anne Galloway&lt;/a>:&lt;/p>
&lt;blockquote cite="https://www.purselipsquarejaw.org/2003_01_01_blogger_archives.php#90223727">
&lt;p>
it has become (somewhat painfully) obvious that the same inequalities that we struggle with in the everyday are equally present in cyberspace &amp;#8211; they just take on context-specific qualities
&lt;/p>
&lt;/blockquote>
&lt;p>and poses this question:&lt;/p>
&lt;blockquote>
&lt;p>How do we begin to tease out these context specific modes of influence without trapping ourselves in the assumption that we’re working in entirely familiar territory, while at the same time recognizing that we have inevitably carried over much of our offline behavior into the linked realm? […] The way to understand context specific influence is to explore its specific context. Simple, no? One means of doing this is to track an individual meme, an individual link, in other words, as it moves and meanders across the web. Not to count the number of times it’s linked, but rather to understand the ways in which it is linked, because I think real influence, genuine power is tied up in the ability to make meanings and direct the meaning-making of others far more than in raw numbers and visibility […]&lt;/p>
&lt;/blockquote>
&lt;p>I would put this another way – real influence comes from setting the high-level meta-frames, which in themselves &lt;em>are&lt;/em> the context…&lt;/p>
&lt;p>Steve goes on:&lt;/p>
&lt;blockquote>
&lt;p>The web equivalent, at least the way I’m thinking about it here, isn’t who links the most but whose links have the biggest impact. For example, I generally trust &lt;a href="https://akma.disseminary.org/" target="_blank" rel="noopener">AKMA&lt;/a> as a thinker and source of information, so I take seriously whatever he links to. When I follow those links, I’m then reading them through the lens of my trust of AKMA, so I’m perhaps more likely to read in a way sympathetic to his reading. Which is not to say I’ll agree with him exactly all the time–far from it–just that the context in which I read a link can be defined by how I get there […] What am I actually proposing? Something that, by dint of its enormity, may not even be possible, or would at least be complex and difficult. Essentially, hypothetically, to follow every link to a particular meme in order of appearance, map those, map the further links and the ways in which they branch of from each original link, and parse all of the contexts in which those links were made&lt;/p>
&lt;/blockquote>
&lt;p>Setting aside, for the moment, the practical issues associated with this (that Steve acknowledges) I’d like to suggest an addition…&lt;/p>
&lt;ul>
&lt;li>If we could identify which memes were “close to each other” (in some unspecified but intuitive way) we could start to identify the frames of reference that are operating. (I am suggesting that by associating links with memes these may be at too small a “chunk size” to identify guiding ideas)&lt;/li>
&lt;li>By tracking the links in the way Steve suggests we could start to map these frames to levels of abstraction – to see which represent the “higher” levels of context.&lt;/li>
&lt;li>Taking our thought experiment a step further, if we could then establish some sort of “ownership coefficient” between those frames and the people who are most associated with expressing them we could see who had most influence within a given community of ideas…&lt;/li>
&lt;/ul>
&lt;p>I think this needs a&lt;/p>
&lt;p>&lt;a title="Link to image illustrating relationship of memes, frames and originators" href="https://www.synesthesia.co.uk/blog/images/memes1.php" onclick="window.open('https://www.synesthesia.co.uk/blog/images/memes1.php', 'popup', 'width=371,height=428,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">diagram!!&lt;/a>&lt;/p></description></item><item><title>More on Meta States Around Eldred</title><link>https://www.synesthesia.co.uk/2003/02/01/more-on-meta-states-around-eldred/</link><pubDate>Sat, 01 Feb 2003 14:57:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/02/01/more-on-meta-states-around-eldred/</guid><description>&lt;p>In an &lt;a href="https://www.synesthesia.co.uk/blog/archives/nlp_ns/000132.php" target="_blank" rel="noopener">earlier article&lt;/a> I noted the idea of exploring the cultural models operating on the opposite sides of the Eldred dispute. Progress update- have got as far as creating a &lt;a href="https://www.synesthesia.co.uk/cgi-bin/view.cgi/Nlp/MetaStatesAroundEldred" target="_blank" rel="noopener">Wiki page&lt;/a> to capture my thinking on this, and have populated it with an outline of the approach, condensed from several pages of the training manual from the last &lt;a href="https://www.neurosemantics.com/" target="_blank" rel="noopener">NeuroSemantics&lt;/a> course…&lt;/p>
&lt;p>Since it’s a Wiki, &lt;a href="https://twiki.org/cgi-bin/view/TWiki/WikiCulture" target="_blank" rel="noopener">feel free to contribute&lt;/a>!&lt;/p></description></item><item><title>Testing Wiki interface</title><link>https://www.synesthesia.co.uk/2003/01/30/testing-wiki-interface/</link><pubDate>Thu, 30 Jan 2003 18:01:43 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/01/30/testing-wiki-interface/</guid><description>&lt;p>I’m playing with Les Orchard’s &lt;a href="https://www.decafbad.com/news_archives/000244.phtml#000244" target="_blank" rel="noopener">MT &amp;lt;-&amp;gt; Twiki interfaces&lt;/a>.&lt;/p>
&lt;p>Putting related blog entries on the bottom of Wiki pages went OK after a bit of &lt;a href="https://www.synesthesia.co.uk/cgi-bin/view.cgi/Sitenews/AddBlogSearch" target="_blank" rel="noopener">head scratching&lt;/a>&lt;/p>
&lt;p>The Wiki formatting plugins&lt;/p>
&lt;p>&lt;a href="https://www.decafbad.com/twiki/bin/view/Main/XmlRpcToWiki" target="_blank" rel="noopener">XmlRpcToWiki&lt;/a> and &lt;a href="https://www.decafbad.com/twiki/bin/view/Main/MTXmlRpcFilterPlugin" target="_blank" rel="noopener">MTXmlRpcFilterPlugin&lt;/a>&lt;/p>
&lt;p>seems a bit broken on my installation though… From &lt;a href="https://www.synesthesia.co.uk/cgi-bin/view.cgi/Sitenews/BlogTextViaWiki" target="_blank" rel="noopener">the error messages&lt;/a> I’m getting it’s something to do with the Perl installation… more digging when my brain is working again.&lt;/p>
&lt;p>see&lt;/p>
&lt;p>ShareAndEnjoy&lt;/p>
&lt;ul>
&lt;li>
&lt;p>item&lt;/p>
&lt;/li>
&lt;li>
&lt;p>item&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>[[Sitenews.AddBlogSearch][&lt;nop>AddBlogSearch]]&lt;/p>
&lt;p>&lt;ins>still broken after reinstall of latest perl HTML and SOAP packages…&lt;br /> &lt;/ins>&lt;/p></description></item><item><title>More project management goodies</title><link>https://www.synesthesia.co.uk/2003/01/28/more-project-management-goodies/</link><pubDate>Tue, 28 Jan 2003 15:09:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/01/28/more-project-management-goodies/</guid><description>&lt;p>&lt;a href="https://www.sdmagazine.com/documents/s=7760/sdm0301f/sdm0301f.htm?temp=zDc5qW9CL7" target="_blank" rel="noopener">Shaking off the “Shoulds”&lt;/a>, &lt;a href="https://www.sdmagazine.com/documents/s=7804/sdm0302f/sdm0302f.htm" target="_blank" rel="noopener">Pardon Sisyphus&lt;/a> by &lt;a href="https://www.jrothman.com/" target="_blank" rel="noopener">Johanna Rothman&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www.gantthead.com/article/1,1380,157963,00.html" target="_blank" rel="noopener">The Politics of Projects&lt;/a> by Geoff Choo&lt;/p>
&lt;p>&lt;a href="https://weblog.halmacomber.com/2003_01_19_archive.html#90216891" target="_blank" rel="noopener">Project Integrity&lt;/a> Hal Macomber&lt;/p>
&lt;p>[Source &lt;a href="https://weblog.halmacomber.com/" target="_blank" rel="noopener">Hal Macomber&lt;/a>]&lt;/p></description></item><item><title>Open Content and Just-in-Time Books</title><link>https://www.synesthesia.co.uk/2003/01/28/open-content-and-just-in-time-books/</link><pubDate>Tue, 28 Jan 2003 12:05:51 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/01/28/open-content-and-just-in-time-books/</guid><description>&lt;p>&lt;a href="https://www.teledyn.com/mt/" title="TeledyN" target="_blank" rel="noopener">Gary Lawrence Murphy&lt;/a> is writing about &lt;a href="https://www.teledyn.com/mt/archives/000526.html" title="TeledyN: Open Content on Prentice Hall" target="_blank" rel="noopener">Open Content on Prentice Hall&lt;/a> – the series that Prentice Hall are bringing out under the &lt;a href="https://www.opencontent.org/openpub/" target="_blank" rel="noopener">Open Publication License&lt;/a>.&lt;/p>
&lt;p>Gary refers to his earlier experiences trying (unsuccessfully) to persuade Macmillan to adopt an Open Content approach to a &lt;a href="https://kernelbook.sourceforge.net/" target="_blank" rel="noopener">project&lt;/a> he was driving. The issues weren’t just with the publishers – authors had problems with a licence that wasn’t either 100% free or standard, and the publication process fell over in the middle – authors and printers were ready for XML-based document manipulation and output, but the editors in the middle were still using “their MsWord-based font-painters”&lt;/p>
&lt;p>He ends with a vision for the future&lt;/p>
&lt;blockquote cite="https://www.teledyn.com/mt/archives/000526.html">
&lt;p>
XML-based publishing where the manuscript does not really exist, where it&amp;#8217;s a collection of sections and variations, indexed, threaded and exported for books [&amp;#8230;] all of it online updated on the fly by the community who uses it. The art of the author/editor would be one of filtering, pulling what they need from the knowledge base to create other titles as well, semantically linking it all through topic-maps &amp;#8230;
&lt;/p>
&lt;/blockquote></description></item><item><title>Meta States around Eldred</title><link>https://www.synesthesia.co.uk/2003/01/27/meta-states-around-eldred/</link><pubDate>Mon, 27 Jan 2003 10:59:30 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/01/27/meta-states-around-eldred/</guid><description>&lt;p>Over at the &lt;a href="https://www.aotc.info/" target="_blank" rel="noopener">American Open Technology Consortium&lt;/a> &lt;a href="https://doc.weblogs.com/" target="_blank" rel="noopener">Doc Searls&lt;/a> is &lt;a href="https://www.aotc.info/archives/000160.html#000160" title="American Open Technology Consortium: Going deep" target="_blank" rel="noopener">going deep&lt;/a> about the &lt;em>metaphorical&lt;/em> aspects of the &lt;a href="https://eldred.cc/" target="_blank" rel="noopener">Eldred&lt;/a> case:&lt;/p>
&lt;blockquote cite="https://www.aotc.info/archives/000160.html#000160">
&lt;p>
Watch the language. While the &lt;a href="https://creativecommons.org/learn/licenses/">one side&lt;/a> talks about licenses with verbs like &lt;em>copy&lt;/em>,&lt;em>distribute&lt;/em>, &lt;em>play&lt;/em>, &lt;em>share&lt;/em> and &lt;em>perform&lt;/em>, the &lt;a href="https://www.riaa.org/Protect-Campaign-1.cfm">other&lt;/a> side talks about rights with verbs like &lt;em>own&lt;/em>, &lt;em>protect&lt;/em>, &lt;em>safeguard&lt;/em>, &lt;em>protect&lt;/em>, &lt;em>secure&lt;/em>, &lt;em>authorize&lt;/em>, &lt;em>buy&lt;/em>, &lt;em>sell&lt;/em>, &lt;em>infringe&lt;/em>, &lt;em>pirate&lt;/em>, &lt;em>infringe&lt;/em>, and &lt;em>steal&lt;/em>.
&lt;/p>
&lt;p>
This isn&amp;#8217;t just a battle of words. It&amp;#8217;s a battle of understandings. And understandings are framed by conceptual metaphors. We use them all the time without being the least bit aware of it. We talk about time in terms of money (save, waste, spend, gain, lose) and life in terms of travel (arrive, depart, speed up, slow down, get stuck), without realizing that we&amp;#8217;re speaking about one thing in terms of something quite different. As the cognitive linguists will tell you, this is not a bad thing. In fact, it&amp;#8217;s very much the way our minds work.
&lt;/p>
&lt;p>
But if we want to change minds, we need to pay attention to exactly these kinds of details.
&lt;/p>
&lt;/blockquote>
&lt;p>He also links to &lt;a href="https://www.wwcd.org/issues/Lakoff.html" target="_blank" rel="noopener">Metaphor, Morality, and Politics, Or, Why Conservatives Have Left Liberals In the Dust&lt;/a>, by &lt;a href="https://www.linguistics.berkeley.edu/lingdept/Current/people/facpages/lakoffg.html" target="_blank" rel="noopener">George Lakoff&lt;/a>. This 1995 article examines the different guiding metaphors that underly the conservative and liberal (in the US sense) views of “what is moral”.&lt;/p>
&lt;p>I think Doc is onto something here – and the link that is forming in my mind is with the &lt;a href="https://www.neurosemantics.com/Articles/index-pages/meta-states.htm" target="_blank" rel="noopener">Meta-states&lt;/a> / &lt;a href="https://www.neurosemantics.com/Articles/index-pages/ns.htm" target="_blank" rel="noopener">neuro-semantics&lt;/a> model. At a recent training Michael Hall was starting to [apply those models to aspects of culture][9] – how to understand, how to change… It seems obvious that two of the meta-states at work here are “It is important to protect property” and “It is important to enrich the store of public knowledge and creativity”, but I have a sense that the two sides can be linked… I need to play with this one for a bit…&lt;/p>
&lt;p>[9]: &lt;a href="https://www.neurosemantics.com/New-Projects/New-Developments.htm#1" target="_blank" rel="noopener">https://www.neurosemantics.com/New-Projects/New-Developments.htm#1&lt;/a>) Cultural Modeling&lt;/p></description></item><item><title>Blogs, life, systems?</title><link>https://www.synesthesia.co.uk/2003/01/25/blogs-life-systems/</link><pubDate>Sat, 25 Jan 2003 11:21:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/01/25/blogs-life-systems/</guid><description>&lt;p>Over at &lt;a href="https://www.theobviousblog.net/blog" target="_blank" rel="noopener">The Obvious?&lt;/a> Euan is saying &lt;a href="https://www.theobviousblog.net/blog/archives/000352.html#000352" title="The Obvious?: It&amp;#39;s all just stuff really ...." target="_blank" rel="noopener">It’s all just stuff really ….&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>I was sitting on the tube today looking at the people around me thinking that we were all just lumps of stuff. The stuff that makes up the world doesn’t increase or decrease – it just gets rearranged. Ashes to ashes dust to dust.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Even on a daily basis the stuff that is us changes and gets recycled. Skin flakes off food gets converted to new skin. Even the apprently solid stuff we are made of is mostly water and that is mostly space.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>What is it that holds us together and makes my pile of stuff distinguishable from everyone elses. It’sd the idea of me that sets my limits, sets my character, conditions other people’s sense of what is me.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>It’s a bit like technology. The stuff is getting so cheap and common as to be meaningless. Processor power, memory, bandwidth. They all almost come free these days.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>The infrastructure is increasingly in the meaning, the code, the trust, the reputation.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Without meaning it’s all just stuff and it’s getting harder to pretend that this isn’t so.&lt;/p>
&lt;/blockquote>
&lt;p>My first response, in the comments, was &lt;a href="https://www.cs.ucl.ac.uk/staff/t.quick/autopoiesis.html" target="_blank" rel="noopener">it’s autopoiesis!&lt;/a>, but thinking about it there’s more, and Euan gets the essence by saying “It’s the idea of me that sets my limits, sets my character, conditions other people’s sense of what is me.”&lt;/p>
&lt;p>Korzybski said that man is a time-binding animal – by that he meant that we can take ideas and discoveries from the past and build on them. What we are as individuals is as much about the culture we create as it is about the shape we fit. And a big part of that culture is how we link the ideas of others and add our own, unique, slant… is that why blogs are so popular?&lt;/p></description></item><item><title>Knowledge Sharing Environments</title><link>https://www.synesthesia.co.uk/2003/01/23/knowledge-sharing-environments/</link><pubDate>Thu, 23 Jan 2003 16:48:16 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/01/23/knowledge-sharing-environments/</guid><description>&lt;p>Lilia at &lt;a href="https://blog.mathemagenic.com/" target="_blank" rel="noopener">Mathemagenic&lt;/a> &lt;a href="https://blog.mathemagenic.com/2003/01/21.html#a420" target="_blank" rel="noopener">quotes&lt;/a> &lt;a href="https://www.elearnspace.org/cgi-bin/elearnspaceblog/" target="_blank" rel="noopener">George Siemens&lt;/a> on the components needed for a &lt;a href="https://www.elearnspace.org/cgi-bin/elearnspaceblog/archives/000641.html" target="_blank" rel="noopener">Knowledge Sharing Environment&lt;/a> and links to &lt;a href="https://www.voght.com/cgi-bin/pywiki?DenhamGrey" target="_blank" rel="noopener">Denham Grey&lt;/a>‘s &lt;a href="https://www.voght.com/cgi-bin/pywiki?KnowledgeSharing" target="_blank" rel="noopener">wiki about knowledge sharing&lt;/a>&lt;/p></description></item><item><title>Conflicts of interest between publishers and information creators</title><link>https://www.synesthesia.co.uk/2003/01/23/conflicts-of-interest-between-publishers-and-information-creators/</link><pubDate>Thu, 23 Jan 2003 15:24:35 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/01/23/conflicts-of-interest-between-publishers-and-information-creators/</guid><description>&lt;p>In an &lt;a href="https://www.synesthesia.co.uk/blog/archives/nlp_ns/000127.php" target="_blank" rel="noopener">earlier article&lt;/a> I floated some ideas about applying the concepts of peer production to intellectual products in the fields of NLP and Neuro-Semantics. On a related but more general note, &lt;a href="https://www.highcontext.com/" target="_blank" rel="noopener">David Gammel&lt;/a> &lt;a href="https://www.highcontext.com/blarchive/2002_11_14.html#000144" title="High Context" target="_blank" rel="noopener">links&lt;/a> to &lt;a href="https://firstmonday.org/issues/issue7_11/willinsky/" target="_blank" rel="noopener">Copyright Contradictions in Scholarly Publishing&lt;/a> by John Willinsky. If his conclusions are correct then we should expect a large take-up of &lt;a herf="https://www.creativecommons.org">Creative Commons&lt;/a> licences by academia…&lt;/p>
&lt;p>In his conclusion Willinsky says:&lt;/p>
&lt;blockquote cite="https://firstmonday.org/issues/issue7_11/willinsky/">
&lt;p>
Scholars do not share the same copyright interests as commercial academic publishers. The financial incentive for the scholars lies in the cash value of recognition and reputation, which translates into salary increases, promotions, merit bonuses, paid speaking engagements, consulting contracts, more lucrative job offers, and counter-offer retention packages. The financial value of this recognition is also realized through the research grants and awards which provide their own form of financial independence for scholars. [in other words, &lt;em>indirect&lt;/em> appropriation as per &lt;a href="https://www.synesthesia.co.uk/blog/archives/organisations/000126.php">Benkler&amp;#8217;s paper&lt;/a>] The principal copyright (and financial) interest of researchers is to ensure that their work is properly credited when reproduced or cited, and that it is reproduced and cited as often as possible for as wide a readership as possible. Copyright protects this critical element of recognition for the author against plagiarism and other false claims to authorship. The economic interests of faculty are not furthered by preventing illegal copies of their publication. Just the opposite. Studies of &amp;#8220;what authors want&amp;#8221; within the academic community speak of the author&amp;#8217;s over-riding interest in journals with the widest possible audience, while keeping an eye on its level of prestige and its inclusion in the major indexes, which are further ways of extending readership
&lt;/p>
&lt;/blockquote>
&lt;p>So one might predict a high take-up of &lt;a href="https://www.creativecommons.org/" target="_blank" rel="noopener">Creative Commons&lt;/a> licensing amongst the academic community…&lt;/p>
&lt;p>By contrast,&lt;/p>
&lt;blockquote cite="https://firstmonday.org/issues/issue7_11/willinsky/">
&lt;p>
From their side of the coin, the interests of the commercial publishers lie in restricting access to scholarship, with technologies such as pay-per-view offering even greater control than provided by print. In the case of academic journals, the reputation of the editors, editorial board, reviewers, and authors is critical to securing library and individual subscriptions, restricting access to their work is a financial necessity in a way that it simply is not for the authors. [in other words &lt;em>direct&lt;/em> appropriation] Journal publishers have not made their contributing authors financial partners, in any way, in the publishing economy. (The royalties paid to the author of a scholarly book set it apart from the journal.) It is not surprising, then, that the copyright interests of author and publisher stand in contradiction to each other in the case of the academic journal.
&lt;/p>
&lt;/blockquote>
&lt;p>and&lt;/p>
&lt;blockquote cite="https://firstmonday.org/issues/issue7_11/willinsky/">
&lt;p>
With the emergence of a new publishing medium [the Web], enterprising researchers and others have introduced a second economic model &amp;#8211; open access &amp;#8211; into scholarly publishers. This model invites and supports a wider readership, on a far more global basis, and is &lt;em>far more in accord with the copyright interests of researchers and those who would back such scholarly and scientific activities&lt;/em>[my emphasis]
&lt;/p>
&lt;/blockquote></description></item><item><title>English is a small world</title><link>https://www.synesthesia.co.uk/2003/01/23/english-is-a-small-world/</link><pubDate>Thu, 23 Jan 2003 12:04:48 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/01/23/english-is-a-small-world/</guid><description>&lt;p>&lt;a href="https://azeem.azhar.co.uk/" target="_blank" rel="noopener">Azeem&lt;/a> &lt;a href="https://azeem.azhar.co.uk/archives/000345.php#000345" target="_blank" rel="noopener">points&lt;/a> to this &lt;a href="https://www.nature.com/nsu/020701/020701-2.html" title="Small word network" target="_blank" rel="noopener">article&lt;/a> in &lt;a href="https://www.nature.com/nsu/index.html" target="_blank" rel="noopener">Nature&lt;/a> from last summer that reports work by Adilson Motter and colleagues at Arizona State University.&lt;/p>
&lt;blockquote cite="https://www.nature.com/nsu/020701/020701-2.html">
&lt;p>
The researchers traced the links between 30,000 English words in an online thesaurus. For example, the word &amp;#8216;actor&amp;#8217; can be connected to &amp;#8216;universe&amp;#8217; through two intermediaries. The thesaurus lists &amp;#8216;character&amp;#8217; as a synonym for &amp;#8216;actor&amp;#8217;; &amp;#8216;character&amp;#8217; is also equated with &amp;#8216;nature&amp;#8217;; and &amp;#8216;nature&amp;#8217; with &amp;#8216;universe&amp;#8217;.&lt;br /> Moving from &amp;#8216;actor&amp;#8217; to &amp;#8216;universe&amp;#8217; in the network of words therefore takes three steps. To the surprise of Motter and colleagues, they found that the same was true of just about any randomly chosen pair of words in the thesaurus. The English language, in other words, enjoys just three degrees of separation.&lt;br /> [&amp;#8230;]&lt;br /> The researchers think that the network structure of a language probably has its origins in the nature of cognition and memory. It is not surprising that language is highly clustered, as we remember things associatively &amp;#8211; by grouping similar concepts together.
&lt;/p>
&lt;/blockquote>
&lt;p>As I’ve mentioned elsewhere, I’m in the middle of reading &lt;a href="https://www.synesthesia.co.uk/library/archives/000124.php" target="_blank" rel="noopener">A Universe of Consciousness&lt;/a> by Gerald Edelman and Giulio Tononi. In this they expound their &lt;em>dynamic core&lt;/em> hypothesis of consciousness – that consciousness is an emergent property arising from the dynamic, short term (100s of milliseconds) existence of a functionally-interlinked set of neurons.&lt;/p>
&lt;p>In applying this theory to specific subjective experiences (so called &lt;em>qualia&lt;/em>) they put forward the idea of a multi-dimensional &lt;/em>qualia space&lt;/em> that maps the states this dynamic core can be in. They further suggest that subjective experiences that “feel close together”, e.g. different colours, represent adjacent states in this dynamic map.&lt;/p>
&lt;p>I’m feeling a tantalising link between these two sets of ideas – one that words are closely linked, on the other that different subjective states represent “close” dynamic states of the neurons in the brain…&lt;/p></description></item><item><title>Peer Production, the Creative Commons and NLP / NS</title><link>https://www.synesthesia.co.uk/2003/01/18/peer-production-the-creative-commons-and-nlp-ns/</link><pubDate>Sat, 18 Jan 2003 15:19:28 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/01/18/peer-production-the-creative-commons-and-nlp-ns/</guid><description>&lt;p>A long follow up to the &lt;a href="https://www.synesthesia.co.uk/blog/archives/organisations/000102.php" title="Coase&amp;#39;s Penguin" target="_blank" rel="noopener">previous article&lt;/a>, linking ideas from Open Source and Creative Commons to development of the fields of NLP and Neuro-Semantics.&lt;/p>
&lt;p>&lt;strong>Peer Production&lt;/strong>&lt;br>
In an earlier &lt;a href="https://www.synesthesia.co.uk/blog/archives/organisations/000102.php" title="Coase&amp;#39;s Penguin" target="_blank" rel="noopener">article&lt;/a> I picked up a reference to &lt;a href="https://www.benkler.org/" target="_blank" rel="noopener">Yochai Benkler’s&lt;/a> paper &lt;a href="https://www.benkler.org/CoasesPenguin.PDF" title="Coase&amp;#39;s Penguin, or, Linux and the Nature of the Firm [PDF 254kB]" target="_blank" rel="noopener">Coase’s Penguin, or, Linux and The Nature of the Firm&lt;/a> in which he identifies the growth of a socio-economic phenomenon. Historically the combination of human talents and resources to produce value has been governed either by the market or the firm. The new, third, form of organising production that Benkler sees emerging (typified by the Open Source software movement) he calls &lt;cite cite ="https://www.benkler.org/CoasesPenguin.PDF">“Commons-based Peer Production”&lt;/cite>&lt;/p>
&lt;p>The common factors in this sort of production are the involvement of many people in production, and the inability of any one individual to dictate how a product is used or developed. The products of such networks are often highly innovative and tend to respond rapidly to changes in perceived needs.&lt;/p>
&lt;p>Benkler notes that peer production is particularly relevant to information products because the impact of cheap computers and omnipresent networking has lowered the costs of co-ordination. He observes that the key advantages (in the arena of information or cultural products) of this form of production compared to the pure market or firm models are:&lt;/p>
&lt;ul>
&lt;li>It is much better at identifying the right person for the job – i.e. the person whose talents are best fitted to solving the problem at hand with the resources (information) available.&lt;/li>
&lt;li>It shows very strong returns on an increasing number of participants – allowing large groups of potential collaborators to interact with large sets of information resources in the search for new projects and opportunities. &lt;strong>In other words it grows the total market&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>To allow participants to benefit economically from their contributions, without destroying the necessary openness and exchange of information, peer production requires a shift to indirect means of drawing money from the system – for example by selling services relating to the use of the created information rather than the information itself. This also implies changes to intellectual property (see for example &lt;a href="https://www.creativecommons.org/" title="Creative Commons" target="_blank" rel="noopener">Creative Commons&lt;/a> or the &lt;a href="https://www.gnu.org/copyleft/gpl.html" title="GNU General Public Licence" target="_blank" rel="noopener">GNU GPL&lt;/a>)&lt;/p>
&lt;p>&lt;strong>The World of NLP etc.&lt;/strong>&lt;br>
As I was reading Benkler’s paper today I found myself making links to the world of NLP and other forms of personal development. In recent years the whole area has been known for a level of acrimony over ownership of particular approaches, now mostly settled by the courts in favour of the public domain. Notwithstanding that, most economic operators in the field appear to plough lone furrows (there are a few notable exceptions of whom more &lt;a href="#get-it">later&lt;/a>…) and have not grasped the potential of the Net to develop and disseminate their ideas … and thus increase both their reputation and the value of their in-person interventions… remember &lt;a href="https://www.gonzomarkets.com/cluetrain/markets.html" title="The Cluetrain Manifesto" target="_blank" rel="noopener">&lt;cite cite="https://www.gonzomarkets.com/cluetrain/markets.html">all markets are conversations&lt;/cite>&lt;/a>…&lt;/p>
&lt;p>Many training companies, coaches, therapists, consultants sell themselves as if they had some unique and secret knowledge – you only get to read the manual when you pay the course fee… I’m not disputing that everyone’s talents are unique, but I am suggesting that in general the true value that these people bring is when they apply those talents to an issue, not through the information they create around that process. In a world dominated by the scarcity model this behaviour is unsurprising – but not only does it undermine the message of abundance and possibility that so many of these firms seek to deliver, it may even constrain the market for these skills below it’s natural limits. That at least is my hypothesis!&lt;/p>
&lt;p>&lt;strong>How does “Peer Production” relate to this?&lt;/strong>&lt;/p>
&lt;p>The link I want to explore is whether the concepts of peer production could be usefully applied to NLP and related fields to increase the quality and coverage of techniques available and the size of the market for the application of these skills.&lt;/p>
&lt;p>I offer a vision and a couple of presuppositions.&lt;/p>
&lt;p>The vision is a world where those of us skilled in fields of NLP, Neuro-Semantics and allied fields can make a material difference to the human condition by helping people to be more balanced, more successful and find more meaning in their lives; and in turn develop satisfying, meaningful, successful lives for ourselves. Others have expressed these ideas better! [&lt;a href="https://www.nlpu.com/Values.html" title="Shared values of the NLP community" target="_blank" rel="noopener">1&lt;/a>] [[2][9]]&lt;/p>
&lt;p>I also suggest the following pre-suppositions may be useful:&lt;/p>
&lt;ul>
&lt;li>The corner-stones of skill are information and learning from others.&lt;/li>
&lt;li>The higher quality information we have access to, the more we are able to deliver at our best potential, and the more openness there will be to these approaches.&lt;/li>
&lt;li>The wider the range of NLP/NS patterns and models we have, the more aspects of human life we can improve.&lt;/li>
&lt;li>The greater the quality and applicability of our knowledge, the greater the market for the application of that knowledge through our skills&lt;/li>
&lt;/ul>
&lt;p>Given those presuppositions, I suggest that everything we can do to produce an open discussion of ideas in our field and encourage as many people as possible to participate in creation, experimentation, review and improvement will take us closer to achieving the vision.&lt;/p>
&lt;p>&lt;strong>Intellectual property&lt;/strong>&lt;/p>
&lt;p>This is not a call to ignore copyright and rip people’s ideas off for private gain. That behaviour has been rife in the past in the field, and when you examine the websites of the people I cite below as examples of leaders who are (IMHO) going in the right direction, they are all careful to use copyright and (explicitly in the case of Hall &amp;amp; Bodenhamer) espouse values of acknowledging sources and paying relevant royalties.&lt;/p>
&lt;p>That approach encourages people to build on the work of the pioneers in an ethical manner but is insufficient to create a self-sustaining network – it only penetrates one iteration of work away from the originators.&lt;/p>
&lt;p>This is where we have to thank the vision of [Lawrence Lessig][10] and others at the &lt;a href="https://www.creativecommons.org/" title="Creative Commons" target="_blank" rel="noopener">Creative Commons&lt;/a> project. They have created a variety of licence forms which explore the many options between full copyright and complete abrogation to the public domain. I will come back to this at the end of the article but the key point about the Creative Commons approach is that it offers ways for information creators to place some control on the use of their work (and indeed gain direct or indirect remuneration from it) yet still contribute to the common pool of knowledge available to advance the culture.&lt;/p>
&lt;p>&lt;strong>Who should be involved?&lt;/strong>&lt;/p>
&lt;p>Everyone who wants to be. The design of the network (especially in the areas of values, intellectual property rules, quality review processes and methods of appropriating value) has to assume that it is open to all yet motivate and encourage the emergence of high quality products&lt;/p>
&lt;p>&lt;strong>Motivation&lt;/strong>&lt;/p>
&lt;p>Benkler examines closely &lt;cite cite="https://www.benkler.org/CoasesPenguin.PDF">(p55 ff)&lt;/cite> the motivation factors behind peer-production. The key factors are money (M) and socio-psychological (SP) rewards (which may effect one’s social standing &amp;amp;amp reputation and/or provide internal satisfaction). An individual’s motivation to contribute will depend on the combined reward exceeding some threshold that is relevant for them. SP rewards in particular are sensitive to a range of factors, including the nature of the project, the size of effort required to make a contribution, the economic status of the participant (e.g. if you are starving M becomes over-riding), the balance of direct and indirect monetary gain, the perceived fairness by which monetary rewards are appropriated etc. Quoting Benkler &lt;cite cite="https://www.benkler.org/CoasesPenguin.PDF">(p61)&lt;/cite>, the sort of conditions to sustain peer-production are likely to be:&lt;/p>
&lt;blockquote cite="https://www.benkler.org/CoasesPenguin.PDF">
&lt;p>
First, there is the case of projects that are broken down into fine-grained modules, where market remuneration would likely be too costly to sustain, but where hedonic and social-psychological rewards can provide contributors with positive rewards. [&amp;#8230;] &lt;br /> Second, there are instances where the value of monetary return is small relative to the value of the hedonic and [SP] rewards, particularly where the cultural construction of the [SP] rewards places a high negative value on the direct association of monetary rewards&lt;br /> with the activities. [for example] Teenagers and young adults with few economic commitments and high social recognition needs [or] individuals who have earnings sufficient to serve their present and expected tastes, but who have a strong taste for additional hedonic and&lt;br /> [SP] benefits that they could not obtain by extending their monetarily remunerated actions. Individuals whose present needs are met but whose future expected needs require increased monetary returns might participate if the [SP] returns were not negatively correlated with future, indirect appropriation, such as through reputation gains. This would effectively mean that they do add an M factor into their valuation of the rewards, but they do so in a way that does not negatively affect the value of SP for themselves or for other contributors to collaborative projects.
&lt;/p>
&lt;/blockquote>
&lt;p>This would predict that the sorts of people who may be interested in the application of peer-production methods to the fields of NLP and Neuro-Semantics would tend to be:&lt;/p>
&lt;ul>
&lt;li>Students of the field&lt;/li>
&lt;li>People who are already successful in the field but who wish to grow it for a combination of values-based and monetary-based reasons&lt;/li>
&lt;li>People with portfolio careers that provide sufficient material rewards at present but who are looking to grow their involvement in (and long-term remuneration from) the field&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Quality Control, and other issues&lt;/strong>&lt;/p>
&lt;p>Quality control is essential to any information production system. Benkler cites &lt;cite cite="https://www.benkler.org/CoasesPenguin.PDF">(p68)&lt;/cite> examples of four approaches used in commons-based production:&lt;/p>
&lt;ul>
&lt;li>Hierarchically managed review&lt;/li>
&lt;li>Peer review&lt;/li>
&lt;li>Norm-based social organisation&lt;/li>
&lt;li>Aggregation and averaging of redundant contributions&lt;/li>
&lt;/ul>
&lt;p>For our purposes peer-review would seem appropriate, and the internet offers many technologies to help with this.&lt;/p>
&lt;p>The other area of possible concern is “defection” – i.e. behaviour by network members that threatens production (free-riding) or the motivation of members to contribute. Again referring to Benkler he observes &lt;cite cite="https://www.benkler.org/CoasesPenguin.PDF">(p65 ff)&lt;/cite> that peer-production is resilient to free-riding because:&lt;/p>
&lt;ul>
&lt;li>The modularity of projects [a pre-requisite for this approach] allows redundant provision of modules&lt;/li>
&lt;li>A ubiquitous network leads to a very large pool of contributors, diluting the effect of even a number of free-riders&lt;/li>
&lt;li>The public goods nature of the end-product means that the value of the end-result to contributors is not reduced by the presence of free-riders&lt;/li>
&lt;/ul>
&lt;p>In relation to risks to motivation he observes that these are most likely to come from unilateral appropriation (where an individual seeks to hijack the project to their own ends, including disproportionate monetary gain) or simple commercialisation for private gain. The factors to consider when designing the network are the espoused values of the community, possible controls in the peer review process and the selection of appropriate forms of intellectual property or licencing.&lt;/p>
&lt;p>&lt;a name="get-it">&lt;/a>&lt;/p>
&lt;p>&lt;strong>Who “gets it”?&lt;/strong>&lt;/p>
&lt;p>Earlier I mentioned some honourable exceptions to the “lone furrow”. Interestingly (but perhaps unsurprisingly) these are all leaders in their specific areas (both commercially and intellectually)&lt;/p>
&lt;p>In this country, [Penny Tompkins and James Lawley][11], who between them have effectively built David Grove’s work into the field of Symbolic Modelling have a website packed with papers by themselves and others, all copyright of course, but also almost all marked “free for personal use”.&lt;/p>
&lt;p>Robert Dilts and his colleagues at [NLP University][12] publish loads of excellent material, make explicit their approach to copyright, and have published [Shared Values of the NLP Community][13] – including “Creating Artful Community: To foster bonding and friendship for future projects together […]”&lt;/p>
&lt;p>Michael L. Hall and Bobby Bodenhamer, founders of the field of [Neuro-Semantics][14] are probably the closest to “getting it”. They are explicitly seeking to create a community of practice, via the [International Society of Neuro-Semantics][15], with very strong [values][9], some of which are:&lt;/p>
&lt;ul>
&lt;li>Giving due credit for materials&lt;/li>
&lt;li>Sharing newly generated patterns&lt;/li>
&lt;li>Paying royalties that are due&lt;/li>
&lt;li>Reciprocating the generosity of others&lt;/li>
&lt;li>Acknowledging the value of others even when we disagree&lt;/li>
&lt;li>Co-leading, co-training, and co-writing with others as possible&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>And next?&lt;/strong>&lt;/p>
&lt;p>I started all this with a presupposition – that a shift to a commons-based peer production model for developing knowledge in the fields of NLP, Neuro-Semantics and related areas will lead to a significant increase in the quality and applicability of material generally available, and therefore a growth in the market for the skills to apply that knowledge to improving the human condition.&lt;/p>
&lt;p>We have the basic technology of dispersed co-operation and co-production – the ubiquitous internet. The other things we need are a set of values and some rules about who can do what with the information.&lt;/p>
&lt;p>For values IMHO it’s hard to beat those [espoused][9] by the founders of Neuro-Semantics.&lt;/p>
&lt;p>For the rules about who can do what with the information then we have to look to licencing conditions – and as I have noted above the [Creative Commons][16] are a rich source of ideas. They offer eleven different [licences][17], based around combinations of variables. The two that seem relevant here are&lt;/p>
&lt;dl>
&lt;dt>[Attribution-NonCommercial-ShareAlike][18]&lt;/dt>
&lt;dd>This licence allows others to use work however they like, including the production of derivative works, provided that they attribute the source, impose similar conditions on their derivative works and do not use the material for commercial purposes. There is nothing in this that stops the author of a work from licencing it for commercial use, but that is not an automatic right with this licence. This means that original authors get the chance to negotiate a monetary reward for commercial use of their material. [it’s also the licence I use for all material on this site including this article]&lt;/dd>
&lt;dt>[Attribution-ShareAlike][19]&lt;/dt>
&lt;dd>This licence removes the non-commercial constraint, allowing anyone to use the work, or derivatives, for commercial purposes provided they attribute the source and apply a similar licence to their derivatives.&lt;/dd>
&lt;/dl>
&lt;p>I can see benefits and drawbacks to both these approaches as applied to a network of peer-production – the choice inevitably interacts with the motivations of the participants, the possible methods of appropriating monetary value from the enterprise and the possible de-motivating factor of one participant gaining a disproportionate monetary gain. Benkler notes &lt;cite cite="https://www.benkler.org/CoasesPenguin.PDF">(p. 70)&lt;/cite> a hybrid form of appropriation inspired by David Johnson where reputation gained in contribution to the project leads to initiation into a co-operative who jointly hold the rights to appropriate monetary gains for use of the material. As he says in the footnote &lt;cite cite="https://www.benkler.org/CoasesPenguin.PDF">“this would give contributors […] a more direct mechanism for keeping body and soul together while contributing, rather than simply awaiting for reputation gains to be translated into a contract”&lt;/cite>&lt;/p>
&lt;p>All of these factors mean nothing without contributors to the network – hence this advocacy piece. If you are involved in NLP or related fields in any way, drop me an email or make a comment on the site – let me know what you think…&lt;/p>
&lt;p>[9]: &lt;a href="https://www.neurosemantics.com/Articles/Vision-INS.htm#THE" target="_blank" rel="noopener">https://www.neurosemantics.com/Articles/Vision-INS.htm#THE&lt;/a> NEURO-SEMANTIC VISION &amp;ldquo;The Neuro-Semantic Vision&amp;rdquo;
[10]: &lt;a href="https://cyberlaw.stanford.edu/lessig/blog/" target="_blank" rel="noopener">https://cyberlaw.stanford.edu/lessig/blog/&lt;/a>
[11]: &lt;a href="https://www.devco.demon.co.uk/" target="_blank" rel="noopener">https://www.devco.demon.co.uk/&lt;/a>
[12]: &lt;a href="https://www.nlpu.com/" target="_blank" rel="noopener">https://www.nlpu.com/&lt;/a>
[13]: &lt;a href="https://www.nlpu.com/Values.html" target="_blank" rel="noopener">https://www.nlpu.com/Values.html&lt;/a>
[14]: &lt;a href="https://www.neurosemantics.com/" target="_blank" rel="noopener">https://www.neurosemantics.com/&lt;/a>
[15]: &lt;a href="https://www.neurosemantics.com/Neuro-Semantics/Society_Defined.htm" target="_blank" rel="noopener">https://www.neurosemantics.com/Neuro-Semantics/Society_Defined.htm&lt;/a> &amp;ldquo;INS Defined&amp;rdquo;
[16]: &lt;a href="https://www.creativecommons.org" target="_blank" rel="noopener">https://www.creativecommons.org&lt;/a> &amp;ldquo;Creative Commons&amp;rdquo;
[17]: &lt;a href="https://www.creativecommons.org/learn/licenses/" target="_blank" rel="noopener">https://www.creativecommons.org/learn/licenses/&lt;/a> &amp;ldquo;Licences Explained | Creative Commons&amp;rdquo;
[18]: &lt;a href="https://creativecommons.org/licenses/by-nc-sa/1.0" target="_blank" rel="noopener">https://creativecommons.org/licenses/by-nc-sa/1.0&lt;/a> &amp;ldquo;Attribution-NonCommercial-ShareAlike&amp;rdquo;
[19]: &lt;a href="https://creativecommons.org/licenses/by-sa/1.0" target="_blank" rel="noopener">https://creativecommons.org/licenses/by-sa/1.0&lt;/a> &amp;ldquo;Attribution-ShareAlike&amp;rdquo;&lt;/p></description></item><item><title>Coase's Penguin</title><link>https://www.synesthesia.co.uk/2003/01/15/coases-penguin/</link><pubDate>Wed, 15 Jan 2003 11:16:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/01/15/coases-penguin/</guid><description>&lt;p>&lt;a href="https://straddle3.net/context/" target="_blank" rel="noopener">Context weblog&lt;/a> quotes an extensive extract from &lt;a href="https://www.benkler.org/CoasesPenguin.PDF" target="_blank" rel="noopener">Coases Penguin, or, Linux and The Nature of the Firm [PDF]&lt;/a> by Yochai Benkler. Benkler explains the growth of commons-based peer production, with particular reference to the Open Source movement, and identifies why this mode of production has significant advantages over property or contract based methods of organising production when the object of production is information or culture, and where the physical capital necessary for that production computers and communications capabilities is widely distributed instead of concentrated.&lt;/p>
&lt;p>&lt;a href="https://straddle3.net/context/" target="_blank" rel="noopener">Context weblog&lt;/a> writes:&lt;/p>
&lt;blockquote>
&lt;p>For decades our common understanding of the organization of economic production has been that individuals order their productive activities in one of two ways: either as employees in firms, following the directions of managers, or as individuals in markets, following price signals. In this paper Yochai Benkler explain why we are beginning to see the emergence of a new, third mode of production, in the digitally networked environment, a mode he calls commons-based peer production. In the past three or four&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>years, public attention has focused on a fifteen-year old social-economic phenomenon in the software development world. This phenomenon, called free software or open source software, involves thousands or even tens of thousands of programmers contributing to large and small scale projects, where the central organizing principle is that the software remains free of most constraints on copying and use common to proprietary materials. No one owns the software in the traditional sense of being able to command how it is used or developed, or to control its disposition. The result has been the emergence of a vibrant, innovative and productive collaboration, whose participants are not organized in firms and do not choose their projects in response to price signals. This paper explains that while free software is highly visible, it is in fact only one example of a much broader social-economic phenomenon. Benkler suggest that we are seeing the broad and deep emergence of a new, third mode of production in the digitally networked environment. He calls this mode commons-based peer production, to distinguish it from the property- and contract-based modes of firms and markets. Its central characteristic is that groups of individuals successfully collaborate on largescale projects following a diverse cluster of motivational drives and social signals, rather than either market prices or managerial commands.&lt;/p>
&lt;p>Benkler explain why this mode has systematic advantages over markets and managerial hierarchies when the object of production is information or culture, and where the physical capital necessary for that production computers and communications capabilitiesis widely distributed instead of concentrated. In particular, this mode of production is better than firms and markets for two reasons. First, it is better at identifying and assigning human capital to information and cultural production processes. In this regard, peer production has an advantage in what Benkler call information opportunity cost. That is, it loses less information about who the best person for a given job might be than either of the other two organizational modes. Second, there are substantial increasing returns, in terms of allocation efficiency, to allowing larger clusters of potential contributors to interact with large clusters of information resources in search of new projects and opportunities for collaboration. Removing property and contract as the organizing principles of collaboration substantially reduces transaction costs involved in allowing these large clusters of potential contributors to review and select which resources to work on, for which projects, and with which collaborators. This results in the potential for substantial allocation gains. The article concludes with an overview of how these models use a variety of technological and social strategies to overcome the collective action problems usually solved in managerial and market-based systems by property, contract, and managerial commands.&lt;/p>
&lt;/blockquote></description></item><item><title>Buckminster Fuller article</title><link>https://www.synesthesia.co.uk/2003/01/10/buckminster-fuller-article/</link><pubDate>Fri, 10 Jan 2003 10:20:10 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/01/10/buckminster-fuller-article/</guid><description>&lt;p>&lt;a href="https://meta-time.com/blog/" target="_blank" rel="noopener">Internet Time Blog&lt;/a> has an interesting &lt;a href="https://meta-time.com/blog/archives/000416.html#000416" title="Internet Time Blog: Buckminster Fuller" target="_blank" rel="noopener">article&lt;/a> on Buckminster Fuller, including links to his work online, based on a talk by &lt;a href="https://www.cruzio.com/~devarco/portfolio.htm" target="_blank" rel="noopener">Bonnie DeVarco&lt;/a>. Fuller is one of those people “we’ve all heard of”, yet I’ve never read his work. A quick taste of the links, plus Bonnie’s reported summary:&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Characterizations of the man&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Leonardo da Vinci of the 20th Century&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Poet of Industrialization&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Engineer Saint&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Anti-academician&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>I Seem to be a Verb&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>I am a random element.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>I am a comprehensive anticipatory design scientist.&lt;/p>
&lt;p>&lt;strong>His thinking&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Micro-incisive and macro-inclusive&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Nothing is static; everything is dynamic&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>The importance of charting trends&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Being comprehensive rather than general&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>The importance of thinking out loud&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>The importance of INTUITION&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Dare to be naïve&lt;/p>
&lt;p>&lt;strong>Among his paradigms&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Newtonian to Einsteinian universe&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Wired to wireless&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Ephemeralization of information&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Accelerating acceleration&lt;/p>
&lt;/blockquote>
&lt;p>have convinced me I need to add to my reading list…&lt;/p></description></item><item><title>Blogging network and the neuro-semantics of trust</title><link>https://www.synesthesia.co.uk/2003/01/09/blogging-network-and-the-neuro-semantics-of-trust/</link><pubDate>Thu, 09 Jan 2003 17:38:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/01/09/blogging-network-and-the-neuro-semantics-of-trust/</guid><description>&lt;p>&lt;a href="https://www.teledyn.com/mt/" target="_blank" rel="noopener">Gary Lawrence Murphy&lt;/a> &lt;a href="https://www.teledyn.com/mt/archives/000487.html" title="TeledyN: Bridges and Bubbles" target="_blank" rel="noopener">picks up&lt;/a> the thread about Bridges and Bubbles and asks some fundamental questions about how we should evaluate the &lt;em>value&lt;/em> of each link on the graph:&lt;/p>
&lt;blockquote>
&lt;p>The bridge itself may be an accident of happenstance and bandwidth, but to grow ourselves, we’re enticed (or compelled) to test each path for inter-networked recommender bridges out from our own local space […] Seeking &lt;a href="https://www.blackbeltjones.com/work/mt/archives/000484.html" target="_blank" rel="noopener">Matt’s&lt;/a> &lt;em>glittering cave moments&lt;/em>, we cross over those bridges we find, and some of us become (by accident or design) new bridges for others. What’s important, the effect we want, arises not from the number of bridge paths, but by their quality, and it’s a totally subjective quality, and therefore unpredictable. Far from the &lt;em>networking is everything&lt;/em> approach of &lt;a href="https://www.ecademy.com/" target="_blank" rel="noopener">Thomas Power&lt;/a>, […] perhaps a more efficient strategy may be a second-order goal to cultivate relationships with connected (bridging) individuals to discover what bubbles they know but also to suss out our personal metrics of the qualities of their knowledge; as with sex, quality beats quantity&lt;/p>
&lt;/blockquote>
&lt;p>Gary goes on to link this to &lt;a href="https://www.teledyn.com/mt/archives/000271.html#000271" target="_blank" rel="noopener">earlier comments&lt;/a> he wrote about the role of trust. (and that in itself is linked to a fascinating &lt;a href="https://www.knowledgeboard.com/cgi-bin/item.cgi?id=86659&amp;amp;d=pnd#neuroeffects" target="_blank" rel="noopener">dialogue&lt;/a> on trust that Gary has contributed to on &lt;a href="https://www.knowledgeboard.com/index.html" target="_blank" rel="noopener">Knowledge Board&lt;/a>) The conversation stretches across several platforms and the interchange relevant here is between Gary and &lt;a href="https://interdependent.blogspot.com/2002_11_03_interdependent_archive.html#84051056" target="_blank" rel="noopener">Ton Zijlstra&lt;/a>&lt;/p>
&lt;p>To summarise, Gary’s key point is&lt;/p>
&lt;blockquote>
&lt;p>that ‘trust’ arises from a brainstate, an emotional sensation&lt;/p>
&lt;/blockquote>
&lt;p>whereas Ton says&lt;/p>
&lt;blockquote>
&lt;p>So if we say we trust someone, this means that we recognize a consistent pattern of behaviour, and a certain level of predictability (reputation) in the other.&lt;/p>
&lt;/blockquote>
&lt;p>Gary notes (and Ton acknowledges) that most of the participants in the Knowledge Board discussion appeared to shy away from this “animal effect” to look for “higher” reasons for trust, and goes on to suggest&lt;/p>
&lt;blockquote>
&lt;p>The more correct response is, IMHO, that while our brain colours our perceptions, humans are so blazingly successful on this planet because we can (not that we do, just that we can) transcend our physiology (when it’s appropriate!) to reach for higher conclusions.&lt;/p>
&lt;/blockquote>
&lt;p>The thing that I notice about this discussion is the Cartesian brain-vs-physiology dualism of it. IMHO looking through a systemic &lt;a href="https://www.neurosemantics.com/" target="_blank" rel="noopener">neuro-semantic&lt;/a> frame will allow us to combine both insights, perhaps leading to more clarity…&lt;/p>
&lt;p>Like all systems with feedback loops it’s easy to get caught into chicken-and-egg thinking if you ask which comes first – the somatic response or the meta-state thought structure about the value of a consistent pattern of perceived behaviour. It’s a truism in neuro-semantics that meta-states collapse very quickly into a neuro-physiological state. Unpicking this to explore (and maybe change) the higher level states is an important step to understand what is happening… Ton appears to have done that unpicking, and &lt;em>for him&lt;/em> the feeling of trust is associated with the cognitive state of &lt;em>recognising consistent behaviour&lt;/em>. Ton doesn’t mention if he actually makes his trust-based decisions on a gut feeling or whether he consciously explores the history of consistent behaviour. My guess in the absence of data is the former (but open to correction!)…&lt;/p>
&lt;p>Some questions come to mind:&lt;/p>
&lt;ul>
&lt;li>Do other people share Ton’s criteria for trust?&lt;/li>
&lt;li>What other criteria might apply?&lt;/li>
&lt;li>What evidence can we glean from online connections that might allow those criteria to be applied?&lt;/li>
&lt;li>Could we create new forms of information that would help that discrimination?&lt;/li>
&lt;li>How do we &lt;a href="https://www.neurosemantics.com/Techniques/Mind-To-Muscle.htm" target="_blank" rel="noopener">Mind-to-Muscle&lt;/a> those mental states to give an emotional signal for “online trust” that will work as a shorthand?&lt;/li>
&lt;/ul>
&lt;p>Lots more to do, and I’m sure others out there are further down the path. In the meantime perhaps we are, as Gary says, “back to clicking on pure blind faith”!&lt;/p></description></item><item><title>More on the evolving network between blogs</title><link>https://www.synesthesia.co.uk/2003/01/08/more-on-the-evolving-network-between-blogs/</link><pubDate>Wed, 08 Jan 2003 13:24:53 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/01/08/more-on-the-evolving-network-between-blogs/</guid><description>&lt;p>Euan at &lt;a href="https://www.theobviousblog.net/blog/" target="_blank" rel="noopener">The Obvious&lt;/a> sums up his view of the “blogroll or not blogroll” debate as &lt;a href="https://www.theobviousblog.net/blog/archives/000323.html#000323" title="The Obvious?: I just like following winding paths" target="_blank" rel="noopener">“I just like following winding paths”&lt;/a>.&lt;/p>
&lt;p>At the same time &lt;a href="https://interdependent.blogspot.com/" target="_blank" rel="noopener">Ton Zijlstra&lt;/a> &lt;a href="https://interdependent.blogspot.com/2002_12_29_interdependent_archive.html#86871286" target="_blank" rel="noopener">picks up&lt;/a> on various experiments with Social Network Analysis of the blogosphere and draws the important distinction between a map based on “who knows you” – i.e. an analysis of inbound links (and I would say by implication trackbacks and comments) and a map of “who you know” based on outbound links.&lt;/p>
&lt;p>This feels time to send a request to the &lt;a href="https://www.lazyweb.org/" target="_blank" rel="noopener">Lazyweb&lt;/a> – a graphical web-based tool that takes a URL and presents some kind of graphical depiction of the incoming and outgoing networks it discovers…&lt;/p>
&lt;p>&lt;strong>Updated&lt;/strong> &lt;a href="https://www.blackbeltjones.com/work/index.html" target="_blank" rel="noopener">Matt Jones&lt;/a> writes &lt;a href="https://www.blackbeltjones.com/work/mt/archives/000484.html" target="_blank" rel="noopener">Bridging The Bubbles&lt;/a> about similar ideas applied to finding the bridiging points between clusters of particular political (or other) views… amongst the sites he references is &lt;a href="https://www.orgnet.com/index.html" target="_blank" rel="noopener">Valdis Krebs’&lt;/a> analysis of booklinks on Amazon &lt;a href="https://www.orgnet.com/leftright.html" target="_blank" rel="noopener">Divided we stand? : Political patterns on the WWW&lt;/a>&lt;/p>
&lt;p>&lt;strong>Updated again&lt;/strong> Just found &lt;a href="https://tig.nareau.com/2003/01/03.html#a345" target="_blank" rel="noopener">Reputation and Conversation in Blogging and Network Topology&lt;/a> at &lt;a href="https://tig.nareau.com/" target="_blank" rel="noopener">TIG’s Corner&lt;/a> [via &lt;a href="https://doc.weblogs.com/" target="_blank" rel="noopener">Doc Searls&lt;/a>]&lt;/p>
&lt;p>&lt;strong>Update 3&lt;/strong> &lt;a href="https://www.touchgraph.com/TGGoogleBrowser.html" target="_blank" rel="noopener">GoogleBrowser&lt;/a> looks like it might be part of the way there in terms of the display…. [via &lt;a href="https://radio.weblogs.com/0114726/" target="_blank" rel="noopener">Ross Mayfield&lt;/a>]&lt;/p></description></item><item><title>The Neighbourhood</title><link>https://www.synesthesia.co.uk/2003/01/07/the-neighbourhood/</link><pubDate>Tue, 07 Jan 2003 16:13:24 +0000</pubDate><guid>https://www.synesthesia.co.uk/2003/01/07/the-neighbourhood/</guid><description>&lt;p>Thanks to &lt;a href="https://geourl.org/" target="_blank" rel="noopener">GeoURL&lt;/a> you can now see &lt;a href = "https://geourl.org/near/alt.html?p=http%3A%2F%2Fwww.synesthesia.co.uk%2Fblog%2F&amp;lat=&amp;lon=&amp;dist=500">who’s near me&lt;/a>.&lt;/p>
&lt;p>[Credit to &lt;a href="https://theobviousblog.net/blog/" target="_blank" rel="noopener">The Obvious&lt;/a> and &lt;a href="https://weblog.infoworld.com/udell/2003/01/03.html#a562" target="_blank" rel="noopener">Jon Udell&lt;/a> (amongst others) for beating me to it!]&lt;/p></description></item><item><title>Living “on purpose”</title><link>https://www.synesthesia.co.uk/2002/12/19/living-on-purpose/</link><pubDate>Thu, 19 Dec 2002 14:55:15 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/12/19/living-on-purpose/</guid><description>&lt;p>I met two very special people earlier this week. Beverley De-Gale and Orin Lewis are the founders of the &lt;a href="https://www.cursitor.com/aclt/" title="African Caribbean Leukaemia Trust - Home Page" target="_blank" rel="noopener">African Caribbean Leukaemia Trust&lt;/a>. Driven originally by the necessity of looking after their family, they have gone on to help many, many others. Not pushy, not showy, but very much people who radiate an air of being “on purpose”…&lt;/p></description></item><item><title>Personal Knowledge Publishing</title><link>https://www.synesthesia.co.uk/2002/12/19/personal-knowledge-publishing/</link><pubDate>Thu, 19 Dec 2002 13:33:18 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/12/19/personal-knowledge-publishing/</guid><description>&lt;p>Two part article (&lt;a href="https://www.knowledgeboard.com/cgi-bin/item.cgi?id=96934" title="Personal knowledge publishing and its uses in research (1/2) - 16 Dec 2002" target="_blank" rel="noopener">part 1&lt;/a>, &lt;a href="https://www.knowledgeboard.com/cgi-bin/item.cgi?ap=1&amp;amp;id=96935" title="Personal knowledge publishing and its uses in research (2/2) - 16 Dec 2002" target="_blank" rel="noopener">part 2&lt;/a>) on “Personal knowledge publishing and its uses in research” by &lt;a href="https://radio.weblogs.com/0110772/" target="_blank" rel="noopener">Sebastien Paquet&lt;/a> [via &lt;a href="https://blog.mathemagenic.com/" target="_blank" rel="noopener">Mathemagenic&lt;/a>]&lt;/p></description></item><item><title>New look, new works…</title><link>https://www.synesthesia.co.uk/2002/12/16/new-look-new-works/</link><pubDate>Mon, 16 Dec 2002 02:00:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/12/16/new-look-new-works/</guid><description>&lt;p>New look site live after much caffeine…&lt;/p>
&lt;p>Inspiration to start using &lt;a href="https://smarty.php.net/" target="_blank" rel="noopener">SMARTY&lt;/a> templates from &lt;a href="https://www.bradchoate.com/" target="_blank" rel="noopener">Brad Choate’s&lt;/a> &lt;a href="https://www.bradchoate.com/past/001041.php" target="_blank" rel="noopener">Smart templating with Moveable Type&lt;/a>.&lt;/p>
&lt;p>Germ of the idea to incorporate a &lt;a href="https://www.synesthesia.co.uk/library/" target="_blank" rel="noopener">seperate site&lt;/a> dedicated to my book collection (far from populated yet!) from &lt;a href="https://whatdoiknow.org/" target="_blank" rel="noopener">What Do I Know&lt;/a>.&lt;/p>
&lt;p>CSS hints on &lt;a href="https://glish.com/css/7.asp" target="_blank" rel="noopener">making three columns work&lt;/a> from &lt;a href="https://glish.com/css/" target="_blank" rel="noopener">glish.com&lt;/a>&lt;/p></description></item><item><title>Systems Thinking for Relationships</title><link>https://www.synesthesia.co.uk/2002/12/15/systems-thinking-for-relationships/</link><pubDate>Sun, 15 Dec 2002 12:20:40 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/12/15/systems-thinking-for-relationships/</guid><description>&lt;p>In today’s &lt;a href="https://www.observer.co.uk/magazine/" target="_blank" rel="noopener">Observer magazine&lt;/a> Andrew G Marshall &lt;a href="https://www.observer.co.uk/magazine/story/0,11913,860073,00.html" title="Guardian Unlimited Observer | Magazine | Tipping the balance" target="_blank" rel="noopener">writes&lt;/a> about his application of ideas from Malcom Gladwell’s book &lt;amazonlink asin = "0349113467">The Tipping Point&lt;/amazonlink> to the field of couples counselling.&lt;/p>
&lt;p>He believes that the systemic explanation given by Gladwell of how ideas suddenly infect a whole population can also explain how a relationship can appear to go sour overnight.&lt;/p>
&lt;blockquote>
&lt;p>[…] I always asked couples when their difficulties started, mainly to identify the classic life changes that put relationships at risk […] However, on analysing the responses, these rarely came up. In fact, most couples did not even agree on the timing of their negative tipping point – the point at which the relationship went from satisfactory to unhappy. Yet if I asked why previous major relationships had failed, the majority did refer to these substantial life changes. Could it be that we retrospectively attach big issues to a relationship breakdown because it makes sense of the big changes in our lives? […] The Tipping Point theory, however, would suggest that a build-up of what my clients call ‘stupid things’ are the real causes of marital breakdown. The key idea is that little things can make a big difference. At first sight this was profoundly depressing: my clients seemed trapped in a downward spiral where ‘forgetting to defrost the fridge’ could seed a divorce. So instead of concentrating on major issues, I decided to focus on the little things.&lt;/p>
&lt;/blockquote>
&lt;p>He goes on to give an example of a couple whose relationship seemed to be breaking down over the issue of cleaning the children’s shoes. The more she nagged about it the less he could understand what all the fuss was about. On probing their backgrounds Marshall discovered the deeper structure that lay behind this surface behaviour&lt;/p>
&lt;blockquote>
&lt;p>Julia’s father had always cleaned her shoes and therefore she believed that good fathers did the same. However, Graham had been brought up to be self-reliant and clean his own shoes&lt;/p>
&lt;/blockquote>
&lt;p>and probing further&lt;/p>
&lt;blockquote>
&lt;p>the shoes represented their attitudes to bringing up their children. She wanted to nurture them, while he wanted to make them self-sufficient&lt;/p>
&lt;/blockquote>
&lt;p>Looking at this through a n NLP and &lt;a href="https://www.neurosemantics.com/" target="_blank" rel="noopener">Neuro Semantics&lt;/a> framework this argument over apparently trivial behaviour seems firmly rooted in the value structures of the two people. For Julia the behaviour “Graham doesn’t clean the children’s shoes” was criterially equivalent to “Graham is not a good father”, a criterion that had been set up by the example of her own father.&lt;/p>
&lt;p>This sort of confusion based on the meanings assigned to behaviour seems to be (IMHO) one of the most common causes of difficulties in any relationship – professional as well as personal. If you assume that all behaviour somehow “makes sense” in the moment according to the mind frames of the person doing it then by wondering “so what do they have to believe that makes this logical” you can begin to map out the frames that are driving them.&lt;/p>
&lt;p>In the example given it seems likely (admittedly a “mindread”) that both partners shared a frame of “be a good parent” – their differences arose because Julia had a lower level frame of “nurture your children” whereas Graham’s intermediate frame was “teach your children to be self-sufficient” – both perfectly good examples of how to “be a good parent”, but also inevitably leading to the sort of conflict Marshall describes.&lt;/p>
&lt;p>A powerful approach to any sort of negotiation (and I view coaching a couple in this sort of situation as fundamentally about facilitating a negotiation between them about their values) is to help the parties find their common ground. Asking meta-stating questions such as “why is this important to you?” or “what does that mean?” helps each party map out the levels of their frames of meaning – and in my experience there is almost always significant common ground within three or four “layers”…&lt;/p>
&lt;p>When it comes to making the necessary changes, Marshall again refers back to Gladwell:&lt;/p>
&lt;blockquote>
&lt;p>The two key elements identified by Gladwell for reaching a positive tipping point are the ‘law of the few’ and the ‘stickiness factor’. The first undermines an old myth about relationships: that both halves of the couple have to want to change […] Often a couple arrives in counselling because one half, who used to be responsible for the relationship glue, has given up. Paula, a 37-year-old recruitment consultant, was typical. ‘Why should I make all the effort? Jake made no effort to fulfil my needs, so I just withdrew.’ I sympathised with both Paula and Jake: in their different ways, they both felt unappreciated. After several weeks, I threw my hands up and asked: ‘Do you want to be right or happy?’ The next week they came back smiling. Paula had been less critical of Jake, and he had been more willing to talk and listen. They had achieved a positive tipping point, but it had been up to Paula to take the initiative. However, she was so pleased, it ceased to matter that she had made 80 per cent of the initial effort, because both were now contributing equally.&lt;/p>
&lt;/blockquote>
&lt;p>This result should be no suprise if you think of a relationship as a system.&lt;/p>
&lt;p>Any cultural artefact (such as a relationship) is the result of systems of shared meaning between two or more people. If either person changes the way in which they look at the relationship it will inevitably affect their behavior – this changed behaviour will be interpreted by the other in the context of their frames and thus change their behaviour, which feeds back to the first person … and so on…&lt;/p>
&lt;p>This is why the concept of being “at cause” is so powerful – once you acknowledge that you can control your own behaviour then you can change the system of shared meaning that is the relationship.&lt;/p>
&lt;blockquote>
&lt;p>Why are some messages heard, while others fall on deaf ears? The second law, which Gladwell identifies as the ‘stickiness factor’, might explain it. Sometimes, tinkering with the way a message is delivered can make it stick. If someone is not listening to us, we find more dramatic ways to get their attention: shouting, tantrums, threats, walking out. However, small changes are often more effective. Since discovering The Tipping Point , I have spent more time getting clients to ‘reframe’ their messages to each other, rather than forever upping the same ineffective stakes.&lt;/p>
&lt;/blockquote>
&lt;p>This is a classic example of working with the feedback forces in the relationship system rather than against them.&lt;/p>
&lt;p>When we escalate our communications in the ways Marshall describes then it often triggers the very opposite of the desired response, a shortcut to a downward spiral. Again, reflecting the principle of being at cause – if what you are doing doesn’t work, try something else!&lt;/p></description></item><item><title>Update on linking blogs by category</title><link>https://www.synesthesia.co.uk/2002/12/15/update-on-linking-blogs-by-category/</link><pubDate>Sun, 15 Dec 2002 11:36:12 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/12/15/update-on-linking-blogs-by-category/</guid><description>&lt;p>Prompted by &lt;a href="https://www.benhammersley.com/" target="_blank" rel="noopener">Ben Hammersley’s&lt;/a> &lt;a href="https://www.benhammersley.com/archives/003371.html" target="_blank" rel="noopener">idea&lt;/a>, &lt;a href="https://www.sixapart.com/" target="_blank" rel="noopener">Ben Trott&lt;/a> has written the &lt;a href="https://www.sixapart.com/log/2002/12/more_like_this_.shtml" target="_blank" rel="noopener">More Like This From Others&lt;/a> script and Ben has &lt;a href="https://www.benhammersley.com/archives/003384.html#003384" title="Ben Hammersley.com: More Like This From Others, the implementation saga" target="_blank" rel="noopener">implemented&lt;/a> it… definitely something I shall look at for here, but after some other “behind-the-scenes” stuff I’m into at present… (major site redesign and technology change)&lt;/p></description></item><item><title>Categorising Blogs</title><link>https://www.synesthesia.co.uk/2002/12/13/categorising-blogs/</link><pubDate>Fri, 13 Dec 2002 10:31:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/12/13/categorising-blogs/</guid><description>&lt;p>&lt;a href="https://www.benhammersley.com/" target="_blank" rel="noopener">Ben Hammersley&lt;/a> and &lt;a href="https://azeem.azhar.co.uk/" target="_blank" rel="noopener">Azeem Azhar&lt;/a> are debating how to create a decentralised categorisation service for blogs, to support a “More Like this” sort of thing…&lt;/p>
&lt;p>*\&lt;em>*Updated**&lt;/em>&lt;/p>
&lt;p>The debate goes on – &lt;a href="https://www.benhammersley.com/" target="_blank" rel="noopener">Ben&lt;/a> &lt;a href="https://www.benhammersley.com/archives/003379.html#003379" target="_blank" rel="noopener">responds to Azeem&lt;/a> with&lt;/p>
&lt;blockquote>
&lt;p>It’s a nice idea, but I have an odd feeling about it. It just seems a bit un-emergent, not-very-decentralized, vendor-specific.&lt;/p>
&lt;/blockquote>
&lt;p>to which &lt;a href="https://azeem.azhar.co.uk/" target="_blank" rel="noopener">Azeem&lt;/a> has &lt;a href="https://azeem.azhar.co.uk/archives/000261.php" target="_blank" rel="noopener">this&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>The idea he has is that trackbacks between blogs. Without needing to know what the labels are we can “create plans of meaning”.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>One dramatic problem is this: there is no sensible relationship between categories. I may call place a post in a category called “tech” and include within it news about PDAs, XML and cool MacOS software. Ben my TB back to a post of mine and place it in the very specific category of “FOAF news”. The plane of meaning is lost, or it has gone through a messy wormhole.&lt;/p>
&lt;/blockquote>
&lt;p>Azeem envisages:&lt;/p>
&lt;blockquote>
&lt;p>[…] &lt;a href="https://www.monkeyx.com/archives/www_semantic_web/categorisation_server.html" target="_blank" rel="noopener">a public service categorisation engine.&lt;/a> These would have a number of requirements:&lt;/p>
&lt;ul>
&lt;li>creation of many, multi-faceted taxonomies–to ensure they are decentralised, vendor-independent […]&lt;/li>
&lt;li>a way of looking at a blog posting (with its cues and clues) and spitting out a set of suggested categories&lt;/li>
&lt;/ul>
&lt;p>The first (taxonomies) is tough. I am not a taxonomy expert. That is the area of &lt;a href="https://www.iaslash.org/" target="_blank" rel="noopener">IAs&lt;/a>. However, the design of standards-based taxonomies is &lt;a href="https://www.boxesandarrows.com/archives/all_about_facets_controlled_vocabularies.php" target="_blank" rel="noopener">well-understood&lt;/a> and almost a mature business. There are a number of publically available ones out there. Let’s assume we can find a decentralised way to create many taxonomies. (Big assumption).&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>The second element is the service itself. It is simply a remote services call. I send the blog post with whatever clues I can (such as posts I am tracking-back to or URLs in the post) and it figures out several candidate categories the post could be in. It could also figure out sites which might want to receive a track-back or a ping about that particular posting.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>I have a few more thoughts on this. In particular, how we can create a market for taxonomy definition allowing multiple taxonomies to emerge, what cues you could use to generate category (and “others who might like to see this” information) …&lt;/p>
&lt;/blockquote>
&lt;p>***&lt;/p>
&lt;p>&lt;a href="https://www.benhammersley.com/" target="_blank" rel="noopener">Ben Hammersley&lt;/a> wrote a couple of days ago about &lt;a href="https://www.benhammersley.com/archives/003371.html#003371" title="Ben Hammersley.com: Trackback, RDF, and the LazyWeb" target="_blank" rel="noopener">Trackback, RDF, and the LazyWeb&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>Here’s the thing: I want to make a More Like This From Others button for each of the entries below. Clicking on it would bring a list of entries, formatted just like the blog, with excerpts of entries on a similar subject from other people. […] So here’s what I’d like. Movable Type blogs now automatically create trackbacks when they can. These trackbacks contain RDF, denoting the category the MT blog has that category within. MT produces RDF indexes too (in the flavour of RSS 1.0). So, what I want is a little app that takes the trackback. Follows it back to the originating site, find the RDF snippet, takes the index.rdf, and gives back all the entries within the index.rdf that are on the same subject as the trackback one.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;a href="https://azeem.azhar.co.uk/" target="_blank" rel="noopener">Azeem Azhar&lt;/a> &lt;a href="https://azeem.azhar.co.uk/archives/000261.php" title="azeem.azhar.co.uk: Auto trackback and categorising blogs" target="_blank" rel="noopener">responds&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>There are two problems to overcome:&lt;/p>
&lt;ul>
&lt;li>People are notoriously bad at categorising things accurately or consistently&lt;/li>
&lt;li>Predefined controlled vocabularies ensure consistency but laziness or uncertainty by authors means these CVs are rarely used well, unless financial incentives are attached.&lt;/li>
&lt;/ul>
&lt;p>[…]&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>So what I would like? When I author a blog post to be able to submit it to a categorisation server. This server to perform analysis on the content, analysis on my context (what it already knows about me), analysis on the context of the blog post (what URLs am I quoting, what am I tracking back to, and analyses of those posts) to provide suggested categories which I can select.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>The categories would need to come from an agreed set of taxonomies. DMoz might be one taxonomy but you would need very many more (geographical ones, directed, standardised efforts like the MeSH, or perhaps they could be created by examining and analysis all the categories contained in RSS feeds collected by the method Ben suggests.)&lt;/p>
&lt;/blockquote>
&lt;p>There are further useful ideas in the comments to &lt;a href="https://www.benhammersley.com/archives/003371.html#003371" target="_blank" rel="noopener">Ben’s post&lt;/a>, including contributions from &lt;a href="https://weblog.burningbird.net/" target="_blank" rel="noopener">Burningbird&lt;/a>, &lt;a href="https://philringnalda.com/" target="_blank" rel="noopener">Phil Ringnalda&lt;/a> and &lt;a href="https://www.intertwingly.net/blog/" target="_blank" rel="noopener">Sam Ruby&lt;/a>&lt;/p></description></item><item><title>Excellent Project Management Site</title><link>https://www.synesthesia.co.uk/2002/12/09/excellent-project-management-site/</link><pubDate>Mon, 09 Dec 2002 01:06:30 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/12/09/excellent-project-management-site/</guid><description>&lt;p>Just found Hal Macomber’s excellent &lt;a href="https://weblog.halmacomber.com/" title="Reforming Project Management" target="_blank" rel="noopener">Reforming Project Management&lt;/a> blog. Some recent entries: &lt;a href="https://weblog.halmacomber.com/2002_10_13_archive.html#85563484" target="_blank" rel="noopener">Story-telling Reforms the Project&lt;/a>, and several entries &lt;a href="https://weblog.halmacomber.com/2002_10_27_archive.html#85609223" target="_blank" rel="noopener">1&lt;/a> &lt;a href="https://weblog.halmacomber.com/2002_10_27_archive.html#85611709" target="_blank" rel="noopener">2&lt;/a> &lt;a href="https://weblog.halmacomber.com/2002_10_27_archive.html#85615556" target="_blank" rel="noopener">3&lt;/a> &lt;a href="https://weblog.halmacomber.com/2002_10_27_archive.html#85619607" target="_blank" rel="noopener">4&lt;/a> &lt;a href="https://weblog.halmacomber.com/2002_10_27_archive.html#85623288" target="_blank" rel="noopener">5&lt;/a> &lt;a href="https://weblog.halmacomber.com/2002_10_27_archive.html#85630799" target="_blank" rel="noopener">6&lt;/a> &lt;a href="https://weblog.halmacomber.com/2002_11_03_archive.html#85639874" target="_blank" rel="noopener">7&lt;/a> about Koskela’s and Howellls paper &lt;a href="https://www.leanconstruction.org/pdf/ObsoleteTheory.pdf" target="_blank" rel="noopener">The Underlying Theory of Project Management is Obsolete&lt;/a>&lt;/p>
&lt;p>[via &lt;a href="https://geodog.thebishop.net/" target="_blank" rel="noopener">GeoDog&lt;/a> ]&lt;/p></description></item><item><title>XFML</title><link>https://www.synesthesia.co.uk/2002/12/05/xfml/</link><pubDate>Thu, 05 Dec 2002 00:59:04 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/12/05/xfml/</guid><description>&lt;p>&lt;a href="xfml.xml">&lt;img alt="XFML map of this site" src="https://www.synesthesia.co.uk/blog/images/xfml.gif" width="36" height="14" border="0" />&lt;/a>&lt;/p>
&lt;p>I’ve added an &lt;a href="https://www.xfml.org/" target="_blank" rel="noopener">XFML&lt;/a> &lt;a href="https://www.synesthesia.co.uk/blog/xfml.xml" target="_blank" rel="noopener">feed&lt;/a> to the syndication outputs of the site.&lt;/p>
&lt;p>You can see a &lt;a href="https://facetmap.com/index.jsp" target="_blank" rel="noopener">FacetMap&lt;/a> view of this site &lt;a href="https://facetmap.com/demo/browse.jsp?map=synesthesia" target="_blank" rel="noopener">here&lt;/a>&lt;/p>
&lt;p>MT template from &lt;a href="https://poorbuthappy.com/ease/000494.html" target="_blank" rel="noopener">Ease&lt;/a>&lt;/p>
&lt;p>Original &lt;a href="https://www.benhammersley.com/archives/002988.html#002988" target="_blank" rel="noopener">pointer&lt;/a> to XFML from &lt;a href="https://www.benhammersley.com/" target="_blank" rel="noopener">Ben Hammersley&lt;/a>&lt;/p></description></item><item><title>Doctors on the cheap</title><link>https://www.synesthesia.co.uk/2002/11/28/doctors-on-the-cheap/</link><pubDate>Thu, 28 Nov 2002 12:20:35 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/28/doctors-on-the-cheap/</guid><description>&lt;p>Nayeem Azim is a doctor. He’s also a refugee from Afghanistan. He describes how after re-qualifying to practice in the UK he has &lt;a href="https://news.bbc.co.uk/1/hi/uk/2516797.stm" title="BBC NEWS | UK | Training the refugee doctors" target="_blank" rel="noopener">set up an online college to train other refugee doctors.&lt;/a> After their first year they have helped 46 doctors to re-qualify to work in the UK, at an average cost of 5,000 UKP per head. Training a doctor from scratch costs ~ 250,000 UKP. He says:&lt;/p>
&lt;blockquote>
&lt;p>Why have we been successful?&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Doctors are people who want to work. They are incredibly productive and dedicated to helping society.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>When they became refugees, they lost a great part of their identity. For them to be sitting on benefits is utterly demoralising. So when they’re given a chance to work for the good of society, they will do&lt;/p>
&lt;/blockquote>
&lt;p>[ via &lt;a href="https://news.bbc.co.uk" target="_blank" rel="noopener">BBC News&lt;/a>]&lt;/p></description></item><item><title>Leisure Sickness</title><link>https://www.synesthesia.co.uk/2002/11/26/leisure-sickness/</link><pubDate>Tue, 26 Nov 2002 20:44:57 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/26/leisure-sickness/</guid><description>&lt;p>&lt;a href="https://www.guardian.co.uk/health/story/0,3605,847668,00.html" target="_blank" rel="noopener">Article in the Guardian&lt;/a> on &lt;a href="mailto:Vingerhoets@kub.nl">Ad Vingerhoets’&lt;/a> research into people who get ill whenever they stop work… Other work published by Vingerhoets is &lt;a href="https://www.kub.nl/webwijs/english/pub.html?anr=824186&amp;amp;lang=en" target="_blank" rel="noopener">listed here&lt;/a>&lt;/p></description></item><item><title>Links on FOAF and RDF</title><link>https://www.synesthesia.co.uk/2002/11/26/links-on-foaf-and-rdf/</link><pubDate>Tue, 26 Nov 2002 19:46:36 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/26/links-on-foaf-and-rdf/</guid><description>&lt;p>Been reading up on FOAF and RDF generally – here are some links for my own reference.&lt;/p>
&lt;p>&lt;a href="https://www-106.ibm.com/developerworks/xml/library/x-foaf.html" target="_blank" rel="noopener">XML Watch: Finding friends with XML and RDF&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://rdfweb.org/foaf/" target="_blank" rel="noopener">FOAF project homepage&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://xmlns.com/foaf/0.1/" target="_blank" rel="noopener">RDFWeb: FOAF vocabulary&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www.ldodds.com/foaf/foaf-a-matic.html" target="_blank" rel="noopener">FOAF-a-matic&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www-106.ibm.com/developerworks/library/w-rdf/" target="_blank" rel="noopener">Introduction to RDF&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www-106.ibm.com/developerworks/xml/library/x-think4/index.html" target="_blank" rel="noopener">Thinking XML: Basic XML and RDF techniques for knowledge management, Part 1&lt;/a> (with links to parts 2-6)&lt;/p>
&lt;p>&lt;a href="https://dmoz.org/Reference/Libraries/Library_and_Information_Science/Technical_Services/Cataloguing/Metadata/RDF/" target="_blank" rel="noopener">RDF Resources on dmoz.org&lt;/a>&lt;/p>
&lt;p>Ben Hammersley’s &lt;a href="https://rss.benhammersley.com/" target="_blank" rel="noopener">Content Syndication with XML and RSS Blog&lt;/a>&lt;/p>
&lt;p>Ian Davis’s &lt;a href="https://internetalchemy.org/2002/11/tinyFOAFImage.html" target="_blank" rel="noopener">FOAF Buttons&lt;/a>&lt;/p></description></item><item><title>Weblog metadata</title><link>https://www.synesthesia.co.uk/2002/11/15/weblog-metadata/</link><pubDate>Fri, 15 Nov 2002 14:45:42 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/15/weblog-metadata/</guid><description>&lt;p>&lt;a href="https://www.wmdi.org/archives/001390.html#001390" target="_blank" rel="noopener">The Weblog MetaData Initiative: Next Step: HTML [meta] Experiment&lt;/a>. [&lt;/p>
&lt;p>N.Z. Bear]&lt;a href="https://www.truthlaidbear.com/" target="_blank" rel="noopener">2&lt;/a> says:&lt;/p>
&lt;blockquote>
&lt;p>We’ve had a great deal of useful and productive discussion in the forum, but it seems that some practical experimentation would be of use to us as well at this point. We seem to have reached a rough consensus on what data we want to track — and are getting bogged down in the many, many possible approaches of how to track it.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>At Dean’s suggestion, I’ve gone ahead and taken a rather quick-and-dirty approach to our encoding problem. I’ve developed a specification which shows how to encode our general schema’s metadata using only HTML [meta] tags. Along the way, I’ve also “Dublin Core-ized” our data schema, and tried to use DC tags wherever possible and appropriate.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>What we’d like to do is get several (as many as possible) volunteers to apply this specification to their own weblogs, thereby beginning to actually ‘publish’ real metadata. At the same time, we call on everyone who is codingly-inclined to begin examining approaches for grabbing, parsing, slicing, dicing and presenting back this very same metadata.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>In other words, enough talk. Let’s do some hacking.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Please note that this does not imply an end to our discussions on appropriate encoding formats for the final specification. Depending on what we learn through this experiment, we may decide tags are one of many encodings we support, or perhaps decide they are unworkable entirely. But I think we’ll learn a great deal by the attempt. (And to be frank, I personally believe we’ll be best served by supporting many encoding formats, and only strictly dictating the actual data to be tracked itself. But that’s a discussion for another day).&lt;/p>
&lt;/blockquote>
&lt;p>[ via &lt;a href="https://www.highcontext.com/" target="_blank" rel="noopener">David Gammel&lt;/a>]&lt;/p></description></item><item><title>K-Logging Pilot</title><link>https://www.synesthesia.co.uk/2002/11/12/k-logging-pilot/</link><pubDate>Tue, 12 Nov 2002 20:33:17 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/12/k-logging-pilot/</guid><description>&lt;p>&lt;a href="https://www.rklau.com/tins/" target="_blank" rel="noopener">Rick Klau&lt;/a> &lt;a href="https://www.rklau.com/tins/stories/2002/11/11/klogPilotRecap.html" title="K-Log Pilot Recap" target="_blank" rel="noopener">recaps&lt;/a> on experiences introducing Knowledge-logging into his company, with a pilot group of 12 users (out of 125 people in the company)&lt;/p>
&lt;p>[via &lt;a href="https://dijest.com/aka/" target="_blank" rel="noopener">a klog apart&lt;/a>]&lt;/p>
&lt;p>He says that the lessons learned were:&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Have a problem to solve.&lt;/strong> Just telling people “things will be better” when they don’t know that there’s a problem is tricky. As mentioned above, weblogs are many things to many people. In our pilot, we started out by simply saying we wanted to see if people found them useful. In other words – we weren’t trying to solve a problem.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&lt;strong>Reward participation.&lt;/strong> A number of people stated that they had trouble working blogging into their daily routine – that they had a number of other priorities competing for their time. Not surprisingly, they tended to gravitate to things for which they received recognition. A successful deployment of a k-log will need effective rewards to help reinforce the desirability of participation.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&lt;strong>Define what you’re looking for.&lt;/strong> This is related to the first point, but I think it’s important enough to discuss on its own. I was surprised at the number of people who understood conceptually what the weblog did but who were still unclear on what they could contribute. People are very used to a fairly formal communications format – and weblogs are highly unstructured. Without a focus, inertia seemed to dominate.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&lt;strong>Ensure senior participation.&lt;/strong> I tend to believe that grass-roots KM is the most difficult to achieve. When a program like this is supported from the top down, people are more likely going to appreciate the importance of the project – and appreciate the connection between the project and the company’s overall success. If we are to increase the k-log’s success, we will need to involve more of the senior management team..&lt;/p>
&lt;/blockquote></description></item><item><title>The Power of Difference</title><link>https://www.synesthesia.co.uk/2002/11/12/the-power-of-difference/</link><pubDate>Tue, 12 Nov 2002 17:05:02 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/12/the-power-of-difference/</guid><description>&lt;p>&lt;a href="https://www.carbon-unit.blogspot.com/" target="_blank" rel="noopener">SynapShots&lt;/a> cites &lt;a href="https://www.pfdf.org/leaderbooks/L2L/winter2002/meyerson.html" title="Everyday Leaders: The Power of Difference -- Debra Meyerson full-text article" target="_blank" rel="noopener">Everyday Leaders: The Power of Difference&lt;/a> by &lt;a href="https://www.pfdf.org/leaderbooks/meyerson/index.html" target="_blank" rel="noopener">Debra Meyerson&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>“Nearly everyone feels at odds with the organizations they work for at one time or another. Managers who are also parents struggle to succeed — and be there for their families — in companies that don’t offer flextime. Women and people of color want to open doors for others like themselves — without limiting their own career paths. Teachers want to motivate students and make their material relevant in schools or school districts that require strict adherence to curriculum. Environmentally conscious workers seek to act on their values and climb the executive ladder at firms more concerned with profits than pollution  I have spent more than a decade studying people like these, men and women who want to succeed in their organizations, yet want to live by their values, ideals, and identities, even if they are somehow at odds with the dominant culture of their organizations. Rather than assimilate away their differences or leave because of them, the people I studied take a middle road, constantly balancing between the pulls of conformity and rebellion, and many opt to use their difference as a fulcrum of learning and change. I call these individuals tempered radicals. In my book &lt;amazonlink asin="0875849059">Tempered Radicals: How People Use Difference to Inspire Change at Work&lt;/amazonlink> [2001], I describe in detail how tempered radicals make organizational change. In this article, I focus on their importance as leaders.”&lt;/p>
&lt;/blockquote></description></item><item><title>The Law of Leaky Abstractions</title><link>https://www.synesthesia.co.uk/2002/11/12/the-law-of-leaky-abstractions/</link><pubDate>Tue, 12 Nov 2002 10:41:03 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/12/the-law-of-leaky-abstractions/</guid><description>&lt;p>&lt;a href="https://www.joelonsoftware.com/index.html" target="_blank" rel="noopener">Joel On Software&lt;/a>   &lt;a href="https://www.joelonsoftware.com/articles/LeakyAbstractions.html" target="_blank" rel="noopener">says&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>“learn how to do it manually first, then use the wizzy tool to save time”&lt;/p>
&lt;/blockquote>
&lt;p>The article is about software writing, but I reckon it’s generalisable to any form of technology…&lt;/p>
&lt;blockquote>
&lt;p>Code generation tools which pretend to abstract out something, like all abstractions, leak, and the only way to deal with the leaks competently is to learn about how the abstractions work and what they are abstracting. So the abstractions save us time working, but they don’t save us time learning.&lt;/p>
&lt;/blockquote>
&lt;p>[via &lt;a href="https://www.intertwingly.net/blog/" target="_blank" rel="noopener">Sam Ruby&lt;/a>]&lt;/p></description></item><item><title>KM and learning</title><link>https://www.synesthesia.co.uk/2002/11/11/km-and-learning/</link><pubDate>Mon, 11 Nov 2002 21:57:21 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/11/km-and-learning/</guid><description>&lt;p>Just found Lilia Efimova’s site &lt;a href="https://blog.mathemagenic.com/" target="_blank" rel="noopener">Mathemagenic&lt;/a>. Interesting selection of articles on Knowledge Management and Learning. Here are a few:&lt;/p>
&lt;p>&lt;a href="https://blog.mathemagenic.com/2002/11/08.html#a334" target="_blank" rel="noopener">Citing Styles&lt;/a>, &lt;a href="https://blog.mathemagenic.com/2002/11/02.html#a317" target="_blank" rel="noopener">Baking knowledge into the work processes of high-end professionals&lt;/a>, &lt;a href="https://blog.mathemagenic.com/2002/10/30.html#a311" target="_blank" rel="noopener">Why Blogging 2&lt;/a>, &lt;a href="https://blog.mathemagenic.com/2002/10/25.html#a303" target="_blank" rel="noopener">Blog as a learning tool&lt;/a>, &lt;a href="https://blog.mathemagenic.com/2002/10/10.html#a271" target="_blank" rel="noopener">Corporate objectives and learner-centered learning&lt;/a>.&lt;/p>
&lt;p>And one that struck a chord with me: &lt;a href="https://blog.mathemagenic.com/2002/10/09.html#a268" target="_blank" rel="noopener">It takes courage to blog&lt;/a>&lt;/p></description></item><item><title>Bluetooth Luggage</title><link>https://www.synesthesia.co.uk/2002/11/11/bluetooth-luggage/</link><pubDate>Mon, 11 Nov 2002 20:55:41 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/11/bluetooth-luggage/</guid><description>&lt;p>Samsonsite’s &lt;a href="https://www.samsonite.com/hardlite/flash/site.html" title="Hardlite" target="_blank" rel="noopener">Bluetooth-enabled luggage&lt;/a>&lt;/p>
&lt;p>[via &lt;a href="https://boingboing.net/" target="_blank" rel="noopener">Boingboing&lt;/a>]&lt;/p></description></item><item><title>PHP Blogroll</title><link>https://www.synesthesia.co.uk/2002/11/11/php-blogroll/</link><pubDate>Mon, 11 Nov 2002 01:30:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/11/php-blogroll/</guid><description>&lt;p>Added Phil Ringnalda’s &lt;a href="https://philringnalda.com/phpblogroll/" title="PHP blogroll" target="_blank" rel="noopener">PHP blogroll&lt;/a> to the site.&lt;/p></description></item><item><title>Quantum Theory of Trust</title><link>https://www.synesthesia.co.uk/2002/11/10/quantum-theory-of-trust/</link><pubDate>Sun, 10 Nov 2002 19:15:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/10/quantum-theory-of-trust/</guid><description>&lt;p>&lt;a href="https://www.strategy-business.com/" target="_blank" rel="noopener">Strategy+Business&lt;/a> have an article by Art Kleiner on &lt;a href="https://www.strategy-business.com/press/prnt/?ptag-ps=&amp;amp;art=9056282&amp;amp;pg=0&amp;amp;format=print" title="Karen Stephenson&amp;#39;s Quantum Theory of Trust" target="_blank" rel="noopener">Karen Stephenson’s Quantum Theory of Trust&lt;/a> &lt;em>(registration required)&lt;/em> (via &lt;a href="https://radio.weblogs.com/0114726/" target="_blank" rel="noopener">Ross Mayfield&lt;/a>)&lt;/p>
&lt;blockquote>
&lt;p>Think back to a conversation you had months ago with someone you know well enough to trust, but with whom you havent spoken since. Chances are youll remember only vague outlines of the exchange. Call the person and raise the same subject again, though, and more likely than not, the two of you will find yourselves picking up where you left off, remembering the details of significance and expanding into new areas.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>To Karen Stephenson, a maverick yet influential social network theorist, the association between trust and learning is an instrument of vast, if frequently untapped, organizational power. The act of reconnecting and talking with a trusted colleague generally triggers a resurgence of mutual memory, opening the gates to fresh learning and invention. This phenomenon, Professor Stephenson contends, is just one example of the direct cognitive connection between the amount of trust in an organization and its members ability to develop and deploy tacit knowledge together. Because networks of trust release so much cognitive capability, they can (and often do) have far more influence over the fortunes and failures of companies from day to day and year to year than the official hierarchy.&lt;/p>
&lt;/blockquote>
&lt;p>Professor Stephenson identifies three key roles in organisational networks:&lt;/p>
&lt;dl>
&lt;dt>Hubs&lt;/dt>
&lt;dd>These people – “Connectors” as Malcolm Gladwell terms them – are the kind of person who becomes a gathering and sharing point for critical information&lt;/dd>
&lt;dt>Pulsetakers&lt;/dt>
&lt;dd>Pulsetakers, says Professor Stephenson, carefully cultivate relationships that allow them to monitor the ongoing health and direction of the organization. Its not always easy to tell who the pulsetakers are. Even I, after 30 years of research, cant see them by staring at the diagrams, she says. You can only detect them through the mathematics  by which she means the algorithmic analysis of survey data.A pulsetakers patterns of connection show a distinct mathematical pattern, with links that are relatively sparse, but frequently used and diverse. Every now and then someone gets colloquially recognized as the first to sense changes in the wind, and to intervene in subtle but powerful ways.&lt;/dd>
&lt;dt>Gatekeepers&lt;/dt>
&lt;dd>Gatekeepers are information bottlenecks, controlling the flow of contact to a particular part of the organization, thus making themselves indispensable.&lt;/dd>
&lt;/dl>
&lt;p>The article quotes Malcolm Gladwell:&lt;/p>
&lt;blockquote>
&lt;p>My whole thesis is that certain people play critical networking roles, says Mr. Gladwell. Karen can actually go to a company and point them out. And yet her work is quite subversive in a certain way. Its hard to accept the idea that there are people who play critical roles who dont show up on the organization chart. Ive never heard anyone say, This person is a powerful networker, and deserves a raise. But Karen gives us a tool for measuring the contribution of these social types.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>In any culture, says Karen Stephenson, there are at least six core layers of knowledge, each with its own informal network of people exchanging conversation. Everybody moves in all the networks, but different people play different roles in each; a hub in one may be a gatekeeper in another. The questions listed here are not the precise questions used in surveys. These vary on the basis of the needs of each workplace and other research considerations (Dont try this at home, says Professor Stephenson), but they show the basic building blocks of an organizations cultural makeup.&lt;/p>
&lt;/blockquote>
&lt;TABLE cellSpacing=0 cellPadding=4 width="100%" border=0>
&lt;TD bgColor=#ff9900>
&lt;P class=articletextbold>**Six Varieties of Knowledge Networks**&lt;/P>&lt;/TD>
&lt;TD bgColor=#fff0d9>
&lt;P class=articletext>&lt;/P>
&lt;P class=articletext>&lt;SPAN class=articletextbold>**1. The Work Network.** &lt;/SPAN>(With whom do you exchange information as part of your daily work routines?) The everyday contacts of routinized operations represent the habitual, mundane resting pulse of a culture. The functions and dysfunctions; the favors and flaws always become evident here, says Professor Stephenson.&lt;/P>
&lt;P class=articletext>&lt;SPAN class=articletextbold>**2. The Social Network.** &lt;/SPAN>(With whom do you check in, inside and outside the office, to find out what is going on?) This is important primarily as an indicator of the trust within a culture. Healthy organizations are those whose numbers fall within a normative range, with enough social tensile strength to withstand stress and uncertainty, but not so much that they are overdemanding of peoples personal time and invested social capital.&lt;/P>
&lt;P class=articletext>&lt;SPAN class=articletextbold>**3. The Innovation Network.** &lt;/SPAN>(With whom do you collaborate or kick around new ideas?) There is a guilelessness and childlike wonderment to conversations conducted in this network, as people talk openly about their perceptions, ideas, and experiments. For instance, Why do we use four separate assembly lines where three would do? Or, Hey, lets try it and see what happens! Key people in this network take a dim view of tradition and may clash with the keepers of corporate lore and expertise, dismissing them as relics.&lt;/P>
&lt;P class=articletext>&lt;SPAN class=articletextbold>**4. The Expert Knowledge Network.** &lt;/SPAN>(To whom do you turn for expertise or advice?) Organizations have core networks whose key members hold the critical and established, yet tacit, knowledge of the enterprise. Like the Coca-Cola formula, this kind of knowledge is frequently kept secret. Key people in this network are often threatened by innovation; theyre likely to clash with innovators and think of them as undisciplined.&lt;/P>
&lt;P class=articletext>&lt;SPAN class=articletextbold>**5. The Career Guidance or Strategic Network.** &lt;/SPAN>(Whom do you go to for advice about the future?) If people tend to rely on others in the same company for mentoring and career guidance, then that in itself indicates a high level of trust. This network often directly influences corporate strategy; decisions about careers and strategic moves, after all, are both focused on the future.&lt;/P>
&lt;P class=articletext>&lt;SPAN class=articletextbold>**6. The Learning Network.** &lt;/SPAN>(Whom do you work with to improve existing processes or methods?) Key people in this network may end up as bridges between hubs in the expert and innovation networks, translating between the old guard and the new. Since most people are afraid of genuine change, this network tends to lie dormant until the change awakens a renewed sense of trust. It takes a tough kind of love, says Professor Stephenson, to entrust people to tell you what they know about your established habits, rules, and practices.&lt;/P>&lt;/TD>&lt;/TABLE></description></item><item><title>A taste of Neuro-Linguistic Programming</title><link>https://www.synesthesia.co.uk/2002/11/10/a-taste-of-neuro-linguistic-programming/</link><pubDate>Sun, 10 Nov 2002 15:30:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/10/a-taste-of-neuro-linguistic-programming/</guid><description>&lt;p>Moving longer articles from old site. Here ( as a &lt;a href="https://www.synesthesia.co.uk/blog/docs/tasteofNLP.pdf" target="_blank" rel="noopener">PDF&lt;/a> file) is a piece I wrote a couple of years ago to serve as a general introduction to NLP.&lt;/p></description></item><item><title>Internet and Democracy</title><link>https://www.synesthesia.co.uk/2002/11/10/internet-and-democracy/</link><pubDate>Sun, 10 Nov 2002 00:50:43 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/10/internet-and-democracy/</guid><description>&lt;p>It’s a few days old, but &lt;a href="mailto:tom@demos.co.uk">Tom Bentley&lt;/a> wrote in The Guardian &lt;a href="https://www.observer.co.uk/comment/story/0,6903,824915,00.html" target="_blank" rel="noopener">You can’t impose democracy from above&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>[…] democracy in Britain is in crisis […] we need to understand that the idea that genuine democracy can be advanced simply by creating more formal rights, more freedoms, more procedural rules, is fundamentally misguided […] compare this to Lewisham Listens, an internet based consultation programme for young people run by a London borough […] We should be looking, not at the formal institutional structure but more at the informal spread of relationships, conversations and ideas. The technology and the organisational structure make it possible, but they are not the democracy […] These new processes of interaction do not achieve change unless they are connected to the use of power; that is why formal politics continues to matter. But it is the connections between institutional function and everyday behaviour that generate the potential for change, not the properties of the institutions themselves&lt;/p>
&lt;/blockquote></description></item><item><title>More Site tweaks</title><link>https://www.synesthesia.co.uk/2002/11/09/more-site-tweaks/</link><pubDate>Sat, 09 Nov 2002 21:24:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/09/more-site-tweaks/</guid><description>&lt;p>Added email link to entry footer&lt;/p>
&lt;p>Tweaked comments templates to keep email addresses hidden&lt;/p>
&lt;p>Turned on trackbacks for most recent imported entries, and enabled by default for new ones.&lt;/p>
&lt;p>Updated blogroll&lt;/p>
&lt;p>Added Amazon wishlist to sidebar&lt;/p>
&lt;p>Added wanderlust button, BloggingBrits webring code, blogsnob&lt;/p>
&lt;p>sorted div bug on archive pages&lt;/p>
&lt;p>Added sitemeter&lt;/p>
&lt;p>Updated Individual entry archives using &lt;a href="https://kalsey.com/blog/2002/07/related_entries_plugin.stm" target="_blank" rel="noopener">Related Entries Plugin&lt;/a> from Kalsey Consulting&lt;/p>
&lt;p>Updated Monthly Archive template&lt;/p>
&lt;p>Updated Category Archive template&lt;/p>
&lt;p>Installed the spiffy &lt;a href="https://www.bradchoate.com/past/mtmacros.php" target="_blank" rel="noopener">MTMacros&lt;/a> and have used it to clean up book entries&lt;/p></description></item><item><title>Site up</title><link>https://www.synesthesia.co.uk/2002/11/09/site-up/</link><pubDate>Sat, 09 Nov 2002 03:24:12 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/11/09/site-up/</guid><description>&lt;p>OK, I’ve imported all my old stuff and made sure the basics work.&lt;/p>
&lt;p>Still to do:&lt;/p>
&lt;p>Category archive template tweaks&lt;/p>
&lt;p>new stylesheet&lt;/p>
&lt;p>finish checking old entries&lt;/p>
&lt;p>sort out trackbacks.&lt;/p></description></item><item><title>UK ISPs stand up to Home Office plans</title><link>https://www.synesthesia.co.uk/2002/10/22/uk-isps-stand-up-to-home-office-plans/</link><pubDate>Tue, 22 Oct 2002 10:55:34 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/10/22/uk-isps-stand-up-to-home-office-plans/</guid><description>&lt;p>The Guardian &lt;a href="https://www.guardian.co.uk/internetnews/story/0,7369,816523,00.html" target="_blank" rel="noopener">reports&lt;/a> that the Internet Service Providers Association has written to David Blunkett:&lt;/p>
&lt;blockquote>
&lt;p>“[…] refusing to sign up to plans to give law enforcement agencies access to the records of British web and email users […] the Guardian has learned that internet service providers have told the Home Office that they will not voluntarily stockpile the personal records of their customers for long periods […] The apparent collapse of the negotiations may leave Mr Blunkett facing a choice between using his reserved powers under the legislation to force internet providers to comply or dropping the measure in response to political and political opposition […]”&lt;/p>
&lt;/blockquote></description></item><item><title>Saturday night, London Town</title><link>https://www.synesthesia.co.uk/2002/10/20/saturday-night-london-town/</link><pubDate>Sun, 20 Oct 2002 19:34:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/10/20/saturday-night-london-town/</guid><description>&lt;p>First a play:&lt;/p>
&lt;p>&lt;a href="https://www.nationaltheatre.org.uk/productions/rd/vincentinbrixton042002.html" target="_blank" rel="noopener">Vincent in Brixton&lt;/a> at Wyndham’s Theatre…. excellent – especially Jochum ten Haaf and Clare Higgins in the lead roles…&lt;/p>
&lt;p>And then some music:&lt;/p>
&lt;p>&lt;a href="https://www.ericblakely.com/" target="_blank" rel="noopener">Eric Blakely&lt;/a> at the &lt;a href="https://www.12barclub.com/" target="_blank" rel="noopener">12 Bar Club&lt;/a>. First time I’ve seen a band at this (very) small venue – but Blakely with his Austin-based guitar/blues/country was an excellent intro to the space.&lt;/p></description></item><item><title>More on Network Organisations</title><link>https://www.synesthesia.co.uk/2002/10/15/more-on-network-organisations/</link><pubDate>Tue, 15 Oct 2002 10:20:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/10/15/more-on-network-organisations/</guid><description>&lt;p>Paolo Valdemarin &lt;a href="https://paolo.evectors.it/2002/10/11.html#a1020" target="_blank" rel="noopener">flags&lt;/a> two links on network organisations. The &lt;a href="https://www.semanticstudios.com/publications/semantics/sna.html" target="_blank" rel="noopener">first&lt;/a> is one I &lt;a href="https://www.synesthesia.co.uk/blog/archives/organisations/000018.html#000018" target="_blank" rel="noopener">blogged&lt;/a> back in April. The second – &lt;a href="https://orgnet.com/" target="_blank" rel="noopener">orgnet.com&lt;/a> – is partly an advert for some software and services from Valdis Krebs, but has lots of links to case studies. If you follow the one about &lt;a href="https://orgnet.com/Erdos.html" target="_blank" rel="noopener">Paul Erdõs&lt;/a> you will also find a link to a PDF of Ron Burt’s book chapter on &lt;a href="https://gsbwww.uchicago.edu/fac/ronald.burt/research/NSSC.pdf" target="_blank" rel="noopener">The Network Nature of Social Capital&lt;/a>&lt;/p></description></item><item><title>Minds and stuff…</title><link>https://www.synesthesia.co.uk/2002/10/14/minds-and-stuff/</link><pubDate>Mon, 14 Oct 2002 23:19:31 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/10/14/minds-and-stuff/</guid><description>&lt;p>One of the things that’s been keeping me away from blogging over the last few months is taking some trainings in, and reading about, &lt;a href="https://www.neuro-semantics.com/" target="_blank" rel="noopener">Neuro Semantics&lt;/a>. More detail on Neuro-Semantics another time, but for now I’ll describe it as an extension to the NLP model of human perception.&lt;/p>
&lt;p>L. Michael Hall, the thinker behind the new work has recently published a new book “The Matrix Model”. In this he extends the basic Meta-States model of “Thoughts &amp;amp; Feelings about Thoughts &amp;amp; Feelings about..” and extends it in terms of a number of directions. Critically he says… &lt;em>“These processes operate as a &lt;strong>holarchy&lt;/strong> rather than a hierarchy. Made out of &lt;strong>holons&lt;/strong> (parts in wholes and wholes in parts), a holarchy is dynamic, moving fluid and operates with a simultaneity that makes the whole process difficult to picture”&lt;/em> In this model meaning is an emergent property from the systemic interactions of the mind. Recently Hall has extended his models to start looking at cultural artefacts, considering culture as a emergent shared meaning emergent from many minds. (influenced by Searle &lt;a href="https://www.amazon.co.uk/exec/obidos/ASIN/0140235906/fivegocrazyinmid" target="_blank" rel="noopener">The Construction of Social Reality&lt;/a>&lt;/p>
&lt;p>And this is where the serendipity comes in, because &lt;a href="https://www.theobviousblog.net/blog/archives/000198.html#000198" target="_blank" rel="noopener">The Obvious?&lt;/a> is considering ideas about how knowledge is created prompted by reading Stacey’s &lt;a href="https://www.amazon.co.uk/exec/obidos/ASIN/0415249198/fivegocrazyinmid" target="_blank" rel="noopener">Complex Responsive Processes in Organisations&lt;/a> &lt;em>“knowledge exists and is created in the ongoing relationships between individuals and society”&lt;/em>&lt;/p></description></item><item><title>P2P Organisations</title><link>https://www.synesthesia.co.uk/2002/10/14/p2p-organisations/</link><pubDate>Mon, 14 Oct 2002 12:41:04 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/10/14/p2p-organisations/</guid><description>&lt;p>&lt;a href="https://paolo.evectors.it/stories/p2pCompanies.html" target="_blank" rel="noopener">Paolo Valdemarin&lt;/a> writes:&lt;/p>
&lt;blockquote>
&lt;p>“In the last few months I have met (most of times virtually) some very smart people from all parts of the world I would like to work with: to start new projects, to create new technologies, to develop new solutions. But when I think about how this could work out, I keep bumping in the same old “company” idea. We could work together, with the ultimate goal of creating a new company. But is this really the way to go? With the kind of collaborative technology that we have today, do we really still need companies? Well, of course, the answer from many points of view is still yes, but it could be a whole new breed of company: a P2P company…”&lt;/p>
&lt;/blockquote>
&lt;p>via &lt;a href="https://www.benhammersley.com/archives/001489.html#001489" target="_blank" rel="noopener">Ben Hammersley&lt;/a>&lt;/p></description></item><item><title>Water – it’s not rocket science!</title><link>https://www.synesthesia.co.uk/2002/10/11/water-its-not-rocket-science/</link><pubDate>Fri, 11 Oct 2002 12:30:51 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/10/11/water-its-not-rocket-science/</guid><description>&lt;p>&lt;a href="https://news.bbc.co.uk/1/hi/education/2309107.stm" target="_blank" rel="noopener">Too thirsty for knowledge&lt;/a> – &lt;em>Can you imagine spending every day at work with a hangover? That is the nearest adults will come to the feelings of dehydration experienced by children who have little access to water during the school day. So says a campaigner who argues that learning is being damaged by a simple lack of water in classrooms….&lt;/em>&lt;/p>
&lt;p>&lt;a href="https://gert68.blogspot.com/" target="_blank" rel="noopener">via mad musings of me (uk)&lt;/a>&lt;/p></description></item><item><title>Summer’s over, time to start blogging again</title><link>https://www.synesthesia.co.uk/2002/10/11/summers-over-time-to-start-blogging-again/</link><pubDate>Fri, 11 Oct 2002 12:22:13 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/10/11/summers-over-time-to-start-blogging-again/</guid><description>&lt;p>I think I’ve discovered that Blogging is a dark-months sport for me! Anyway, I’m back… for a while at least!&lt;/p></description></item><item><title>Some other Blogs</title><link>https://www.synesthesia.co.uk/2002/05/26/some-other-blogs/</link><pubDate>Sun, 26 May 2002 23:06:47 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/05/26/some-other-blogs/</guid><description>&lt;p>&lt;a href="https://radio.weblogs.com/0105977/" target="_blank" rel="noopener">Larry Welkowitz&lt;/a> has some interesting things to say on Autism, Asperger’s and Geekdom…&lt;/p></description></item><item><title>Writer’s block?</title><link>https://www.synesthesia.co.uk/2002/05/26/writers-block/</link><pubDate>Sun, 26 May 2002 21:34:16 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/05/26/writers-block/</guid><description>&lt;p>I think I may need to turn to &lt;a href="https://www.garyturner.net/2002_05_01_archive.html#85103444" target="_blank">Gary Turner’s Insure-a-blog&lt;/a> service…_&lt;/p>&lt;/p>
&lt;blockquote>
&lt;p>Here at Insure-a-blog our team of crack (addicted) ghostwriters are at your disposal, ready to fill that inevitable of all inevitables, the day when you have nothing worthwhile to say on your weblog. Perish the thought that such an horrific thing could ever happen to you, but ask yourself the question, could it? And if so, then what would you do? How could you face your readers? Worry no more, for a small daily fee you can insure your weblog against such a brutal eventuality. Hell, we’ll even make **** up that whilst defying all semblance of reality will have your reader(s) believing above all conceivable belief that you are in fact a very interesting person, every day!&lt;/p>
&lt;/blockquote>
&lt;/i></description></item><item><title>Company of Friends..again…</title><link>https://www.synesthesia.co.uk/2002/05/26/company-of-friendsagain/</link><pubDate>Sun, 26 May 2002 19:47:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/05/26/company-of-friendsagain/</guid><description>&lt;p>Unusually, the London cell had an event only a week after the previous one. This time we were treated to two hours of Adrian Gilpin talking about the basics of his “&lt;a href="https://www.soul-power.com/about/" target="_blank">Soulpower&lt;/a>” approach to developing people’s full potential. Adrian makes no bones about the fact that his approach is derived from a wide range of influences including NLP, psychology, Covey, Buddhism and a lot more, allegedly on the basis of looking for the common themes across disciplines. The 7 themes that he chooses are Choice, Talent, Belief, Passion, Identity, Vision and Purpose.&lt;/p></description></item><item><title>The Company of Friends</title><link>https://www.synesthesia.co.uk/2002/05/15/the-company-of-friends/</link><pubDate>Wed, 15 May 2002 16:23:13 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/05/15/the-company-of-friends/</guid><description>&lt;p>Last night went (for the first time) to a meeting of the London “cell” of &lt;a href="https://www.fastcompany.com" target="_blank">FastCompany&lt;/a>‘s &lt;a href="https://www.fastcompany.com/cof/handbook1.html" target="_blank">Company of Friends&lt;/a>. The meeting was attended by about 40 and was organised around a workshop on “Storytelling In Business” led by Tony Quinlan from Narrate Consulting. Excellent evening, both for the workshop and the networking / conversations before during and afterwards…. As always, the world is much smaller than you think.. the first person I spoke to was just two degrees of seperation away – we knew three people in common…&lt;/p>
&lt;p>The core theme below the story-telling was “what is the vision of this group” – an idea that seemed to cause much debate, not least over having an explicit vision at all… I shall sample this one again!&lt;/p></description></item><item><title>Flashbacks</title><link>https://www.synesthesia.co.uk/2002/05/13/flashbacks/</link><pubDate>Mon, 13 May 2002 13:58:39 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/05/13/flashbacks/</guid><description>&lt;p>Spent this weekend in the town where I grew up. Catching up with my mother &amp;amp; sister, also spending some time with my kids, who were there wth my ex-wife. I took the kids to the local playground – where I too played at their age. Although some things have changed there is much as it was thirty-five years ago. Buying ice cream for them in the park cafe I had a flashback of my father buying ice cream for me in the same building.&lt;/p>
&lt;p>I’ve been reading James Hillman’s “The Soul’s Code” which seeks to build a metaphor for life around the idea of the “acorn” – the essential purpose of each individual that is incarnated, and which, he believes, most often seen early in childhood before the layers of the world are added.&lt;/p></description></item><item><title>Traffic</title><link>https://www.synesthesia.co.uk/2002/05/13/traffic/</link><pubDate>Mon, 13 May 2002 13:31:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/05/13/traffic/</guid><description>&lt;p>&lt;a href="https://scoble.weblogs.com/" target="_blank">Scobleizer&lt;/a> has &lt;a href="https://scoble.weblogs.com/2002/05/13.html#a1284" target="_blank">this&lt;/a> to say today:&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>Is weblogging all about the traffic? […]If all you measure is traffic aimed at your head, then you’ve gone astray. […] To me, it’s “what can I learn by visiting you?” Do you entertain? Teach? Inspire? […]I’d like to measure my weblogging success some other way.&lt;/em>&lt;/p>
&lt;/blockquote></description></item><item><title>Long break</title><link>https://www.synesthesia.co.uk/2002/05/09/long-break/</link><pubDate>Thu, 09 May 2002 09:58:58 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/05/09/long-break/</guid><description>&lt;p>Not been near the blog for a while – been catching up on &lt;a href="https://www.julian.elve.dial.pipex.com/index.shtml?bookblog/books.inc" target="_blank" rel="noopener">reading&lt;/a>, been out on my &lt;a href="https://www.ctc.org.uk" target="_blank">bike&lt;/a>, playing with &lt;a href="https://www.python.org" target="_blank">Python&lt;/a> and generally haven’t felt like posting…. However did notice that the Guardian has an interview with Rageboy – &lt;a href="https://www.guardian.co.uk/Archive/Article/0,4273,4409603,00.html" target="_blank">“Rebel without a Pause”&lt;/a>&lt;/p></description></item><item><title>Unleashing the Ideavirus</title><link>https://www.synesthesia.co.uk/2002/04/22/unleashing-the-ideavirus/</link><pubDate>Mon, 22 Apr 2002 23:38:18 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/22/unleashing-the-ideavirus/</guid><description>&lt;p>&lt;amazonlink asin = "074322065X">Unleashing the Ideavirus&lt;/amazonlink> by Seth Godin. Just finished reading the &lt;a href="https://www.ideavirus.com/downloads/IdeavirusReadandShare.pdf" target="_blank">online edition&lt;/a> – review to follow.&lt;/p></description></item><item><title>Some Knowledge Management posts</title><link>https://www.synesthesia.co.uk/2002/04/22/some-knowledge-management-posts/</link><pubDate>Mon, 22 Apr 2002 23:05:14 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/22/some-knowledge-management-posts/</guid><description>&lt;p>[All via &lt;a href="https://svore.home.mindspring.com/categories/km/" target="_blank">Steven Vore&lt;/a>]&lt;/p>
&lt;p>Jon Udell on &lt;a href="https://www.oreillynet.com/pub/a/webservices/2002/01/01/topic_map.html" target="_blank">Quick and Dirty Topic Mapping&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>“The essence of this strategy is to work bottom-up, rather than top-down. I don’t start with a predefined set of topics. Rather, I allow them to emerge from the material as I work my way through it. I don’t try to create a topic hierarchy. Having wrestled with questions such as whether XML should be a subcategory of Web Development, or vice versa, I’ve concluded that this way lies madness.”&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>&lt;a href="https://www.semanticstudios.com/publications/semantics/sna.html" target="_blank">Peter Morville’s Social Network Analysis:&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>“How do knowledge workers learn? How do they decide what to learn next? What motivates them to share?”&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>And from &lt;a href="https://svore.home.mindspring.com/categories/km/2002/01/26.html" target="_blank">Steven&lt;/a> himself&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>Last week I mentioned the importance of good “metrics” when managing Knowledge Workers. This week that came home to roost, as I had to provide input for yearly performance reviews on individuals, managers, and groups…&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>(and yes I know some of these are from back in Jan / Feb, but I’m just trying out a new &lt;a href="https://www.disobey.com/amphetadesk/" target="_blank">aggregator&lt;/a> and they all showed up!)&lt;/p></description></item><item><title>Emergent behaviour</title><link>https://www.synesthesia.co.uk/2002/04/22/emergent-behaviour/</link><pubDate>Mon, 22 Apr 2002 10:14:38 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/22/emergent-behaviour/</guid><description>&lt;p>I seem to be spending more and more time reading &lt;a href="https://www.theshiftedlibrarian.com/" target="_blank">The Shifted Librarian&lt;/a> for Jenny’s insight into what is happening right now in the world of wires…. One particularly interesting current piece is &lt;a href="https://www.theshiftedlibrarian.com/2002/04/22.html#a1483" target="_blank">this&lt;/a> about how “Google boxes” are having the effect that &lt;em>“two people who have never intentionally linked to each other are each generating traffic for the other”&lt;/em>. This is a great example of how complex behaviour can emerge from apparently simple systems…&lt;/p></description></item><item><title>Another take on RageBoy’s visit to London</title><link>https://www.synesthesia.co.uk/2002/04/19/another-take-on-rageboys-visit-to-london/</link><pubDate>Fri, 19 Apr 2002 18:47:26 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/19/another-take-on-rageboys-visit-to-london/</guid><description>&lt;p>_&lt;/p>&lt;/p>
&lt;blockquote>
&lt;p>I looked into those big, sad, soulful, hurting eyes and I wanted to give him a hug. People who say the internet is a geeky, meaningless side show to life have no idea. This stuff matters.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;/i>Over at &lt;a href="https://www.blaven.demon.co.uk/weblog/2002_04_01_archive.html#85015052" target="_blank">The Obvious?&lt;/a>&lt;/p></description></item><item><title>Organisational Storytelling</title><link>https://www.synesthesia.co.uk/2002/04/19/organisational-storytelling/</link><pubDate>Fri, 19 Apr 2002 13:27:27 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/19/organisational-storytelling/</guid><description>&lt;p>Interesting new book on the horizon (only in draft at present) – The Narrative Angle – The Seven Most Valuable Forms of Organizational Storytelling. &lt;a href="https://www.line56.com/articles/default.asp?ArticleID=3543" target="_blank" rel="noopener">Preview&lt;/a>. The author, &lt;a href="https://www.stevedenning.com/" target="_blank">Steve Denning&lt;/a> is former director of knowledge management at the world bank.&lt;/p>
&lt;p>The Seven Highest-value Forms of Organizational storytelling:&lt;/p>
&lt;p>Story to ignite transformational action&lt;/p>
&lt;p>Storytelling to grow community&lt;/p>
&lt;p>Storytelling to share knowledge&lt;/p>
&lt;p>Storytelling to transmit values&lt;/p>
&lt;p>Storytelling to say who you are&lt;/p>
&lt;p>Storytelling to transform a narrative dynamic&lt;/p>
&lt;p>Storytelling to show the way to the future&lt;/p>
&lt;p>[via &lt;a href="https://www.internettime.com/itimegroup/research.htm" target="_blank">Jay Cross&lt;/a>]&lt;/p></description></item><item><title>Some useful web/RSS related sites</title><link>https://www.synesthesia.co.uk/2002/04/19/some-useful-webrss-related-sites/</link><pubDate>Fri, 19 Apr 2002 13:15:09 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/19/some-useful-webrss-related-sites/</guid><description>&lt;p>&lt;a href="https://asprss.com/default.asp" target="_blank">Share website content with ASPRSS&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www.skippingdot.net/2001/12/13" target="_blank">SkippingDotNet&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www.byte.com/documents/s=178/BYT19991021S0014/" target="_blank">XML-RPC programming with ZOPE&lt;/a>&lt;/p></description></item><item><title>Is it madness or brilliance or both?</title><link>https://www.synesthesia.co.uk/2002/04/18/is-it-madness-or-brilliance-or-both/</link><pubDate>Thu, 18 Apr 2002 18:40:18 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/18/is-it-madness-or-brilliance-or-both/</guid><description>&lt;p>I referred to &lt;a href="https://www.garyturner.net/blog.html" target="_blank">Gary Turner’s momentary lapses of dilution®&lt;/a> a day or two ago in the piece on &lt;a href="https://www.rageboy.com/blogger.html" target="_blank">rageboy&lt;/a>‘s visit to London… but I’ve only just been introduced to his alter ego Mike Golby at &lt;a href="https://pagecount.blogspot.com/" target="_blank">Pagecount&lt;/a>. I don’t know what he’s on but it’s very good….&lt;/p></description></item><item><title>So what is an application?</title><link>https://www.synesthesia.co.uk/2002/04/17/so-what-is-an-application/</link><pubDate>Wed, 17 Apr 2002 13:00:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/17/so-what-is-an-application/</guid><description>&lt;p>&lt;a href="https://radio.weblogs.com/0100887/2002/04/16.html#a195" target="_blank">Jon Udell&lt;/a> picks up on &lt;a href="https://www.razorsoft.net/weblog/" target="_blank">Peter Drayton&lt;/a> asking the question &lt;a href="https://www.razorsoft.net/weblog/2002/04/15.html#a128" target="_blank">“What is an application”&lt;/a> and expands our thinking by asking an obvious question – (having set up an anti-spam inbox rule in Outlook)&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>..I don’t see a quick way to transfer this behavior to Larry’s instance of Outlook. The Outlook rules, when exported, are binary, not nice readable/editable ASCII like Netscape’s exported rules. In any case, even in Netscape, there’s no easy way to create this behavior, name it, export it as a service, and enable someone else to acquire it with a click. There are a million things like this. People have to start expecting this to happen always and everywhere. Then, it will.&lt;/em>&lt;/p>
&lt;/blockquote></description></item><item><title>Some UK blogs</title><link>https://www.synesthesia.co.uk/2002/04/16/some-uk-blogs/</link><pubDate>Tue, 16 Apr 2002 19:51:49 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/16/some-uk-blogs/</guid><description>&lt;p>Thought it was time to trawl through some of my compatriots … here are some that caught my eye on the way …&lt;/p>
&lt;p>&lt;a href="https://www.timemachinego.com/linkmachinego/" target="_blank">LinkMachineGo&lt;/a>, &lt;a href="https://www.whereveryouare.org/weblog/" target="_blank">Wherever You Are&lt;/a>, &lt;a href="https://peteashton.com/" target="_blank">Pete Ashton Dot Com&lt;/a>, &lt;a href="https://www.notsosoft.com/blog/" target="_blank">not.so.soft&lt;/a>, &lt;a href="https://interconnected.org/home/" target="_blank" rel="noopener">Interconnected&lt;/a>, &lt;a href="https://feelinglistless.blogspot.com/" target="_blank">feeling listless&lt;/a>.&lt;/p>
&lt;p>And last but not least for its very British (in)sanity &lt;a href="https://lionelmandrake.blogspot.com/" target="_blank">A letter from the Olde Countrie&lt;/a> by “Group Captain Lionel Mandrake” (aka Steve Bail)&lt;/p></description></item><item><title>Fear and love on the internet?</title><link>https://www.synesthesia.co.uk/2002/04/16/fear-and-love-on-the-internet/</link><pubDate>Tue, 16 Apr 2002 17:58:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/16/fear-and-love-on-the-internet/</guid><description>&lt;p>&lt;a href="https://www.timemachinego.com/linkmachinego/" target="_blank">LINKMACHINEGO.COM&lt;/a> picks up &lt;a href="https://texting.blogspot.com/?/2002_04_01_texting_archive.html" target="_blank">Texting&lt;/a> via &lt;a href="https://www.ncf.ca/%7Eek867/wood_s_lot.html" target="_blank">wood s lot&lt;/a> thus&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>“I read about Bush and Cheney and Rumsfeld and Ashcroft’s approval ratings and I wonder about my fellow citizens. I wonder if there isn’t some collective human core drive toward conservatism. I mean conservatism on its most basic level: fear of change. These familiar white men — familiar both because they’re clones of what we’ve been acculturated to perceive as power, and familiar literally, it’s the exact same people, the same handful, the plutocracy — are they somehow reassuring big daddies, distant and tight-lipped, security conscious and faintly disapproving, a little out of touch, a little authoritarian and secretive, deals out of earshot and quiet phone calls, a potential for real anger, but usually genial and a little hokey; they want what’s best for us, they know what’s best, because they’re father? We don’t need to know the details. They’re in charge, and that’s as it should be”&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>The slightly bizarre coincidence for me is that I met the author of &lt;a href="https://www.timemachinego.com/linkmachinego/" target="_blank">LINKMACHINEGO.COM&lt;/a> today at a seminar being given by &lt;a href="https://www.rageboy.com" target="_blank">Christopher Locke&lt;/a> of &lt;a href="https://www.cluetrain.com/" target="_blank">Cluetrain&lt;/a> fame. (seminar was organised by the man behind &lt;a href="https://www.blaven.demon.co.uk/weblog/blogger.html" target="_blank">The Obvious?&lt;/a> so this was something of a &lt;strong>blogflesh&lt;/strong> or whatever you call bloggers meeting in real life…)&lt;/p>
&lt;p>I’ve not heard Chris before, so not I’m not sure if this was his “standard” (??) Gonzo Marketing talk or something he had tailored for the organisation sponsoring the event …anyway… the reason for associating this and the quote from &lt;a href="https://texting.blogspot.com/?/2002_04_01_texting_archive.html" target="_blank">Texting&lt;/a> is that a key part of rageboy’s message was about the need for large corporations to let go of that &lt;em>assumed&lt;/em> position of authority if they are going to survive in the internet world, to let go of the fear of talking with their consumers.&lt;/p>
&lt;p>All of that somehow links in my mind to the quote (allegedly from “&lt;a href="https://www.amazon.co.uk/exec/obidos/ASIN/0670869759/fivegocrazyinmid" target="_blank" rel="noopener">A Course in Miracles&lt;/a>” but if not I’m sure &lt;a href="https://www.blaven.demon.co.uk/weblog/blogger.html" target="_blank">The Obvious?&lt;/a> will correct me!) about all human actions being ultimately based in love or fear. And when someone stands up in front of an audience who are (indirectly) paying for him to be there and demonstrates what he means about the new level of human honesty required in communication and enabled by the internet through simply telling us about his current heart-breaking head-exploding relationship problem then you do rather get the point… (although from the comments I heard at the buffet afterwards not everyone in the audience saw it that clearly – so maybe the fear factor is still too high…)&lt;/p>
&lt;p>[post script – &lt;a href="https://www.garyturner.net/2002_04_01_archive.html#85006195" target="_blank">here&lt;/a> is &lt;a href="https://www.garyturner.net/blog.html" target="_blank">Gary Turner&lt;/a>‘s account of how he met up with Chris Locke on the very same London trip on Sunday…]&lt;/p></description></item><item><title>Stress expert calls for special ‘grumpiness banned’ day</title><link>https://www.synesthesia.co.uk/2002/04/16/stress-expert-calls-for-special-grumpiness-banned-day/</link><pubDate>Tue, 16 Apr 2002 17:57:34 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/16/stress-expert-calls-for-special-grumpiness-banned-day/</guid><description>&lt;p>A stress management expert &lt;a href="https://www.ananova.com/news/story/sm_567545.html?menu=news.quirkies" target="_blank">wants the US to have a special day&lt;/a> when people are banned from being grumpy. She wants people to be fined for frowning and to wear special hats when they’re caught being unhappy. (via &lt;a href="https://www.evhead.com/" target="_blank">EVHEAD&lt;/a>)&lt;/p></description></item><item><title>How Google really does it</title><link>https://www.synesthesia.co.uk/2002/04/16/how-google-really-does-it/</link><pubDate>Tue, 16 Apr 2002 17:25:36 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/16/how-google-really-does-it/</guid><description>&lt;p>The &lt;a href="https://www.google.com/technology/pigeonrank.html" target="_blank">secret&lt;/a> was an April Fool, so may not still be there…. Via &lt;a href="https://www.sethgodin.com/sg/blog/sethgodin.html" target="_blank">Seth Godin&lt;/a> (yes the ideavirus man)&lt;/p></description></item><item><title>Even more new ways of selling books</title><link>https://www.synesthesia.co.uk/2002/04/16/even-more-new-ways-of-selling-books/</link><pubDate>Tue, 16 Apr 2002 15:37:37 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/16/even-more-new-ways-of-selling-books/</guid><description>&lt;p>&lt;a href="https://www.theshiftedlibrarian.com/" target="_blank">The Shifted Librarian&lt;/a> &lt;a href="https://www.theshiftedlibrarian.com/2002/04/15.html#a1350" target="_blank">picks up&lt;/a> on &lt;a href="https://www.onfocus.com/bookwatch/" target="_blank">Weblog Bookwatch&lt;/a> and the way Amazon are finding new ways to make the Web work for them and their customers.&lt;/p>
&lt;p>The blog at &lt;a href="https://www.onfocus.com/index.asp" target="_blank" rel="noopener">onfocus.com&lt;/a> is also worth a look – some interesting stuff going on there with scripts (Paul Bausch is one of the original co-developers of Blogger)&lt;/p></description></item><item><title>Who to trust when we all bowl alone?</title><link>https://www.synesthesia.co.uk/2002/04/15/who-to-trust-when-we-all-bowl-alone/</link><pubDate>Mon, 15 Apr 2002 15:51:56 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/15/who-to-trust-when-we-all-bowl-alone/</guid><description>&lt;p>&lt;a href="https://radio.weblogs.com/0100887/2002/04/05.html#a173" target="_blank">Jon Udell&lt;/a> picks up on Robert Putnam’s “&lt;a href="https://www.bowlingalone.com/" target="_blank">Bowling Alone&lt;/a>“&lt;/p>
&lt;blockquote>
&lt;p>_“If he’s right, the flowering of online community that we see all around us may be part of a very large historical pattern. As a culture, we may be sensing a deficiency of social capital, and creating new institutions — appropriate to our time and our technology — to remedy the problem. Putnam’s thesis may be read as a requirements specification for online communities&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>A corollary to the sharp decline of social capital in our generation, by the way, is a sharp rise in the number of lawyers per capita. Fifty years ago, Americans thought that most people were trustworthy. Today most think the reverse. Lawyering flourishes, says Putnam, because it is the “production and sale of synthetic trust.”&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Interesting. For years I have interacted online with people I have never met face-to-face, and may never meet. Yet I trust them..”_&lt;/p>
&lt;/blockquote>
&lt;p>“Trust” seems to be a current meme – it’s the theme of this year’s &lt;a href="https://www.bbc.co.uk/radio4/reith2002/" target="_blank">Reith Lectures&lt;/a> by Onora O’Neill. In &lt;a href="https://www.bbc.co.uk/radio4/reith2002/1.shtml" target="_blank">lecture 1&lt;/a> she was &lt;a href="https://www.bbc.co.uk/radio4/reith2002/lecture1_qa.shtml" target="_blank">asked&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>“So what happens to trust when you have a technology such as the internet that de-centres institutional validity?”&lt;/em> and replied &lt;em>“…But I think it’s going to be very difficult to achieve a culture of accountability of a reasoned sort in different parts of society, and I think the internet, as you rightly say, is going to be one of the hardest of all. At the moment yes, I think it’s like buying snake oil. ”&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>In the summary of the (not yet broadcast) &lt;a href="https://www.bbc.co.uk/radio4/reith2002/4.shtml" target="_blank">4th lecture&lt;/a> you can read&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>“Transparency may destroy secrecy, but there is little reason to think that it destroys the real enemy of trust: deception. Those who set out to deceive the public may even be helped by over-emphasising the value of transparency. There is a downside to technologies that allow us to circulate and recirculate vast quantities of ‘information’ that is harder and harder to sort, let alone to verify.”&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>So how do we learn to sort what we can trust from what we can’t? Surely this is where increasingly easy-to-use news aggregators and related technologies come to the fore by making it easy to compare many different sources of a story. And is there a need for another tool that will map the sources of those feeds? (after all, how many blogs can you read where an item has actually come from one source via multiple routes?)&lt;/p></description></item><item><title>And some more blogs and other links</title><link>https://www.synesthesia.co.uk/2002/04/15/and-some-more-blogs-and-other-links/</link><pubDate>Mon, 15 Apr 2002 13:24:40 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/15/and-some-more-blogs-and-other-links/</guid><description>&lt;p>&lt;a href="https://radio.weblogs.com/0101156/" target="_blank">Ken Rawlings&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://wendycooper.blogspot.com/2002_03_31_wendycooper_archive.html#75122551" target="_blank">How To Bathe A Cat&lt;/a> tasteless but funny item from The &lt;a href="https://wendycooper.blogspot.com/" target="_blank">Wendy Cooper Weblog&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www.internettime.com/itimegroup/research.htm" target="_blank">Research on Learning and Performance&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www.theshiftedlibrarian.com/" target="_blank">The Shifted Librarian&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www.pipetree.com:8080/" target="_blank">DJ’s Weblog&lt;/a> extending &lt;a href="https://www.oreillynet.com/~rael/lang/python/peerkat/" target="_blank">Peerkat&lt;/a>. Also DJ’s &lt;a href="https://www.pipetree.com/jabber/" target="_blank" >Jabber Stuff&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://radio.weblogs.com/0100887/" target="_blank">Jon’s Radio&lt;/a> (Jon Udell’s experiments with &lt;a href="https://radio.userland.com/" target="_blank">Radio Userland&lt;/a>)&lt;/p></description></item><item><title>A few more random blogs</title><link>https://www.synesthesia.co.uk/2002/04/15/a-few-more-random-blogs/</link><pubDate>Mon, 15 Apr 2002 00:27:16 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/15/a-few-more-random-blogs/</guid><description>&lt;p>&lt;a href="https://www.gm009a5328.pwp.blueyonder.co.uk/blog/blogger.html" target="_blank">SomeTHiNG&lt;/a> – worth a look for some of the longer pieces…&lt;/p>
&lt;p>&lt;a href="https://atarigirl.waferbaby.com/" target="_blank">AtariGirl&lt;/a> – &lt;em>“I know what was wrong with me. I know what I did to myself. Walking off the job today felt like a step in the right direction. Anxiety, guilt, and an overshadowing of apathy have kept me from doing so much for myself. And I’m so ****ing tired of coloring myself invisible.”&lt;/em>&lt;/p>
&lt;p>&lt;a href="https://www.scottyjay.com/" target="_blank">A Bridge to Nowhere&lt;/a> – Mountainbiking in Long Island…&lt;/p>
&lt;p>&lt;a href="https://www.pythonware.com/daily/" target="_blank">Daily Python&lt;/a> – essential reading for fans of Python (the language not the show!)&lt;/p>
&lt;p>&lt;a href="https://radio.weblogs.com/0105852/categories/xmlAndWebServices/" target="_blank" rel="noopener">XML and Web Services&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://rcs.myelin.cjb.net/users/0000003/" target="_blank">Web Archetypes&lt;/a> – “A look at the standards that matter”&lt;/p></description></item><item><title>The Journey of The Hero</title><link>https://www.synesthesia.co.uk/2002/04/12/the-journey-of-the-hero/</link><pubDate>Fri, 12 Apr 2002 14:39:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/12/the-journey-of-the-hero/</guid><description>&lt;p>&lt;amazonlink asin="1853270482">The Journey of the Hero&lt;/amazonlink> by Fridemann Wieland. This book is about applying Joseph Campbell’s mythological idea of “The Hero’s Journey” to personal development, using the Grail myth as the guiding metaphor. Review to follow. This book is currently out of print, I picked up a copy for £1 in a remainders bookshop.&lt;/p></description></item><item><title>Measuring the Software Process</title><link>https://www.synesthesia.co.uk/2002/04/12/measuring-the-software-process/</link><pubDate>Fri, 12 Apr 2002 14:33:48 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/12/measuring-the-software-process/</guid><description>&lt;p>&lt;amazonlink asin="0201604442">Measuring the Software Process&lt;/amazonlink> by Florac &amp;amp; Carleton&lt;/p>
&lt;p>This is about applying statistical process control to software development, and I’m reading it for work. Review to follow&lt;/p></description></item><item><title>The Fifth Discipline Fieldbook</title><link>https://www.synesthesia.co.uk/2002/04/12/the-fifth-discipline-fieldbook/</link><pubDate>Fri, 12 Apr 2002 14:21:37 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/12/the-fifth-discipline-fieldbook/</guid><description>&lt;p>&lt;amazonlink asin="1857880609">The Fifth Discipline Fieldbook&lt;/amazonlink> by Peter Senge et. al.&lt;/p>
&lt;!-- &lt;img src="https://images-eu.amazon.com/images/P/1857880609.02.LZZZZZZZ.gif" width="75", height="100"> -->I bought this book several years ago, but it remains a valuable reference to practical applications of the concepts in &lt;amazonlink asin="0712656871">The Fifth Discipline&lt;/amazonlink>. I pulled it off the shelf to refresh my memory about Systems Archetypes for a longer follow-up article to
&lt;p>&lt;a href="https://www.synesthesia.co.uk/blog/archives//000044.html#000044" target="_blank" rel="noopener">“Paying to Learn”&lt;/a>.&lt;/p></description></item><item><title>the sea, the sea</title><link>https://www.synesthesia.co.uk/2002/04/12/the-sea-the-sea/</link><pubDate>Fri, 12 Apr 2002 13:52:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/12/the-sea-the-sea/</guid><description>&lt;p>&lt;amazonlink asin="009928409X">the sea, the sea&lt;/amazonlink> is the first Iris Murdoch novel I have read – seeing the film “Iris” encouraged me to try some of her writing. Review to follow.&lt;/p></description></item><item><title>Blog Tennis</title><link>https://www.synesthesia.co.uk/2002/04/11/blog-tennis/</link><pubDate>Thu, 11 Apr 2002 15:45:22 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/11/blog-tennis/</guid><description>&lt;p>Gert at &lt;a href="https://gert68.blogspot.com/" target="_blank" rel="noopener">mad musings of me(uk)&lt;/a> has just &lt;a href="https://gert68.blogspot.com/?/2002_04_07_gert68_archive.html" target="_blank" rel="noopener">defined this sport&lt;/a> as&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>checking your site stats and then hitting on the site of anybody who has come to you from their stats…in the hope that they will check their stats again and come back to your site in the hope that you will check your stats and return to their site&lt;/em>&lt;/p>
&lt;/blockquote></description></item><item><title>NLP Anchors</title><link>https://www.synesthesia.co.uk/2002/04/11/nlp-anchors/</link><pubDate>Thu, 11 Apr 2002 15:20:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/11/nlp-anchors/</guid><description>&lt;p>In &lt;a href="https://www.fictionsuits.com/archives/00000065.html" target="_blank" rel="noopener">wiring my mind&lt;/a> Swerdloff gives a great description of a practical application of the NLP Anchoring technique to associate a particular song with the moment of perfect beauty as he kisses his girl…&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>I have a strange question I told her. Yeah? Can I kiss you? For the duration of this song. Of course. It was only a strange question because of the song…&lt;/em>&lt;/p>
&lt;/blockquote></description></item><item><title>More on Systems Archetypes</title><link>https://www.synesthesia.co.uk/2002/04/10/more-on-systems-archetypes/</link><pubDate>Wed, 10 Apr 2002 15:04:29 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/10/more-on-systems-archetypes/</guid><description>&lt;p>I was thinking some more about the schools issue (&lt;a href="https://www.ymh23.dial.pipex.com/index.shtml?2002_04_01_archive.inc#75157253" target="_blank" rel="noopener">Pay As You Learn&lt;/a>)I noted a couple of days ago, and found &lt;a href="https://www.hlthsys.com/pub/sys_archetypes.pdf" target="_blank" rel="noopener">this recent paper&lt;/a> expanding on the Systems Archetypes.&lt;/p></description></item><item><title>How Weblogs Can Turn an Idea into an Epidemic</title><link>https://www.synesthesia.co.uk/2002/04/10/how-weblogs-can-turn-an-idea-into-an-epidemic/</link><pubDate>Wed, 10 Apr 2002 10:01:43 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/10/how-weblogs-can-turn-an-idea-into-an-epidemic/</guid><description>&lt;p>Connectors and Mavens! Read more at &lt;a href="https://www.microcontentnews.com/articles/tippingblog.htm" target="_blank" rel="noopener">Microcontent News&lt;/a>. This is John Hiler’s blog on Weblogs, Webzines and Personal Publishing, I’ve added it to the blogroll (left).&lt;/p></description></item><item><title>Inventing the Future</title><link>https://www.synesthesia.co.uk/2002/04/10/inventing-the-future/</link><pubDate>Wed, 10 Apr 2002 07:44:34 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/10/inventing-the-future/</guid><description>&lt;p>Thought provoking &lt;a href="https://www.oreillynet.com/pub/a/network/2002/04/09/future.html" target="_blank" rel="noopener">piece&lt;/a> by Tom O’Reilly on the way forward with web services (via &lt;a href="https://www.evhead.com/" target="_blank" rel="noopener">EVHEAD&lt;/a>).&lt;/p></description></item><item><title>Fathers</title><link>https://www.synesthesia.co.uk/2002/04/09/fathers/</link><pubDate>Tue, 09 Apr 2002 22:47:57 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/09/fathers/</guid><description>&lt;p>[Top Ten Reasons To Witness Your Dad’s Demise][1] (via [Doc Searls][2]) was written by Halley Suitt 48 hours before her father died – as she says &lt;em>“here’s my attempt to see the good in these bad times”&lt;/em>. Reading it reminded me of my own father – he died in Jan 2000 – and just for a moment reflect on how in some ways he has been with me more often in my thoughts since he died. Since then I’ve started to notice the traits I have inherited from him, indeed as I grow into my 40’s I seem to become more like the father I remember. Here’s to fathers and sons everywhere. [updated 2002-04-10] By the way this article “[Resolving Grief][3]” by well-known NLP trainer/developer Steve Andreas describes a process that I have found tremendously useful in maintaining a good connection with my father since his death.&lt;/p>
&lt;p>[1]: &lt;a href="https://halleyscomment.blogspot.com/2002_04_01_halleyscomment_archive.html#" target="_blank" rel="noopener">https://halleyscomment.blogspot.com/2002_04_01_halleyscomment_archive.html#&lt;/a> 75128804
[2]: &lt;a href="https://doc.weblogs.com/" target="_blank" rel="noopener">https://doc.weblogs.com/&lt;/a>
[3]: &lt;a href="https://www.nlpco.com/articles/Therapy/Grief.htm" target="_blank" rel="noopener">https://www.nlpco.com/articles/Therapy/Grief.htm&lt;/a>&lt;/p></description></item><item><title>The designer deaf baby thing</title><link>https://www.synesthesia.co.uk/2002/04/09/the-designer-deaf-baby-thing/</link><pubDate>Tue, 09 Apr 2002 19:51:44 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/09/the-designer-deaf-baby-thing/</guid><description>&lt;p>Lots of sources report on the story of Sharon Duchesneau and Candace McCullough, the lesbian couple who selected to have a deaf child. (e.g. &lt;a href="https://www.guardian.co.uk/international/story/0,3604,680616,00.html" target="_blank" rel="noopener">Guardian&lt;/a>,&lt;a href="https://www.washingtonpost.com/wp-dyn/articles/A23194-2002Mar27.html" target="_blank" rel="noopener">Washington Post&lt;/a>). Commentary varies. There is the expected mainstream and “family values” (e.g. &lt;a href="https://www.frc.org/get/p02d01.cfm" target="_blank" rel="noopener">Family Research Council&lt;/a>) condemnation. I thought I might find some references in support of the couple’s action, but at time of writing Google hasn’t thrown any up.&lt;/p>
&lt;p>An interesting viewpoint that neither condemns nor supports but expresses empathy with the desire of deaf parents to have a deaf child is put by &lt;a href="https://www.guardian.co.uk/Archive/Article/0,4273,4390037,00.html" target="_blank" rel="noopener">Sharon Ridgeway&lt;/a>, herself a deaf woman who with her deaf husband has given birth to a deaf baby. Her perspective is:&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>I didn’t have any feelings that I wanted a hearing or deaf child – I just wanted my child to be healthy. I say that because, as part of the deaf community, I in no way see deafness as a disability, but rather as a way into a very rich culture. Which is one of the reasons I was delighted to learn when I gave birth that my baby was deaf.&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>and goes on to liken deafness and the need to use sign language to speaking a specific language that may not be understood when you go abroad.&lt;/p>
&lt;p>Where do I sit on this? For me I think &lt;a href="https://www.jeanettewinterson.com/home.htm" target="_blank" rel="noopener">Jeanette Winterson&lt;/a> (not known for her conservatism!) in &lt;a href="https://www.guardian.co.uk/Archive/Article/0,4273,4390038,00.html" target="_blank" rel="noopener">How would we feel if blind women claimed the right to a blind baby?&lt;/a> sums it up when she says:&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>I believe that hearing, like sight, is a blessing, and if we are prepared to use technology to breed children we have deliberately disabled, it is not only the language of disability that will have to be radically reworked, but our entire moral perspective. What this case suggests is that we can do what we like to our children, even if the consequences of our actions are irreversible. As lesbians, the two women should know something about choice and personal freedom. They both practise as mental health specialists, so I hope they have a colleague who will be able to talk it through with two kids who turn up in 20 years, explaining that their mothers decided that they had to be deaf.&lt;/em>&lt;/p>
&lt;/blockquote></description></item><item><title>Random traverse via blogsnob</title><link>https://www.synesthesia.co.uk/2002/04/09/random-traverse-via-blogsnob/</link><pubDate>Tue, 09 Apr 2002 17:31:13 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/09/random-traverse-via-blogsnob/</guid><description>&lt;p>Tried out &lt;a href="https://blogsnob.idya.net/" target="_blank" rel="noopener">Blogsnob&lt;/a>, and as suggested did a random traverse.&lt;/p>
&lt;p>&lt;a href="https://www.kacroon.co.uk/rambling.html" target="_blank" rel="noopener">Kacroon’s World&lt;/a>, &lt;a href="https://www.cosmichammer.com/" target="_blank" rel="noopener">Cosmic Hammer&lt;/a>, &lt;a href="https://mundanemidlife.blogspot.com/" target="_blank" rel="noopener">My Mundane Mid-Life&lt;/a>, &lt;a href="https://www.geocities.com/danimal0416/Weblogs/Dan/Journey/journey.html" target="_blank" rel="noopener">Journey Inside My Mind&lt;/a>, &lt;a href="https://ikastikos.blogspot.com/" target="_blank" rel="noopener">ikastikoz&lt;/a>, &lt;a href="https://www.ladybee.net/log/" target="_blank" rel="noopener">ladybee.net&lt;/a>, &lt;a href="https://www.growlers.org/?blogsnob" target="_blank" rel="noopener">Growlers&lt;/a>, &lt;a href="https://www.thinkhaze.com/" target="_blank" rel="noopener">thinkhaze&lt;/a>, &lt;a href="https://saywhat.pitas.com/" target="_blank" rel="noopener">saywhat?!&lt;/a>, &lt;a href="https://tinyfeetpatter.blogspot.com/" target="_blank" rel="noopener">Diary of a pregnancy&lt;/a>, &lt;a href="https://tinyfeetpatter.blogspot.com/" target="_blank" rel="noopener">Stepping Stones&lt;/a>, &lt;a href="https://www.chirographum.com/weblog/" target="_blank" rel="noopener">Chirographum&lt;/a>, &lt;a href="https://www.lunge.org/" target="_blank" rel="noopener">lunge.org&lt;/a>, &lt;a href="https://brilliantcorners.org/" target="_blank" rel="noopener">brilliant corners&lt;/a>…&lt;/p></description></item><item><title>Thomas Kelly “Father of The Lunar Module”</title><link>https://www.synesthesia.co.uk/2002/04/09/thomas-kelly-father-of-the-lunar-module/</link><pubDate>Tue, 09 Apr 2002 10:19:06 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/09/thomas-kelly-father-of-the-lunar-module/</guid><description>&lt;p>The engineer who led the team to design the Lunar Module. Born June 14 1929; died March 23 2002. &lt;a href="https://www.guardian.co.uk/obituaries/story/0,3604,680433,00.html" target="_blank" rel="noopener">Obituary&lt;/a>&lt;/p></description></item><item><title>Pay As You Learn</title><link>https://www.synesthesia.co.uk/2002/04/08/pay-as-you-learn/</link><pubDate>Mon, 08 Apr 2002 12:05:00 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/08/pay-as-you-learn/</guid><description>&lt;blockquote>
&lt;p>&lt;em>It’s the unspoken rule of state education: if you want your kids to do well, you’ve got to pay for private tutors. Which is fine for the well-off middle class, but what about those who can’t afford to?&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>&lt;a href="mailto:jennirussell1@hotmail.com">Jenni Russell&lt;/a> writes in today’s &lt;a href="https://www.guardian.co.uk/Archive/Article/0,4273,4389298,00.html" target="_blank">Guardian&lt;/a> about the hidden system of private tuition that is underpinning the apparent success of many state schools, especially in London.&lt;/p>
&lt;p>This sounds like a classic “Tragedy of the Commons” &lt;a href="https://www.pegasuscom.com/sysarch.html" target="_blank">systems archetype&lt;/a> – each person acting for their own perceived benefit actually contributes to the shared resource being depleted for all – the common resource is treated as inexhaustible until the whole system fails. I suspect that in this case the scenario is arising from a combination of parents wanting the best education for their children, coupled with a feeling that they cannot influence the quality of the state system, but they can (if they have the resources) directly influence the development of their child through application of private tutoring.&lt;/p>
&lt;p>Before we can identify how we could change this we need to look at other systems issues – in fact in this case there appears to another archetype operating – “Success to the Successful”. This one is arising from the UK Government’s own school league table system, where in the name of improved educational standards, the exam results of schools are published in public league tables. Inevitably there is competition to secure places at the best-performing schools, a competition that is biased towards middle-class families that know how to “work the system”. As Russell explains in her article, once the child is at the school then pressure to keep up with peers leads to an increased liklihood of tutoring being used, which in turn boosts the exam results of the school, further fuelling the reinforcing loops of this system archetype. The result is that schools are being polarised between very (apparently) successful and very low-achieving. Inevitably the latter are also becoming “sinks” for economically disadvantaged groups of the population&lt;/p>
&lt;p>Russell suggests one way to start to break these loops – make it compulsory for parents to report tutoring and for these figures to be published alongside the school exam results. That will of course be a start, beyond that will require a public debate that once again revisits the private-versus-public divide in our politics.&lt;/p></description></item><item><title>Copyright wars</title><link>https://www.synesthesia.co.uk/2002/04/08/copyright-wars/</link><pubDate>Mon, 08 Apr 2002 11:45:07 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/08/copyright-wars/</guid><description>&lt;p>Zimran at &lt;a href="https://www.winterspeak.com/" target="_blank" rel="noopener">Winterspeak&lt;/a> continues to &lt;a href="https://www.winterspeak.com/2002_04_01_archive.html#75059188" target="_blank">expose&lt;/a> the corporate machinations around copyright, media and the digital age…&lt;/p></description></item><item><title>Hazlitt on Old Books</title><link>https://www.synesthesia.co.uk/2002/04/08/hazlitt-on-old-books-as/</link><pubDate>Mon, 08 Apr 2002 01:21:53 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/08/hazlitt-on-old-books-as/</guid><description>&lt;p>As something of a counterpoint to the very essence of blogging, the Guardian reprints an essay from 1821 by William Hazlitt “&lt;a href="https://www.guardian.co.uk/Archive/Article/0,4273,4388138,00.html" target="_blank" rel="noopener">Essay On Reading Old Books”&lt;/a>&lt;/p>
&lt;p>_&lt;/p>&lt;/p>
&lt;blockquote>
&lt;p>I hate to read new books. There are twenty or thirty volumes that I have read over and over again, and these are the only ones that I have any desire ever to read at all.&lt;/p>
&lt;/blockquote>
&lt;/i>
&lt;p>_&lt;/p>&lt;/p>
&lt;blockquote>
&lt;p>In reading a book which is an old favourite with me (say the first novel I ever read) I not only have the pleasure of imagination and of a critical relish of the work, but the pleasures of memory added to it. It recalls the same feelings and associations which I had in first reading it, and which I can never have again in any other way. Standard productions of this kind are links in the chain of our conscious being.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>They bind together the different scattered divisions of our personal identity. They are landmarks and guides in our journey through life. They are pegs and loops on which we can hang up, or from which we can take down, at pleasure, the wardrobe of a moral imagination, the relics of our best affections, the tokens and records of our happiest hours. They are “for thoughts and for remembrance!” They give us the best riches – those of Fancy; and transport us, not over half the globe but (which is better) over half our lives, at a word’s notice!&lt;/p>
&lt;/blockquote>
&lt;p>&lt;/i>Whatever you may think of the approach, Hazlitt captures the power of words to trigger the feelings aroused when you first read them.&lt;/p></description></item><item><title>Are You Deciding On Purpose</title><link>https://www.synesthesia.co.uk/2002/04/08/are-you-deciding-on-purpose/</link><pubDate>Mon, 08 Apr 2002 01:14:38 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/08/are-you-deciding-on-purpose/</guid><description>&lt;p>Old (1998) but good &lt;a href="https://www.fastcompany.com/online/13/ldrplus.html" target="_blank" rel="noopener">article&lt;/a> interviewing Richard Leider about living life on purpose. Leider’s guidelines:&lt;/p>
&lt;ol>
&lt;li>Life is a spiral.&lt;/li>
&lt;li>What do you want, and how will you know when you get it?&lt;/li>
&lt;li>Feed the three hungers&lt;/li>
&lt;li>Discover the four factors of every decision&lt;/li>
&lt;li>Answer the ultimate question&lt;/li>
&lt;li>Make every job search an in-venture and an adventure&lt;/li>
&lt;li>Use this formula for a good career decision: T + P + E x V&lt;/li>
&lt;li>Live in the real world&lt;/li>
&lt;li>Don’t sell yourself short&lt;/li>
&lt;li>Find motivation from without-and from within&lt;/li>
&lt;li>Get advice from within-and from without&lt;/li>
&lt;li>Make your decisions the way senior citizens wish they had.&lt;/li>
&lt;/ol>
&lt;p>Again, thanks to &lt;a href="https://www.rebeccablood.net/" target=_blank>Rebecca’s Pocket&lt;/a>&lt;/p></description></item><item><title>Genes for depression are gender specific</title><link>https://www.synesthesia.co.uk/2002/04/08/genes-for-depression-are-gender-specific/</link><pubDate>Mon, 08 Apr 2002 01:02:06 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/08/genes-for-depression-are-gender-specific/</guid><description>&lt;p>&lt;a href="https://abcnews.go.com/sections/living/DailyNews/WIREsex_depression020329.html" target="_blank" rel="noopener">Sex-Specific Genes for Depression&lt;/a> reports on work at the University of Pittsburgh.&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>Depression in women and men could have different genetic origins, a finding that underscores the complexity of depression…&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>Thanks to &lt;a href="https://www.rebeccablood.net/" target=_blank>Rebecca’s Pocket&lt;/a>&lt;/p></description></item><item><title>The Science of Scrunch</title><link>https://www.synesthesia.co.uk/2002/04/05/the-science-of-scrunch/</link><pubDate>Fri, 05 Apr 2002 16:12:35 +0000</pubDate><guid>https://www.synesthesia.co.uk/2002/04/05/the-science-of-scrunch/</guid><description>&lt;p>&lt;a href="https://www.guardian.co.uk/Archive/Article/0,4273,4386690,00.html" target="_blank" rel="noopener">Article&lt;/a> – in Science Guardian about research into the way things crumple – whether it’s a crisp packet or the metal skin of a car …&lt;/p></description></item><item><title>The Applied Science of Forgiveness?</title><link>https://www.synesthesia.co.uk/2001/11/21/the-applied-science-of-forgiveness/</link><pubDate>Wed, 21 Nov 2001 22:43:04 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/11/21/the-applied-science-of-forgiveness/</guid><description>&lt;p>&lt;a href="https://www.choosingforgiveness.org/" target="_blank" rel="noopener">Choosing Forgiveness&lt;/a> descibes itself as “dedicated to the challenge of witnessing to forgiveness in a non-forgiving world”.&lt;/p>
&lt;p>The friend who sent me this link quotes one of the documents on the site thus:&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>“All forgiveness is self-forgiveness. Your experience of the world is the result of your combined state of thought and feeling – your arena of consciousness. If your experience of the world is a result of your state of consciousness, then if you hate anyone, you are disliking a part of yourself.”&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>Although the original document for the quote is explicitly Christian (the&lt;/p>
&lt;p>web site is not overtly Christian by the way) I think these words are&lt;/p>
&lt;p>sufficiently human-centred to hold a truth whatever particular brand of&lt;/p>
&lt;p>spirit you choose to believe in.&lt;/p></description></item><item><title>Spiral Dynamics</title><link>https://www.synesthesia.co.uk/2001/11/12/spiral-dynamicsinteresting-site-by-keith/</link><pubDate>Mon, 12 Nov 2001 01:08:03 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/11/12/spiral-dynamicsinteresting-site-by-keith/</guid><description>&lt;p>Interesting &lt;a href="https://www.rice65.freeserve.co.uk/HumbersideMESH/Indexx.html" target="_blank" rel="noopener">site&lt;/a> by Keith Rice detailing some work based on Spiral Dynamics and NLP dealing with real-life problems in Humberside.&lt;/p></description></item><item><title>ILAs shut down</title><link>https://www.synesthesia.co.uk/2001/10/25/ilas-shut-downthe-uk-government/</link><pubDate>Thu, 25 Oct 2001 22:37:46 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/10/25/ilas-shut-downthe-uk-government/</guid><description>&lt;p>The UK government has &lt;a href="https://www.theregister.co.uk/content/7/22479.html" target="_blank" rel="noopener">shut down&lt;/a> the Individual Learning Account scheme because of widespread fraud. (source &lt;a href="https://www.theregister.co.uk" target="_blank" rel="noopener">The Register&lt;/a>, referred by &lt;a href="https://www.scottishlass.co.uk/index.html" target="_blank" rel="noopener">Scottish lass seeks…&lt;/a>)&lt;/p></description></item><item><title>Back to Win Wenger Again</title><link>https://www.synesthesia.co.uk/2001/10/22/back-to-win-wenger-again/</link><pubDate>Mon, 22 Oct 2001 21:41:48 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/10/22/back-to-win-wenger-again/</guid><description>&lt;p>In his longer article &lt;a href="https://www.anakin.com/brighter/bright2.html" target="_blank" rel="noopener">You Are Brighter Than You Think&lt;/a> he notes the “first law of psychology”&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>Each time you notice something which others likely have not, even if seemingly trivial, like the play of shadows on the wall or the way So-and-So came into the room–and you don’t express or record that bit of observation, you are reinforcing the behavior of being unobservant. Each time you do express or record such an observation, you are not only reinforcing that perception a la the Principle of Description, but you are reinforcing the behavior of being perceptive and observant.&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>This is the principle behind his well-known &lt;a href="https://www.winwenger.com/imstream.htm" target="_blank" rel="noopener">Image Streaming&lt;/a> technique for creative problem solving.&lt;/p>
&lt;p>I was struck by the parallel with something &lt;a href="https://www.rebeccablood.net/index.html" target="_blank" rel="noopener">Rebecca Blood&lt;/a> wrote in &lt;a href="https://www.rebeccablood.net/essays/weblog_history.html" target="_blank" rel="noopener">weblogs: a history and perspective&lt;/a>:&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>Shortly after I began producing Rebecca’s Pocket I noticed two side effects I had not expected. First, I discovered my own interests. I thought I knew what I was interested in, but after linking stories for a few months I could see that I was much more interested in science, archaeology, and issues of injustice than I had realized. More importantly, I began to value more highly my own point of view. In composing my link text every day I carefully considered my own opinions and ideas, and I began to feel that my perspective was unique and important.&lt;/em>&lt;/p>
&lt;/blockquote></description></item><item><title>More fun at work…</title><link>https://www.synesthesia.co.uk/2001/10/22/more-fun-at-work/</link><pubDate>Mon, 22 Oct 2001 11:51:01 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/10/22/more-fun-at-work/</guid><description>&lt;p>In &lt;a href="https://www.gamasutra.com/features/20011012/garneau_01.htm" target="_blank" rel="noopener">“Fourteen Forms of Fun”&lt;/a> &lt;a href="mailto:paganator@geocities.com">Pierre-Alexandre Garneau&lt;/a> lists the broad categories of entertaining activities, in the context of better computer games design. &lt;a href="https://www.technography.com/3/coworking302.html" target="_blank" rel="noopener">Co-Working News&lt;/a> suggest that these are also fundamental to the design of an effctive co-working experience too. They are:&lt;/p>
&lt;ul>
&lt;li>Beauty&lt;/li>
&lt;li>Immersion&lt;/li>
&lt;li>Intellectual Problem Solving&lt;/li>
&lt;li>Competition&lt;/li>
&lt;li>Social Interaction&lt;/li>
&lt;li>Comedy&lt;/li>
&lt;li>Thrill of Danger&lt;/li>
&lt;li>Physical Activity&lt;/li>
&lt;li>Love&lt;/li>
&lt;li>Creation&lt;/li>
&lt;li>Power&lt;/li>
&lt;li>Discovery&lt;/li>
&lt;li>Advancement and Completion&lt;/li>
&lt;li>Application of an Ability&lt;/li>
&lt;/ul>
&lt;p>Something to think about next time you are trying to fill that job vacancy!&lt;/p></description></item><item><title>A Useful Contemplation?</title><link>https://www.synesthesia.co.uk/2001/10/21/a-useful-contemplation/</link><pubDate>Sun, 21 Oct 2001 21:40:32 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/10/21/a-useful-contemplation/</guid><description>&lt;p>In his &lt;a href="https://www.winwenger.com/part54.htm" target="_blank" rel="noopener">October Winsights column&lt;/a> Win Wenger encourages us to think of ourselves&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>as a rather complex swirl of confluent possibilities, interacting with other streams of possibility amidst larger overall flow.&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>Win has some fascinating ideas, and I find it intriguing how his scientific approach to stretching the human mind seems to have so much in common with certain ancient teachings.&lt;/p>
&lt;p>While you’re “over that way” why not check out his May 2001 article “&lt;a href="https://www.winwenger.com/part50.htm" target="_blank" rel="noopener">What Does It Mean to be You?&lt;/a>” where he asks&lt;/p>
&lt;blockquote>
&lt;p>_“Is it significant to be who you are and to do what you are doing? […] How much of what I am today is me and how much is chance? […] IF we do proceed on the presently questionable assumptions that we ARE individually unique and that our choices and actions DO have significant meaning, we have at least a somewhat better chance of meaningful achievements than if we don’t thus proceed. Given those alternatives, the presumption seems justified on the grounds that, as of yet in this snapshot moment of unfolding civilization and history, we have yet to unfold the right questions, much less the right answers. […] There are things your eyes have seen that no other human eyes have seen � thoughts you’ve thought (consciously or no), insights and appreciations you’ve arrived at. […] I don’t think that I am cultivating illusion by holding open richer possibilities rather than prematurely precluding them. […]Along the way, though, I do have to wonder at our system of justice and of judicial punishment[…]it’s clear that the system’s operation as a deterrence to crime leaves something to be desired[…] [also] I see three sectors of boundless opportunity which we are woefully underplaying:&lt;/p>&lt;/p>
&lt;ul>
&lt;li>the raising and educating of our children.&lt;/li>
&lt;li>The rapid development of space, in the solar system and possibly beyond.&lt;/li>
&lt;li>Human life-extension.”&lt;/li>
&lt;/ul>
&lt;p>&lt;/i>&lt;/blockquote>&lt;/p>
&lt;p>And while I was catching up on Win’s site &lt;a href="https://www.winwenger.com/message.htm" target="_blank" rel="noopener">this&lt;/a> caught my eye.&lt;/p>
&lt;blockquote>
&lt;p>_“I fully intend to be around for many afternoons to come, but were I to die this afternoon, this is one thing I will want to have gotten said:&lt;/p>&lt;/p>
&lt;blockquote>
&lt;p>‘Hear one another out. Draw each other out. And when it’s your turn to be speaking, pay far more attention to what you are actually perceiving than to what you know. And don’t repeat yourself much. The universe is infinite: by attending your own perceptions, you are infinite. And so also is that person you are drawing out. Even the least of us is a window on God, whatever your definition.’ “&lt;/p>
&lt;/blockquote>
&lt;p>&lt;/i>&lt;/blockquote>&lt;/p>
&lt;/blockquote>
&lt;/blockquote></description></item><item><title>Father’s Day?</title><link>https://www.synesthesia.co.uk/2001/10/21/fathers-day/</link><pubDate>Sun, 21 Oct 2001 11:22:14 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/10/21/fathers-day/</guid><description>&lt;p>Excellent &lt;a href="https://www.observer.co.uk/review/story/0,6903,577584,00.html" target="_blank" rel="noopener">article&lt;/a> in the Observer about the problems divorced and seperated fathers have in getting time with their children, and the way the UK courts seem institutionally biased against fathers.&lt;/p></description></item><item><title>In defence of freedom?</title><link>https://www.synesthesia.co.uk/2001/10/16/in-defence-of-freedom/</link><pubDate>Tue, 16 Oct 2001 22:56:08 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/10/16/in-defence-of-freedom/</guid><description>&lt;p>In &lt;a href="https://www.monbiot.com/dsp_article.cfm?article_id=461" target="_blank" rel="noopener">The New McCarthyism&lt;/a> George Monbiot says:&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>The charge of “anti-Americanism” is itself profoundly anti-American. If the United States does not stand for freedom of thought and speech, for diversity and dissent, then we have been deceived as to the nature of the national project. Were the founding fathers to congregate today to discuss the principles enshrined in their declaration of independence, they would be denounced as “anti-American” and investigated as potential terrorists. Anti-American means today precisely what un-American meant in the 1950s. It is an instrument of dismissal, a means of excluding your critics from rational discourse.&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>(snip)&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>If we are to preserve the progress, pluralism, tolerance and freedom which President Bush claims to be defending, then we must question everything we see and hear. Though we know that governments lie to us in wartime, most people seem to believe that this universal rule applies to every conflict except the current one.&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>(snip)&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>Democracy is sustained not by public trust but by public scepticism. Unless we are prepared to question, to expose, to challenge and to dissent, we conspire in the demise of the system for which our governments are supposed to be fighting.&lt;/em>&lt;/p>
&lt;/blockquote></description></item><item><title>Fun and science combined</title><link>https://www.synesthesia.co.uk/2001/10/16/fun-and-science-combined/</link><pubDate>Tue, 16 Oct 2001 22:41:49 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/10/16/fun-and-science-combined/</guid><description>&lt;p>&lt;a href="https://www.howgoodinbed.com" target="_blank" rel="noopener">HowGoodInBed.com:&lt;/a> is a web front end to a neural network. Every piece of data you add trains the network a little bit more.&lt;/p>
&lt;p>So what does it do? It tries to correlate externally observable factors (such as age, height, build, hair, skin colouring, social behaviour, chattiness, happiness, physical activity level and intelligence) with sexual attributes (such as viviaciousness, willingness, location, adventurousness and skill).&lt;/p>
&lt;p>You can enter the network either way – by describing someone you know to get an estimate of their bedroom rating, or vice versa – by describing what you want it will tell you the sort of person to look for. And of course there is a section to input your rating of real people you know to train the network a bit more. Try it and see!&lt;/p></description></item><item><title>All we needed was…</title><link>https://www.synesthesia.co.uk/2001/10/15/all-we-needed-wasmen-are/</link><pubDate>Mon, 15 Oct 2001 11:48:34 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/10/15/all-we-needed-wasmen-are/</guid><description>&lt;p>&lt;em>“Men Are Back”&lt;/em> says &lt;a href="https://opinionjournal.com/columnists/pnoonan/?id=95001309" target="_blank" rel="noopener">Peggy Noonan&lt;/a>. If she is right might this be the hidden benefit in all that is happening right now? Many writers have attributed a lot of the current ills in society to a world in which men, especially young under-educated men, have low self-esteem constantly reinforced by the messages they receive. So I join with Ms Noonan in extolling the virtues of the manly men who are putting New York back together. But towards the end of the article she then goes on to imagine John Wayne in Afghanistan swaggering around saying &lt;em>“Yer in a whole lotta trouble now, Osama-boy.”&lt;/em>. Shades here I think of the Roman matrons who told their sons to come back with their shield or on it – let’s not let this newly rediscovered manhood be distorted by the proxy war-hunger of yet another female in power….&lt;/p>
&lt;p>(with thanks to &lt;a href = "https://www.scripting.com/">Dave Winer&lt;/a>)&lt;/p></description></item><item><title>RAWA</title><link>https://www.synesthesia.co.uk/2001/10/08/rawathe-revolutionary-association-of-the/</link><pubDate>Mon, 08 Oct 2001 19:38:22 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/10/08/rawathe-revolutionary-association-of-the/</guid><description>&lt;p>The &lt;a href="https://rawa.org" target="_blank" rel="noopener">Revolutionary Association of the Women of Afghanistan (RAWA)&lt;/a> describe themselves as &lt;em>“a political/social organization of Afghan women struggling for peace, freedom, democracy and women’s rights in fundamentalism-blighted Afghanistan.”&lt;/em>. Certainly they have some shocking photos of the reality of life in the land ruled by the Taliban.&lt;/p></description></item><item><title>Flirting is Good for Productivity!</title><link>https://www.synesthesia.co.uk/2001/10/04/flirting-is-good-for-productivityoliver/</link><pubDate>Thu, 04 Oct 2001 00:23:31 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/10/04/flirting-is-good-for-productivityoliver/</guid><description>&lt;p>Oliver James writes in the &lt;a href="https://www.guardian.co.uk/Archive/Article/0,4273,4268155,00.html" target="_blank" rel="noopener">Guardian&lt;/a> to argue the case for adults to be playful. He reports on a study by the Gestalt Institute in Italy that studied flirtation and sex among 1,000 employees, and which concludes that office flirtation is good for relieving workplace anxiety and stress and improves relationships with your partner. Apparently the benefits to productivity and relationships are gained in proportion to the way in which flirting behaviour mimics the play of children in being goal-less fun. Where it goes horribly wrong is not through the intervention of “Big Brother” but when people get stuck into power-seeking and use flirtation and the manipulation of desire to reach work goals…&lt;/p>
&lt;p>He concludes&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>“And now it’s official: playful flirtation is good for you. Po-faced anti-flirts must learn to have more fun – but nobody should forget that it is only a game.”&lt;/em>&lt;/p>
&lt;/blockquote></description></item><item><title>Food for thought…</title><link>https://www.synesthesia.co.uk/2001/10/02/food-for-thoughtgeorge-monbiot-is/</link><pubDate>Tue, 02 Oct 2001 11:56:11 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/10/02/food-for-thoughtgeorge-monbiot-is/</guid><description>&lt;p>George Monbiot is nudging our consciences again. In his article &lt;a href="https://www.monbiot.com/dsp_article.cfm?article_id=458" target="_blank" rel="noopener">“Genocide or Peace”&lt;/a> he notes&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>“the Afghan winter, like the Russian one, is absolute. Aid workers with long experience of Afghanistan report that after the first week of November, there is nothing you can do”&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>and…&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>One person requires 18kg of food per month to survive. If the UN’s projections are correct, and some 1.5 million manage to leave the country, around 6.1m starving people will be left behind. In five weeks, in other words, Afghanistan requires 580,000 tonnes of food to see its people through the winter, as well as tarpaulins, warm clothes, medicines and water supply and sanitation equipment. The food alone would fill 21,000 trucks or 19,000 Hercules transport planes. The convoy which reached Kabul to such acclaim yesterday has met barely a three thousandth of the country’s needs.&lt;/em>&lt;/p>
&lt;/blockquote></description></item><item><title>The Onion</title><link>https://www.synesthesia.co.uk/2001/09/26/the-onion/</link><pubDate>Wed, 26 Sep 2001 20:28:17 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/09/26/the-onion/</guid><description>&lt;p>Today I keep finding links that take me to this satirical &lt;a href="https://www.theonion.com/onion3734/" target="_blank" rel="noopener">site&lt;/a>. Star piece for today (and surprisingly moving too) is &lt;a href="https://www.theonion.com/onion3734/god_clarifies_dont_kill.html" target="_blank" rel="noopener">“God Angrily Clarifies ‘Don’t Kill’ Rule”.&lt;/a> Read it.&lt;/p></description></item><item><title>And now for something completely different</title><link>https://www.synesthesia.co.uk/2001/09/26/and-now-for-something-completely-different/</link><pubDate>Wed, 26 Sep 2001 19:36:59 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/09/26/and-now-for-something-completely-different/</guid><description>&lt;p>Tom Cunliffe at &lt;a href="https://teatimewithtom.blogspot.com/" target="_blank" rel="noopener">Time for tea&lt;/a> pointed me to Annie Mole’s site called &lt;a href = "https://www.suite101.com/welcome.cfm/london_underground">London Underground&lt;/a>. No, not a trainspotter’s site, but a complete “microculture” – stuff that those of us who use the Tube every day take completely for granted. Or maybe it’s irony?&lt;/p></description></item><item><title>Footprints in cyberspace</title><link>https://www.synesthesia.co.uk/2001/09/25/footprints-in-cyberspace/</link><pubDate>Tue, 25 Sep 2001 23:51:54 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/09/25/footprints-in-cyberspace/</guid><description>&lt;p>&lt;a href="https://doc.weblogs.com/2001/09/25#businessInReality" target="_blank" rel="noopener">Doc Searls&lt;/a> refers to a list of former WTC tenants, and their corporate websites that in some cases seem untouched by events of the 11th, frozen where they were left in cyberspace. Hmmm.&lt;/p></description></item><item><title>“Collateral Repair”</title><link>https://www.synesthesia.co.uk/2001/09/25/collateral-repair/</link><pubDate>Tue, 25 Sep 2001 23:18:25 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/09/25/collateral-repair/</guid><description>&lt;p>…is the title of a thought provoking &lt;a href = "https://www.monbiot.com/dsp\_article.cfm?article\_id=456">article&lt;/a> by George Monbiot (who characterises himself as an “objector”) For him objecting to war is not about appeasing terrorists, nor does he view the events of 11th September as anything other than &lt;em>“a crime against humanity”&lt;/em>, but he does argue strongly that if we forgo justice then the terrorists have already won.&lt;/p>
&lt;p>His approach to resolving this situation, &lt;u>if&lt;/u> evidence can be assembled that points to Bin Laden is to &lt;em>“cut out the world war and go straight to Nuremburg”&lt;/em>. To encourage the Afghani people to drive out the Taliban and Bin Laden so that they can be brought before the courts he advocates massive humanitarian aid to these starving millions to &lt;em>“show the people that, unlike the Taliban, the West is on their side”&lt;/em>.&lt;/p>
&lt;p>What I found particularly interesting about this article was that far from being the sort of simplistic “all war is wrong” stance that most of the Western governments have accused the “pacifists” of adopting it does not duck the issue of bringing the perpetrators to justice, and it does offer a route that may stabilise the region rather than ferment further strife.&lt;/p>
&lt;p>The underlying assumption on which it rests is that the Afghan people resent the Taliban but are both too weak to oppose them and too scared of the West. That is the presumption that needs to be tested over the coming weeks.&lt;/p></description></item><item><title>Different Views?</title><link>https://www.synesthesia.co.uk/2001/09/24/different-views/</link><pubDate>Mon, 24 Sep 2001 09:47:25 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/09/24/different-views/</guid><description>&lt;p>&lt;a href="https://www.guardian.co.uk/Archive/Article/0,4273,4261662,00.html" target="_blank" rel="noopener">John Pilger wrote in the Guardian last week&lt;/a>&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>In these surreal days, there is one truth. Nothing justified the killing of innocent people in America last week and nothing justifies the killing of innocent people anywhere else.&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>…and further urged us in the UK to “behave responsibly” and turn away from the imperialistic response to focus instead on peace and justice for all people. He compares the religious fundamentalism of Bin Laden and the Taleban with the foreign policy fundamentalism of the West – both result in the death of innocent people.&lt;/p>
&lt;p>His article has attracted considerable &lt;a href="https://www.guardian.co.uk/Archive/Article/0,4273,4263069,00.html" target="_blank" rel="noopener">comment&lt;/a> both for and against, including a response from Ken Barnes in Sacramento who states&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>“It’ s quite obvious that John Pilger just doesn’t understand your situation …a continued lack of action will just worsen an already grave condition. “&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>So who should we believe? John Pilger is a widely-respected journalist. I don’t know who Mr Barnes is, but I get a sense of honest belief from his argument that I suspect many Americans share.&lt;/p>
&lt;p>Surely it must be simple – one of these commentators must be right and the other wrong? Or can we look beyond that and understand a world where they are both right? And if we do that, then what action should we advocate?&lt;/p>
&lt;p>What do these commentators believe in order to say what they do?&lt;/p>
&lt;p>What is the intention of that belief?&lt;/p>
&lt;p>Can we find anything in common between those intentions?&lt;/p>
&lt;p>And how can we incorporate those perspectives into our own beliefs in a useful way?&lt;/p>
&lt;p>If we are going to keep our way of life, regardless of the actions of those who would destroy it, then I suggest we all need our own answers to these questions…&lt;/p></description></item><item><title>Awakeners</title><link>https://www.synesthesia.co.uk/2001/09/23/awakeners/</link><pubDate>Sun, 23 Sep 2001 16:42:23 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/09/23/awakeners/</guid><description>&lt;h4 id="awakeners">Awakeners&lt;/h4>
&lt;p>I still don’t know what to think about current world events.&lt;/p>
&lt;p>I’ve been trawling the web searching for contrasting opinions&lt;/p>
&lt;p>that might help narrow down my thoughts. For example &lt;a href="https://scriptingnews.userland.com/backissues/2001/09/22" target="_blank" rel="noopener">Dave Winer&lt;/a> writes about his own attitudes to the America he lives&lt;/p>
&lt;p>in and how they are changing, and contrasts this with the pulse&lt;/p>
&lt;p>of anti-Americanism he feels in Europe. He and others refer to an&lt;/p>
&lt;p>excellent &lt;a href="https://www.sunday-times.co.uk/news/pages/sti/2001/09/23/stiusausa01024.html" target="_blank" rel="noopener">Sunday Times article&lt;/a> by Brian Appleyard. Appleyard quotes George&lt;/p>
&lt;p>Orwell from 1941&lt;/p>
&lt;blockquote>
&lt;p>_&amp;ldquo;In so far as it hampers the British war effort,&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>British pacifism is on the side of the Nazis and German&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>pacifism, if it exists, is on the side of Britain and the&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>USSR. Since pacifists have more freedom of action in&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>countries where traces of democracy survive, pacifism can act&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>more effectively against democracy than for it. Objectively&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>the pacifist is pro-Nazi.&amp;rdquo;_&lt;/p>
&lt;/blockquote>
&lt;p>Now this really made me think – my late father was a&lt;/p>
&lt;p>conscientious objector during WWII – and although I never quite&lt;/p>
&lt;p>understood why, after his death I began to realise how much this&lt;/p>
&lt;p>was about his very strong sense of &lt;em>his&lt;/em> values. However,&lt;/p>
&lt;p>I began to realise that the key difference between Jack and the&lt;/p>
&lt;p>&amp;ldquo;chattering classes&amp;rdquo; who would knock America now was&lt;/p>
&lt;p>that he did contribute to the war effort, albeit indirectly. As I&lt;/p>
&lt;p>wrote in his eulogy&lt;/p>
&lt;blockquote>
&lt;p>_&amp;ldquo;This isn’t the time to recap the things he did,&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>except to note that in his work with the Civil Defence he did&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>his part to support the community he lived in, regardless of&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>the prejudice he often faced for his views.&amp;rdquo;_&lt;/p>
&lt;/blockquote>
&lt;p>So can our thinking be subtle enough to distinguish between&lt;/p>
&lt;p>&amp;ldquo;not bearing arms&amp;rdquo; and &amp;ldquo;opposing the war&amp;rdquo; ?&lt;/p>
&lt;p>The essence I think is the difference between on the one hand&lt;/p>
&lt;p>supporting the society within which you live (even if you set&lt;/p>
&lt;p>some barriers around what you consider ethical to do in support&lt;/p>
&lt;p>of that society), or on the other reaping all of the benefits of&lt;/p>
&lt;p>the society without supporting it. For all that the&lt;/p>
&lt;p>&amp;ldquo;fashionable elites&amp;rdquo; (Islington or otherwise) wish to&lt;/p>
&lt;p>knock America and the West in general, every aspect of their&lt;/p>
&lt;p>lives revolves around being part of the Western world, from the&lt;/p>
&lt;p>economic success of capitalism to the freedom under a democracy&lt;/p>
&lt;p>to express their opinions.&lt;/p>
&lt;p>Yes, undoubtably, there are many millions outside the West who&lt;/p>
&lt;p>look at our lives (even the poorest of us) with envy, and perhaps&lt;/p>
&lt;p>millions who look at us with hatred. Many of those who hate&lt;/p>
&lt;p>exploit those who are envious to gather recruits to their cause.&lt;/p>
&lt;p>The balancing trick our leaders have to follow is to defend us&lt;/p>
&lt;p>against those who would destroy our way of life whilst ensuring&lt;/p>
&lt;p>we do not create more enemies amongst the ones who merely envy.&lt;/p>
&lt;p>A &lt;a href="https://news.bbc.co.uk/hi/english/world/middle_east/newsid_1557000/1557828.stm" target="_blank" rel="noopener">news article&lt;/a> today about the background of the terrorists suggests&lt;/p>
&lt;p>that they were far from being the dispossessed – so can there&lt;/p>
&lt;p>really be any weight to the argument that says the West &amp;ldquo;had&lt;/p>
&lt;p>this coming&amp;rdquo;?&lt;/p>
&lt;p>Finally for this entry, I’d like to link to an article by&lt;/p>
&lt;p>Robert Dilts, written the day after the WTC attack and simply&lt;/p>
&lt;p>entitled [Reflections&lt;/p>
&lt;p>on September 11]&lt;a href="https://www.nlpu.com/Sept_11.html" target="_blank" rel="noopener">4&lt;/a>.&lt;/p>
&lt;p>Robert is one of the world leaders in NLP,&lt;/p>
&lt;p>and a very gentle, thoughtful and spiritual man. In his article&lt;/p>
&lt;p>he calls on us all to be awakeners, and says:&lt;/p>
&lt;blockquote>
&lt;p>_&amp;ldquo;The job of the awakener is to shine light into&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>situations which are dim, not cast his or her own shadow into&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>the darkness that is already there. Awakeners have no&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>illusions about human nature so they do not have negative&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>surprises. But they have a strong belief about what is&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>possible.&amp;rdquo;_&lt;/p>
&lt;/blockquote>
&lt;p>So I wonder what we believe is possible?&lt;/p></description></item><item><title>How The Mind Works</title><link>https://www.synesthesia.co.uk/2001/09/22/how-the-mind-works/</link><pubDate>Sat, 22 Sep 2001 18:08:54 +0000</pubDate><guid>https://www.synesthesia.co.uk/2001/09/22/how-the-mind-works/</guid><description>&lt;p>Just reading &lt;amazonlink asin="0140244913">How The Mind Works&lt;/amazonlink> by &lt;a href="https://www.mit.edu/~pinker/" target="_blank" rel="noopener">Steven Pinker&lt;/a>. After the intro he dives into explaining the computational theory of mind, and now (in the chapter I am currently reading) revisits the theory of evolution and explains how this impinges on the growth of the human mind.&lt;/p>
&lt;p>It sometimes takes me a few weeks to read a dense book like this, usually in 20 minute snatches on the tube, so watch this space, there will be more updates to come!&lt;/p></description></item></channel></rss>