<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>I can't remember where I read it...</title>
		<description>An online collection of post-it notes</description>
		<link>https://blog.adrianbanks.co.uk/</link>
		<atom:link href="https://blog.adrianbanks.co.uk/feed.xml" rel="self" type="application/rss+xml" />
		
			<item>
				<title>SQL Server test databases</title>
				<description>&lt;p&gt;As mentioned in my &lt;a href=&quot;/databases/2026/06/06/reference-databases.html&quot;&gt;previous post&lt;/a&gt;, I often need to run the tooling I’m working on against databases to test it. Part of this testing is to ensure that the tooling can handle schemas with odd naming. Over the years working on database tooling, I’ve collated a script full of odd cases that can easily trip up tooling. It’s now become a standard script that I run on my local SQL Server testing instance when I first set it up.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DATABASE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;💩&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;USE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;💩&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;SCHEMA&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;💰&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dbo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].[&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;🍺&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;🐈&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;INT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;💰&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].[&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;💾&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;📌&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;INT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;------------------------------------------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DATABASE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[.]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;USE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[.]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;SCHEMA&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[.]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;SCHEMA&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[..]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[.].[.]&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[.]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[..]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[...]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[.].[..]&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[.]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[..]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[...]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[..].[.]&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[.]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[..]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[...]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[..].[..]&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[.]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[..]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[...]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;------------------------------------------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DATABASE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;)) group by groupcir; select 1;GO--%&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;------------------------------------------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DATABASE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_Burma&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;ဗမာ&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;မြန်မာ&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;my&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;------------------------------------------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DATABASE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_Georgia&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;ქართული&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;საქართველო&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ka&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ge&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;------------------------------------------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DATABASE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_Saudi&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Arabia&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;العربية&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;المملكة&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;العربية&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;السعودية&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ar&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sa&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;------------------------------------------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DATABASE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_Tamil&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;தமிழ்&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;இலங்கை&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ta&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lk&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;------------------------------------------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DATABASE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;alert&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;&quot;hi there&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;script&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;------------------------------------------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DATABASE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;database&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;very&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;USE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;database&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;very&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;SCHEMA&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;schema&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;very&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;schema&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;very&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;table&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;very&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;column&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;very&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;INT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;another&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;table&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;very&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;another&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;column&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;very&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;INT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;VIEW&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;view&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;very&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;V&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;PROCEDURE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;procedure&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;very&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a_parameter_with_a_very_long_long_long_long_long_long_long_long_long_long_long_long_long_long_long_long_long_long_long_name&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;INT&lt;/span&gt; 
&lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FUNCTION&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;very&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;](&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;another_parameter_with_a_very_long_long_long_long_long_long_long_long_long_long_long_long_long_long_long_long_long_long_name&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;INT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;RETURNS&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;INT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;BEGIN&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;RETURN&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;END&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;------------------------------------------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DATABASE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Empty&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;------------------------------------------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DATABASE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;spaces&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;------------------------------------------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DATABASE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;with&apos;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;single&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;quotes]
GO

------------------------------------------------------------------------------------
CREATE DATABASE [name.with.dots]
GO

------------------------------------------------------------------------------------
CREATE DATABASE [name/with/forward/slashes]
GO

------------------------------------------------------------------------------------
CREATE DATABASE [name[with[opening[brackets]
GO

------------------------------------------------------------------------------------
CREATE DATABASE [name&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\w&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;ith&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\b&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;ackslashes]
GO

------------------------------------------------------------------------------------
CREATE DATABASE [name]]with]]closing]]brackets]
GO

------------------------------------------------------------------------------------
CREATE DATABASE [name-with-dashes]
GO

------------------------------------------------------------------------------------
CREATE DATABASE [name]
GO

------------------------------------------------------------------------------------
CREATE DATABASE [Offline]
GO

ALTER DATABASE [Offline] SET OFFLINE
GO

------------------------------------------------------------------------------------
CREATE DATABASE [ReadOnly]
GO

ALTER DATABASE [ReadOnly] SET READ_ONLY WITH NO_WAIT
GO&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

</description>
				<pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/databases/2026/06/08/sql-server-test-databases.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/databases/2026/06/08/sql-server-test-databases.html</guid>
			</item>
		
			<item>
				<title>Reference databases</title>
				<description>&lt;p&gt;As part of my day-to-day work, I often need to run the tooling I’m working on against databases to test it. The databases need to have a variaty of different schemas and data in them to do a representative test. A big problem with this is getting hold of an array of different databases in the first place. This problem is compounded further by the fact that the tooling I work on supports five different database platforms, so there is a need for different databases for each platform.&lt;/p&gt;

&lt;p&gt;A useful source of ready-made databases is the reference databases that are provided by the vendor or community around each database. The ones I’ve found so far are listed below, with a bit of detail about what each one represents.&lt;/p&gt;

&lt;h3 id=&quot;sql-server&quot;&gt;SQL Server&lt;/h3&gt;

&lt;table class=&quot;mdtable&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;AdventureWorks&lt;/td&gt;
      &lt;td&gt;A fictional bicycle manufacturer “Adventure Works Cycles”, containing data including manufacturing, sales, purchasing, product management, contact management, and human resources. Available in Online transactional (OLTP), Data warehousing (DW), and Lightweight (LT) formats.&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/sql/samples/adventureworks-install-configure&quot;&gt;backups&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com/microsoft/sql-server-samples/tree/master/samples/databases/adventure-works&quot;&gt;scripts&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Chinook&lt;/td&gt;
      &lt;td&gt;A fictional digital media store, containing data including artists, albums, tracks, invoices, and customers.&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/lerocha/chinook-database/blob/master/ChinookDatabase/DataSources/Chinook_SqlServer.sql&quot;&gt;script&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Contoso&lt;/td&gt;
      &lt;td&gt;“Contoso Corporation”, a fictional multinational business (more info here), containing data including manufacturing, sales, and products.&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/microsoft/sql-server-samples/blob/master/samples/databases/contoso-data-warehouse/readme.md&quot;&gt;scripts&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Northwind&lt;/td&gt;
      &lt;td&gt;“Northwind Traders”, a fictional importer/exporter of speciality foods from around the world, containing sales data including customers, orders, inventory, purchasing, suppliers, shipping, employees, and accounting.&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/microsoft/sql-server-samples/blob/master/samples/databases/northwind-pubs/readme.md&quot;&gt;scripts&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;WideWorldImporters&lt;/td&gt;
      &lt;td&gt;“Wide World Importers”, a fictional wholesale novelty goods importer and distributor operating from the San Francisco bay area (more info &lt;a href=&quot;https://learn.microsoft.com/en-gb/sql/sam ples/wide-world-importers-what-is&quot;&gt;here&lt;/a&gt;), containing data including purchasing, sales and stock. Available in Online transactional (OLTP) and Data warehousing (DW) formats.&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0&quot;&gt;backups&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h4 id=&quot;stack-exchange--stackoverflow&quot;&gt;Stack Exchange / StackOverflow&lt;/h4&gt;

&lt;p&gt;The databases behind the many sites in the &lt;a href=&quot;https://stackexchange.com&quot;&gt;Stack Exchange&lt;/a&gt; network can be downloaded &lt;a href=&quot;https://archive.org/details/stackexchange&quot;&gt;here&lt;/a&gt;. The database for each Stack Exchange site can be downloaded, including that for &lt;a href=&quot;https://stackoverflow.com&quot;&gt;StackOverflow&lt;/a&gt;. However, the StackOverflow database is quite big (~65GB), so it has been split up into several files. That makes it non-trivial to get it into a SQL Server database.&lt;/p&gt;

&lt;p&gt;Brent Ozar has simplified this process by &lt;a href=&quot;https://www.brentozar.com/archive/2015/10/how-to-download-the-stack-overflow-database-via-bittorrent/&quot;&gt;providing downloads&lt;/a&gt; of the database files in SQL Server 2016 format.&lt;/p&gt;

&lt;h3 id=&quot;postgresql&quot;&gt;PostgreSQL&lt;/h3&gt;

&lt;table class=&quot;mdtable&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;AdventureWorks&lt;/td&gt;
      &lt;td&gt;A port of the SQL Server version of AdventureWorks, a fictional bicycle manufacturer “Adventure Works Cycles”, containing data including manufacturing, sales, purchasing, product management, contact management, and human resources.&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/NorfolkDataSci/adventure-works-postgres&quot;&gt;script&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Chinook&lt;/td&gt;
      &lt;td&gt;A port of the SQL Server version of Chinook, a fictional digital media store, containing data including artists, albums, tracks, invoices, and customers.&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/lerocha/chinook-database/blob/master/ChinookDatabase/DataSources/Chinook_PostgreSql.sql&quot;&gt;script&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Pagila&lt;/td&gt;
      &lt;td&gt;A database of a fictional DVD rental store, containing data including films, actors, customers, staff, and payments.&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/devrimgunduz/pagila&quot;&gt;scripts&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h4 id=&quot;bluebox&quot;&gt;Bluebox&lt;/h4&gt;

&lt;p&gt;Ryan Booz has created &lt;a href=&quot;https://github.com/ryanbooz/bluebox&quot;&gt;Bluebox&lt;/a&gt;, a database based on Pagila that aims to make it more full-featured.&lt;/p&gt;

&lt;h4 id=&quot;nyc-census&quot;&gt;NYC Census&lt;/h4&gt;

&lt;p&gt;If using PostGIS (an extension for managing spatial data), the &lt;a href=&quot;https://postgis.net/workshops/postgis-intro/index.html&quot;&gt;introduction to PostGIS tutorial&lt;/a&gt; contains a sample database of census data for New York City.&lt;/p&gt;

&lt;h4 id=&quot;other-databases&quot;&gt;Other Databases&lt;/h4&gt;

&lt;p&gt;The PostgreSQL website has a &lt;a href=&quot;https://wiki.postgresql.org/wiki/Sample_Databases&quot;&gt;long list of other sample databases&lt;/a&gt;, including IMDB, the UK land registry of sales, and OpenStreetMap.&lt;/p&gt;

&lt;h3 id=&quot;mysql--mariadb&quot;&gt;MySQL / MariaDB&lt;/h3&gt;

&lt;table class=&quot;mdtable&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Bureau of Transportation Statistics&lt;/td&gt;
      &lt;td&gt;A database of US commercial airline flight data including airlines, airports, and flights.&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/mariadb-corporation/mariadb-analytics-sample-data&quot;&gt;scripts&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Employees&lt;/td&gt;
      &lt;td&gt;A database containing generated data including employees, departments, employees, and salaries.&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://dev.mysql.com/doc/employee/en/employees-installation.html&quot;&gt;scripts&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Sakila&lt;/td&gt;
      &lt;td&gt;A fictional DVD rental store, containing data including films, actors, customers, staff, and payments.&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://dev.mysql.com/doc/sakila/en/sakila-installation.html&quot;&gt;scripts&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;World&lt;/td&gt;
      &lt;td&gt;A database containing information about the countries and cities of the world, containing data including countries, cities, and languages spoken.&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://dev.mysql.com/doc/world-setup/en/world-setup-installation.html&quot;&gt;script&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h4 id=&quot;other-databases-1&quot;&gt;Other Databases&lt;/h4&gt;

&lt;p&gt;The MySQL website has a &lt;a href=&quot;https://dev.mysql.com/doc/index-other.html&quot;&gt;list of other sample databases&lt;/a&gt;, including some with large data sets.&lt;/p&gt;

&lt;h3 id=&quot;oracle&quot;&gt;Oracle&lt;/h3&gt;

&lt;p&gt;Oracle themselves provide some interlinked sample schemas:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Customer Orders (CO)&lt;/li&gt;
  &lt;li&gt;Human Resources (HR)&lt;/li&gt;
  &lt;li&gt;Online Catalog (OC)&lt;/li&gt;
  &lt;li&gt;Order Entry (OE)&lt;/li&gt;
  &lt;li&gt;Product Media (PM)&lt;/li&gt;
  &lt;li&gt;Sales History (SH)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are &lt;a href=&quot;https://docs.oracle.com/en/database/oracle/oracle-database/19/comsc/&quot;&gt;documented on the Oracle site&lt;/a&gt;, and can be obtained from the &lt;a href=&quot;https://github.com/oracle-samples/db-sample-schemas&quot;&gt;Oracle samples GitHub repository&lt;/a&gt;.&lt;/p&gt;

&lt;table class=&quot;mdtable&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Install&lt;/strong&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;OT&lt;/td&gt;
      &lt;td&gt;A global fictitious company that sells computer hardware including storage, motherboard, RAM, video card, and CPU.&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://www.oracletutorial.com/getting-started/oracle-sample-database/&quot;&gt;scripts&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;O7&lt;/td&gt;
      &lt;td&gt;A schema for a fictitious bank, containing customers, accounts, products, branches, departments, and employees.&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://o7planning.org/10233/sample-oracle-database-for-learning-sql#a23171&quot;&gt;scripts&lt;/a&gt; (see section 2)&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;gerenal-data-sources&quot;&gt;Gerenal data sources&lt;/h3&gt;

&lt;p&gt;There are many sites that provide data suitable for using as a reference database. While many of these sites provide the data, few of them provide it in a format that can be loaded straight into the relevant database platform. They can however be imported fairly trivially.&lt;/p&gt;

&lt;table class=&quot;mdtable&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://datasetsearch.research.google.com&quot;&gt;Google Dataset Search&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;A search engine for datasets from across the internet.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://www.kaggle.com/datasets&quot;&gt;Kaggle&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Datasets for data science and machine learning. Interesting datasets include &lt;a href=&quot;https://www.kaggle.com/datasets/wyattowalsh/basketball&quot;&gt;NBA Basketball&lt;/a&gt; and &lt;a href=&quot;https://www.kaggle.com/datasets/maltegrosse/8-m-spotify-tracks-genre-audio-features&quot;&gt;Spotify&lt;/a&gt;.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://archive.ics.uci.edu&quot;&gt;UC Irvine Machine Learning Repository&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Well-documented and clean data sources, mainly geared towards machine learning.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://github.com/awesomedata/awesome-public-datasets&quot;&gt;Awesome Public Data Sets&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;A list of high quality, topic-centric public data sources.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://www.data-is-plural.com/archive/&quot;&gt;Data Is Plural&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;A weekly newsletter and archive of real-world datasets.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://huggingface.co/datasets&quot;&gt;Hugging Face&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;A huge set of data, mainly targeted at machine learning.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
</description>
				<pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/databases/2026/06/06/reference-databases.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/databases/2026/06/06/reference-databases.html</guid>
			</item>
		
			<item>
				<title>DDD South West 14</title>
				<description>&lt;p&gt;I’ve just got back from another &lt;a href=&quot;https://www.dddsouthwest.com&quot;&gt;DDD South West&lt;/a&gt;. It’s the last time at the Engine Shed, the venue it’s been at for several years. It’s a shame, as the venue is perfect for an event like this, and the food is excellent.&lt;/p&gt;

&lt;p&gt;This year I was a speaker, doing a &lt;a href=&quot;/talks/sketchnoting-101/&quot;&gt;session on sketchnoting&lt;/a&gt;. It’s the first time I’ve given this talk, and I got the whole audience sketching along with me during the session. Several people also took my challenge to sketchnote a session during the rest of the day. Hopefully they will continue to do so at other events.&lt;/p&gt;

&lt;h3 id=&quot;2026-the-year-of-the-software-factory&quot;&gt;2026: The Year Of The Software Factory&lt;/h3&gt;
&lt;p&gt;by Rich Woollcott
&lt;a href=&quot;https://lookitsrich.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/RWoollcott&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/05/2026-the-year-of-the-software-factory-rich-woollcott.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/05/2026-the-year-of-the-software-factory-rich-woollcott.jpg#img-sketchnote&quot; alt=&quot;2026: The Year Of The Software Factory by Rich Woollcott&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;using-claude-to-access-data-and-make-smarter-decisions&quot;&gt;Using Claude To Access Data And Make Smarter Decisions&lt;/h3&gt;
&lt;p&gt;by Elizabeth Hanson&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/05/using-claude-to-access-data-and-make-smarter-decisions-elizabeth-hanson.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/05/using-claude-to-access-data-and-make-smarter-decisions-elizabeth-hanson.jpg#img-sketchnote&quot; alt=&quot;Using Claude To Access Data And Make Smarter Decisions by Elizabeth Hanson&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;playing-with-ai-locally&quot;&gt;Playing With AI Locally&lt;/h3&gt;
&lt;p&gt;by Paul Michaels
&lt;a href=&quot;https://pmichaels.net&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/paul_michaels&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/pcmichaels/offline-ai&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/05/playing-with-ai-locally-paul-michaels.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/05/playing-with-ai-locally-paul-michaels.jpg#img-sketchnote&quot; alt=&quot;Playing With AI Locally by Paul Michaels&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;from-developer-to-architect-the-career-path-nobody-explained&quot;&gt;From Developer To Architect, The Career Path Nobody Explained&lt;/h3&gt;
&lt;p&gt;by John Kilmister
&lt;a href=&quot;https://www.blueboxes.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/johnkilmister&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/johnkilmister.bsky.social&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/05/from-developer-to-architect-the-career-path-nobody-explained-john-kilmister.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/05/from-developer-to-architect-the-career-path-nobody-explained-john-kilmister.jpg#img-sketchnote&quot; alt=&quot;From DeveloperTo Architect, The Career Path Nobody Explained by John Kilmister&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;do-we-really-need-a-new-playbook-for-ai&quot;&gt;Do We Really Need A New Playbook For AI?&lt;/h3&gt;
&lt;p&gt;by Stuart Caborn&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/05/do-we-really-need-a-new-playbook-for-ai-stuart-caborn.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/05/do-we-really-need-a-new-playbook-for-ai-stuart-caborn.jpg#img-sketchnote&quot; alt=&quot;Do We Really Need A New Playbook For AI? by Stuart Caborn&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;why-dont-people-seem-to-be-able-to-diagnose-problems-these-days&quot;&gt;Why Don’t People Seem To Be Able To Diagnose Problems These Days?&lt;/h3&gt;
&lt;p&gt;by Richard Fennell
&lt;a href=&quot;https://blog.richardfennell.net&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://twitter.com/richardfennell&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/richardfennell.bsky.social&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://techhub.social/@rfennell&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/05/why-dont-people-seem-to-be-able-to-diagnose-problems-these-days-richard-fennell.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/05/why-dont-people-seem-to-be-able-to-diagnose-problems-these-days-richard-fennell.jpg#img-sketchnote&quot; alt=&quot;Why Don&apos;t People Seem To Be Able To Diagnose Problems These Days? by Richard Fennell&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Sun, 17 May 2026 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2026/05/17/ddd-south-west-14.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2026/05/17/ddd-south-west-14.html</guid>
			</item>
		
			<item>
				<title>Extracting a DACPAC</title>
				<description>&lt;p&gt;SQL Server has the concept of &lt;a href=&quot;https://learn.microsoft.com/en-us/sql/tools/sql-database-projects/concepts/data-tier-applications/overview&quot;&gt;data-tier applications&lt;/a&gt;. This is a way of defining the structure and data of an entire database within a single file, enabling it to be moved between machines. There are two types of files that can be used:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;BACPAC - This contains the database schema and the data from a database.&lt;/li&gt;
  &lt;li&gt;DACPAC - This contains the just the database schema by default, but data from some tables can be included.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Data-tier applications have benefits over backup files in that they are more portable. Backups are tied to the version of SQL Server that they are created with, meaning that only that version or later can restore them.&lt;/p&gt;

&lt;p&gt;I use DACPACs a lot to get database schemas between different servers. Deploying a DACPAC will sometimes fail due to it containing logins, users, etc… from the database it was created from that don’t exist on the server it is being deployed to. When this happens, SQL Server Management Studio simply fails with an error with no way around the issue.&lt;/p&gt;

&lt;p&gt;It is possible to deploy however, but it takes a bit of command line trickery. To do this, first install the &lt;a href=&quot;https://learn.microsoft.com/en-us/sql/tools/sqlpackage/sqlpackage-download&quot;&gt;SqlPackage&lt;/a&gt; dotnet tool:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt; dotnet tool install -g microsoft.sqlpackage
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Once installed, you can run it from the command line, passing the option to exclude certain object types. Something like:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sqlpackage
  /Action:Publish
  /TargetServerName:.\SQL2025
  /TargetDatabaseName:Northwind
  /Properties:ExcludeObjectTypes=&quot;Users;RoleMembership;Logins;ServerRoles;ServerRoleMembership;Permissions&quot;
  /SourceFile:northwind.dacpac
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;It’s the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/Properties:ExcludeObjectTypes=...&lt;/code&gt; parameter that does the magic. In this case, the security-related objects causing the deploy to fail will be excluded from the deployed database schema.&lt;/p&gt;

&lt;p&gt;More details can be found in the docs for the &lt;a href=&quot;https://learn.microsoft.com/en-us/sql/tools/sqlpackage/sqlpackage-publish&quot;&gt;SqlPackage publish action&lt;/a&gt;.&lt;/p&gt;
</description>
				<pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/sql-server/2026/03/24/extracting-a-dacpac.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/sql-server/2026/03/24/extracting-a-dacpac.html</guid>
			</item>
		
			<item>
				<title>nor(DEV):con 2026</title>
				<description>&lt;p&gt;I’ve just returned from &lt;a href=&quot;https://nordevcon.com&quot;&gt;nor(DEV):con&lt;/a&gt;, an event I &lt;a href=&quot;/nordevcon/sketchnotes/2024/02/24/nordevcon-2024.html&quot;&gt;previously went to&lt;/a&gt; a few years ago.&lt;/p&gt;

&lt;h3 id=&quot;designing-services-that-stand-the-test-of-time&quot;&gt;Designing Services That Stand The Test Of Time&lt;/h3&gt;
&lt;p&gt;by Paul Grenyer
&lt;a href=&quot;https://paulgrenyer.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/pjgrenyer&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/designing-services-that-stand-the-test-of-time-paul-grenyer.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/designing-services-that-stand-the-test-of-time-paul-grenyer.jpg#img-sketchnote&quot; alt=&quot;Designing Services That Stand the Test Of Time by Paul Grenyer&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;stop-testing-my-patience&quot;&gt;Stop Testing! (My Patience)&lt;/h3&gt;
&lt;p&gt;by Ryan Healey&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/stop-testing-my-patience-ryan-healey.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/stop-testing-my-patience-ryan-healey.jpg#img-sketchnote&quot; alt=&quot;Stop Testing! (My Patience) by Ryan Healey&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;modular-monoliths-and-other-facepalms&quot;&gt;Modular Monoliths And Other Facepalms&lt;/h3&gt;
&lt;p&gt;by Kevlin Henney
&lt;a href=&quot;https://x.com/KevlinHenney&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/kevlin.bsky.social&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://mastodon.social/@kevlin&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/modular-monoliths-and-other-facepalms-kevlin-henney.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/modular-monoliths-and-other-facepalms-kevlin-henney.jpg#img-sketchnote&quot; alt=&quot;Modular Monoliths And Other Facepalms by Kevlin Henney&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;debugging-your-imposter-syndrome&quot;&gt;Debugging Your Imposter Syndrome&lt;/h3&gt;
&lt;p&gt;by Vickie Allen-Collier&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/debugging-your-imposter-syndrome-vickie-allen-collier.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/debugging-your-imposter-syndrome-vickie-allen-collier.jpg#img-sketchnote&quot; alt=&quot;Debugging Your Imposter Syndrome by Vickie Allen-Collier&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;learn-how-to-learn&quot;&gt;Learn How To Learn&lt;/h3&gt;
&lt;p&gt;by Frances Buontempo
&lt;a href=&quot;&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/fbuontempo&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/fbuontempo.bsky.social&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://about.me/@fbuontempo@mastodon.social&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/learn-how-to-learn-frances-buontempo.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/learn-how-to-learn-frances-buontempo.jpg#img-sketchnote&quot; alt=&quot;Learn How To Learn by Frances Buontempo&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;translating-business-metrics-into-meaningful-user-outcomes&quot;&gt;Translating Business Metrics Into Meaningful User Outcomes&lt;/h3&gt;
&lt;p&gt;by Elisabeth Dubus
&lt;a href=&quot;https://www.elisabethdubus.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/translating-business-metrics-into-meaningful-user-outcomes-elisabeth-dubus.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/translating-business-metrics-into-meaningful-user-outcomes-elisabeth-dubus.jpg#img-sketchnote&quot; alt=&quot;Translating Business Metrics Into Meaningful User Outcomes by Elisabeth Dubus&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;how-we-support-deploying-multi-cloud-apps-at-stack-overflow&quot;&gt;How We Support Deploying Multi-Cloud Apps At Stack Overflow&lt;/h3&gt;
&lt;p&gt;by Chris O’Dell
&lt;a href=&quot;https://chrisodell.wordpress.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/ChrisAnnODell&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://techhub.social/@ChrisAnn&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/how-we-support-deploying-multi-cloud-apps-at-stack-overflow-chris-odell.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/how-we-support-deploying-multi-cloud-apps-at-stack-overflow-chris-odell.jpg#img-sketchnote&quot; alt=&quot;How We Support Deploying Multi-Cloud Apps At Stack Overflow by Chris O&apos;Dell&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/nordevcon/sketchnotes/2026/02/28/nordevcon-2026.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/nordevcon/sketchnotes/2026/02/28/nordevcon-2026.html</guid>
			</item>
		
			<item>
				<title>NDC London 2026</title>
				<description>&lt;p&gt;After a three year hiatus, last week I returned to the Queen Elizabeth II Centre in Westminster to attend &lt;a href=&quot;https://ndc-london.com&quot;&gt;NDC London&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/media/images/2026/02/venue.jpg&quot; alt=&quot;QE II Centre&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As I’ve done before, I was part of the crew helping out at the event. In exchange for a free ticket, you help out with the setup and registration of attendees, and spend 50% of each day room monitoring. While I did not know most of the crew when I turned up, we formed our own little community within the conference and got to know each other in just a few days.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/media/images/2026/02/crew.jpg&quot; alt=&quot;NDC Crew 2026&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;net-meets-mcp---build-your-own-ai-powered-service-with-c&quot;&gt;.Net Meets MCP - Build Your Own AI-Powered Service With C#&lt;/h3&gt;
&lt;p&gt;by Gerald Versluis
&lt;a href=&quot;https://jfversluis.dev&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/jfversluis&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/jfversluis.dev&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://mas.to/@jfversluis&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=1MAvdjpew1g&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/dotnet-meets-mcp-build-your-own-ai-powered-service-with-csharp-gerald-versluis.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/dotnet-meets-mcp-build-your-own-ai-powered-service-with-csharp-gerald-versluis.jpg#img-sketchnote&quot; alt=&quot;.Net Meets MCP - Build Your Own AI-Powered Service With C# by Gerald Versluis&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;advanced-pattern-matching-in-c&quot;&gt;Advanced Pattern Matching In C#&lt;/h3&gt;
&lt;p&gt;by Oliver Sturm
&lt;a href=&quot;https://www.oliversturm.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/olivers&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/bsky.oliversturm.com&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://mastodon.world/@olisturm&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=oKNAKc41zBs&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/advanced-pattern-matching-in-csharp-oliver-sturm.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/advanced-pattern-matching-in-csharp-oliver-sturm.jpg#img-sketchnote&quot; alt=&quot;Advanced Pattern Matching In C# by Oliver Sturm&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;10-tips-to-level-up-your-ai-assisted-coding&quot;&gt;10 Tips To Level Up Your AI Assisted Coding&lt;/h3&gt;
&lt;p&gt;by Aleksander Stensby
&lt;a href=&quot;https://x.com/astensby&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=NbenxkeJkEA&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/10-tips-to-level-up-your-ai-assisted-coding-aleksander-stensby.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/10-tips-to-level-up-your-ai-assisted-coding-aleksander-stensby.jpg#img-sketchnote&quot; alt=&quot;10 Tips To Level Up Your AI Assisted Coding by Aleksander Stensby&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;modern-net-configuration-practices&quot;&gt;Modern .Net Configuration Practices&lt;/h3&gt;
&lt;p&gt;by Chris Ayers
&lt;a href=&quot;https://chris-ayers.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/Chris_L_Ayers&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/chris-ayers.com&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://hachyderm.io/@Chrisayers&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://chris-ayers.com/dotnet-configuration-in-depth&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=_2nz0teyeYQ&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/codebytes/dotnet-configuration-in-depth&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/modern-dotnet-configuration-practices-chris-ayers.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/modern-dotnet-configuration-practices-chris-ayers.jpg#img-sketchnote&quot; alt=&quot;Modern .Net Configuration Practices by Chris Ayers&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;notebooks-and-net&quot;&gt;Notebooks And .Net&lt;/h3&gt;
&lt;p&gt;by Alexander Hall
&lt;a href=&quot;&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/lookmunohandlebars.bsky.social&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=HyQsmdp7d_0&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/lookmumnohandlebars/presentation-notebooks-dotnet&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/notebooks-and-dotnet-alexander-hall.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/notebooks-and-dotnet-alexander-hall.jpg#img-sketchnote&quot; alt=&quot;Notebooks And .Net by Alexander Hall&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;immutable-patterns-of-system-design&quot;&gt;Immutable Patterns Of System Design&lt;/h3&gt;
&lt;p&gt;by James Eastham
&lt;a href=&quot;https://jameseastham.co.uk/&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/plantpowerjames&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/jameseastham.co.uk&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://share.jameseastham.co.uk/presentations/2026-01-28-ndc-london.pdf&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=EDwtofkScdI&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/immutable-patterns-of-system-design-james-eastham.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/immutable-patterns-of-system-design-james-eastham.jpg#img-sketchnote&quot; alt=&quot;Immutable Patterns Of System Design by James Eastham&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;progressive-collapse&quot;&gt;Progressive Collapse&lt;/h3&gt;
&lt;p&gt;by Sam Newman
&lt;a href=&quot;https://samnewman.io&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/samnewman&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://hachyderm.io/@samnewman&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://drive.google.com/file/d/1lACsVygNhOQKJPxUfB-76id3mjcCrdzX/view?usp=drive_link&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/progressive-collapse-sam-newman.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/progressive-collapse-sam-newman.jpg#img-sketchnote&quot; alt=&quot;Progressive Collapse by Sam Newman&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;application-performance-optimisation-in-practice&quot;&gt;Application Performance Optimisation In Practice&lt;/h3&gt;
&lt;p&gt;by Steve Gordon
&lt;a href=&quot;https://www.stevejgordon.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/stevejgordon&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/stevejgordon.bsky.social&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://fosstodon.org/@stevejgordon&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=vtXXObjZZBM&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/application-performance-optimisation-in-practice-steve-gordon.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/application-performance-optimisation-in-practice-steve-gordon.jpg#img-sketchnote&quot; alt=&quot;Application Performance Optimisation In Practice by Steve Gordon&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;modular-code&quot;&gt;Modular Code&lt;/h3&gt;
&lt;p&gt;by Ian Cooper
&lt;a href=&quot;https://ian-cooper.writeas.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/icooper&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/icooper.bsky.social&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://hachyderm.io/@ICooper&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/iancooper/Presentations/blob/master/modular-csharp%20NDC%20London%202026.pptx&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=ayJ_WJ-8zHo&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/modular-code-ian-cooper.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/modular-code-ian-cooper.jpg#img-sketchnote&quot; alt=&quot;Modular Code by Ian Cooper&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;optimising-httpclient-usage&quot;&gt;Optimising HttpClient Usage&lt;/h3&gt;
&lt;p&gt;by Nico Vermeir
&lt;a href=&quot;https://nicovermeir.be&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/nicovermeir.bsky.social&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://dotnet.social/@nicovermeir&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/NicoVermeir/OptimizingHttpClient/raw/refs/heads/main/Optimizing%20HttpClient.pptx&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=HnKIkLO07Dg&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/NicoVermeir/OptimizingHttpClient/tree/main&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/optimising-httpclient-usage-nico-vermeir.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/optimising-httpclient-usage-nico-vermeir.jpg#img-sketchnote&quot; alt=&quot;Optimising HttpClient Usage by Nico Vermier&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;code-that-writes-code---net-source-generators&quot;&gt;Code That Writes Code - .Net Source Generators&lt;/h3&gt;
&lt;p&gt;by Glenn F. Henriksen
&lt;a href=&quot;https://henriksen.no&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/henriksen&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/henriksen.no&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=bNr42BN_Yr0&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/henriksen/sourcegen&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/code-that-writes-code-dotnet-source-generators-glenn-f-henriksen.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/code-that-writes-code-dotnet-source-generators-glenn-f-henriksen.jpg#img-sketchnote&quot; alt=&quot;Code That Writes Code - .Net Source Generators by Glenn F. Henriksen&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;ai-powered-app-development&quot;&gt;AI-Powered App Development&lt;/h3&gt;
&lt;p&gt;by Steve Sanderson
&lt;a href=&quot;https://blog.stevensanderson.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/stevensanderson&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=L1w6wBxhpgE&amp;amp;t=397s&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/ai-powered-app-development-steve-sanderson.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/ai-powered-app-development-steve-sanderson.jpg#img-sketchnote&quot; alt=&quot;AI-Powered App Development by Steve Sanderson&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;supercharging-local-development-with-aspire&quot;&gt;Supercharging Local Development With Aspire&lt;/h3&gt;
&lt;p&gt;by Jimmy Bogard
&lt;a href=&quot;https://www.jimmybogard.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/jbogard&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/jimmybogard.com&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=B6YyCXxJM3g&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2026/02/supercharging-local-development-with-aspire-jimmy-bogard.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2026/02/supercharging-local-development-with-aspire-jimmy-bogard.jpg#img-sketchnote&quot; alt=&quot;Supercharging Local Development With Aspire by Jimmy Bogard&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Mon, 02 Feb 2026 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ndc-london/sketchnotes/2026/02/02/ndc-london-2026.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ndc-london/sketchnotes/2026/02/02/ndc-london-2026.html</guid>
			</item>
		
			<item>
				<title>DDD South West 13</title>
				<description>&lt;p&gt;As is becoming customary each April, I did my annual trip to &lt;a href=&quot;https://www.dddsouthwest.com&quot;&gt;DDD South West&lt;/a&gt; last weekend. Another really good event.&lt;/p&gt;

&lt;h3 id=&quot;surviving-complexity-through-software-design&quot;&gt;Surviving Complexity Through Software Design&lt;/h3&gt;
&lt;p&gt;by Jacqui Read
&lt;a href=&quot;https://jacquiread.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/tekiegirl.bsky.social&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://fosstodon.org/@tekiegirl&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2025/04/surviving-complexity-through-software-design-jacqui-read.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2025/04/surviving-complexity-through-software-design-jacqui-read.jpg#img-sketchnote&quot; alt=&quot;Surviving Complexity Through Software Design by Jacqui Read&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;modern-software-architecture-review-best-practices&quot;&gt;Modern Software Architecture Review Best Practices&lt;/h3&gt;
&lt;p&gt;by Steven Read&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2025/04/modern-software-architecture-review-best-practices-steven-read.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2025/04/modern-software-architecture-review-best-practices-steven-read.jpg#img-sketchnote&quot; alt=&quot;Modern Software Architecture Review Best Practices by Steven Read&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;why-am-i-being-such-a-git-about-best-practices&quot;&gt;Why Am I Being Such A Git About Best Practices?&lt;/h3&gt;
&lt;p&gt;by Joe Glombek
&lt;a href=&quot;https://joe.gl&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://umbracocommunity.social/@joe&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2025/04/why-am-i-beaing-such-a-git-about-best-practices-joe-glombek.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2025/04/why-am-i-beaing-such-a-git-about-best-practices-joe-glombek.jpg#img-sketchnote&quot; alt=&quot;Why Am I Being Such A Git About Best Practices? by Joe Glombek&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;a-developers-guide-to-getting-the-most-out-of-containers&quot;&gt;A Developers Guide To Getting The Most Out Of Containers&lt;/h3&gt;
&lt;p&gt;by John Kilmister
&lt;a href=&quot;https://www.blueboxes.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/johnkilmister&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/johnkilmister.bsky.social&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2025/04/a-developers-guide-to-getting-the-most-out-of-containers-john-kilmister.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2025/04/a-developers-guide-to-getting-the-most-out-of-containers-john-kilmister.jpg#img-sketchnote&quot; alt=&quot;A Developers Guide To Getting The Most Out Of Containers by John Kilmister&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;mutation-testing&quot;&gt;Mutation Testing&lt;/h3&gt;
&lt;p&gt;by Stuart Lang
&lt;a href=&quot;https://stu.dev&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/stuartblang&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/stu.dev&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://hachyderm.io/@slang25&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2025/04/mutation-testing-stuart-lang.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2025/04/mutation-testing-stuart-lang.jpg#img-sketchnote&quot; alt=&quot;Mutation Testing by Stuart Lang&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;lets-ship-this-thing&quot;&gt;Let’s Ship This Thing!&lt;/h3&gt;
&lt;p&gt;by Gary Ewan Park
&lt;a href=&quot;https://www.gep13.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/gep13&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/gep13.co.uk&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2025/04/lets-ship-this-thing-gary-ewan-park.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2025/04/lets-ship-this-thing-gary-ewan-park.jpg#img-sketchnote&quot; alt=&quot;Let&apos;s Ship This Thing! by Gary Ewan Park&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2025/04/30/ddd-south-west-13.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2025/04/30/ddd-south-west-13.html</guid>
			</item>
		
			<item>
				<title>StaffPlus London 2024</title>
				<description>&lt;p&gt;After previously attending &lt;a href=&quot;/staff-plus/sketchnotes/2023/06/30/staffplus-london-2023.html&quot;&gt;last year’s inaugural event&lt;/a&gt;, I recently went back to &lt;a href=&quot;https://leaddev.com/staffplus-london&quot;&gt;StaffPlus London&lt;/a&gt;. This year was compèred by &lt;a href=&quot;https://twitter.com/suhailpatel&quot;&gt;Suhail Patel&lt;/a&gt;, one of the speakers from 2023.&lt;/p&gt;

&lt;h3 id=&quot;influencing-through-getting-your-carrots-in-a-row&quot;&gt;Influencing Through Getting Your Carrots In A Row&lt;/h3&gt;
&lt;p&gt;by Joy Ebertz
&lt;a href=&quot;https://jkebertz.medium.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://twitter.com/jkebertz&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/07/influencing-through-getting-your-carrots-in-a-row-joy-ebertz.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/07/influencing-through-getting-your-carrots-in-a-row-joy-ebertz.jpg#img-sketchnote&quot; alt=&quot;Influencing Through Getting Your Carrots In A Row by Joy Ebertz&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;architecting-for-scale-and-simplicity&quot;&gt;Architecting For Scale And Simplicity&lt;/h3&gt;
&lt;p&gt;by Segun Viktor Orekoya&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/07/architecting-for-scale-and-simplicity-segun-viktor-orekoya.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/07/architecting-for-scale-and-simplicity-segun-viktor-orekoya.jpg#img-sketchnote&quot; alt=&quot;Architecting For Scale And Simplicity by Segun Viktor Orekoya&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;demings-wisdom-for-staff-engineers-a-modern-take-on-timeless-principles&quot;&gt;Deming’s Wisdom For Staff+ Engineers: A Modern Take On Timeless Principles&lt;/h3&gt;
&lt;p&gt;by Annie Vella
&lt;a href=&quot;https://twitter.com/codefrenzy&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/07/demings-wisdom-for-staffplus-engineers-a-modern-take-on-timeless-principles-annie-vella.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/07/demings-wisdom-for-staffplus-engineers-a-modern-take-on-timeless-principles-annie-vella.jpg#img-sketchnote&quot; alt=&quot;Deming&apos;s Wisdom For Staff+ Engineers: A Modern Take On Timeless Principles by Annie Vella&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;filling-the-void-operating-as-a-staff-engineer-in-a-leaderless-scope&quot;&gt;Filling The Void: Operating As A Staff Engineer In A Leaderless Scope&lt;/h3&gt;
&lt;p&gt;by Sami Farhat and Guillaume Mazollier
&lt;a href=&quot;https://twitter.com/GMazollier&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/07/filling-the-void-operating-as-a-staff-engineer-in-a-leaderless-scope-sami-farhat-guillaume-mazollier.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/07/filling-the-void-operating-as-a-staff-engineer-in-a-leaderless-scope-sami-farhat-guillaume-mazollier.jpg#img-sketchnote&quot; alt=&quot;Filling The Void: Operating As A Staff Engineer In A Leaderless Scope by Sami Farhat + Guillaume Mazollier&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;doing-the-most-important-thing-is-a-trap&quot;&gt;Doing “The Most Important Thing” Is A Trap&lt;/h3&gt;
&lt;p&gt;by James Ford
&lt;a href=&quot;https://twitter.com/psyked&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/07/doing-the-most-important-thing-is-a-trap-james-ford.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/07/doing-the-most-important-thing-is-a-trap-james-ford.jpg#img-sketchnote&quot; alt=&quot;Doing &amp;quot;The Most Important Thing&amp;quot; Is A Trap by James Ford&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;letting-the-best-ideas-win&quot;&gt;Letting The Best Ideas Win&lt;/h3&gt;
&lt;p&gt;by Tristan Heal&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/07/letting-the-best-ideas-win-tristan-heal.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/07/letting-the-best-ideas-win-tristan-heal.jpg#img-sketchnote&quot; alt=&quot;Letting The Best Ideas Win by Tristan Heal&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;sunsetting-legacy-navigating-the-shop-merchant-eligibilty-data-pipeline-migration&quot;&gt;Sunsetting Legacy: Navigating The Shop Merchant Eligibilty Data Pipeline Migration&lt;/h3&gt;
&lt;p&gt;by Dianing Yudono
&lt;a href=&quot;https://twitter.com/galihmelon&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://hachyderm.io/@galihmelon&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/07/sunsetting-legacy-navigating-the-shop-merchant-eligibility-data-pipeline-migration-dianing-yudono.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/07/sunsetting-legacy-navigating-the-shop-merchant-eligibility-data-pipeline-migration-dianing-yudono.jpg#img-sketchnote&quot; alt=&quot;Sunsetting Legacy: Navigating The Shop Merchant Eligibilty Data Pipeline Migration by Dianing Yudono&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;navigating-complex-projects-finding-the-right-mode-of-operation&quot;&gt;Navigating Complex Projects: Finding The Right Mode Of Operation&lt;/h3&gt;
&lt;p&gt;by Mahmut Canga
&lt;a href=&quot;https://mahmutcanga.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://twitter.com/macromania&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/07/navigating-complex-projects-finding-the-right-mode-of-operation-mahmut-canga.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/07/navigating-complex-projects-finding-the-right-mode-of-operation-mahmut-canga.jpg#img-sketchnote&quot; alt=&quot;Navigating Complex Projects: Finding The Right Mode Of Operation by Mahmut Canga&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;understanding-complex-systems-without-simplifying-them&quot;&gt;Understanding Complex Systems Without Simplifying Them&lt;/h3&gt;
&lt;p&gt;by Rita Sodt&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/07/understanding-complex-systems-without-simplifying-them-rita-sodt.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/07/understanding-complex-systems-without-simplifying-them-rita-sodt.jpg#img-sketchnote&quot; alt=&quot;Understanding Complex Systems Without Simplifying Them by Rita Sodt&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;have-ai-got-news-for-you&quot;&gt;Have AI Got News For You&lt;/h3&gt;
&lt;p&gt;by Katie Koschland
&lt;a href=&quot;https://twitter.com/KKoschland&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/07/have-ai-got-news-for-you-katie-koschland.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/07/have-ai-got-news-for-you-katie-koschland.jpg#img-sketchnote&quot; alt=&quot;Have AI Got News For You by Katie Koschland&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;is-staff-engineering-valuable-at-a-small-company&quot;&gt;Is Staff Engineering Valuable At A Small Company?&lt;/h3&gt;
&lt;p&gt;by Glen Mailer
&lt;a href=&quot;https://twitter.com/glenathan&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://hachyderm.io/@glenjamin&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/07/is-staff-engineering-valuable-at-a-small-company-glen-mailer.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/07/is-staff-engineering-valuable-at-a-small-company-glen-mailer.jpg#img-sketchnote&quot; alt=&quot;Is Staff Engineering Valuable At A Small Company? by Glen Mailer&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;fitness-functions-creating-consistency-across-100s-of-services&quot;&gt;Fitness Functions: Creating Consistency Across 100s Of Services&lt;/h3&gt;
&lt;p&gt;by Bijan Chokoufe Nejad
&lt;a href=&quot;https://bijan.cloud&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://twitter.com/bijancn&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/07/fitness-functions-creating-consistency-across-100s-of-services-bijan-chokoufe-nejad.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/07/fitness-functions-creating-consistency-across-100s-of-services-bijan-chokoufe-nejad.jpg#img-sketchnote&quot; alt=&quot;Fitness Functions: Creating Consistency Across 100s Of Services by Bijan Chokoufe Nejad&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Sun, 07 Jul 2024 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/staff-plus/sketchnotes/2024/07/07/staffplus-london-2024.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/staff-plus/sketchnotes/2024/07/07/staffplus-london-2024.html</guid>
			</item>
		
			<item>
				<title>DDD South West 12</title>
				<description>&lt;p&gt;I attended the latest &lt;a href=&quot;https://www.dddsouthwest.com&quot;&gt;DDD South West&lt;/a&gt; last weekend. It’s become one of my favourite of the &lt;a href=&quot;/ddd-grouped.html&quot;&gt;DDD events&lt;/a&gt;, partly because of the venue and the relaxed feeling of the conference, but also because of Bristol - one of my favourite cities in the UK.&lt;/p&gt;

&lt;h3 id=&quot;fail&quot;&gt;#FAIL&lt;/h3&gt;
&lt;p&gt;by Kevlin Henney
&lt;a href=&quot;https://x.com/KevlinHenney&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/kevlin.bsky.social&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;http://mastodon.social/@kevlin&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/05/fail-kevlin-henney.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/05/fail-kevlin-henney.jpg#img-sketchnote&quot; alt=&quot;#FAIL by Kevlin Henney&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;confident-communication-for-developers&quot;&gt;Confident Communication For Developers&lt;/h3&gt;
&lt;p&gt;by Aaron Green&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/05/confident-communication-for-developers-aaron-green.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/05/confident-communication-for-developers-aaron-green.jpg#img-sketchnote&quot; alt=&quot;Confident Communication For Developers by Aaron Green&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;an-above-average-tech-ecosystem&quot;&gt;An Above Average Tech Ecosystem&lt;/h3&gt;
&lt;p&gt;by Jennifer D Daniel
&lt;a href=&quot;https://x.com/DumleDaniel&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/05/an-above-average-tech-ecosystem-jennifer-d-daniel.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/05/an-above-average-tech-ecosystem-jennifer-d-daniel.jpg#img-sketchnote&quot; alt=&quot;An Above Average Tech Ecosystem by Jennifer D Daniel&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;celibrate-youre-misteaks&quot;&gt;Celibrate You’re Misteaks&lt;/h3&gt;
&lt;p&gt;by Joe Glombek
&lt;a href=&quot;https://joe.gl&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://umbracocommunity.social/@joe&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=RE8EUaj1SbE&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/05/celibrate-youre-misteaks-joe-glombek.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/05/celibrate-youre-misteaks-joe-glombek.jpg#img-sketchnote&quot; alt=&quot;Celibrate You&apos;re Misteaks by Joe Glombek&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;debugging-more-than-breakpoints-and-log-analysis&quot;&gt;Debugging: More Than Breakpoints And Log Analysis&lt;/h3&gt;
&lt;p&gt;by Rachel Breeze
&lt;a href=&quot;https://www.rachelbreeze.dev&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/BreezeRachel&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://bsky.app/profile/rachelbeezedev.bsky.social&quot;&gt;&lt;i class=&quot;fa fa-brands fa-bluesky fa-lg&quot; title=&quot;BlueSky&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://geekdom.social/@rachelbreezedev&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/05/debugging-more-than-breakpoints-and-log-analysis-rachel-breeze.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/05/debugging-more-than-breakpoints-and-log-analysis-rachel-breeze.jpg#img-sketchnote&quot; alt=&quot;Debugging: More Than Breakpoints And Log Analysis by Rachel Breeze&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;rest-grpc-graphql-or-asynchronous-messaging&quot;&gt;Rest, gRPC, GraphQL Or Asynchronous Messaging&lt;/h3&gt;
&lt;p&gt;by Poornima Nayar
&lt;a href=&quot;https://poornimanayar.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/PoornimaNayar&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/05/rest-grpc-graphql-or-asynchronous-messaging-poornima-nayar.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/05/rest-grpc-graphql-or-asynchronous-messaging-poornima-nayar.jpg#img-sketchnote&quot; alt=&quot;Rest, gRPC, GraphQL Or Asynchronous Messaging by Poornima Nayar&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Sat, 04 May 2024 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2024/05/04/ddd-south-west-12.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2024/05/04/ddd-south-west-12.html</guid>
			</item>
		
			<item>
				<title>nor(DEV):con 2024</title>
				<description>&lt;p&gt;I was at &lt;a href=&quot;https://nordevcon.com&quot;&gt;nor(DEV):con&lt;/a&gt; a few weeks ago. It’s the first time I’ve been to this event, event though it’s fairly local to me and has been running for many years.&lt;/p&gt;

&lt;h3 id=&quot;the-heat-death-of-enterprise-it&quot;&gt;The Heat Death Of Enterprise IT&lt;/h3&gt;
&lt;p&gt;by Garth Gilmour
&lt;a href=&quot;https://www.ggilmour.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/GarthGilmour&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&amp;amp; Eamonn Boyle
&lt;a href=&quot;https://x.com/BoyleEamonn&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=G0AkxKq3KHw&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/02/the-heat-death-of-enterprise-it-garth-gilmour-eamonn-boyle.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/02/the-heat-death-of-enterprise-it-garth-gilmour-eamonn-boyle.jpg#img-sketchnote&quot; alt=&quot;The Heat Death Of Enterprise IT by Garth Gilmour &amp;amp; Eamonn Boyle&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;how-to-protect-yourself-from-the-biggest-internet-threats&quot;&gt;How To Protect Yourself From the Biggest Internet Threats&lt;/h3&gt;
&lt;p&gt;by Ignat Korchagin
&lt;a href=&quot;https://pqsec.org&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/ignatkn&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/02/how-to-protect-yourself-from-the-biggest-internet-threats-ignat-korchagin.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/02/how-to-protect-yourself-from-the-biggest-internet-threats-ignat-korchagin.jpg#img-sketchnote&quot; alt=&quot;How To Protect Yourself From the Biggest Internet Threats by Ignat Korchagin&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;introduction-to-property-based-testing-in-mostly-c&quot;&gt;Introduction To Property Based Testing In (Mostly) C#&lt;/h3&gt;
&lt;p&gt;by Steve Love
&lt;a href=&quot;https://arventech.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/IAmSteveLove&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://arventech.com/mcs/talks/nordev/proptesting.html#/_introduction_to_property_based_testing_in_mostly_c&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/02/introduction-to-property-based-testing-in-mostly-csharp-steve-love.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/02/introduction-to-property-based-testing-in-mostly-csharp-steve-love.jpg#img-sketchnote&quot; alt=&quot;Introduction To Property Based Testing In (Mostly) C# by Steve Love&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;predict-the-future-with-old-school-maths&quot;&gt;Predict The Future (With Old-School Maths)&lt;/h3&gt;
&lt;p&gt;by Dani Papamaximou
&lt;a href=&quot;https://x.com/DaniQuietNow&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/02/predict-the-future-with-old-school-maths-dani-papamaximou.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/02/predict-the-future-with-old-school-maths-dani-papamaximou.jpg#img-sketchnote&quot; alt=&quot;Predict The Future (With Old-School Maths by Dani Papamaximou&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;authentic-storytelling&quot;&gt;Authentic Storytelling&lt;/h3&gt;
&lt;p&gt;by Elle Overvoorde&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/02/authentic-storytelling-elle-overvoorde.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/02/authentic-storytelling-elle-overvoorde.jpg#img-sketchnote&quot; alt=&quot;Authentic Storytelling by Elle Overvoorde&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;rethinking-content-modelling-for-unfogettable-user-experiences&quot;&gt;Rethinking Content Modelling For Unfogettable User Experiences&lt;/h3&gt;
&lt;p&gt;by Esther Agbaje
&lt;a href=&quot;https://x.com/_estheradebayo&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/02/rethinking-content-modelling-for-unforgettable-user-experiences-esther-agbaje.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/02/rethinking-content-modelling-for-unforgettable-user-experiences-esther-agbaje.jpg#img-sketchnote&quot; alt=&quot;Rethinking Content Modelling For Unfogettable User Experiences by Esther Agbaje&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;genai-for-automating-business-processes&quot;&gt;GenAI For Automating Business Processes&lt;/h3&gt;
&lt;p&gt;by Maryleen Amaizu
&lt;a href=&quot;https://x.com/mleentech&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/02/genai-for-automating-business-processes-maryleen-amaizu.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/02/genai-for-automating-business-processes-maryleen-amaizu.jpg#img-sketchnote&quot; alt=&quot;GenAI For Automating Business Processes by Maryleen Amaizu&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-erosion-of-consumer-ownership-from-posession-to-subscriptions&quot;&gt;The Erosion Of Consumer Ownership: From Posession To Subscriptions&lt;/h3&gt;
&lt;p&gt;by Alexio Rodrigues
&lt;a href=&quot;https://x.com/alexiorodrigues&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/02/the-erosion-of-consumer-ownership-from-posession-to-subscriptions-alexio-rodrigues.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/02/the-erosion-of-consumer-ownership-from-posession-to-subscriptions-alexio-rodrigues.jpg#img-sketchnote&quot; alt=&quot;The Erosion Of Consumer Ownership: From Posession To Subscriptions by Alexio Rodrigues&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;cedar-next-generation-authz-for-your-apps&quot;&gt;Cedar: Next Generation Authz For Your Apps&lt;/h3&gt;
&lt;p&gt;by Ricardo Sueiras
&lt;a href=&quot;https://blog.beachgeek.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/094459&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://hachyderm.io/@094459&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/02/cedar-next-generation-authz-for-your-apps-ricardo-sueiras.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/02/cedar-next-generation-authz-for-your-apps-ricardo-sueiras.jpg#img-sketchnote&quot; alt=&quot;Cedar: Next Generation Authz For Your Apps by Ricardo Sueiras&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;escaping-the-hype-train&quot;&gt;Escaping The Hype Train&lt;/h3&gt;
&lt;p&gt;by Anna Aitchison
&lt;a href=&quot;https://www.aitchisonsoft.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2024/02/escaping-the-hype-train-anna-aitchison.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2024/02/escaping-the-hype-train-anna-aitchison.jpg#img-sketchnote&quot; alt=&quot;Escaping The Hype Train by Anna Aitchison&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Sat, 24 Feb 2024 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/nordevcon/sketchnotes/2024/02/24/nordevcon-2024.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/nordevcon/sketchnotes/2024/02/24/nordevcon-2024.html</guid>
			</item>
		
			<item>
				<title>Agile Cambridge 2023</title>
				<description>&lt;p&gt;Last week, I spent a few days at &lt;a href=&quot;https://agilecambridge.net&quot;&gt;Agile Cambridge&lt;/a&gt;. I’ve been to this conference once before back in 2014, where I gave a talk on whether &lt;a href=&quot;https://www.infoq.com/presentations/agile-off-the-shelf/&quot;&gt;agile can work for off-the-shelf software&lt;/a&gt;. I was also speaking this year, but about &lt;a href=&quot;https://blog.adrianbanks.co.uk/agile-cambridge&quot;&gt;“Tracking the Unmeasurable with OKRs”&lt;/a&gt;. Overall, it was an enjoyable conference as it gave me time away from code, and enough headspace to think about the processes involved in writing software without the details of the tech used to do it.&lt;/p&gt;

&lt;h3 id=&quot;five-reflections-for-modern-leaders&quot;&gt;Five reflections for modern leaders&lt;/h3&gt;
&lt;p&gt;by Marcin Floryan
&lt;a href=&quot;https://marcin.floryan.pl&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/mfloryan&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://mstdn.social/@mfloryan&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/10/five-reflections-for-modern-leaders-marcin-floryan.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/10/five-reflections-for-modern-leaders-marcin-floryan.jpg#img-sketchnote&quot; alt=&quot;Five reflections for modern leaders by Marcin Floryan&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;a-culture-of-observing-how-to-get-better-understanding-across-the-org-through-observability&quot;&gt;A culture of observing: how to get better understanding across the org through observability&lt;/h3&gt;
&lt;p&gt;by Apostolis Apostolidis
&lt;a href=&quot;https://www.toli.io&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/apostolis09&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/Apostolos-Daniel/slides/blob/main/2023-agile-cambridge/a-culture-of-observing.pdf&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/10/a-culture-of-observing-how-to-get-better-understanding-across-the-org-through-observability-apostolis-apostolidis.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/10/a-culture-of-observing-how-to-get-better-understanding-across-the-org-through-observability-apostolis-apostolidis.jpg#img-sketchnote&quot; alt=&quot;A culture of observing: how to get better understanding across the org through observability by Apostolis Apostolidis&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;improving-engineering-performance-the-dora-way&quot;&gt;Improving engineering performance, the DORA way&lt;/h3&gt;
&lt;p&gt;by Carlo Beschi
&lt;a href=&quot;https://x.com/carloz&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/10/improving-engineering-performance-the-dora-way-carlo-beschi.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/10/improving-engineering-performance-the-dora-way-carlo-beschi.jpg#img-sketchnote&quot; alt=&quot;Improving engineering performance, the DORA way by Carlo Beschi&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;to-mob-pair-or-fly-solo&quot;&gt;To mob, pair, or fly solo?&lt;/h3&gt;
&lt;p&gt;by Chris Oldwood
&lt;a href=&quot;https://chrisoldwood.blogspot.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/chrisoldwood&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/10/to-mob-pair-or-fly-solo-chris-oldwood.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/10/to-mob-pair-or-fly-solo-chris-oldwood.jpg#img-sketchnote&quot; alt=&quot;To mob, pair, or fly solo? by Chris Oldwood&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;a-game-of-patterns&quot;&gt;A game of patterns&lt;/h3&gt;
&lt;p&gt;by Tiani Jones
&lt;a href=&quot;https://x.com/tiani_original&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/10/a-game-of-patterns-tiani-jones.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/10/a-game-of-patterns-tiani-jones.jpg#img-sketchnote&quot; alt=&quot;A game of patterns by Tiani Jones&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;empower-your-master-builders-with-strategic-context&quot;&gt;Empower your master builders with strategic context&lt;/h3&gt;
&lt;p&gt;by Cei Sanderson
&lt;a href=&quot;&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/ceiussandicus&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=U5F4Ogx7Fu8&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/10/empower-your-master-builders-with-strategic-context-cei-sanderson.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/10/empower-your-master-builders-with-strategic-context-cei-sanderson.jpg#img-sketchnote&quot; alt=&quot;Empower your master builders with strategic context by Cei Sanderson&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;how-to-deal-with-uncertainties--risk-in-complex-environments&quot;&gt;How to deal with uncertainties &amp;amp; risk in complex environments&lt;/h3&gt;
&lt;p&gt;by Maik Wojcieszak
&lt;a href=&quot;https://www.getnext-it.com/en/next-levelbusiness-agility/&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/tmlsoftware&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/10/how-to-deal-with-uncertainties-and-risk-in-complex-environments-maik-wojcieszak.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/10/how-to-deal-with-uncertainties-and-risk-in-complex-environments-maik-wojcieszak.jpg#img-sketchnote&quot; alt=&quot;How to deal with uncertainties &amp;amp; risk in complex environments by Maik Wojcieszak&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;agile-song-writing-workshop&quot;&gt;Agile song-writing workshop&lt;/h3&gt;
&lt;p&gt;by Farah Egby&lt;/p&gt;

&lt;p&gt;Something about the title of this workshop drew my attention, and always willing to try something new and to step out of my comfort zone, I went along. In the 90 minute session, a group of about 12 wrote and performed an original song, inspired by our love/hate of agile. We did this by first decomposing the song into its constituent parts (a chorus and three verses). We collectively worked on the chorus, which would have an uplifting feel to highlight the positives of agile. We then split into three groups, where each group worked on a different verse. After several minutes, we rotated to iterate on the verse created by a different group. We did this again until each group had worked on all three verses.&lt;/p&gt;

&lt;p&gt;It was now time to put the lyrics to a melody. Farah had come pre-prepared with a chord progression and some suggeted styles, so we didn’t have to start completely from scratch. After a few false starts, a melody started to emerge. It wasn’t long before we had our completed masterpiece.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/10/agile-song-rehearsal.jpg&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/10/agile-song-rehearsal.jpg&quot; alt=&quot;Some of the group working out a melody&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It was an interesting idea for a session, and one which I enjoyed taking part in. The following day, some of our group performed the song on stage in the welcome session at the start of the day - I chose to offer moral support from the audience.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/10/agile-song-performance.jpg&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/10/agile-song-performance.jpg&quot; alt=&quot;The performance on stage the following morning&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;how-to-be-agile-with-critical-national-priorities&quot;&gt;How to be agile with critical national priorities&lt;/h3&gt;
&lt;p&gt;by Anna Sherrington &amp;amp; Nick Smith
&lt;a href=&quot;https://x.com/twitrnick&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://mastodon.me.uk/@mastonick&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/10/how-to-be-agile-with-critical-national-priorities-anna-sherrington-nick-smith.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/10/how-to-be-agile-with-critical-national-priorities-anna-sherrington-nick-smith.jpg#img-sketchnote&quot; alt=&quot;How to be agile with critical national priorities by Anna Sherrington &amp;amp; Nick Smith&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;responsible-research-and-innovation&quot;&gt;Responsible research and innovation&lt;/h3&gt;
&lt;p&gt;by Cat Swetel
&lt;a href=&quot;https://x.com/CatSwetel&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://mastodon.social/@CatSwetel&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/10/responsible-research-and-innovation-cat-swetel.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/10/responsible-research-and-innovation-cat-swetel.jpg#img-sketchnote&quot; alt=&quot;Responsible research and innovation by Cat Swetel&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;fixing-feedback&quot;&gt;Fixing Feedback&lt;/h3&gt;
&lt;p&gt;by Ceri Newton-Sargunar
&lt;a href=&quot;https://x.com/HotCupOfTeaPls&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/10/fixing-feedback-ceri-newton-sargunar.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/10/fixing-feedback-ceri-newton-sargunar.jpg#img-sketchnote&quot; alt=&quot;Fixing Feedback by Ceri Newton-Sargunar&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;lean-inceptions-how-to-set-your-teams-up-for-success&quot;&gt;Lean inceptions: how to set your teams up for success&lt;/h3&gt;
&lt;p&gt;by Marcel Britsch
&lt;a href=&quot;https://vimeo.com/738990352&quot;&gt;&lt;i class=&quot;fa fa-brands fa-vimeo fa-lg&quot; title=&quot;Vimeo&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/10/lean-inceptions-how-to-set-your-teams-up-for-success-marcel-britsch.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/10/lean-inceptions-how-to-set-your-teams-up-for-success-marcel-britsch.jpg#img-sketchnote&quot; alt=&quot;Lean inceptions: how to set your teams up for success by Marcel Britsch&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;unleashing-the-transformational-power-of-play-with-lego-seriously&quot;&gt;Unleashing the transformational power of play. With Lego. Seriously&lt;/h3&gt;
&lt;p&gt;by Robb Lockwood
&lt;a href=&quot;https://www.atticushunter.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/robblockwood&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For my last session of the conference I chose to attend Robb’s session. I mainly chose this because it involved Lego, something which I have had a strong interest in since I was a child. Robb showed how using a small set of just 50 Lego pieces, insights can be discovered to aid with the coaching process. It was also fun to build some simple models as the workshop progressed, including one challenge of “build a tower with you in it”. We also got to keep the Lego at the end of the session :)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/10/norman-the-lego-dog.jpg&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/10/norman-the-lego-dog.jpg&quot; alt=&quot;A dog I built during the workshop&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Mon, 02 Oct 2023 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/agile-cambridge/sketchnotes/2023/10/02/agile-cambridge-2023.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/agile-cambridge/sketchnotes/2023/10/02/agile-cambridge-2023.html</guid>
			</item>
		
			<item>
				<title>StaffPlus London 2023</title>
				<description>&lt;p&gt;I spent a few days this week at the first ever &lt;a href=&quot;https://leaddev.com/staffplus-london&quot;&gt;StaffPlus London&lt;/a&gt;, a conference for senior individual contributors being run alongside the &lt;a href=&quot;https://leaddev.com/leaddev-london&quot;&gt;LeadDev London&lt;/a&gt; event. The conference was compèred by &lt;a href=&quot;https://hachyderm.io/@whereistanya&quot;&gt;Tanya Reilly&lt;/a&gt;, author of &lt;a href=&quot;https://noidea.dog/staff&quot;&gt;The Staff Engineer’s Path&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Unlinke other conferences I’ve been to, there was only one track which made choosing what sessions to see quite easy. The talks were of varying lengths, and there were a &lt;em&gt;lot&lt;/em&gt; of them, which made sketchnoting them quite a task.&lt;/p&gt;

&lt;h3 id=&quot;filling-the-jar-of-impact-and-trust-as-a-principal-engineer&quot;&gt;Filling The Jar Of Impact And Trust As A Principal Engineer&lt;/h3&gt;
&lt;p&gt;by Nayana Shetty
&lt;a href=&quot;https://x.com/shettyny&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/filling-the-jar-of-impact-and-trust-as-a-principal-engineer-nayana-shetty.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/filling-the-jar-of-impact-and-trust-as-a-principal-engineer-nayana-shetty.jpg#img-sketchnote&quot; alt=&quot;Filling The Jar Of Impact And Trust As A Principal Engineer by Nayana Shetty&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-journey-of-a-byline&quot;&gt;The Journey Of A Byline&lt;/h3&gt;
&lt;p&gt;by Alice Bartlett
&lt;a href=&quot;https://alicebartlett.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/alicebartlett&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/the-journey-of-a-byline-alice-bartlett.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/the-journey-of-a-byline-alice-bartlett.jpg#img-sketchnote&quot; alt=&quot;The Journey Of A Byline by Alice Bartlett&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;running-large-scale-migrations-continuously&quot;&gt;Running Large Scale Migrations Continuously&lt;/h3&gt;
&lt;p&gt;by Suhail Patel
&lt;a href=&quot;https://suhailpatel.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/suhailpatel&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://hachyderm.io/@suhailpatel&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/running-large-scale-migrations-continuously-suhail-patel.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/running-large-scale-migrations-continuously-suhail-patel.jpg#img-sketchnote&quot; alt=&quot;Running Large Scale Migrations Continuously by Suhail Patel&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;how-to-not-lose-friends-and-alienate-yourself&quot;&gt;How To Not Lose Friends And Alienate Yourself&lt;/h3&gt;
&lt;p&gt;by Waheed El Miladi
&lt;a href=&quot;https://x.com/waheedelmiladi&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/how-to-not-lose-friends-and-alienate-people-waheed-el-miladi.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/how-to-not-lose-friends-and-alienate-people-waheed-el-miladi.jpg#img-sketchnote&quot; alt=&quot;How To Not Lose Friends And Alienate Yourself by Waheed El Miladi&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;scaling-your-influence-through-documentation&quot;&gt;Scaling Your Influence Through Documentation&lt;/h3&gt;
&lt;p&gt;by James Ford
&lt;a href=&quot;https://x.com/psyked&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/scaling-your-influence-through-documentation-james-ford.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/scaling-your-influence-through-documentation-james-ford.jpg#img-sketchnote&quot; alt=&quot;Scaling Your Influence Through Documentation by James Ford&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;solving-the-puzzle-of-staff-time-management&quot;&gt;Solving The Puzzle Of Staff+ Time Management&lt;/h3&gt;
&lt;p&gt;by Blanca Garcia Gil
&lt;a href=&quot;https://www.blancagarciagil.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/blanquish&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://speakerdeck.com/blanquish/solving-the-puzzle-of-staff-plus-time-management&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/solving-the-puzzle-of-staffplus-time-management-blanca-garcia-gil.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/solving-the-puzzle-of-staffplus-time-management-blanca-garcia-gil.jpg#img-sketchnote&quot; alt=&quot;Solving The Puzzle Of Staff+ Time Management by Blanca Garcia Gil&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;maximising-your-impact-when-context-switching&quot;&gt;Maximising Your Impact When Context Switching&lt;/h3&gt;
&lt;p&gt;by Maude Lemaire
&lt;a href=&quot;http://maudethecodetoad.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/qcmaude&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/maximising-your-impact-when-context-switching-maude-lemaire.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/maximising-your-impact-when-context-switching-maude-lemaire.jpg#img-sketchnote&quot; alt=&quot;Maximising Your Impact When Context Switching by Maude Lemaire&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;homebrews-greatest-migration-moving-to-github-packages-with-zero-downtime&quot;&gt;Homebrew’s Greatest Migration: Moving To Github Packages With Zero Downtime&lt;/h3&gt;
&lt;p&gt;by Mike McQuaid
&lt;a href=&quot;https://mikemcquaid.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/MikeMcQuaid&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://mastodon.social/@mikemcquaid&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://speakerdeck.com/mikemcquaid/homebrews-great-migration-moving-to-github-packages-with-zero-downtime&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/homebrews-greatest-migration-moving-to-github-packages-with-zero-downtime-mike-mcquaid.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/homebrews-greatest-migration-moving-to-github-packages-with-zero-downtime-mike-mcquaid.jpg#img-sketchnote&quot; alt=&quot;Homebrew&apos;s Greatest Migration: Moving To Github Packages With Zero Downtime by Mike McQuaid&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-dark-side-of-lessons-learned&quot;&gt;The Dark Side Of Lessons Learned&lt;/h3&gt;
&lt;p&gt;by Dianing Yudono
&lt;a href=&quot;&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/galihmelon&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://hachyderm.io/@galihmelon&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/the-dark-side-of-lessons-learned-dianing-yudono.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/the-dark-side-of-lessons-learned-dianing-yudono.jpg#img-sketchnote&quot; alt=&quot;The Dark Side Of Lessons Learned by Dianing Yudono&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;working-on-software-that-is-older-than-you&quot;&gt;Working On Software That Is Older Than You&lt;/h3&gt;
&lt;p&gt;by Sally Wahba
&lt;a href=&quot;&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/sallyky&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://hachyderm.io/@swahba&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/working-on-software-that-is-older-than-you-sally-wahba.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/working-on-software-that-is-older-than-you-sally-wahba.jpg#img-sketchnote&quot; alt=&quot;Working On Software That Is Older Than You by Sally Wahba&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;practical-systems-thinking-for-software-engineers&quot;&gt;Practical Systems Thinking For Software Engineers&lt;/h3&gt;
&lt;p&gt;by Laura Nolan
&lt;a href=&quot;https://x.com/lauralifts&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/practical-systems-thinking-for-software-engineers-laura-nolan.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/practical-systems-thinking-for-software-engineers-laura-nolan.jpg#img-sketchnote&quot; alt=&quot;Practical Systems Thinking For Software Engineers by Laura Nolan&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;unmasking-imposters-by-debugging-doubts&quot;&gt;Unmasking Imposters By Debugging Doubts&lt;/h3&gt;
&lt;p&gt;by J Bobby Dorlus
&lt;a href=&quot;https://thetechhustle.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/BobbyD_FL&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/unmasking-imposters-by-debugging-doubts-j-bobby-dorlus.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/unmasking-imposters-by-debugging-doubts-j-bobby-dorlus.jpg#img-sketchnote&quot; alt=&quot;Unmasking Imposters By Debugging Doubts by J Bobby Dorlus&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;delivering-a-digital-first-bbc---an-architects-perspective&quot;&gt;Delivering A Digital-First BBC - An Architect’s Perspective&lt;/h3&gt;
&lt;p&gt;by Hannes Ricklefs
&lt;a href=&quot;https://x.com/hricklefs&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/delivering-a-digital-first-bbc-an-architects-perspective-hannes-ricklefs.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/delivering-a-digital-first-bbc-an-architects-perspective-hannes-ricklefs.jpg#img-sketchnote&quot; alt=&quot;Delivering A Digital-First BBC - An Architect&apos;s Perspective by Hannes Ricklefs&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;defining-a-technical-visiion&quot;&gt;Defining A Technical Visiion&lt;/h3&gt;
&lt;p&gt;by Eamon Scullion&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/defining-a-technical-vision-eamon-scullion.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/defining-a-technical-vision-eamon-scullion.jpg#img-sketchnote&quot; alt=&quot;Defining A Technical Visiion by Eamon Scullion&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;putting-down-line-management---returning-to-the-individual-contributor-role&quot;&gt;Putting Down Line Management - Returning To The Individual Contributor Role&lt;/h3&gt;
&lt;p&gt;by Caroline Handley&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/putting-down-line-management-returning-to-the-individual-contributor-role-caroline-handley.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/putting-down-line-management-returning-to-the-individual-contributor-role-caroline-handley.jpg#img-sketchnote&quot; alt=&quot;Putting Down Line Management - Returning To The Individual Contributor Role by Caroline Handley&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;cloud-infrastructure-architecuture-for-nubanks-global-expansion&quot;&gt;Cloud Infrastructure Architecuture For Nubank’s Global Expansion&lt;/h3&gt;
&lt;p&gt;by Lais Oliviera&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/cloud-infrastructure-architext-for-nubanks-global-expansion-lais-oliviera.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/cloud-infrastructure-architext-for-nubanks-global-expansion-lais-oliviera.jpg#img-sketchnote&quot; alt=&quot;Cloud Infrastructure Architecuture For Nubank&apos;s Global Expansion by Lais Oliviera&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;building-a-shared-vision-creating-alignment-across-autonomous-teams&quot;&gt;Building A Shared Vision: Creating Alignment Across Autonomous Teams&lt;/h3&gt;
&lt;p&gt;by Maria Neumayer
&lt;a href=&quot;https://medium.com/@marianeum&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/marianeum&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://androiddev.social/@marianeum&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/building-a-shared-vision-creating-alignment-across-autonomous-teams-maria-neumayer.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/building-a-shared-vision-creating-alignment-across-autonomous-teams-maria-neumayer.jpg#img-sketchnote&quot; alt=&quot;Building A Shared Vision: Creating Alignment Across Autonomous Teams by Maria Neumayer&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;working-sideways&quot;&gt;Working Sideways&lt;/h3&gt;
&lt;p&gt;by Aish Raj Dahal
&lt;a href=&quot;https://aish.io&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/working-sideways-aish-raj-dahal.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/working-sideways-aish-raj-dahal.jpg#img-sketchnote&quot; alt=&quot;Working Sideways by Aish Raj Dahal&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;scaling-your-influence-when-you-can-only-be-in-one-place&quot;&gt;Scaling Your Influence When You Can Only Be In One Place&lt;/h3&gt;
&lt;p&gt;by Michael Tweed
&lt;a href=&quot;https://x.com/michaeltweed&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/scaling-your-influence-when-you-can-only-be-in-one-place-michael-tweed.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/scaling-your-influence-when-you-can-only-be-in-one-place-michael-tweed.jpg#img-sketchnote&quot; alt=&quot;Scaling Your Influence When You Can Only Be In One Place by Michael Tweed&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-dark-side-of-standardisation&quot;&gt;The Dark Side Of Standardisation&lt;/h3&gt;
&lt;p&gt;by Samantha Schaevitz
&lt;a href=&quot;https://x.com/samschaevitz&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://mastodon.green/@samsch&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/the-dark-side-of-standardisation-samantha-schaevitz.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/the-dark-side-of-standardisation-samantha-schaevitz.jpg#img-sketchnote&quot; alt=&quot;The Dark Side Of Standardisation by Samantha Schaevitz&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;librarians-guide-to-documentation&quot;&gt;Librarian’s Guide To Documentation&lt;/h3&gt;
&lt;p&gt;by Kaitlyn Tierney&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/librarians-guide-to-documentation-kaitlyn-tierney.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/librarians-guide-to-documentation-kaitlyn-tierney.jpg#img-sketchnote&quot; alt=&quot;Librarian&apos;s Guide To Documentation by Kaitlyn Tierney&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;building-a-diverse-and-inclusive-guild-from-the-ground-up&quot;&gt;Building A Diverse And Inclusive Guild From The Ground Up&lt;/h3&gt;
&lt;p&gt;by Liem Pham
&lt;a href=&quot;https://x.com/ducliemp&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/building-a-diverse-and-inclusive-guild-from-the-ground-up-liem-pham.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/building-a-diverse-and-inclusive-guild-from-the-ground-up-liem-pham.jpg#img-sketchnote&quot; alt=&quot;Building A Diverse And Inclusive Guild From The Ground Up by Liem Pham&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;setting-goals-as-a-staff-engineer&quot;&gt;Setting Goals As A Staff+ Engineer&lt;/h3&gt;
&lt;p&gt;by Sabrina Leandro
&lt;a href=&quot;https://saleandro.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/saleandro&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://mastodon.online/@saleandro&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/06/setting-goals-as-a-staffplus-engineer-sabrina-leandro.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/06/setting-goals-as-a-staffplus-engineer-sabrina-leandro.jpg#img-sketchnote&quot; alt=&quot;Setting Goals As A Staff+ Engineer by Sabrina Leandro&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Fri, 30 Jun 2023 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/staff-plus/sketchnotes/2023/06/30/staffplus-london-2023.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/staff-plus/sketchnotes/2023/06/30/staffplus-london-2023.html</guid>
			</item>
		
			<item>
				<title>DDD South West 11</title>
				<description>&lt;p&gt;A few weeks ago I attended &lt;a href=&quot;https://www.dddsouthwest.com&quot;&gt;DDD South West&lt;/a&gt;. It was run very similar to last year’s event, but was much better attended. Here are my sketchnotes of the talks.&lt;/p&gt;

&lt;h3 id=&quot;being-staff-plus&quot;&gt;Being Staff Plus&lt;/h3&gt;
&lt;p&gt;by Ian Cooper
&lt;a href=&quot;https://x.com/icooper&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://hachyderm.io/@ICooper&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/iancooper/Presentations/blob/master/Being%20Staff%20Plus.pdf&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/05/being-staff-plus-ian-cooper.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/05/being-staff-plus-ian-cooper.jpg#img-sketchnote&quot; alt=&quot;Being Staff Plus by Ian Cooper&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;user-testing-in-production&quot;&gt;User Testing In Production&lt;/h3&gt;
&lt;p&gt;by Eli Holderness
&lt;a href=&quot;https://x.com/EliHolderness&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://hachyderm.io/@eli&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/05/user-testing-in-production-eli-holderness.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/05/user-testing-in-production-eli-holderness.jpg#img-sketchnote&quot; alt=&quot;User Testing In Production by Eli Holderness&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;high-performance-net-json-serialization-with-code-generation&quot;&gt;High Performance .Net JSON Serialization With Code Generation&lt;/h3&gt;
&lt;p&gt;by Ian Griffiths
&lt;a href=&quot;https://x.com/idg10&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://dotnet.social/@idg10&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/05/high-performance-dotnet-json-serialization-with-code-generation-ian-griffiths.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/05/high-performance-dotnet-json-serialization-with-code-generation-ian-griffiths.jpg#img-sketchnote&quot; alt=&quot;High Performance .Net JSON Serialization With Code Generation by Ian Griffiths&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;event-sourcing-using-net-cosmosdb-and-elastic&quot;&gt;Event Sourcing Using .Net, CosmosDB And Elastic&lt;/h3&gt;
&lt;p&gt;by James World 
&lt;a href=&quot;https://x.com/jamesw0rld&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&amp;amp; Gareth James&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/05/event-sourcing-using-dotnet-cosmosdb-and-elastic-james-world-gareth-james.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/05/event-sourcing-using-dotnet-cosmosdb-and-elastic-james-world-gareth-james.jpg#img-sketchnote&quot; alt=&quot;Event Sourcing Using .Net, CosmosDB And Elastic by James World, Gareth James&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;theres-no-such-thing-as-plain-text&quot;&gt;There’s No Such Thing As Plain Text&lt;/h3&gt;
&lt;p&gt;by Dylan Beattie
&lt;a href=&quot;http://www.dylanbeattie.net&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/dylanbeattie&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://hachyderm.io/@dylanbeattie&quot;&gt;&lt;i class=&quot;fa fa-brands fa-mastodon fa-lg&quot; title=&quot;Mastodon&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=AGIiXKliOik&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2023/05/theres-no-such-thing-as-plain-text-dylan-beattie.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2023/05/theres-no-such-thing-as-plain-text-dylan-beattie.jpg#img-sketchnote&quot; alt=&quot;There&apos;s No Such Thing As Plain Text by Dylan Beattie&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Fri, 12 May 2023 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2023/05/12/dddsw-11.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2023/05/12/dddsw-11.html</guid>
			</item>
		
			<item>
				<title>DDD South West 10</title>
				<description>&lt;p&gt;&lt;a href=&quot;https://www.dddsouthwest.com&quot;&gt;DDD South West&lt;/a&gt; returned for its 10th event a few weeks ago. With it came a few new organisers, plus a &lt;a href=&quot;https://engine-shed.co.uk&quot;&gt;brand new venue&lt;/a&gt; which was great. I took the opportunity to have a long weekend in Bristol, a city that I always enjoy visiting.&lt;/p&gt;

&lt;h3 id=&quot;the-source-code-generation-game&quot;&gt;The Source Code Generation Game&lt;/h3&gt;
&lt;p&gt;by Steve Collins
&lt;a href=&quot;https://stevetalkscode.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/stevetalkscode&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/07/the-source-code-generation-game-steve-collins.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/07/the-source-code-generation-game-steve-collins.jpg#img-sketchnote&quot; alt=&quot;The Source Code Generation Game by Steve Collins&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;exploring-minimal-net&quot;&gt;Exploring Minimal .Net&lt;/h3&gt;
&lt;p&gt;by Kevin Smith
&lt;a href=&quot;https://kevsoft.net&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/kev_bite&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/07/exploring-minimal-dotnet-kevin-smith.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/07/exploring-minimal-dotnet-kevin-smith.jpg#img-sketchnote&quot; alt=&quot;Exploring Minimal .Net by Kevin Smith&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;data-scientists-making-shit-up-since-1974&quot;&gt;Data Scientists: Making Shit Up Since 1974&lt;/h3&gt;
&lt;p&gt;by Gary Short
&lt;a href=&quot;https://www.darach.ai&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/garyshort&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/07/data-scientists-making-shit-up-since-1974-gary-short.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/07/data-scientists-making-shit-up-since-1974-gary-short.jpg#img-sketchnote&quot; alt=&quot;Data Scientists: Making Shit Up Since 1974  by Gary Short&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;why-premature-optimisation-is-the-root-of-all-evil&quot;&gt;Why Premature Optimisation Is The Root Of All Evil&lt;/h3&gt;
&lt;p&gt;by Craig Jones&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/07/why-premature-optimisation-is-the-root-of-all-evil-craig-jones.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/07/why-premature-optimisation-is-the-root-of-all-evil-craig-jones.jpg#img-sketchnote&quot; alt=&quot;Why Premature Optimisation Is The Root Of All Evil by Craig Jones&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;lets-stop-blaming-our-users-for-getting-hacked-when-it-is-our-problem-to-solve&quot;&gt;Let’s Stop Blaming Our Users For Getting Hacked When It Is Our Problem To Solve&lt;/h3&gt;
&lt;p&gt;by Scott Brady
&lt;a href=&quot;https://www.scottbrady91.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/scottbrady91&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://speakerdeck.com/scottbrady91/lets-stop-blaming-our-users-for-getting-hacked-when-it-is-our-problem-to-solve&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=T5DsrO7xv8E&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/07/lets-stop-blaming-our-users-for-getting-hacked-when-it-is-our-problem-to-solve-scott-brady.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/07/lets-stop-blaming-our-users-for-getting-hacked-when-it-is-our-problem-to-solve-scott-brady.jpg#img-sketchnote&quot; alt=&quot;Let&apos;s Stop Blaming Our Users For Getting Hacked When It Is Our Problem To Solve by Scott Brady&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Mon, 04 Jul 2022 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2022/07/04/dddsw-10.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2022/07/04/dddsw-10.html</guid>
			</item>
		
			<item>
				<title>NDC London 2022</title>
				<description>&lt;p&gt;After a hiatus of over two years due to the pandemic, &lt;a href=&quot;https://ndclondon.com&quot;&gt;NDC London&lt;/a&gt; returned this week to an in-person conference. After attending many virtual user groups, conferences, and training courses, it was great to meet up again with friends I’ve got to know through attending conferences over the years (and also a few former work colleagues as an unexpected bonus). The conference itself didn’t feel any different from the previous NDC London events I’ve attended, with a great venue, lots of interesting talks, and some excellent hospitality laid on by the organisers.&lt;/p&gt;

&lt;p&gt;Here are the sketchnotes that I made for the talks that I attended.&lt;/p&gt;

&lt;h3 id=&quot;the-last-twenty-years-of-software-development&quot;&gt;The Last Twenty Years Of Software Development&lt;/h3&gt;
&lt;p&gt;by Richard Campbell
&lt;a href=&quot;https://x.com/richcampbell&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/the-last-twenty-years-of-software-development-richard-campbell.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/the-last-twenty-years-of-software-development-richard-campbell.jpg#img-sketchnote&quot; alt=&quot;The Last Twenty Years Of Software Development by Richard Campbell&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Richard went over the history of the past twenty years of software development, demonstrating how both technology and the big companies have changed in that time period. What was notable was the acceleratation in the pace of change in technology over the latter half of the timeframe.&lt;/p&gt;

&lt;h3 id=&quot;the-curious-incident-in-your-software-in-the-daytime&quot;&gt;The Curious Incident In Your Software In The Daytime&lt;/h3&gt;
&lt;p&gt;by Liam Westley
&lt;a href=&quot;https://blog.liamwestley.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/westleyl&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/the-curious-incident-in-your-software-in-the-daytime-liam-westley.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/the-curious-incident-in-your-software-in-the-daytime-liam-westley.jpg#img-sketchnote&quot; alt=&quot;The Curious Incident In Your Software In The Daytime by Liam Westley&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Liam discussed how to deal with incidents that happen with your software. He covered the kind of things that you should consider having in place to deal win an incident, and showed some example incidents and how they were dealt with. One thing that stood out from the examples was that having extensive detailed logging helps to inform about what has happened, and what data is affected. He also discussed points of failure that many people wouldn’t even consider, such as Slack being down or maxing out a credit card that is needed to pay for more resources.&lt;/p&gt;

&lt;h3 id=&quot;the-untruthful-art---five-ways-of-misrepresenting-data&quot;&gt;The Untruthful Art - Five Ways Of Misrepresenting Data&lt;/h3&gt;
&lt;p&gt;by Alexander Arvidsson
&lt;a href=&quot;https://www.arcticdba.se&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/arcticdba&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/the-untruthful-art-five-ways-of-misrepresenting-data-alexander-arvidsson.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/the-untruthful-art-five-ways-of-misrepresenting-data-alexander-arvidsson.jpg#img-sketchnote&quot; alt=&quot;The Untruthful Art - Five Ways Of Misrepresenting Data by Alexander Arvidsson&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alexander used many humourous examples to demonstrate how data can be displayed, or even manipulated, to give an incorrect representation. He also stressed the importance of considering any agenda that the author may have when creating the visualisations.&lt;/p&gt;

&lt;h3 id=&quot;wearable-live-captions&quot;&gt;Wearable Live Captions&lt;/h3&gt;
&lt;p&gt;by Jo Franchetti
&lt;a href=&quot;https://x.com/thisisjofrank&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://docs.google.com/presentation/d/1zkR0eplcRPdljJqPjlLhDQwuLUJuAPmUydJsOt-UdGg&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/ably-labs/live-caption-demo&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/wearable-live-captions-jo-franchetti.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/wearable-live-captions-jo-franchetti.jpg#img-sketchnote&quot; alt=&quot;Wearable Live Captions by Jo Franchetti&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jo demonstrated her live captioning face mask - a wearable face mask that she built to enable her deaf mother to read what she was saying while looking at her. Traditional captioning technology relies on reading what the speaker is saying from the phone screen, making it diffuclt to look at someone when they are speaking. This is different in that the phone uses &lt;a href=&quot;https://azure.microsoft.com/en-gb/services/cognitive-services/#overview&quot;&gt;Azure Cognitive Services&lt;/a&gt; to convert the speech to text, and then sends the text to and LED panel in the face mask via bluetooth.&lt;/p&gt;

&lt;h3 id=&quot;the-visible-developer&quot;&gt;The Visible Developer&lt;/h3&gt;
&lt;p&gt;by Heather Downing
&lt;a href=&quot;https://quorralyne.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/quorralyne&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.slideshare.net/quorralyne/the-visible-developer-why-you-shouldnt-blend-in&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/the-visible-developer-heather-downing.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/the-visible-developer-heather-downing.jpg#img-sketchnote&quot; alt=&quot;The Visible Developer by Heather Downing&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This talk was all about having a “developer brand”. Life isn’t fair, and it isn’t sufficient to work hard and be a good developer. If you do only that, you will not get recognition for your achievements. Heather encouraged people to make sure that other people know what you have done, and talked about several ways of doing this.&lt;/p&gt;

&lt;h3 id=&quot;roslyn-source-generators&quot;&gt;Roslyn Source Generators&lt;/h3&gt;
&lt;p&gt;by Stefan Pölz
&lt;a href=&quot;https://x.com/0x_F0&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/Flash0ver/F0-Talks-SourceGenerators&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=lJCfPhnFLQs&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/roslyn-source-generators-stefan-polz.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/roslyn-source-generators-stefan-polz.jpg#img-sketchnote&quot; alt=&quot;Roslyn Source Generators by Stefan Pölz&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stefan went through several uses for Roslyn source generators, and how to use them.&lt;/p&gt;

&lt;h3 id=&quot;how-the-fastest-growing-companies-develop-their-public-api&quot;&gt;How The Fastest Growing Companies Develop Their Public API&lt;/h3&gt;
&lt;p&gt;by Josh Twist
&lt;a href=&quot;https://x.com/joshtwist&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/how-the-fastest-growing-companies-develop-their-public-api-josh-twist.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/how-the-fastest-growing-companies-develop-their-public-api-josh-twist.jpg#img-sketchnote&quot; alt=&quot;How The Fastest Growing Companies Develop Their Public API by Josh Twist&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This talk was about making a public API on the web. Josh covered several of the key things that need to be considered when making a public API, and presented some possible solutions. One common solution for all of the considerations was an API gateway. He then demoed the &lt;a href=&quot;https://www.zuplo.com&quot;&gt;Zuplo&lt;/a&gt; API gateway, something that Josh created after working at companies like Microsoft, Facebook, and Stripe.&lt;/p&gt;

&lt;h3 id=&quot;design-for-developers&quot;&gt;Design For Developers&lt;/h3&gt;
&lt;p&gt;by Lex Lofthouse
&lt;a href=&quot;https://loftio.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/loftio&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://docs.google.com/presentation/d/1g_KPD79BRvTI7xov-W_-oWTfEi_7GoPpQo2akPBBotM&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://youtu.be/kTr8aoa0Pr4&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/design-for-developers-lex-lofthouse.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/design-for-developers-lex-lofthouse.jpg#img-sketchnote&quot; alt=&quot;Design For Developers by Lex Lofthouse&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lex covered several of the core design principles and theories for presenting content, with lots of resources to draw from for example content.&lt;/p&gt;

&lt;h3 id=&quot;tracking-database-changes-with-apache-kafka&quot;&gt;Tracking Database Changes With Apache Kafka&lt;/h3&gt;
&lt;p&gt;by Francesco Tisiot
&lt;a href=&quot;https://ftisiot.net&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/ftisiot&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://ftisiot.net/slides/track-database-changes/track-database-changes.pdf&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/tracking-database-changes-with-apache-kafka-francesco-tisiot.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/tracking-database-changes-with-apache-kafka-francesco-tisiot.jpg#img-sketchnote&quot; alt=&quot;Tracking Database Changes With Apache Kafka by Francesco Tisiot&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This talk covered how &lt;a href=&quot;https://kafka.apache.org&quot;&gt;Apache Kafka&lt;/a&gt; can be used to track changes to a relational database. Francesco used a worked exampled to decouple a production transactional database from other potential uses such as data analysis and reporting, using Kafka log streaming to synchronise the data into a separate data store. He then introduced &lt;a href=&quot;https://debezium.io&quot;&gt;Debezium&lt;/a&gt; to track changes to a database without the need for polling.&lt;/p&gt;

&lt;h3 id=&quot;failure-is-always-an-option&quot;&gt;Failure Is Always An Option&lt;/h3&gt;
&lt;p&gt;by Dylan Beattie
&lt;a href=&quot;https://dylanbeattie.net&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/dylanbeattie&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/failure-is-always-an-option-dylan-beattie.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/failure-is-always-an-option-dylan-beattie.jpg#img-sketchnote&quot; alt=&quot;Failure Is Always An Option by Dylan Beattie&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dylan using the famous “failure is not an option” quote from Apollo 13 as inspiratino to highlight how we should always consider failure as an option in software systems, with examples from history of how failure modes were anticipated and came to be needed later.&lt;/p&gt;

&lt;h3 id=&quot;nevermind-the-containers&quot;&gt;Nevermind The Containers&lt;/h3&gt;
&lt;p&gt;by Rob Conery
&lt;a href=&quot;https://bigmachine.io&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/robconery&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/robconery/rob.conery.io&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/nevermind-the-containers-rob-conery.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/nevermind-the-containers-rob-conery.jpg#img-sketchnote&quot; alt=&quot;Nevermind The Containers by Rob Conery&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This talk was centred around the &lt;a href=&quot;https://github.com/Microsoft/vscode-remote-release&quot;&gt;Remote Containers Visual Studio Code extension&lt;/a&gt; from Microsoft. This extension allows the configuration of a development environment using a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;devcontainer.json&lt;/code&gt; file, which when run with the extension spins up a Docker container with VS Code running inside it, with the UI running on the host machine. Rob did a very slick demo of how to set it up and use it using his &lt;a href=&quot;https://github.com/robconery/rob.conery.io&quot;&gt;Ruby-based blog&lt;/a&gt; as an example.&lt;/p&gt;

&lt;h3 id=&quot;fractal-architecture&quot;&gt;Fractal Architecture&lt;/h3&gt;
&lt;p&gt;by Mark Seemann
&lt;a href=&quot;https://blog.ploeh.dk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/ploeh&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/fractal-architecture-mark-seemann.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/fractal-architecture-mark-seemann.jpg#img-sketchnote&quot; alt=&quot;Fractal Architecture by Mark Seemann&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mark talked through his latest thinking on developing easy to maintain code, which he has captured in his &lt;a href=&quot;https://www.amazon.co.uk/Code-That-Fits-Your-Head/dp/0137464401&quot;&gt;latest book&lt;/a&gt;. Using theroies about the human memory and its limitations, he introduced the concept of a “hex flower” to represent the 7 elements that fit in your head when reading code. By breaking code down into small enough parts to fit into these shapes, it allows a software system to be seen as being composed of hierarchies of these systems that fit together to abstract behaviour.&lt;/p&gt;

&lt;h3 id=&quot;software-lessons-from-aviation-disasters&quot;&gt;Software Lessons From Aviation Disasters&lt;/h3&gt;
&lt;p&gt;by Adele Carpenter
&lt;a href=&quot;https://x.com/iam_carpenter&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://speakerdeck.com/97adele/mayday-software-lessons-from-aviation-disasters&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/software-lessons-from-aviation-disasters-adele-carpenter.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/software-lessons-from-aviation-disasters-adele-carpenter.jpg#img-sketchnote&quot; alt=&quot;Software Lessons From Aviation Disasters by Adele Carpenter&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Adele talked through two examples of flights that went wrong, and linked them to their underlying causes. She compared these to the world of software as things to look out for.&lt;/p&gt;

&lt;h3 id=&quot;team-topologies-software-architecture-and-complexity-science&quot;&gt;Team Topologies, Software Architecture And Complexity Science&lt;/h3&gt;
&lt;p&gt;by James Lewis
&lt;a href=&quot;https://x.com/boicy&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=_mYlSMepTGw&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/team-topologies-software-architecture-and-complexity-science-james-lewis.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/team-topologies-software-architecture-and-complexity-science-james-lewis.jpg#img-sketchnote&quot; alt=&quot;Team Topologies, Software Architecture And Complexity Science by James Lewis&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;James talked about how most software companies get slower as they grow due to an ever-increasing number of processes and levels of hierarchy, and compared them to Amazon who are quoted as saying “the bigger we get, the easier it becomes to get bigger”. He then went through some of the reasons as to why Amazon can achieve this, with analogies drawn from city planning and biology.&lt;/p&gt;

&lt;h3 id=&quot;marvels-of-teenage-engineering&quot;&gt;Marvels Of Teenage Engineering&lt;/h3&gt;
&lt;p&gt;by Anders Norås
&lt;a href=&quot;http://andersnoras.com/&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/anoras&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/marvels-of-teenage-engineering-anders-noras.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/marvels-of-teenage-engineering-anders-noras.jpg#img-sketchnote&quot; alt=&quot;Marvels Of Teenage Engineering by Anders Norås&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anders took a nostalgic look back through development over the past forty years to highlight how the early developers honed their skills, and how seeming impossible things were achieved through perserverance and experimentation. He then lamented about how that is no longer the case as modern developers typically start coding much later in life, and don’t hone the curiosity that they would have if they were to start younger.&lt;/p&gt;

&lt;h3 id=&quot;im-gonna-make-you-stop-hating-css&quot;&gt;I’m Gonna Make You Stop Hating CSS&lt;/h3&gt;
&lt;p&gt;by Lemon
&lt;a href=&quot;https://ahoylemon.xyz&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/ahoylemon&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://ahoylemon.github.io/Stop-Hating-CSS/&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/im-gonna-make-you-stop-hating-css-lemon.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/im-gonna-make-you-stop-hating-css-lemon.jpg#img-sketchnote&quot; alt=&quot;I&apos;m Gonna Make You Stop Hating CSS by Lemon&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lemon showed some things that CSS does poorly, such as the &lt;a href=&quot;https://css-tricks.com/css-is-awesome/&quot;&gt;CSS is awesome&lt;/a&gt; meme, how people tend to fix them, and how to fix them in very simple ways, some of which required only a single line of CSS.&lt;/p&gt;

&lt;h3 id=&quot;how-to-close-the-diversity-gap&quot;&gt;How To Close The Diversity Gap&lt;/h3&gt;
&lt;p&gt;by Heather Wilde
&lt;a href=&quot;https://heathriel.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/heathriel&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2022/05/how-to-close-the-diversity-gap-heather-wilde.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2022/05/how-to-close-the-diversity-gap-heather-wilde.jpg#img-sketchnote&quot; alt=&quot;How To Close The Diversity Gap by Heather Wilde&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Heather talked about the diversity gap in the majority of tech companies, and some of the things that can be done to reduce it. She used many examples from the &lt;a href=&quot;https://en.wikipedia.org/wiki/WeCrashed&quot;&gt;WeCrashed&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Super_Pumped_(TV_series)&quot;&gt;Super Pumped&lt;/a&gt; Tv series to demonstrate the issues.&lt;/p&gt;

&lt;h3 id=&quot;aspnet-core-beyond-the-basics&quot;&gt;ASP.NET Core Beyond The Basics&lt;/h3&gt;
&lt;p&gt;by Chris Klug
&lt;a href=&quot;https://www.fearofoblivion.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/zerokoll&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/ChrisKlug/AspNetCoreBeyondTheIntro&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Chris did a talk consisting of 100% code (hence the lack of a sketchnote), showing how to do some of the more advanced things with ASP.NET Core. These included:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware/write&quot;&gt;Writing custom middleware&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed&quot;&gt;Using distributed caching&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.actionconstraints.iactionconstraint&quot;&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;IActionConstraint&lt;/code&gt; interface&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/aspnet/core/web-api/advanced/custom-formatters&quot;&gt;Using custom output formatters&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/aspnet/core/mvc/advanced/custom-model-binding&quot;&gt;Custom model binding&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services&quot;&gt;Background tasks&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Configuring an app from an external assembly using &lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.hosting.istartupfilter&quot;&gt;IStartupFilter&lt;/a&gt; and &lt;a href=&quot;https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/platform-specific-configuration&quot;&gt;IHostingStartup&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;He also used the &lt;a href=&quot;https://insomnia.rest&quot;&gt;Insomnia API client&lt;/a&gt; during his demos, which looked like a more lightweight version of &lt;a href=&quot;https://www.postman.com&quot;&gt;Postman&lt;/a&gt;.&lt;/p&gt;

</description>
				<pubDate>Thu, 12 May 2022 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ndc-london/sketchnotes/2022/05/12/ndc-london-2022.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ndc-london/sketchnotes/2022/05/12/ndc-london-2022.html</guid>
			</item>
		
			<item>
				<title>Finding wifi passwords for saved networks</title>
				<description>&lt;p&gt;Occasionally I need to find the password for a wifi connection that I have previously connected to. Navigating the maze of dialogs to find it is never easy, especially when the path to those dialogs changes frequently in Windows 10.&lt;/p&gt;

&lt;p&gt;One way to do it is to find the network via the Windows Control Panel (Control Panel -&amp;gt; Network and Internet -&amp;gt; Network and Sharing Centre). Once found, clicking on the connection properties will open the Wi-Fi Status panel:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2021/09/wifi-status.png&quot;&gt;&lt;img src=&quot;/assets/media/images/2021/09/wifi-status.png&quot; alt=&quot;Status of a wifi connection&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clicking on the Wireless Properties button and then selecting the Security tab will show the wifi password:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2021/09/wifi-properties.png&quot;&gt;&lt;img src=&quot;/assets/media/images/2021/09/wifi-properties.png&quot; alt=&quot;Security properties of a wifi connection&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This method works, but involves a lot of clicking through screens. Also, it requires starting at the legacy Control Panel, which is gradually being replaced with the new Settings app. Instead, all of this information and more can be accessed via the command line using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;netsh&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;To get the password for a wifi network, run the command:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;netsh wlan show profile WifiName key=clear&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;You can also use this command to see the list of every saved network that your device has connected to:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;netsh wlan show profile&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

</description>
				<pubDate>Mon, 20 Sep 2021 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/windows/2021/09/20/finding-wifi-password-for-saved-networks.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/windows/2021/09/20/finding-wifi-password-for-saved-networks.html</guid>
			</item>
		
			<item>
				<title>DDD North 9</title>
				<description>&lt;p&gt;I’ve just got back from &lt;a href=&quot;https://www.dddnorth.co.uk&quot;&gt;DDD North 9&lt;/a&gt;, held for second time in Hull. As is always the case with &lt;a href=&quot;/ddd-list.html&quot;&gt;DDD events&lt;/a&gt;, there was a great community feel at the conference. Here are the sketchnotes I made in the talks I attended.&lt;/p&gt;

&lt;h3 id=&quot;net-core-3-with-a-raspberry-pi&quot;&gt;.Net Core 3 With A Raspberry Pi&lt;/h3&gt;
&lt;p&gt;by Pete Gallagher
&lt;a href=&quot;https://www.petecodes.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/pete_codes&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.slideshare.net/PGallagher69/dot-net-core-3-with-the-raspberry-pi-ddd-north-2020&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=l8CXgvKe314&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/03/dotnet-core-3-with-a-raspberry-pi-pete-gallagher.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/03/dotnet-core-3-with-a-raspberry-pi-pete-gallagher.jpg#img-sketchnote&quot; alt=&quot;.Net Core 3 With A Raspberry Pi by Pete Gallagher&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;blazor---the-future-of-frontend-is-here&quot;&gt;Blazor - The Future Of Frontend Is Here&lt;/h3&gt;
&lt;p&gt;by Chris Sainty
&lt;a href=&quot;https://chrissainty.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/chris_sainty&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/chrissainty/ddd-reading-2019/raw/master/Slides/blazor-the-future-of-frontend-is-here.pptx&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/03/blazor-the-future-of-front-end-is-here-chris-sainty.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/03/blazor-the-future-of-front-end-is-here-chris-sainty.jpg#img-sketchnote&quot; alt=&quot;Blazor - The Future Of Frontend Is Here by Chris Sainty&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;net-configuration-is-easyright&quot;&gt;.Net Configuration Is Easy…Right?&lt;/h3&gt;
&lt;p&gt;by Steve Collins
&lt;a href=&quot;https://stevetalkscode.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/stevetalkscode&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://onedrive.live.com/view.aspx?resid=9C5E7C78E553A8F2!112&amp;amp;ithint=file%2cpptx&amp;amp;authkey=!ADLTKCcNx-h9YiA&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=kLl2Mt3eYxU&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/configureappio/ConfiguarationBridgeCrypto/tree/Presentation&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/03/dotnet-configuration-is-easy-right-steve-collins.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/03/dotnet-configuration-is-easy-right-steve-collins.jpg#img-sketchnote&quot; alt=&quot;.Net Configuration Is Easy...Right? by Steve Collins&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;50-ways-to-show-your-data&quot;&gt;50 Ways To Show Your Data&lt;/h3&gt;
&lt;p&gt;by Thomas Hütter
&lt;a href=&quot;https://sqlfredo.wordpress.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/DerFredo&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/SQLThomas/Conferences/raw/master/Hull2020/50%20ways%20to%20show%20your%20data.pdf&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/SQLThomas/Conferences/blob/master/Hull2020/50%20ways.R&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/03/50-ways-to-show-your-data-thomas-hutter.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/03/50-ways-to-show-your-data-thomas-hutter.jpg#img-sketchnote&quot; alt=&quot;50 Ways To Show Your Data by Thomas Hütter&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;kubernetes-on-raspberry-pi&quot;&gt;Kubernetes On Raspberry Pi&lt;/h3&gt;
&lt;p&gt;by Chris Wraith
&lt;a href=&quot;https://x.com/jacksonps4&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://storage.googleapis.com/cw_production_public/kubernetes%20on%20raspberry%20pi%20ddd%20north.pdf&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/03/kubernetes-on-a-raspberry-pi-chris-wraith.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/03/kubernetes-on-a-raspberry-pi-chris-wraith.jpg#img-sketchnote&quot; alt=&quot;Kubernetes On Raspberry Pi by Chris Wraith&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Mon, 02 Mar 2020 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2020/03/02/dddnorth.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2020/03/02/dddnorth.html</guid>
			</item>
		
			<item>
				<title>NDC London 2020</title>
				<description>&lt;p&gt;A few weeks ago I attended &lt;a href=&quot;https://ndc-london.com&quot;&gt;NDC London&lt;/a&gt;. As I’ve &lt;a href=&quot;/ndc-london/sketchnotes/2019/02/13/ndc-london-2019.html&quot;&gt;done in the past&lt;/a&gt;, I attended as part of the NDC crew. I didn’t manage to sketchnote every talk I attended, mainly because I was in the larger rooms as part of the crew schedule and was working the camera a lot of the time. Here are the sketchnotes that I did make:&lt;/p&gt;

&lt;h3 id=&quot;capability-mapping&quot;&gt;Capability Mapping&lt;/h3&gt;
&lt;p&gt;by Ian Cooper
&lt;a href=&quot;https://medium.com/@ICooper&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/icooper&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/iancooper/Presentations/blob/master/Capability%20Mapping.pdf&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=6pjAjHm7l7s&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/02/capability-mapping-ian-cooper.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/02/capability-mapping-ian-cooper.jpg#img-sketchnote&quot; alt=&quot;Capability Mapping by Ian Cooper&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;controlling-wildfires-while-only-getting-singed&quot;&gt;Controlling Wildfires While Only Getting Singed&lt;/h3&gt;
&lt;p&gt;by Jessica White
&lt;a href=&quot;https://jesswhite.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/JessPWhite&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://noti.st/jesspwhite/ykTsiH/controlling-wildfires-while-only-getting-singed&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=LLkf8lBLT7E&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/02/controlling-wildfires-while-only-getting-singed-jessica-white.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/02/controlling-wildfires-while-only-getting-singed-jessica-white.jpg#img-sketchnote&quot; alt=&quot;Controlling Wildfires While Only Getting Singed by Jessica White&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;an-introduction-to-machine-learning-using-lego&quot;&gt;An Introduction To Machine Learning Using Lego&lt;/h3&gt;
&lt;p&gt;by Jeppe Tornfeldt Sørensen
&lt;a href=&quot;https://www.youtube.com/watch?v=ux_9hqxiqpI&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/Tornfeldt/LegoMachineLearning&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=3QHVPjMbGVQ&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/02/an-introduction-to-machine-learning-using-lego-jeppe-tornfeldt-sorensen.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/02/an-introduction-to-machine-learning-using-lego-jeppe-tornfeldt-sorensen.jpg#img-sketchnote&quot; alt=&quot;An Introduction To Machine Learning Using Lego by Jeppe Tornfeldt Sørensen&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;modernising-the-enterprise-desktop-application&quot;&gt;Modernising The Enterprise Desktop Application&lt;/h3&gt;
&lt;p&gt;by Oren Novotny
&lt;a href=&quot;https://oren.codes&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/onovotny&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=PwQSmbzBsvE&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/02/modernising-the-enterprise-desktop-application-oren-novotny.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/02/modernising-the-enterprise-desktop-application-oren-novotny.jpg#img-sketchnote&quot; alt=&quot;Modernising The Enterprise Desktop Application by Oren Novotny&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;rip-it-up-and-start-again&quot;&gt;Rip It Up And Start Again&lt;/h3&gt;
&lt;p&gt;by Sam Newman
&lt;a href=&quot;https://samnewman.io&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/samnewman&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.slideshare.net/spnewman/rip-it-up-the-microservice-organisation&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=0Y-Pjr0abWQ&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/02/rip-it-up-and-start-again-sam-newman.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/02/rip-it-up-and-start-again-sam-newman.jpg#img-sketchnote&quot; alt=&quot;Rip It Up And Start Again by Sam Newman&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;a-developers-introduction-to-electronics&quot;&gt;A Developer’s Introduction To Electronics&lt;/h3&gt;
&lt;p&gt;by Guy Royse
&lt;a href=&quot;http://guyroyse.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/guyroyse&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=AL07H9Vjwtw&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/guyroyse/intro-to-electronics&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/02/a-developers-introduction-to-electronics-guy-royse.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/02/a-developers-introduction-to-electronics-guy-royse.jpg#img-sketchnote&quot; alt=&quot;A Developer&apos;s Introduction To Electronics by Guy Royse&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;3d-printed-bionic-hand-a-little-iot-and-a-xamarin-mobile-app&quot;&gt;3D Printed Bionic Hand, A Little IoT, And A Xamarin Mobile App&lt;/h3&gt;
&lt;p&gt;by Clifford Agius
&lt;a href=&quot;https://x.com/CliffordAgius&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=WHL2v4mXbRE&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/02/3d-printed-bionic-hand-a-little-iot-and-a-xamarin-mobile-app-clifford-agius.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/02/3d-printed-bionic-hand-a-little-iot-and-a-xamarin-mobile-app-clifford-agius.jpg#img-sketchnote&quot; alt=&quot;3D Printed Bionic Hand, A Little IoT, And A Xamarin Mobile App by Clifford Agius&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;keep-it-clean---why-bad-data-ruins-projects-and-how-to-fix-it&quot;&gt;Keep It Clean - Why Bad Data Ruins Projects And How To Fix It&lt;/h3&gt;
&lt;p&gt;by Philip Winder
&lt;a href=&quot;https://winderresearch.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/drphilwinder&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://winderresearch.com/talks/ndc_london_keep_it_clean/200130_Winder_KeepItClean.pdf&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=bUMmj85UiXM&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/02/keep-it-clean-why-bad-data-ruins-projects-and-how-to-fix-it-philip-winder.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/02/keep-it-clean-why-bad-data-ruins-projects-and-how-to-fix-it-philip-winder.jpg#img-sketchnote&quot; alt=&quot;Keep It Clean - Why Bad Data Ruins Projects And How To Fix It by Philip Winder&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;shrink-the-web&quot;&gt;Shrink The Web&lt;/h3&gt;
&lt;p&gt;by Lemon
&lt;a href=&quot;https://ahoylemon.xyz&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/ahoylemon&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=RZT3md8Eo4Q&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/02/shrink-the-web-lemon.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/02/shrink-the-web-lemon.jpg#img-sketchnote&quot; alt=&quot;Shrink The Web by Lemon&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;common-api-security-pitfalls&quot;&gt;Common API Security Pitfalls&lt;/h3&gt;
&lt;p&gt;by Philippe De Ryck
&lt;a href=&quot;https://pragmaticwebsecurity.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/philippederyck&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://pragmaticwebsecurity.com/files/talks/commonAPIsecuritypitfalls.pdf&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=dDZNDVO5EFQ&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/02/common-api-security-pitfalls-philippe-de-ryke.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/02/common-api-security-pitfalls-philippe-de-ryke.jpg#img-sketchnote&quot; alt=&quot;Common API Security Pitfalls by Philippe De Ryck&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;drinking-a-river-of-data-with-akkanet&quot;&gt;Drinking A River Of Data With Akka.Net&lt;/h3&gt;
&lt;p&gt;by Hannes Lowette
&lt;a href=&quot;https://x.com/hannes_lowette&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=2tFj0xR9Pf0&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2020/02/drinking-a-river-of-data-with-akkadotnet-hannes-lowette.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2020/02/drinking-a-river-of-data-with-akkadotnet-hannes-lowette.jpg#img-sketchnote&quot; alt=&quot;Drinking A River Of Data With Akka.Net by Hannes Lowette&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Mon, 10 Feb 2020 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ndc-london/sketchnotes/2020/02/10/ndc-london-2020.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ndc-london/sketchnotes/2020/02/10/ndc-london-2020.html</guid>
			</item>
		
			<item>
				<title>DDD East Midlands 2019</title>
				<description>&lt;h3 id=&quot;all-the-mistakes-ive-made-trying-to-implement-microservices&quot;&gt;All The Mistakes I’ve Made Trying To Implement Microservices&lt;/h3&gt;
&lt;p&gt;by Zac Braddy
&lt;a href=&quot;https://zackerthehacker.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/ZackerTheHacker&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=43qsKWUNUpc&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/10/all-the-mistakes-ive-made-trying-to-implement-microservices-zac-braddy.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/10/all-the-mistakes-ive-made-trying-to-implement-microservices-zac-braddy.jpg#img-sketchnote&quot; alt=&quot;All The Mistakes I&apos;ve Made Trying To Implement Microservices by Zac Braddy&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This talk was cut short by a fire alarm at the venue, hence the incomplete sketchnote.&lt;/p&gt;

&lt;h3 id=&quot;deep-learning-in-the-world-of-little-ponies&quot;&gt;Deep Learning In The World Of Little Ponies&lt;/h3&gt;
&lt;p&gt;by Galiya Warrier
&lt;a href=&quot;https://x.com/galiyawarrier&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=YpY45Dn0fNw&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/galiya/DeepLearningPonies&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/10/deep-learning-in-the-world-of-little-ponies-galiya-warrier.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/10/deep-learning-in-the-world-of-little-ponies-galiya-warrier.jpg#img-sketchnote&quot; alt=&quot;Deep Learning In The World Of Little Ponies by Galiya Warrier&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;whose-design-is-it-anyway&quot;&gt;Whose Design Is It Anyway?&lt;/h3&gt;
&lt;p&gt;by Helen Joy
&lt;a href=&quot;https://blog.helen.digital&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/LittleHelli&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://noti.st/helen/QLPfIV/&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=Zi9ury3Setg&amp;amp;t=1841s&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/10/whose-design-is-it-anyway-helen-joy.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/10/whose-design-is-it-anyway-helen-joy.jpg#img-sketchnote&quot; alt=&quot;Whose Design Is It Anyway? by Helen Joy&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;think-like-a-hacker&quot;&gt;Think Like A Hacker&lt;/h3&gt;
&lt;p&gt;by Matt Brunt
&lt;a href=&quot;https://brunty.me&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/brunty&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://noti.st/brunty/SAUWbr&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=pqGIIomA46s&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/10/think-like-a-hacker-matt-brunt.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/10/think-like-a-hacker-matt-brunt.jpg#img-sketchnote&quot; alt=&quot;Think Like A Hacker by Matt Brunt&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Mon, 28 Oct 2019 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2019/10/28/ddd-east-midlands-2019.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2019/10/28/ddd-east-midlands-2019.html</guid>
			</item>
		
			<item>
				<title>ProgNet 2019</title>
				<description>&lt;p&gt;Last week I attended &lt;a href=&quot;https://skillsmatter.com/conferences/11690-prognet-london-2019&quot;&gt;ProgNet 2019&lt;/a&gt; held at &lt;a href=&quot;https://skillsmatter.com&quot;&gt;SkillsMatter&lt;/a&gt; in London.&lt;/p&gt;

&lt;p&gt;This is my sixth year of attendance (last year’s notes are &lt;a href=&quot;/prognet/sketchnotes/2018/09/12/prognet-2018.html&quot;&gt;here&lt;/a&gt;), and as usual I sketchnoted the talks that I attended. Videos for all of the talks are available on the &lt;a href=&quot;https://skillsmatter.com/conferences/11690-prognet-london-2019#program&quot;&gt;ProgNet 2019 website&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;we-are-the-guardians-of-our-future&quot;&gt;We Are The Guardians Of Our Future&lt;/h3&gt;
&lt;p&gt;by Tess Ferrandez
&lt;a href=&quot;https://blogs.msdn.microsoft.com/Tess/&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/TessFerrandez&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://skillsmatter.com/skillscasts/12915-tess-ferrandez-keynote-prognet-london-2019&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/09/we-are-the-guardians-of-our-future-tess-ferrandez.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/09/we-are-the-guardians-of-our-future-tess-ferrandez.jpg#img-sketchnote&quot; alt=&quot;We Are The Guardians Of Our Future by Tess Ferrandez&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;beyond-http-in-aspnet-core-30-with-grpc&quot;&gt;Beyond HTTP In ASP.Net Core 3.0 With gRPC&lt;/h3&gt;
&lt;p&gt;by Steve Gordon
&lt;a href=&quot;https://www.stevejgordon.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/stevejgordon&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://speakerdeck.com/stevejgordon/beyond-http-in-asp-dot-net-core-3-with-grpc&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://skillsmatter.com/skillscasts/14014-beyond-http-in-aspdot-net-core-3-0-with-grpc&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/stevejgordon/gRPC-Demos&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/09/beyond-http-in-aspnet-core-30-with-grpc-steve-gordon.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/09/beyond-http-in-aspnet-core-30-with-grpc-steve-gordon.jpg#img-sketchnote&quot; alt=&quot;Beyond HTTP In ASP.Net Core 3.0 With gRPC by Steve Gordon&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;globalization-and-localization-in-aspnet-core&quot;&gt;Globalization And Localization In ASP.Net Core&lt;/h3&gt;
&lt;p&gt;by Rachel Appel
&lt;a href=&quot;http://rachelappel.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/rachelappel&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://skillsmatter.com/skillscasts/14079-globalization-and-localization-in-aspdot-net-core&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/09/globalization-localization-in-aspnet-core-rachel-appel.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/09/globalization-localization-in-aspnet-core-rachel-appel.jpg#img-sketchnote&quot; alt=&quot;Globalization And Localization In ASP.Net Core by Rachel Appel&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;communication-in-a-microservice-world&quot;&gt;Communication In A Microservice World&lt;/h3&gt;
&lt;p&gt;by Irina Scurtu
&lt;a href=&quot;https://x.com/irina_scurtu&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://skillsmatter.com/skillscasts/14013-communication-in-a-microservice-world&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/09/communication-in-a-microservice-world-irina-scrutu.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/09/communication-in-a-microservice-world-irina-scrutu.jpg#img-sketchnote&quot; alt=&quot;Communication In A Microservice World by Irina Scurtu&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;surviving-microservices&quot;&gt;Surviving Microservices&lt;/h3&gt;
&lt;p&gt;by Michele Leroux Bustamante
&lt;a href=&quot;https://michelebusta.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/michelebusta&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://skillsmatter.com/skillscasts/12917-keynote-surviving-microservices&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/09/surviving-microservices-michele-leroux-bustamante.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/09/surviving-microservices-michele-leroux-bustamante.jpg#img-sketchnote&quot; alt=&quot;Surviving Microservices by Michele Leroux Bustamante&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;tdd-and-the-terminator---a-guide-to-better-tdd&quot;&gt;TDD And The Terminator - A Guide To Better TDD&lt;/h3&gt;
&lt;p&gt;by Layla Porter
&lt;a href=&quot;https://x.com/laylacodesit&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://speakerdeck.com/laylacodesit/tdd-and-the-terminator&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://skillsmatter.com/skillscasts/14178-tdd-and-the-terminator-a-guide-to-better-test-driven-development&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/Layla-P/TddAndTheTerminator&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/09/tdd-and-the-terminator-a-guide-to-better-tdd-layla-porter.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/09/tdd-and-the-terminator-a-guide-to-better-tdd-layla-porter.jpg#img-sketchnote&quot; alt=&quot;TDD And The Terminator - A Guide To Better TDD by Layla Porter&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-pipeline-driven-organisation&quot;&gt;The Pipeline Driven Organisation&lt;/h3&gt;
&lt;p&gt;by Roy Osherove
&lt;a href=&quot;https://osherove.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/royosherove&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://skillsmatter.com/skillscasts/12914-keynote-the-pipeline-driven-organization&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/09/the-pipeline-driven-organisation-roy-osherove.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/09/the-pipeline-driven-organisation-roy-osherove.jpg#img-sketchnote&quot; alt=&quot;The Pipeline Driven Organisation by Roy Osherove&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;bayesian-decision-making-in-the-face-of-uncertainty&quot;&gt;Bayesian Decision Making In The Face Of Uncertainty&lt;/h3&gt;
&lt;p&gt;by Gary Short
&lt;a href=&quot;https://duncodin.it&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/garyshort&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/09/bayesian-decision-making-in-the-face-of-uncertainty-gary-short.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/09/bayesian-decision-making-in-the-face-of-uncertainty-gary-short.jpg#img-sketchnote&quot; alt=&quot;Bayesian Decision Making In The Face Of Uncertainty by Gary Short&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Tue, 17 Sep 2019 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/prognet/sketchnotes/2019/09/17/prognet-2019.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/prognet/sketchnotes/2019/09/17/prognet-2019.html</guid>
			</item>
		
			<item>
				<title>DDD South West 9</title>
				<description>&lt;p&gt;&lt;a href=&quot;https://www.dddsouthwest.com&quot;&gt;DDD South West&lt;/a&gt; took place this last weekend in Bristol. It was a really good event as usual.&lt;/p&gt;

&lt;p&gt;Here are the sketchnotes I did during the day.&lt;/p&gt;

&lt;h3 id=&quot;nailing-down-distributed-workflows-with-microservices&quot;&gt;Nailing Down Distributed Workflows With Microservices&lt;/h3&gt;
&lt;p&gt;by Ben Arroyo
&lt;a href=&quot;https://x.com/benjaminarroyo&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/benarroyo/ChickenPower&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/04/nailing-down-distributed-workflows-with-microservices-ben-arroyo.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/04/nailing-down-distributed-workflows-with-microservices-ben-arroyo.jpg#img-sketchnote&quot; alt=&quot;Nailing Down Distributed Workflows With Microservices by Ben Arroyo&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;writing-high-performance-c-and-net-code&quot;&gt;Writing High Performance C# And .Net Code&lt;/h3&gt;
&lt;p&gt;by Steve Gordon
&lt;a href=&quot;https://www.stevejgordon.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/stevejgordon&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://speakerdeck.com/stevejgordon/turbocharged-writing-high-performance-c-number-and-net-code-60-mins&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/04/writing-high-performance-csharp-and-dotnet-code-steve-gordon.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/04/writing-high-performance-csharp-and-dotnet-code-steve-gordon.jpg#img-sketchnote&quot; alt=&quot;Writing High Performance C# And .Net Code by Steve Gordon&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;graphql-and-dapper&quot;&gt;GraphQL And Dapper&lt;/h3&gt;
&lt;p&gt;by John Stovin
&lt;a href=&quot;https://x.com/johnstovin&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/04/graphql-and-dapper-john-stovin.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/04/graphql-and-dapper-john-stovin.jpg#img-sketchnote&quot; alt=&quot;GraphQL And Dapper by John Stovin&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;better-the-devtool-you-know&quot;&gt;Better The DevTool You Know&lt;/h3&gt;
&lt;p&gt;by Viv Richards
&lt;a href=&quot;https://x.com/11vlr&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/vivrichards600/sweet-shop&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/04/better-the-devtool-you-know-viv-richards.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/04/better-the-devtool-you-know-viv-richards.jpg#img-sketchnote&quot; alt=&quot;Better The DevTool You Know by Viv Richards&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;kubernetes-raspberry-pis-and-more&quot;&gt;Kubernetes, Raspberry Pis, And More&lt;/h3&gt;
&lt;p&gt;by Dan Clarke
&lt;a href=&quot;https://www.danclarke.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/dracan&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/04/kubernetes-raspberry-pis-and-more-dan-clarke.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/04/kubernetes-raspberry-pis-and-more-dan-clarke.jpg#img-sketchnote&quot; alt=&quot;Kubernetes, Raspberry Pis, And More by Dan Clarke&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Mon, 29 Apr 2019 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2019/04/29/ddd-south-west-9.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2019/04/29/ddd-south-west-9.html</guid>
			</item>
		
			<item>
				<title>DDD North 8</title>
				<description>&lt;p&gt;I’ve just got back from &lt;a href=&quot;https://dddnorth.co.uk&quot;&gt;DDD North&lt;/a&gt;, held for the first time in Hull.&lt;/p&gt;

&lt;p&gt;Here are the sketchnotes I did during the day.&lt;/p&gt;

&lt;h3 id=&quot;iot-with-nothing-but-a-laptop&quot;&gt;IoT With Nothing But A Laptop&lt;/h3&gt;
&lt;p&gt;by Pete Gallagher
&lt;a href=&quot;https://www.petecodes.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/pete_codes&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.slideshare.net/PGallagher69/getting-started-with-iot-with-only-your-laptop-march-2019-ddd-north&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/03/io-with-nothing-but-a-laptop-pete-gallagher.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/03/io-with-nothing-but-a-laptop-pete-gallagher.jpg#img-sketchnote&quot; alt=&quot;IoT With Nothing But A Laptop by Pete Gallagher&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;selling-unicorns-with-shopify-and-azure&quot;&gt;Selling Unicorns With Shopify And Azure&lt;/h3&gt;
&lt;p&gt;by Michael Stephenson
&lt;a href=&quot;http://theazurecoach.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/michael_stephen&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/03/selling-unicorns-with-shopify-and-azure-michael-stephenson.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/03/selling-unicorns-with-shopify-and-azure-michael-stephenson.jpg#img-sketchnote&quot; alt=&quot;Selling Unicorns With Shopify And Azure by Michael Stephenson&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;making-noise-with-f&quot;&gt;Making Noise With F#&lt;/h3&gt;
&lt;p&gt;by John Stovin
&lt;a href=&quot;https://x.com/johnstovin&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/JohnStov/FSharpAudio&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/03/making-noise-with-fsharp-john-stovin.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/03/making-noise-with-fsharp-john-stovin.jpg#img-sketchnote&quot; alt=&quot;Making Noise With F# by John Stovin&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;air-quality-lora-and-azure-functions&quot;&gt;Air Quality, LoRa And Azure Functions&lt;/h3&gt;
&lt;p&gt;by Rob Miles
&lt;a href=&quot;https://www.robmiles.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/robmiles&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/03/air-quality-lora-and-azure-functions-rob-miles.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/03/air-quality-lora-and-azure-functions-rob-miles.jpg#img-sketchnote&quot; alt=&quot;Air Quality, LoRa And Azure Functions by Rob Miles&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;solving-microservices-challenges-on-the-kubernetes-platform&quot;&gt;Solving Microservices Challenges On The Kubernetes Platform&lt;/h3&gt;
&lt;p&gt;by Shahid Iqbal
&lt;a href=&quot;https://blog.headforcloud.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/shahiddev&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/03/solving-microservices-challenges-on-the-kubernetes-platform-shahid-iqbal.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/03/solving-microservices-challenges-on-the-kubernetes-platform-shahid-iqbal.jpg#img-sketchnote&quot; alt=&quot;Solving Microservices Challenges On The Kubernetes Platform by Shahid Iqbal&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Sun, 03 Mar 2019 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2019/03/03/ddd-north-8.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2019/03/03/ddd-north-8.html</guid>
			</item>
		
			<item>
				<title>NDC London 2019</title>
				<description>&lt;p&gt;A few weeks ago I attended &lt;a href=&quot;https://ndc-london.com&quot;&gt;NDC London&lt;/a&gt;. This time I attended as part of the NDC crew. In exchange for a free ticket to the event, you agree to help out for 50% of the time you are there.&lt;/p&gt;

&lt;p&gt;The evening before the conference, I joined the other volunteer crew members at the venue to help get set up for registration. This involved unpacking the NDC hoodies (each attendee receives one) from their boxes and getting the registration desk set up with the conference lanyards and badges. The following morning, we had to be there bright and early to welcome the attendees, check them in, and issue their conference badges.&lt;/p&gt;

&lt;p&gt;For the rest of the conference, half of each day is spent working, and half is yours to do as you please. I was assigned to one of the conference rooms for each afternoon. This involved ensuring that the speaker turned up to the room before their talk, dealing with any problems that may happen during the talk, and giving the speaker their NDC speaker gift after their talk. A downside of being assigned to a specific room is that you don’t get to choose the talks you see, but having volunteered before back in 2014, I knew I would still see some good talks.&lt;/p&gt;

&lt;h3 id=&quot;dynamic-runtime-code-with-roslyn&quot;&gt;Dynamic Runtime Code With Roslyn&lt;/h3&gt;
&lt;p&gt;by Jeremy Miller
&lt;a href=&quot;https://jeremydmiller.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/jeremydmiller&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=Wxqv29V3a7c&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/02/dynamic-runtime-code-with-roslyn-jeremy-miller.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/02/dynamic-runtime-code-with-roslyn-jeremy-miller.jpg#img-sketchnote&quot; alt=&quot;Dynamic Runtime Code With Roslyn by Jeremy Miller&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;pragmatic-performance&quot;&gt;Pragmatic Performance&lt;/h3&gt;
&lt;p&gt;by David Wengier
&lt;a href=&quot;https://wengier.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/davidwengier&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.slideshare.net/DavidWengier/pragmatic-performance-from-ndc-london-2019&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=fi_nUJOyjzk&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/02/pragmatic-performance-david-wengier.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/02/pragmatic-performance-david-wengier.jpg#img-sketchnote&quot; alt=&quot;Pragmatic Performance by David Wengier&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;css-grid---what-is-this-magic&quot;&gt;CSS Grid - What Is This Magic?&lt;/h3&gt;
&lt;p&gt;by Amy Kapernick
&lt;a href=&quot;https://amygoestoperth.com.au&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/amys_kapers&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/amykapernick/talks/tree/master/css-grid-what-is-this-magic&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=pdbpMYjijFY&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/02/css-grid-what-is-this-magic-amy-kapernick.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/02/css-grid-what-is-this-magic-amy-kapernick.jpg#img-sketchnote&quot; alt=&quot;CSS Grid - What Is This Magic? by Amy Kapernick&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;a-lap-around-azure-devops&quot;&gt;A Lap Around Azure DevOps&lt;/h3&gt;
&lt;p&gt;by Jakob Ehn
&lt;a href=&quot;https://blog.ehn.nu&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/jakobehn&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=ges0Q07-kSc&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/02/a-lap-around-azure-devops-jakob-ehn.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/02/a-lap-around-azure-devops-jakob-ehn.jpg#img-sketchnote&quot; alt=&quot;A Lap Around Azure DevOps by Jakob Ehn&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;aspnet-core-one-hour-makeover&quot;&gt;ASP.Net Core One Hour Makeover&lt;/h3&gt;
&lt;p&gt;by Jon Galloway
&lt;a href=&quot;https://weblogs.asp.net/jongalloway&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/jongalloway&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.slideshare.net/jongalloway/aspnet-core-one-hour-makeover&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=Y7wYDIHjRMQ&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://gist.github.com/jongalloway/70e5373837534abe6c89e7ab3ec4efb5&quot;&gt;&lt;i class=&quot;fa fa-file-code-o fa-lg&quot; title=&quot;Code&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/02/asp-net-core-one-hour-makeover-jon-galloway.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/02/asp-net-core-one-hour-makeover-jon-galloway.jpg#img-sketchnote&quot; alt=&quot;ASP.Net Core One Hour Makeover by Jon Galloway&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;leadership-guide-for-the-reluctant-leader&quot;&gt;Leadership Guide For The Reluctant Leader&lt;/h3&gt;
&lt;p&gt;by David Neal
&lt;a href=&quot;https://reverentgeek.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/reverentgeek&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://speakerdeck.com/reverentgeek/leadership-guide-for-the-reluctant-leader-ndc-sydney-2018&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=LzKCwhVYGa4&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/02/leadership-guide-for-the-reluctant-leader-david-neal.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/02/leadership-guide-for-the-reluctant-leader-david-neal.jpg#img-sketchnote&quot; alt=&quot;Leadership Guide For The Reluctant Leader by David Neal&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;keeping-it-dryer-with-templates&quot;&gt;Keeping It DRYer With Templates&lt;/h3&gt;
&lt;p&gt;by Layla Porter
&lt;a href=&quot;https://x.com/laylacodesit&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=kwpDed1ScvA&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/02/keeping-it-dryer-with-templates-layla-porter.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/02/keeping-it-dryer-with-templates-layla-porter.jpg#img-sketchnote&quot; alt=&quot;Keeping It DRYer With Templates by Layla Porter&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;mlnet-for-developers-without-any-ai-experience&quot;&gt;ML.Net For Developers Without Any AI Experience&lt;/h3&gt;
&lt;p&gt;by Lee Mallon
&lt;a href=&quot;https://www.rarely.io&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/leemallon&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=zy7Y9CHji2k&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/02/ml-net-for-developers-without-any-ai-experience-lee-mallon.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/02/ml-net-for-developers-without-any-ai-experience-lee-mallon.jpg#img-sketchnote&quot; alt=&quot;ML.Net For Developers Without Any AI Experience by Lee Mallon&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;reverse-engineering-a-bluetooth-lightbulb&quot;&gt;Reverse Engineering A Bluetooth Lightbulb&lt;/h3&gt;
&lt;p&gt;by Jesse Phelps
&lt;a href=&quot;https://x.com/jessephelps&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=-IEvDBJ6D9Y&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/02/reverse-engineering-a-bluetooth-lightbulb-jesse-phelps.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/02/reverse-engineering-a-bluetooth-lightbulb-jesse-phelps.jpg#img-sketchnote&quot; alt=&quot;Reverse Engineering A Bluetooth Lightbulb by Jesse Phelps&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;lets-talk-http-in-net-core&quot;&gt;Let’s Talk HTTP In .Net Core&lt;/h3&gt;
&lt;p&gt;by Steve Gordon
&lt;a href=&quot;https://www.stevejgordon.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/stevejgordon&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://speakerdeck.com/stevejgordon/lets-talk-http-in-net-core-7f006406-9195-442d-8cd9-1ea60816f435&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=ojDxK_-I-To&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/02/lets-talk-http-in-net-core-steve-gordon.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/02/lets-talk-http-in-net-core-steve-gordon.jpg#img-sketchnote&quot; alt=&quot;Let&apos;s Talk HTTP In .Net Core by Steve Gordon&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;ctrl-alt-del-learning-to-love-legacy-code&quot;&gt;Ctrl-Alt-Del: Learning To Love Legacy Code&lt;/h3&gt;
&lt;p&gt;by Dylan Beattie
&lt;a href=&quot;http://www.dylanbeattie.net&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/dylanbeattie&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=Nyu8sVx9umw&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/02/ctrl-alt-del-learning-to-love-legacy-code-dylan-beattie.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/02/ctrl-alt-del-learning-to-love-legacy-code-dylan-beattie.jpg#img-sketchnote&quot; alt=&quot;Ctrl-Alt-Del: Learning To Love Legacy Code by Dylan Beattie&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-functional-programming-toolkit&quot;&gt;The Functional Programming Toolkit&lt;/h3&gt;
&lt;p&gt;by Scott Wlaschin
&lt;a href=&quot;https://fsharpforfunandprofit.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/ScottWlaschin&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=bKOAX4xwMlE&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2019/02/the-functional-programming-toolkit-scott-wlaschin.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2019/02/the-functional-programming-toolkit-scott-wlaschin.jpg#img-sketchnote&quot; alt=&quot;The Functional Programming Toolkit by Scott Wlaschin&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are the other talks I attended but didn’t sketchnote:&lt;/p&gt;

&lt;h3 id=&quot;microsofts-open-source-journey&quot;&gt;Microsoft’s Open Source Journey&lt;/h3&gt;
&lt;p&gt;by Scott Hanselman
&lt;a href=&quot;https://www.hanselman.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/shanselman&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=a2IK82xn2uE&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;solving-diabetes-with-an-open-source-artificial-pancreas&quot;&gt;Solving Diabetes With An Open Source Artificial Pancreas&lt;/h3&gt;
&lt;p&gt;by Scott Hanselman
&lt;a href=&quot;https://www.hanselman.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/shanselman&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=USPI253okyg&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Wed, 13 Feb 2019 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ndc-london/sketchnotes/2019/02/13/ndc-london-2019.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ndc-london/sketchnotes/2019/02/13/ndc-london-2019.html</guid>
			</item>
		
			<item>
				<title>ProgNet 2018</title>
				<description>&lt;p&gt;I’m currently attending &lt;a href=&quot;https://skillsmatter.com/conferences/10107-prognet-london-2018&quot;&gt;ProgNet 2018&lt;/a&gt; held at &lt;a href=&quot;https://skillsmatter.com&quot;&gt;SkillsMatter&lt;/a&gt; in London. This is an annual conference that focuses on the latest trends and technologies in the .Net space. The conference runs over three days, and consists of a day of talks followed by two days of instructor-led workshops.&lt;/p&gt;

&lt;p&gt;I’ve been several times before and it’s always a good event, with a variety of topics covered over the three days. I especially enjoy the conversations outside of the sessions during the breaks and in the evenings, and the chance to mix with some very knowledgeable people.&lt;/p&gt;

&lt;p&gt;During the first day of the conference, I sketchnoted the talks that I attended. Videos for all of the talks are available on the &lt;a href=&quot;https://skillsmatter.com/conferences/10107-prognet-london-2018#program&quot;&gt;ProgNet 2018 website&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;own-the-future&quot;&gt;Own The Future&lt;/h3&gt;
&lt;p&gt;by Udi Dahan
&lt;a href=&quot;http://udidahan.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/udidahan&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://skillsmatter.com/skillscasts/12047-keynote-own-the-future&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/09/own-the-future-udi-dahan.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/09/own-the-future-udi-dahan.jpg#img-sketchnote&quot; alt=&quot;Own The Future by Udi Dahan&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this talk, Udi talked about the problems that companies tend to have when trying to maintain a piece of software over time. He highlighted the traps that are easy to fall into, including attempting to rewrite the software only to be left maintaining both the original &lt;a href=&quot;http://www.laputan.org/mud/mud.html&quot;&gt;big ball of mud&lt;/a&gt; and the rewrite side-by-side. He then suggested some techniques that can help, such as better initial requirements (including “why” something is wanted), giving better estimates, and working in a more iterative way. Ultimately his suggestion is to compose applications using the bounded context idea from Domain Driven Design to give better decoupling, keeping unrelated behaviours separate from each other, and preventing the big ball of mud from happening in the first place.&lt;/p&gt;

&lt;h3 id=&quot;lets-talk-http-in-net-core&quot;&gt;Let’s Talk HTTP In .Net Core&lt;/h3&gt;
&lt;p&gt;by Steve Gordon
&lt;a href=&quot;https://www.stevejgordon.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/stevejgordon&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://speakerdeck.com/stevejgordon/lets-talk-http-in-net-core-7f006406-9195-442d-8cd9-1ea60816f435&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://skillsmatter.com/skillscasts/12016-let-s-talk-http-in-dot-net-core&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/09/lets-talk-http-in-net-core-steve-gordon.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/09/lets-talk-http-in-net-core-steve-gordon.jpg#img-sketchnote&quot; alt=&quot;Let&apos;s Talk HTTP In .Net Core by Steve Gordon&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Many modern applications make use of HTTP for communication for calls between microservices, to 3rd party REST APIs, or even to cloud services. &lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient?view=netcore-2.1&quot;&gt;HttpClient&lt;/a&gt; is widely used to make these calls, but can cause serious issues if not done properly.&lt;/p&gt;

&lt;p&gt;Steve showed some example code for making a remote call using HttpClient, and highlighted the issues that can happen in the underlying TCP layer as a result of its use. He then adapted the code in several steps to show how to use the &lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/api/system.net.http.ihttpclientfactory?view=aspnetcore-2.1&quot;&gt;IHttpClientFactory&lt;/a&gt; (introduced in ASP.NET core 2.1) to do it properly, including integrating with DI containers and middleware.&lt;/p&gt;

&lt;p&gt;He also introduced &lt;a href=&quot;http://www.thepollyproject.org&quot;&gt;Polly&lt;/a&gt;, a library for introducing resilience and fault handling into an application. With Polly, it is easy to configure the behaviours that should happen when errors occur, including retries, trimeouts and fallback.&lt;/p&gt;

&lt;p&gt;Steve finished off the talk by giving some general tips for working with HTTP calls.&lt;/p&gt;

&lt;h3 id=&quot;building-real-time-software-with-aspnet-core-signalr&quot;&gt;Building Real Time Software With ASP.Net Core SignalR&lt;/h3&gt;
&lt;p&gt;by Rachel Appel
&lt;a href=&quot;http://rachelappel.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/rachelappel&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/rachelappel/presentations/raw/master/Build%20Real%20Time%20Software%20with%20SignalR.pptx&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://skillsmatter.com/skillscasts/12193-build-real-time-high-performing-software-with-aspdot-net-core&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/09/building-real-time-software-with-aspnet-core-signalr-rachel-appel.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/09/building-real-time-software-with-aspnet-core-signalr-rachel-appel.jpg#img-sketchnote&quot; alt=&quot;Building Real Time Software With ASP.Net Core SignalR by Rachel Appel&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This talk was a beginner’s introduction to &lt;a href=&quot;https://docs.microsoft.com/en-us/aspnet/signalr/&quot;&gt;SignalR&lt;/a&gt;, a technology that allows real-time asynchronous communication from a server to clients. SignalR has recently been rewritten to remove some of the problems of the previous versions, as well as adding some new features.&lt;/p&gt;

&lt;p&gt;Rachel started by explaining how to add SignalR to a web application, including its core concept of &lt;a href=&quot;https://docs.microsoft.com/en-us/aspnet/core/signalr/hubs?view=aspnetcore-2.1&quot;&gt;hubs&lt;/a&gt; that allow the communication between clients and the server. She showed how to configure a hub and how to send messages via it, using both the C# and Javascript clients.&lt;/p&gt;

&lt;p&gt;She concluded the talk by highlighting a couple of settings that need to be changed when deploying to Azure to allow SignalR to work properly.&lt;/p&gt;

&lt;h3 id=&quot;learning-to-code-by-making-games&quot;&gt;Learning To Code By Making Games&lt;/h3&gt;
&lt;p&gt;by Willow Rendle
&lt;a href=&quot;https://skillsmatter.com/skillscasts/12052-from-scratch-to-unity3d-learning-to-code-by-making-games&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/09/learning-to-code-by-making-games-willow-rendle.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/09/learning-to-code-by-making-games-willow-rendle.jpg#img-sketchnote&quot; alt=&quot;Learning To Code By Making Games by Willow Rendle&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Starting with &lt;a href=&quot;https://scratch.mit.edu&quot;&gt;Scratch&lt;/a&gt;, then &lt;a href=&quot;https://www.gethopscotch.com&quot;&gt;Hopscotch&lt;/a&gt;, and ending up at &lt;a href=&quot;https://unity3d.com&quot;&gt;Unity&lt;/a&gt;, Willow (who is only 12 years old) described her journey in making games. Most of the talk revolved around Unity, its ecosystem, and the things that can be achieved with it.&lt;/p&gt;

&lt;p&gt;Willow demonstrated some of the games she has made and the tools and techniques used to make them, including the many freely available models, textures, sounds and environments that can be downloaded from the Unit assert store. She then went on to demonstrate what is possible with Unity by showing off some of the freely available game kits (available for both &lt;a href=&quot;https://unity3d.com/learn/tutorials/s/2d-game-kit&quot;&gt;2D&lt;/a&gt; and &lt;a href=&quot;https://unity3d.com/learn/tutorials/s/3d-game-kit&quot;&gt;3D&lt;/a&gt; games) that are useful for learning from. These are full games that include the code and graphics that can be inspected to see how to achieve certain game effects and behaviours.&lt;/p&gt;

&lt;h3 id=&quot;security-in-cloud-native&quot;&gt;Security In Cloud Native&lt;/h3&gt;
&lt;p&gt;by Robin Minto
&lt;a href=&quot;https://robinminto.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/robinem&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://skillsmatter.com/skillscasts/10910-security-in-cloud-native&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/09/security-in-cloud-native-robin-minto.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/09/security-in-cloud-native-robin-minto.jpg#img-sketchnote&quot; alt=&quot;Security In Cloud Native by Robin Minto&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Robin talked about the importance of security in modern software, especially in cloud based systems.&lt;/p&gt;

&lt;p&gt;He started by giving an overview of cloud native applications and described the three major threats to them: vulnerable software, leaked credentials, and time. These threats can be mitigated using a security model developed by &lt;a href=&quot;https://pivotal.io&quot;&gt;Pivotal&lt;/a&gt; called the 3Rs: Repair (fixing software, patching infrastructure, updating dependencies), Repave (destroy and recreate environments to destroy anything nasty that may have got inside), Rotate (change credentials, certificate, keys regularly).&lt;/p&gt;

&lt;p&gt;Robin went on to talk about the different cloud providers (e.g. Microsoft Azure, Amazon AWS, Google Cloud), and how they will always be better than you at security - they employ more knowledgeable security people and have more visibility and exposure to the latest threats.&lt;/p&gt;

&lt;p&gt;After introducing some of the security issues that are easy to do with cloud applications and how to mitigate them, Robin concluded by showing some tools to help to secure your cloud applications.&lt;/p&gt;

&lt;h3 id=&quot;turning-passion-into-experience&quot;&gt;Turning Passion Into Experience&lt;/h3&gt;
&lt;p&gt;by Shawn Wildermuth
&lt;a href=&quot;https://wildermuth.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/ShawnWildermuth&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://skillsmatter.com/skillscasts/10909-keynote-turning-passion-into-experience&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/09/turning-passion-into-experience-shawn-wildermuth.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/09/turning-passion-into-experience-shawn-wildermuth.jpg#img-sketchnote&quot; alt=&quot;Turning Passion Into Experience by Shawn Wildermuth&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shawn spoke about the importance of having passion and excitement about what you do as a developer. It is not enough however to have just these attributes - you have to be willing to take risks alongside them. He talked about his own experiences of following technologies that even though short-lived, gave him the opportunity to learn new things. &lt;/p&gt;

&lt;p&gt;He gave examples from his own career of having &lt;a href=&quot;https://en.wikipedia.org/wiki/Impostor_syndrome&quot;&gt;imposter syndrome&lt;/a&gt;, and weighed it up against the arrogance that some developers use as camouflage to hide their insecurities. He also stressed the importance of saying “I don’t know” and that it is ok to do so, even as an experienced developer.&lt;/p&gt;

&lt;p&gt;Shawn talked again about some of his failures, and highlighted how failures are useful because they are a learning opportunity and a moment of growth that you will be better for after experiencing. This has to be balanced against risk however, and you should understand what level of risk you are willing to take.&lt;/p&gt;

&lt;h3 id=&quot;career-advice-for-programmers&quot;&gt;Career Advice For Programmers&lt;/h3&gt;
&lt;p&gt;by Tirsha Gee
&lt;a href=&quot;http://trishagee.github.io&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/trisha_gee&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://skillsmatter.com/skillscasts/10908-looking-forward-to-trisha-gee-s-keynote-for-prognet-2018&quot;&gt;&lt;i class=&quot;fa fa-video-camera fa-lg&quot; title=&quot;Video&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/09/career-advice-for-programmers-trisha-gee.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/09/career-advice-for-programmers-trisha-gee.jpg#img-sketchnote&quot; alt=&quot;Career Advice For Programmers by Trisha Gee&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Trisha talked about how she now has the job she really wants (she is a developer advocate at &lt;a href=&quot;https://www.jetbrains.com&quot;&gt;Jetbrains&lt;/a&gt; and works remotely from Spain) after steering her career in that direction over a number of years.&lt;/p&gt;

&lt;p&gt;She talked about the recruitment of developers and how the software industry is not very good at measuring programming ability, meaning that figuring out who to hire and reward is hard. As a result, being good at a job is not the same as looking good at a job. She then gave some tips on how to “hack the system” so that you can look like you are good at your job.&lt;/p&gt;

&lt;p&gt;She concluded the talk by giving some advice on how to iterate on your career to move it forward.&lt;/p&gt;

&lt;h3 id=&quot;making-useless-stuff-a-tale-of-magic-code-and-the-unknown&quot;&gt;Making Useless Stuff: A Tale Of Magic, Code And The Unknown&lt;/h3&gt;
&lt;p&gt;by Amie Dansby
&lt;a href=&quot;https://www.amiedd.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/amiedoubled&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/09/making-useless-stuff-a-tale-of-magic-code-and-the-unknown-amie-dansby.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/09/making-useless-stuff-a-tale-of-magic-code-and-the-unknown-amie-dansby.jpg#img-sketchnote&quot; alt=&quot;Making Useless Stuff: A Tale Of Magic, Code And The Unknown by Amie Dansby&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Wed, 12 Sep 2018 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/prognet/sketchnotes/2018/09/12/prognet-2018.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/prognet/sketchnotes/2018/09/12/prognet-2018.html</guid>
			</item>
		
			<item>
				<title>DDD Reading 13</title>
				<description>&lt;p&gt;At the weekend, I went down to Reading to attend &lt;a href=&quot;https://www.developerdeveloperdeveloper.com&quot;&gt;DDD 13&lt;/a&gt;. Hosted at Microsoft’s offices the DDD Reading event is the mother of all of the &lt;a href=&quot;ddd.html&quot;&gt;DDD events&lt;/a&gt;, with the first one held back in &lt;a href=&quot;ddd-grouped.html#ddd-reading--&quot;&gt;2005&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here are the sketchnotes I took of the talks I attended.&lt;/p&gt;

&lt;h3 id=&quot;quantum-computing-dont-panic&quot;&gt;Quantum Computing: Don’t Panic&lt;/h3&gt;
&lt;p&gt;by Anita Ramanan
&lt;a href=&quot;https://x.com/whywontitbuild&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
and Frances Tibble
&lt;a href=&quot;https://x.com/frances_tibble&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/06/quantum-computing-dont-panic-anita-ramanan-frances-tibble.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/06/quantum-computing-dont-panic-anita-ramanan-frances-tibble.jpg#img-sketchnote&quot; alt=&quot;Quantum Computing: Don&apos;t Panic by Anita Ramanan and Frances Tibble&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;web-assembly-blazor-and-the-future-of-web-development&quot;&gt;Web Assembly, Blazor, And The Future Of Web Development&lt;/h3&gt;
&lt;p&gt;by Joseph Woodward
&lt;a href=&quot;http://josephwoodward.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/joe_mighty&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/06/web-assembly-blazor-and-the-future-of-web-development-joseph-woodward.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/06/web-assembly-blazor-and-the-future-of-web-development-joseph-woodward.jpg#img-sketchnote&quot; alt=&quot;Web Assembly, Blazor, And The Future Of Web Development by Joseph Woodward&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;from-monolithic-monster-to-majestic-microservice-app&quot;&gt;From Monolithic Monster To Majestic Microservice App&lt;/h3&gt;
&lt;p&gt;by Callum Whyte
&lt;a href=&quot;http://callumwhyte.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/callumbwhyte&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://docs.google.com/presentation/d/1yljbuxuKmrmVu1E-keyMi8IWEsO37iqb4tW7p7SVpFI/edit&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/06/from-monolithic-monster-to-majestic-microservice-app-callum-whyte.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/06/from-monolithic-monster-to-majestic-microservice-app-callum-whyte.jpg#img-sketchnote&quot; alt=&quot;From Monolithic Monster To Majestic Microservice App by Callum Whyte&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;automate-your-test-infrastructure-with-kubernetes&quot;&gt;Automate Your Test Infrastructure With Kubernetes&lt;/h3&gt;
&lt;p&gt;by Joe Stead
&lt;a href=&quot;https://joestead.codes&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/Joe_Stead&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/06/automate-your-test-infrastructure-with-kubernetes-joe-stead.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/06/automate-your-test-infrastructure-with-kubernetes-joe-stead.jpg#img-sketchnote&quot; alt=&quot;Automate Your Test Infrastructure With Kubernetes by Joe Stead&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Tue, 26 Jun 2018 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2018/06/26/ddd-reading-13.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2018/06/26/ddd-reading-13.html</guid>
			</item>
		
			<item>
				<title>DDD South West 8</title>
				<description>&lt;p&gt;I attended &lt;a href=&quot;https://www.dddsouthwest.com&quot;&gt;DDD South West&lt;/a&gt; at the weekend in Bristol. As usual, it was a great event.&lt;/p&gt;

&lt;p&gt;Here are the sketchnotes I took of the talks I attended.&lt;/p&gt;

&lt;h3 id=&quot;outside-in-tdd&quot;&gt;Outside-In TDD&lt;/h3&gt;
&lt;p&gt;by Ian Russell
&lt;a href=&quot;http://ijrussell.tumblr.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/ijrussell&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/04/outside-in-tdd-ian-russell.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/04/outside-in-tdd-ian-russell.jpg#img-sketchnote&quot; alt=&quot;Outside-In TDD by Ian Russell&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;give-it-a-rest---tips-for-designing-and-consuming-public-apis&quot;&gt;Give It A REST - Tips For Designing And Consuming Public APIs&lt;/h3&gt;
&lt;p&gt;by Liam Westley
&lt;a href=&quot;https://blog.liamwestley.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/westleyl&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/04/give-it-a-rest-tips-for-designing-and-consuming-public-apis-liam-westley.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/04/give-it-a-rest-tips-for-designing-and-consuming-public-apis-liam-westley.jpg#img-sketchnote&quot; alt=&quot;Give It A REST - Tips For Designing And Consuming Public APIs by Liam Westley&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;kubernetes-for-net-developers&quot;&gt;Kubernetes For .Net Developers&lt;/h3&gt;
&lt;p&gt;by Shahid Iqbal
&lt;a href=&quot;https://blog.headforcloud.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/shahiddev&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://speakerdeck.com/shahiddev/kubernetes-for-net-developers&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/04/kubernetes-for-dotnet-developers-shahid-iqbal.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/04/kubernetes-for-dotnet-developers-shahid-iqbal.jpg#img-sketchnote&quot; alt=&quot;Kubernetes For .Net Developers by Shahid Iqbal&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;teaching-an-old-dog-new-tricks&quot;&gt;Teaching An Old Dog New Tricks&lt;/h3&gt;
&lt;p&gt;by Ismail Mayat
&lt;a href=&quot;https://ismailmayat.wordpress.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/ismailmayat&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/04/teaching-an-old-dog-new-tricks-ismail-mayat.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/04/teaching-an-old-dog-new-tricks-ismail-mayat.jpg#img-sketchnote&quot; alt=&quot;Teaching An Old Dog New Tricks by Ismail Mayat&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;patterns-and-practices-for-building-a-better-web-api-architecture&quot;&gt;Patterns And Practices For Building A Better Web API Architecture&lt;/h3&gt;
&lt;p&gt;by Joseph Woodward
&lt;a href=&quot;http://josephwoodward.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/joe_mighty&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/04/patterns-and-practices-for-building-a-better-web-api-architecture-joseph-woodward.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/04/patterns-and-practices-for-building-a-better-web-api-architecture-joseph-woodward.jpg#img-sketchnote&quot; alt=&quot;Patterns And Practices For Building A Better Web API Architecture by Joseph Woodward&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Mon, 23 Apr 2018 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2018/04/23/ddd-south-west-8.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2018/04/23/ddd-south-west-8.html</guid>
			</item>
		
			<item>
				<title>Cambridge Alexa Devs Meetup</title>
				<description>&lt;p&gt;I recently attended the inaugural meetup of the &lt;a href=&quot;https://www.meetup.com/Cambridge-Alexa-Developers-Meetup/&quot;&gt;Cambridge Alexa Developers Group&lt;/a&gt; held at Amazon’s Cambridge office. The group was set up by &lt;a href=&quot;https://x.com/bobharrisuk&quot;&gt;Bob Harris&lt;/a&gt; and &lt;a href=&quot;https://x.com/richmerrett815&quot;&gt;Rich Merrett&lt;/a&gt;, who both gave talks on building Alexa skills and SSML.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://x.com/daviddlow&quot;&gt;David Low&lt;/a&gt;, Amazon’s Head of Solutions Architects, also gave a talk about how to best create a skill by working out its user value:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/04/working-backwards-david-low.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/04/working-backwards-david-low.jpg#img-sketchnote&quot; alt=&quot;Working Backwards by David Low&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One particlarly interesting thing covered was a formula for working out whether a skill will be a “killer skill”:&lt;/p&gt;

&lt;style&gt;
  #alexa-killer-formula td {
    padding: 15px;
    text-align: center;
    cursor: help;
  }

  #alexa-killer-formula td.numerator {
    border-bottom: 1px solid black;
  }
&lt;/style&gt;

&lt;section id=&quot;alexa-killer-formula&quot;&gt;
  &lt;table&gt;
    &lt;tr&gt;&lt;td class=&quot;numerator&quot; title=&quot;Derived from customer research. Leap of faith assumption.&quot;&gt;
      Cusomter value
    &lt;/td&gt;&lt;td class=&quot;numerator&quot;&gt;
      &amp;times;
    &lt;/td&gt;&lt;td class=&quot;numerator&quot; title=&quot;Where voice adds higher value. Hands free situations, for example.&quot;&gt;
      Contexts
    &lt;/td&gt;&lt;td rowspan=&quot;2&quot;&gt;
      &amp;times;
    &lt;/td&gt;&lt;td rowspan=&quot;2&quot; title=&quot;Likely repeat use.&quot;&gt;
      Frequency
    &lt;/td&gt;&lt;td rowspan=&quot;2&quot;&gt;
      &amp;times;
    &lt;/td&gt;&lt;td rowspan=&quot;2&quot; title=&quot;Potential marketing activity. Reach of the skill.&quot;&gt;
      Multipliers
    &lt;/td&gt;&lt;/tr&gt;    
    &lt;tr&gt;&lt;td title=&quot;How difficult is the skill to navigate? Is it complicated, slow, lengthy?&quot;&gt;
      Complexity
    &lt;/td&gt;&lt;td&gt;
      &amp;times;
    &lt;/td&gt;&lt;td title=&quot;Is there any technical friction? Variation in automatic speech recognition (ASR) vs natural language understanding (NLU)?&quot;&gt;
      Friction
    &lt;/td&gt;&lt;/tr&gt;
  &lt;/table&gt;
&lt;/section&gt;

&lt;p&gt;The higher the output of this formula, the higher the likelihood that a skill will be succesful.&lt;/p&gt;

&lt;p&gt;While this talk wasn’t recorded, he has given a &lt;a href=&quot;https://skillsmatter.com/skillscasts/10450-a-masterclass-in-building-amazon-alexa-skills-with-david-low&quot;&gt;similar talk&lt;/a&gt; before that was.&lt;/p&gt;

</description>
				<pubDate>Tue, 17 Apr 2018 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/alexa/sketchnotes/2018/04/17/alexa-devs-meetup.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/alexa/sketchnotes/2018/04/17/alexa-devs-meetup.html</guid>
			</item>
		
			<item>
				<title>NDC London 2018</title>
				<description>&lt;p&gt;Last week I attended &lt;a href=&quot;https://ndc-london.com&quot;&gt;NDC London&lt;/a&gt;. It’s not the first time that I’ve been, but it is the first time I’ve done the workshops that run alongside the main conference.&lt;/p&gt;

&lt;p&gt;I attended the “Identity &amp;amp; Access Control for modern Applications and APIs using ASP.NET Core 2” workshop hosted by &lt;a href=&quot;https://x.com/leastprivilege&quot;&gt;Dominick Baier&lt;/a&gt; and &lt;a href=&quot;https://x.com/brockallen&quot;&gt;Brock Allen&lt;/a&gt;. This was a two day workshop consisting of a mixture of presentation, discussion, and hands-on labs. It dived deep into the security aspects of modern ASP.Net applications, specifically the application itself and its APIs. The first day focused on how external authentication (via OAuth 2.0 and OpenID Connect) could be used to save having to implement authentication yourself in your application. The second day took this further and focused on how to secure an API that you may have in an application so that you can call it server-to-server, from mobile applications, or from JavaScript applications.&lt;/p&gt;

&lt;p&gt;The remaining three days of the conference was in the form of talks. Like I’ve &lt;a href=&quot;/ddd-events/sketchnotes/2017/10/16/ddd-north-7.html&quot;&gt;done before&lt;/a&gt;, I sketchnoted many of the sessions that I attended.&lt;/p&gt;

&lt;h3 id=&quot;what-is-programming-anyway&quot;&gt;What Is Programming Anyway?&lt;/h3&gt;
&lt;p&gt;by Felienne Hermans
&lt;a href=&quot;http://www.felienne.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/Felienne&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=grr09e_cH_c&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/01/what-is-programming-anyway-felienne-hermans.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/01/what-is-programming-anyway-felienne-hermans.jpg#img-sketchnote&quot; alt=&quot;What Is Programming Anyway? by Felienne Hermans&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-power-of-technical-decisions&quot;&gt;The Power Of Technical Decisions&lt;/h3&gt;
&lt;p&gt;by Jake Ginnivan
&lt;a href=&quot;http://jake.ginnivan.net&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/JakeGinnivan&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=u80GTmVtdG4&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/01/the-power-of-technical-decisions-jake-ginnivan.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/01/the-power-of-technical-decisions-jake-ginnivan.jpg#img-sketchnote&quot; alt=&quot;The Power Of Technical Decisions by Jake Ginnivan&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;you-build-it-you-run-it&quot;&gt;You Build It, You Run It&lt;/h3&gt;
&lt;p&gt;by Chris O’Dell
&lt;a href=&quot;https://chrisodell.wordpress.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/ChrisAnnODell&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=UNxhm89DwlY&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/01/you-build-it-you-run-it-chris-odell.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/01/you-build-it-you-run-it-chris-odell.jpg#img-sketchnote&quot; alt=&quot;You Build It, You Run It by Chris O&apos;Dell&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;an-introduction-to-kotlin&quot;&gt;An Introduction To Kotlin&lt;/h3&gt;
&lt;p&gt;by Dmitry Kandalov
&lt;a href=&quot;http://dkandalov.github.io&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/dmitrykandalov&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.dropbox.com/sh/reb81046oz1xn47/AACsd1QG6C9MN8s70vNaz0KFa?preview=kotlin-by-example.pdf&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=6k7az23iZME&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/01/an-introduction-to-kotlin-dmitry-kandalov.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/01/an-introduction-to-kotlin-dmitry-kandalov.jpg#img-sketchnote&quot; alt=&quot;An Introduction To Kotlin by Dmitry Kandalov&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;composite-uis-the-microservices-last-mile&quot;&gt;Composite UIs: The Microservices Last Mile&lt;/h3&gt;
&lt;p&gt;by Jimmy Bogard
&lt;a href=&quot;https://jimmybogard.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/jbogard&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/jbogard/presentations/raw/master/CompositeUIs/CompositeUIsAndMicroservices.pptx&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=gjtFGx0yX5M&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/01/composite-uis-the-microservices-last-mile-jimmy-bogard.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/01/composite-uis-the-microservices-last-mile-jimmy-bogard.jpg#img-sketchnote&quot; alt=&quot;Composite UIs: The Microservices Last Mile by Jimmy Bogard&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;designing-for-speech&quot;&gt;Designing For Speech&lt;/h3&gt;
&lt;p&gt;by Jessice Engström
&lt;a href=&quot;http://www.catoholic.se&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/grytlappen&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=7z-WZi2Nb-Y&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/01/designing-for-speech-jessica-engstrom.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/01/designing-for-speech-jessica-engstrom.jpg#img-sketchnote&quot; alt=&quot;Designing For Speech by Jessica Engström&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;jewelbots-how-to-get-more-girls-coding&quot;&gt;Jewelbots: How To Get More Girls Coding&lt;/h3&gt;
&lt;p&gt;by Jennifer Wadella
&lt;a href=&quot;https://jenniferwadella.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/likeOMGitsFEDAY&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://tehfedaykin.github.io/CodingWithJewelbots/#/&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=jF36MiP2GYw&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/01/jewelbots-how-to-get-more-girls-coding-jennifer-wadella.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/01/jewelbots-how-to-get-more-girls-coding-jennifer-wadella.jpg#img-sketchnote&quot; alt=&quot;Jewelbots: How To Get More Girls Coding by Jennifer Wadella&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;who-needs-dashboards&quot;&gt;Who Needs Dashboards?&lt;/h3&gt;
&lt;p&gt;by Jessica White
&lt;a href=&quot;https://jesswhite.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/JessPWhite&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://speakerdeck.com/jesswhite/who-needs-dashboards-ndc-london&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=RdqDdMNzqU8&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/01/who-needs-dashboards-jessica-white.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/01/who-needs-dashboards-jessica-white.jpg#img-sketchnote&quot; alt=&quot;Who Needs Dashboards? by Jessica White&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;pilot-decision-management&quot;&gt;Pilot Decision Management&lt;/h3&gt;
&lt;p&gt;by Clifford Agius
&lt;a href=&quot;https://x.com/CliffordAgius&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=QNA9EExd8lQ&amp;amp;t=2586s&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/01/pilot-decision-management-clifford-agius.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/01/pilot-decision-management-clifford-agius.jpg#img-sketchnote&quot; alt=&quot;Pilot Decision Management by Clifford Agius&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;a-developers-guide-to-machine-learning&quot;&gt;A Developer’s Guide To Machine Learning&lt;/h3&gt;
&lt;p&gt;by Tess Ferrandez-Norlander
&lt;a href=&quot;https://blogs.msdn.microsoft.com/Tess/&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/TessFerrandez&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.slideshare.net/TessFerrandez/a-developers-guide-to-machine-learning&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=hjpUHZY5-18&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/01/a-developers-guide-to-machine-learning-tess-ferrandez.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/01/a-developers-guide-to-machine-learning-tess-ferrandez.jpg#img-sketchnote&quot; alt=&quot;A Developer&apos;s Guide To Machine Learning by Tess Ferrandez&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;csp-xxp-sts-pkp-caa-etc&quot;&gt;CSP XXP STS PKP CAA ETC…&lt;/h3&gt;
&lt;p&gt;by Scott Helme
&lt;a href=&quot;https://scotthelme.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/Scott_Helme&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=uRDRzJ6nWbc&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/01/csp-xxp-sts-pkp-caa-etc-scott-helme.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/01/csp-xxp-sts-pkp-caa-etc-scott-helme.jpg#img-sketchnote&quot; alt=&quot;CSP XXP STS PKP CAA ETC... by Scott Hulme&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;web-apps-cant-do-that-can-they&quot;&gt;Web Apps Can’t Do That, Can They?&lt;/h3&gt;
&lt;p&gt;by Steve Sanderson
&lt;a href=&quot;http://blog.stevensanderson.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/stevensanderson&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=9G8HEDI3K6s&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2018/01/web-apps-cant-do-that-can-they-steve-sanderson.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2018/01/web-apps-cant-do-that-can-they-steve-sanderson.jpg#img-sketchnote&quot; alt=&quot;Web Apps Can&apos;t Do That, Can They? by Steve Sanderson&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are the other talks I attended but didn’t sketchnote:&lt;/p&gt;

&lt;h3 id=&quot;c-70&quot;&gt;C# 7.0&lt;/h3&gt;
&lt;p&gt;by Jon Skeet
&lt;a href=&quot;https://codeblog.jonskeet.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/jonskeet&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=q13g_Zef8nk&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;c-71-and-72-the-releases-you-didnt-know-you-had&quot;&gt;C# 7.1 and 7.2: The Releases You Didn’t Know You Had&lt;/h3&gt;
&lt;p&gt;by Bill Wagner
&lt;a href=&quot;http://www.thebillwagner.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/billwagner&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=IF1aPR6da3A&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-psychology-of-social-engineering&quot;&gt;The Psychology Of Social Engineering&lt;/h3&gt;
&lt;p&gt;by Niall Merrigan
&lt;a href=&quot;http://www.certsandprogs.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/nmerrigan&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=rTPbKzvDHDI&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-modern-cloud&quot;&gt;The Modern Cloud&lt;/h3&gt;
&lt;p&gt;by Scott Guthrie
&lt;a href=&quot;https://weblogs.asp.net/scottgu&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/scottgu&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=KfM-3pkWznw&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-hello-world-show-live&quot;&gt;The Hello World Show Live&lt;/h3&gt;
&lt;p&gt;hosted by &lt;a href=&quot;https://x.com/quorralyne&quot;&gt;Heather Downing&lt;/a&gt; and &lt;a href=&quot;https://x.com/schneidenbach&quot;&gt;Spencer Schneidenbach&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/channel/UCh1MAMXrvKK_C_piVgOFOAg&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=66fcoX7kt7Y&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;tips-and-tricks-with-azure&quot;&gt;Tips And Tricks With Azure&lt;/h3&gt;
&lt;p&gt;by Scott Guthrie
&lt;a href=&quot;https://weblogs.asp.net/scottgu&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/scottgu&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=pDgWX1N1mgI&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;why-im-not-leaving-net&quot;&gt;Why I’m Not Leaving .Net&lt;/h3&gt;
&lt;p&gt;by Mark Rendle
&lt;a href=&quot;https://blog.rendle.io&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/markrendle&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.youtube.com/watch?v=qugNNPXQfCs&quot;&gt;&lt;i class=&quot;fa fa-brands fa-youtube fa-lg&quot; title=&quot;YouTube&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Tue, 23 Jan 2018 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ndc-london/sketchnotes/2018/01/23/ndc-london-2018.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ndc-london/sketchnotes/2018/01/23/ndc-london-2018.html</guid>
			</item>
		
			<item>
				<title>DDD North 7</title>
				<description>&lt;p&gt;I recently attended &lt;a href=&quot;http://www.dddnorth.co.uk&quot;&gt;DDD North 7&lt;/a&gt; in Bradford. I’ve been wanting to take up sketchnoting for a while now, but have never gotten round to doing it, so when &lt;a href=&quot;https://x.com/IJohnson_TNF&quot;&gt;Ian Johnson&lt;/a&gt; (go check out &lt;a href=&quot;https://x.com/search?q=from%3Aijohnson_tnf%20%23sketchnote&amp;amp;src=typd&quot;&gt;his sketchnotes&lt;/a&gt; - they are great) prompted me to take my sketchbook and pens with me, I reluctantly obliged. I’m so glad I did though as I really enjoyed doing them, and I feel it had the effect of me being able to recall much more of the content of each talk. I &lt;a href=&quot;https://x.com/search?q=from%3Aadrianbanks%20%23dddnorth%20by&amp;amp;src=typd&quot;&gt;tweeted the sketchnotes&lt;/a&gt; after each session and got a great response from both the speakers and attendees.&lt;/p&gt;

&lt;p&gt;Here are the sketchnotes I did during the day.&lt;/p&gt;

&lt;h3 id=&quot;microservices-what-ive-learned-after-a-year-of-building-a-system&quot;&gt;Microservices: What I’ve Learned After A Year Of Building A System&lt;/h3&gt;
&lt;p&gt;by Nathan Gloyn
&lt;a href=&quot;http://designcoderelease.blogspot.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/NathanGloyn&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.slideshare.net/Nathangl/microservices-what-ive-learned-after-a-year-building-systems-80803931&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2017/10/microservices-what-ive-learned-after-a-year-of-building-a-system-nathan-gloyn.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2017/10/microservices-what-ive-learned-after-a-year-of-building-a-system-nathan-gloyn.jpg#img-sketchnote&quot; alt=&quot;Microservices: What I&apos;ve Learned After A Year Of Building A System by Nathan Gloyn&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;spot-the-difference-automating-visual-regression-testing&quot;&gt;Spot The Difference: Automating Visual Regression Testing&lt;/h3&gt;
&lt;p&gt;by Viv Richards
&lt;a href=&quot;http://vivrichards.co.uk&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/11vlr&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.slideshare.net/vivrichards/spot-the-difference-automating-visual-regression-testing/1&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2017/10/spot-the-difference-automating-visual-regression-testing-viv-richards.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2017/10/spot-the-difference-automating-visual-regression-testing-viv-richards.jpg#img-sketchnote&quot; alt=&quot;Spot The Difference: Automating Visual Regression Testing by Viv Richards&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;married-to-the-mob-programming&quot;&gt;Married To The Mob (Programming)&lt;/h3&gt;
&lt;p&gt;by Derek Graham
&lt;a href=&quot;https://deejaygraham.github.io&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/deejaygraham&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.slideshare.net/deejaygraham/married-to-the-mob-programming&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2017/10/married-to-the-mob-programming-derek-graham.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2017/10/married-to-the-mob-programming-derek-graham.jpg#img-sketchnote&quot; alt=&quot;Married To The Mob (Programming) by Derek Graham&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;how-to-parse-a-file&quot;&gt;How To Parse A File&lt;/h3&gt;
&lt;p&gt;by Matt Ellis
&lt;a href=&quot;http://sticklebackplastic.com&quot;&gt;&lt;i class=&quot;fa fa-globe fa-lg&quot; title=&quot;Website&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://x.com/citizenmatt&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.slideshare.net/citizenmatt/how-to-parse-a-file-ddd-north-2017&quot;&gt;&lt;i class=&quot;fa fa-brands fa-slideshare fa-lg&quot; title=&quot;Slides&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2017/10/how-to-parse-a-file-matt-ellis.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2017/10/how-to-parse-a-file-matt-ellis.jpg#img-sketchnote&quot; alt=&quot;How To Parse A File by Matt Ellis&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;alexa-open-sneezaroo&quot;&gt;Alexa, Open Sneezaroo…&lt;/h3&gt;
&lt;p&gt;by Zinat Wali
&lt;a href=&quot;https://x.com/tardarz&quot;&gt;&lt;i class=&quot;fa fa-brands fa-x-twitter fa-lg&quot; title=&quot;X&quot;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2017/10/alexa-open-sneezaroo-zinat-wali.jpg#img-sketchnote&quot;&gt;&lt;img src=&quot;/assets/media/images/2017/10/alexa-open-sneezaroo-zinat-wali.jpg#img-sketchnote&quot; alt=&quot;Alexa, Open Sneezaroo... by Zinat Wali&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
				<pubDate>Mon, 16 Oct 2017 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2017/10/16/ddd-north-7.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/ddd-events/sketchnotes/2017/10/16/ddd-north-7.html</guid>
			</item>
		
			<item>
				<title>Setting a culture for all threads in an application</title>
				<description>&lt;p&gt;If you do any kind of globalisation in your applications, you will probably already be familiar with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Thread.CurrentCulture&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Thread.CurrentUICulture&lt;/code&gt; properties that can be used to set a culture on the thread so that .Net knows to load the correct resources and to format numbers and dates properly.&lt;/p&gt;

&lt;p&gt;A big downside to using approach this is that the culture is only set on the current thread, meaning that any new threads created will be using the default culture for the application (which is tied to the regional settings of the operation system). This wasn’t too much of a problem years ago when multi-threading was not used widely, but in modern application development it is virtually impossible to avoid using multiple threads (e.g. Task Parallel Library), especially when trying to make use of modern multi-core hardware. You would have to manually set the culture when spawning new threads to ensure that the correct culture was being used - a real pain and a common cause of bugs.&lt;/p&gt;

&lt;p&gt;.Net 4.5 comes to the rescue with the introduction of two new properties:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-csharp&quot; data-lang=&quot;csharp&quot;&gt;&lt;span class=&quot;n&quot;&gt;CultureInfo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;DefaultThreadCurrentCulture&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CultureInfo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;DefaultThreadCurrentUICulture&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;A culture can be set using properties that will then be used for all threads in the whole application domain, meaning that you can set the correct culture at application start up and all threads will use that culture. By default, these properties are set to null meaning that the pre-4.5 behaviour will still hold and that the system culture will be used by default.&lt;/p&gt;

&lt;p&gt;The MSDN docs for &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.defaultthreadcurrentculture(v=vs.110).aspx&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CultureInfo.DefaultThreadCurrentCulture&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.defaultthreadcurrentculture(v=vs.110).aspx&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CultureInfo.DefaultThreadCurrentUICulture&lt;/code&gt;&lt;/a&gt; provide more details.&lt;/p&gt;
</description>
				<pubDate>Tue, 29 Oct 2013 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2013/10/29/setting-a-culture-for-all-threads-in-an-application.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2013/10/29/setting-a-culture-for-all-threads-in-an-application.html</guid>
			</item>
		
			<item>
				<title>Alternatives to .Net Reflector</title>
				<description>&lt;p&gt;&lt;a href=&quot;http://www.red-gate.com&quot;&gt;RedGate&lt;/a&gt; &lt;a href=&quot;http://www.red-gate.com/products/dotnet-development/reflector/announcement&quot;&gt;recently announced&lt;/a&gt; that from the next version of &lt;a href=&quot;http://www.red-gate.com/products/dotnet-development/reflector/&quot;&gt;Reflector&lt;/a&gt; (v7), they will charge $35 for a licence. Since the announcement a few weeks ago, there has been quite a backlash against the decision from the .Net community, mainly because RedGate have put a time-bomb in the currently-free version so that it will expire at the end of May 2011.
In response to this announcement, several alternatives to Reflector have surfaced - some free, some commercial. The list below outlines all of the alternatives, some of which have been around for many years.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.jetbrains.com/resharper/&quot;&gt;JetBrains ReSharper&lt;/a&gt; (commercial + free)&lt;br /&gt;
Within a day of the announcement, JetBrains &lt;a href=&quot;http://blogs.jetbrains.com/dotnet/2011/02/reflections-on-recent-news/&quot;&gt;put out a teaser&lt;/a&gt; suggesting that a decompiler was in the works. Two weeks later, they &lt;a href=&quot;http://blogs.jetbrains.com/dotnet/2011/02/resharper-6-bundles-decompiler-free-standalone-tool-to-follow/&quot;&gt;announced that the next version of ReSharper will have an integrated decompiler&lt;/a&gt; akin to reflector, along with a free standalone version to be released later in the year.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.telerik.com/products/justcode.aspx&quot;&gt;Telerik JustCode&lt;/a&gt; (commercial)&lt;br /&gt;
Just as JetBrains put out a teaser, Telerik followed suit and &lt;a href=&quot;http://blogs.telerik.com/vassilterziev/posts/11-02-07/reflections_on_the_net_world.aspx&quot;&gt;showed a decompilation feature&lt;/a&gt; that will be in the next version of their JustCode tool.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/f7dy01k1(v=VS.100).aspx&quot;&gt;ldasm&lt;/a&gt; (free)&lt;br /&gt;
This tool comes bundled with the Windows SDK Tools (that get installed as part of Visual Studio). It is purely an IL disassembler, and so cannot decompile to C#.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://wiki.sharpdevelop.net/ilspy.ashx&quot;&gt;ILSpy&lt;/a&gt; (free)&lt;br /&gt;
The team behind &lt;a href=&quot;http://sharpdevelop.net/OpenSource/SD/Default.aspx&quot;&gt;SharpDevelop&lt;/a&gt; have been working hard on ILSpy and have already released a major milestone of v1 of their decompiler. It can decompile to C#.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://sharpdevelop.net/OpenSource/SD/Default.aspx&quot;&gt;Cecil Studio&lt;/a&gt; (free)&lt;br /&gt;
This is a Windows forms UI based on the &lt;a href=&quot;http://www.mono-project.com/Cecil&quot;&gt;Mono Cecil&lt;/a&gt; library. It has already been around for a few years.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://github.com/jcdickinson/Monoflector&quot;&gt;MonoReflector&lt;/a&gt; (free)&lt;br /&gt;
This is a WPF UI based on the &lt;a href=&quot;http://www.mono-project.com/Cecil&quot;&gt;Mono Cecil&lt;/a&gt; library.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://monodevelop.com/Download/MonoDevelop_2.0_Released&quot;&gt;MonoDevelop Assembly Browser&lt;/a&gt; (free)&lt;br /&gt;
Released for the first time in version 2.0 of MonoDevelop (currently at v2.4.2).&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.remotesoft.com/salamander/index.html&quot;&gt;Salamander .Net Decompiler&lt;/a&gt; (commercial)&lt;br /&gt;
This is part of a larger tool called &lt;a href=&quot;http://www.remotesoft.com/salamander/index.html&quot;&gt;.Net Explorer&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.netdecompiler.com/&quot;&gt;Dis#&lt;/a&gt; (commercial)&lt;br /&gt;
This tool has been around for a while, but is not often mentioned. It is not as polished as Reflector and does not support never versions of .Net, but has some nice features not seen anywhere else. Once such feature is to rename the decompiled variables within the tool to give them a more meaningful name.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.9rays.net/Category/54-spicesnet-decompiler.aspx&quot;&gt;Spices .Net Decompiler&lt;/a&gt; (commercial)&lt;br /&gt;
As well as decompiling to IL, C#, J#, C++ and Delphi.Net, this tool has a feature to build code flow diagrams from the decompiled source to show the execution flow.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.junglecreatures.com/DesktopDefault.aspx?tabindex=3&amp;amp;tabid=3&quot;&gt;Decompiler.NET&lt;/a&gt; (commercial)&lt;br /&gt;
This is s decompiler combined with an obfuscator, language translator and refactoring tool that integrates with Visual Studio.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.keepdecompilingfree.com&quot;&gt;Keep Decompiling Free&lt;/a&gt;&lt;br /&gt;
This website popped up recently with nothing more than a teaser to get more information when it is available.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.red-gate.com/products/dotnet-development/reflector/&quot;&gt;RedGate Reflector&lt;/a&gt; (commercial)&lt;br /&gt;
Of course, there is still the current king of them all, albeit in a now charged-for format. Still well worth the $35.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which of these will turn out to be the best/most successful to take Reflector’s throne is yet to play out, but there seems to be a healthy interest from both the community and commercial aspects in making a replacement.&lt;/p&gt;
</description>
				<pubDate>Wed, 02 Mar 2011 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2011/03/02/alternatives-to-dotnet-reflector.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2011/03/02/alternatives-to-dotnet-reflector.html</guid>
			</item>
		
			<item>
				<title>F# links</title>
				<description>&lt;p&gt;I am currently learning F# and am starting to amass a selection of useful links. I though it would be handy to collate them all in the one place:&lt;/p&gt;

&lt;h4 id=&quot;msdn&quot;&gt;MSDN&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ee353567.aspx&quot;&gt;Core Library Reference&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ee353567.aspx&quot;&gt;Collections Namespace&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ee353635.aspx&quot;&gt;Collections.Seq Module&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ee353738.aspx&quot;&gt;Collections.List Module&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;c-and-f-equivalents&quot;&gt;C# and F# Equivalents&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.c-sharpcorner.com/UploadFile/mgold/1502/Default.aspx&quot;&gt;Writing Equivalent LINQ Expressions In F#&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://blogs.msdn.com/b/jaredpar/archive/2008/12/02/mapping-linq-to-f.aspx&quot;&gt;Mapping LINQ To F#&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!725.entry&quot;&gt;What Does This C# Look Like In F#&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;general-f&quot;&gt;General F#&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://cs.hubfs.net&quot;&gt;hubFS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://a6systems.com/fsharpcheatsheet.pdf&quot;&gt;F# Cheat Sheet&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://skillsmatter.com/podcast/open-source-dot-net/don-syme-on-f&quot;&gt;A Taste Of F# Today - Don Syme (Presentation)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://deepfriedbytes.com/podcast/episode-60-the-futures-of-the-f-language-with-luke-hoban/&quot;&gt;The Future Of The F# Language&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
				<pubDate>Mon, 20 Sep 2010 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/fsharp/2010/09/20/fsharp-links.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/fsharp/2010/09/20/fsharp-links.html</guid>
			</item>
		
			<item>
				<title>Temporarily disabling ReSharper</title>
				<description>&lt;p&gt;I have &lt;a href=&quot;http://www.jetbrains.com/resharper/&quot;&gt;ReSharper&lt;/a&gt; installed and think it is a great tool for productivity, but occasionally I find it useful to temporarily disable it to speed up Visual Studio (especially so on my old, slow laptop). This is achieved in two different ways, depending on the version of ReSharper.&lt;/p&gt;

&lt;p&gt;In versions prior to version 5, ReSharper appears in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Add-in Manager&lt;/code&gt; dialog, accessed via the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Tools&lt;/code&gt; menu. Using this dialog, you can uncheck the ReSharper add-in which will suspend it (the menu will still be visible, but its functionality will be disabled).&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2010/06/resharperpre5suspend.jpg&quot;&gt;&lt;img src=&quot;/assets/media/images/2010/06/resharperpre5suspend.jpg&quot; alt=&quot;Add-in manager&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Checking it again will re-enable it. Both of these actions can be performed without restarting Visual Studio.&lt;/p&gt;

&lt;p&gt;In version 5, ReSharper no longer appears in the add-ins dialog. At first glance, I though the ability to disable ReSharper was no longer available. As it turns out, it is now part of ReSharper itself and is accessed via the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Tools -&amp;gt; Options -&amp;gt; ReSharper -&amp;gt; General&lt;/code&gt; dialog. Clicking the suspend button will suspend ReSharper and disable its functionality. Once suspended, clicking the resume button will re-enable it.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2010/06/resharper5suspend.jpg&quot;&gt;&lt;img src=&quot;/assets/media/images/2010/06/resharper5suspend.jpg&quot; alt=&quot;ReSharper options&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This applies to all versions of Visual Studio - the difference is based on the version of ReSharper only.&lt;/p&gt;

</description>
				<pubDate>Thu, 10 Jun 2010 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/resharper/2010/06/10/temporarily-disabling-resharper.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/resharper/2010/06/10/temporarily-disabling-resharper.html</guid>
			</item>
		
			<item>
				<title>Extracting MSI files (revisited)</title>
				<description>&lt;p&gt;A few years ago, I posted about &lt;a href=&quot;/windows/2006/06/29/extracting-msi-files.html&quot;&gt;how to extract the contents of an MSI file&lt;/a&gt; without having to go through the process of installing it. The tool used to do this was called &lt;a href=&quot;http://blogs.pingpoet.com/overflow/archive/2005/06/02/2449.aspx&quot;&gt;Less MSIerables&lt;/a&gt;. This tool does do the job, but the UI is a bit clunky to use, it has a few bugs, and occasionally fails to extract the contents of a file. On top of this, it looks like this tool is not actively developed (it was last updated in 2005), so I recently started to look for an alternative.&lt;/p&gt;

&lt;p&gt;It turns out that Microsoft provide this functionality as part of MSIExec that comes as part of the Windows installer. To extract the contents of any MSI file, simply run the following:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;msiexec.exe /a installer.msi /qb TARGETDIR=C:\temp&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This will extract the complete contents of the MSI file to the specified directory.&lt;/p&gt;
</description>
				<pubDate>Thu, 29 Oct 2009 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/windows/2009/10/29/extracting-msi-files-revisited.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/windows/2009/10/29/extracting-msi-files-revisited.html</guid>
			</item>
		
			<item>
				<title>MSDN lightweight view</title>
				<description>&lt;p&gt;Following on from my &lt;a href=&quot;/msdn/2009/04/08/msdn-low-bandwidth-view.html&quot;&gt;last post on the MDSN Low Bandwidth View&lt;/a&gt;, &lt;a href=&quot;http://www.hanselman.com/blog/&quot;&gt;Scott Hanselman&lt;/a&gt; recently &lt;a href=&quot;http://twitter.com/shanselman/status/2428774227&quot;&gt;tweeted about the beta version of MDSN Lightweight View&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In a similar way to adding &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;(loband)&lt;/code&gt; before the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.aspx&lt;/code&gt; part of the url, putting &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;(lightweight)&lt;/code&gt; before the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.aspx&lt;/code&gt; part of the url will use the new lightweight view of MSDN, meaning a much neater and streamlined version.&lt;/p&gt;

&lt;p&gt;In addition, Scott has previously posted about the other modes of MSDN:&lt;/p&gt;

&lt;table class=&quot;table table-bordered&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Mode&lt;/th&gt;
      &lt;th&gt;Description&lt;/th&gt;
      &lt;th&gt;Example&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;-&lt;/td&gt;
      &lt;td&gt;The normal MSDN view&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.object.aspx&quot;&gt;Example&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;(loband)&lt;/td&gt;
      &lt;td&gt;A minimal view, focussed on speed&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.object(loband).aspx&quot;&gt;Example&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;(lightweight)&lt;/td&gt;
      &lt;td&gt;A faster lightweight view, including quick links to switch between languages and .Net framework versions&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.object(lightweight).aspx&quot;&gt;Example&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;(pda)&lt;/td&gt;
      &lt;td&gt;Aimed at PDAs and phones. Turns off the tree and allows a 100% width&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.object(pda).aspx&quot;&gt;Example&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;(robot)&lt;/td&gt;
      &lt;td&gt;Optimised for search engines&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.object(robot).aspx&quot;&gt;Example&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;(printer)&lt;/td&gt;
      &lt;td&gt;A printable version&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.object(printer).aspx&quot;&gt;Example&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;(ide)&lt;/td&gt;
      &lt;td&gt;Used when viewing inside the IDE. Adds send and give feedback links&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.object(ide).aspx&quot;&gt;Example&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;em&gt;Note that the dev10ide view Scott mentions seems to have been removed, and that the lightweight view is currently in beta, so may be liable to change.&lt;/em&gt;&lt;/p&gt;
</description>
				<pubDate>Tue, 07 Jul 2009 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/msdn/2009/07/07/msdn-lightweight-view.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/msdn/2009/07/07/msdn-lightweight-view.html</guid>
			</item>
		
			<item>
				<title>MSDN low bandwidth view</title>
				<description>&lt;p&gt;Several months ago, I read a tip about passing an extra parameter on the url to MSDN documentation to put it into “low bandwidth” mode. I remember doing it at the time, but almost immediately forgot the url switch. That was until last week when I read &lt;a href=&quot;http://blogs.msdn.com/ericnel&quot;&gt;Eric Nelson&lt;/a&gt;’s &lt;a href=&quot;http://blogs.msdn.com/ericnel/archive/2009/04/02/msdn-library-low-bandwidth-option.aspx&quot;&gt;post on how to do it&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The trick is to put &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;(loband)&lt;/code&gt; before the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.aspx&lt;/code&gt; part of the url. For example, the low bandwidth version of&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;http://msdn.microsoft.com/en-us/library/system.object.aspx&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;becomes&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;http://msdn.microsoft.com/en-us/library/system.object(loband).aspx&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Once you have accessed it, you can persist it by clicking on the “Persist low bandwidth view” link.&lt;/p&gt;

&lt;p&gt;Since Eric wrote his post, it seems that a “Switch on low bandwidth view” link has been added into the normal MSDN pages to enable it to be switched on without hacking around with the url.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://weblogs.asp.net/jgalloway&quot;&gt;Jon Galloway&lt;/a&gt; has a &lt;a href=&quot;http://weblogs.asp.net/jgalloway/archive/2008/08/30/msdn-low-bandwidth-bookmarklet.aspx&quot;&gt;post that summarises the benefits of the low bandwidth view&lt;/a&gt;. For me, the biggest benefit is the speed of loading, since the page doesn’t run lots of JavaScript to sync the contents tree to the currently displayed article.&lt;/p&gt;
</description>
				<pubDate>Wed, 08 Apr 2009 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/msdn/2009/04/08/msdn-low-bandwidth-view.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/msdn/2009/04/08/msdn-low-bandwidth-view.html</guid>
			</item>
		
			<item>
				<title>SQL Server SP3 released</title>
				<description>&lt;p&gt;&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=ae7387c3-348c-4faa-8ae5-949fdfbe59c4&amp;amp;displaylang=en&quot;&gt;Service pack 3&lt;/a&gt; for SQL Server 2005 was &lt;a href=&quot;http://blogs.msdn.com/sqlreleaseservices/archive/2008/12/16/sql-server-2005-sp3-released.aspx&quot;&gt;released last week&lt;/a&gt;. In it, they have fixed a curious &lt;a href=&quot;http://support.microsoft.com/kb/959016/&quot;&gt;bug that I reported back in January&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The bug occurs when trying to delete rows from a table that has a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NULL&lt;/code&gt; value for an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;image&lt;/code&gt; column. This works fine normally, but if there is a foreign key referencing the table (to any of its columns), any rows that have had their image column updated to be &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NULL&lt;/code&gt; fail to be deleted. This SQL demonstrates the problem:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;c1&quot;&gt;-- create two linked tables&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dbo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Identity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;IDENTITY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;PRIMARY&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;KEY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB_Identity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dbo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Identity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;IDENTITY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;PRIMARY&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;KEY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;image&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;ALTER&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;ADD&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;CONSTRAINT&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;FK_TableA_TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; 
    &lt;span class=&quot;k&quot;&gt;FOREIGN&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;KEY&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB_Identity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;REFERENCES&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Identity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;-- insert some data&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;INTO&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;VALUES&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;INTO&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;VALUES&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;INTO&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;VALUES&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;-- this delete works successfully&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;DELETE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Remaining_Count_Should_Be_0&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;-- insert some data&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;INTO&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;VALUES&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;INTO&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;VALUES&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;INSERT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;INTO&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;VALUES&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;-- update the data to be have a NULL value&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;UPDATE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;SET&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;-- this delete doesn&apos;t work&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;DELETE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Remaining_Count_Should_Be_0&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;-- this delete doesn&apos;t work&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;DELETE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;ISNULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Remaining_Count_Should_Be_0&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;-- this delete does work successfully&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;DELETE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;EXISTS&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;TB&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt; 
        &lt;span class=&quot;k&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;TB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Identity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Identity&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;COUNT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Remaining_Count_Should_Be_0&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Not all of the delete queries work correctly. The output of the script is four result sets with the count of how many rows are in the table at each point. All of them should be 0 (as is the case on SQL Server 2000), but in SQL Server 2005 without SP3 they are actually 0, 3, 3 and 0.&lt;/p&gt;

&lt;p&gt;The simple delete query:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;k&quot;&gt;DELETE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;&lt;strong&gt;does not delete any rows&lt;/strong&gt; after the values for the Data column have been updated to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NULL&lt;/code&gt;, even though a similar select query:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Notably, if either the foreign key is removed, or the:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;k&quot;&gt;UPDATE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TableB&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;SET&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;IS&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;NULL&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;query is not performed, the script behaves as expected. Additionally, using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;text&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ntext&lt;/code&gt; instead of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;image&lt;/code&gt; does not work as well, but using the new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;varchar(max)&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nvarchar(max)&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;varbinary(max)&lt;/code&gt; data types does work.&lt;/p&gt;

&lt;p&gt;Apparrently, the distinction between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;NULL&lt;/code&gt; values stored as a result of an insert or an update has precendece in the &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/ms186838.aspx&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WRITETEXT&lt;/code&gt;&lt;/a&gt; command:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If the table does not have in row text, SQL Server saves space by not initializing text columns when explicit or implicit null values are added in text columns with INSERT, and no text pointer can be obtained for such nulls. To initialize text columns to NULL, use the UPDATE statement. If the table has in row text, you do not have to initialize the text column for nulls and you can always get a text pointer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This points to the “text in row” option having a bearing on this behaviour. Indeed, altering this option after creating the tables:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;n&quot;&gt;sp_tableoption&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;N&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;TableB&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;text in row&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;ON&apos;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;results in the script working as expected. Useful as a potential workaround.&lt;/p&gt;

&lt;p&gt;The bug is present in all versions of SQL Server 2005, but not in SQL Server 2000 or 2008.&lt;/p&gt;

&lt;p&gt;A full list of what’s changed in SP3 can be found &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dd353312(SQL.90).aspx&quot;&gt;here&lt;/a&gt;, with a full list of the bugs fixed &lt;a href=&quot;http://support.microsoft.com/?kbid=955706&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</description>
				<pubDate>Tue, 23 Dec 2008 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/sql-server/2008/12/23/sql-server-sp3-released.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/sql-server/2008/12/23/sql-server-sp3-released.html</guid>
			</item>
		
			<item>
				<title>Useful diagnostics tools</title>
				<description>&lt;p&gt;I recently visited a customer site to diagnose some problems with an application deployed on a server. Because I was effectively “visiting blind” in not knowing what was wrong or even if I would have internet access, I had to pre-empt any potential problems and take whatever tools I would need to diagnose them with me.&lt;/p&gt;

&lt;p&gt;The following is a list of the tools I took:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.tucows.com/preview/213738&quot;&gt;Active Ports&lt;/a&gt;&lt;br /&gt;
This is an equivalent to running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;netstat -nabv 5&lt;/code&gt; from the command line, but wraps a nice GUI around it with the ability to look up the host names for connected IP addresses.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.baremetalsoft.com/baretail/&quot;&gt;BareTail&lt;/a&gt;&lt;br /&gt;
This is a simple log file viewer that can “tail” a running log and apply highlighting based on custom searches.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms164699(vs.80).aspx&quot;&gt;CorFlags&lt;/a&gt;&lt;br /&gt;
This is a tool that comes as part of the Visual Studio SDK and enables a .Net application to be forced to run as 32-bit on 64-bit hardware. Existing applications can be tweaked without re-compilation.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.adrianbanks.co.uk/downloads/download.php?id=04196e2c89a0b6d4f4266c7a636470ea&quot;&gt;Culture Launcher&lt;/a&gt;&lt;br /&gt;
This is one of my own tools that can launch an .Net application using a different culture/language. The culture and UI culture can be set independently of each other.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/akay62ya(VS.80).aspx&quot;&gt;Error Lookup&lt;/a&gt;&lt;br /&gt;
This is a small tool that comes with Visual Studio (when you install the C++ components). It enables Win32 error codes to be translated into “meaningful” English error messages.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.codeplex.com/Wiki/View.aspx?ProjectName=MSE&quot;&gt;Managed Stack Explorer&lt;/a&gt;&lt;br /&gt;
This is a tool that can preiodically capture stack traces from running .Net applications. It also shows a variety of information about the managed processes and threads running on a machine.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://labs.red-gate.com/index.php/Main_Page&quot;&gt;Red Gate Diagnostics Tool&lt;/a&gt;&lt;br /&gt;
This is a tool from Red Gate that collects lots of system information from a computer. It is very useful because of the amount of data that it collects all in one place.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.sliver.com/dotnet/SnippetCompiler/&quot;&gt;Snippet Compiler&lt;/a&gt;&lt;br /&gt;
This is like a cut-down version of Visual Studio. It has an IDE-like editor (with only basic intellisense) and can compile and run .Net applications. The biggest plus is that it requires no installation.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.sixty-five.cc/sm/v1x.php&quot;&gt;SpaceMonger&lt;/a&gt;&lt;br /&gt;
This is a tool that gives a visual representation of disk usage for a whole drive. This version is an older version of the tool, but is the last version that is free.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://technet.microsoft.com/en-us/sysinternals/default.aspx&quot;&gt;SysInternals&lt;/a&gt;&lt;br /&gt;
This is the famous SysInternals Suite of tools, now owned by Microsoft, but still occasionally updated with new features and bug fixes. This contains lots of file, disk, network, process, registry and system utilities.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This toolset (along with a few custom-written SQL scripts) provided me with everything I needed to collect all the information I needed to get to the bottom of the problems.&lt;/p&gt;
</description>
				<pubDate>Tue, 08 Jul 2008 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/diagnostics/2008/07/08/useful-daignostics-tools.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/diagnostics/2008/07/08/useful-daignostics-tools.html</guid>
			</item>
		
			<item>
				<title>Setting a proxy server for Windows updates on Windows Vista</title>
				<description>&lt;p&gt;I’ve recently been trying to get automatic Windows updates working on Vista. Every time it tried to fetch the updates, it reported an error code of 80070057. After getting more detailed information from the WindowsUpdate.log in the Windows directory, the problem turned out to be the proxy server in our office. Whilst my user profile has the correct proxy server settings, the Background Intelligent Transfer Service (BITS) that is used to download Windows updates doesn’t. The solution is to set the proxy server for the system.&lt;/p&gt;

&lt;p&gt;To see the current proxy settings, run from the command line:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;netsh winhttp show proxy&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;If it says “direct”, there are no proxy settings and Windows update probably will not work.&lt;/p&gt;

&lt;p&gt;To set the proxy settings, run from the command line (you will probably need to run this with administrative permissions):&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;netsh winhttp set proxy proxy-server=&quot;yourproxy:port&quot; bypass-list=&quot;&amp;lt;local&amp;gt;&quot;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This will set the proxy server on the system to allow the BITS service to connect to the Windows updates servers.&lt;/p&gt;
</description>
				<pubDate>Wed, 25 Jun 2008 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/windows/2008/06/25/setting-a-proxy-server-for-windows-updates-on-windows-vista.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/windows/2008/06/25/setting-a-proxy-server-for-windows-updates-on-windows-vista.html</guid>
			</item>
		
			<item>
				<title>Preventing accidental schema changes to the master database</title>
				<description>&lt;p&gt;If you have ever run some SQL within SQL Server Management Studio only to realise that you’ve run it against the master database by mistake, you’ll know that it can sometimes be hard to undo the damage.&lt;/p&gt;

&lt;p&gt;A simple way to stop these accidental changes is to create a database trigger that will prevent any schema changes to the master database:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;n&quot;&gt;USE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;master&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TRIGGER&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;StopSchemaChanges&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;ON&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DATABASE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FOR&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;CREATE_APPLICATION_ROLE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ALTER_APPLICATION_ROLE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DROP_APPLICATION_ROLE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CREATE_ASSEMBLY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ALTER_ASSEMBLY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DROP_ASSEMBLY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CREATE_CERTIFICATE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ALTER_CERTIFICATE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DROP_CERTIFICATE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;GRANT_DATABASE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DENY_DATABASE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;REVOKE_DATABASE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CREATE_EVENT_NOTIFICATION&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DROP_EVENT_NOTIFICATION&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CREATE_FUNCTION&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ALTER_FUNCTION&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DROP_FUNCTION&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CREATE_INDEX&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ALTER_INDEX&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DROP_INDEX&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CREATE_PROCEDURE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ALTER_PROCEDURE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DROP_PROCEDURE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CREATE_SCHEMA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ALTER_SCHEMA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DROP_SCHEMA&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CREATE_STATISTICS&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DROP_STATISTICS&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;UPDATE_STATISTICS&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CREATE_SYNONYM&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DROP_SYNONYM&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CREATE_TABLE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ALTER_TABLE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DROP_TABLE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CREATE_TRIGGER&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ALTER_TRIGGER&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DROP_TRIGGER&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CREATE_VIEW&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ALTER_VIEW&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DROP_VIEW&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; 
&lt;span class=&quot;k&quot;&gt;BEGIN&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;RAISERROR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;N&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;Do you really modify the master database?&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WITH&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;NOWAIT&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;ROLLBACK&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;TRANSACTION&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;END&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;GO&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Any time you attempt to change the master database, SQL Server will fail with an error. If you do want to make a schema change, simply &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms189748.aspx&quot;&gt;disable the trigger&lt;/a&gt; and then &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms182706.aspx&quot;&gt;re-enable it&lt;/a&gt; once the schema change is complete.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(NB. this only works with SQL Server 2005 and above)&lt;/em&gt;&lt;/p&gt;
</description>
				<pubDate>Sun, 08 Jun 2008 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/sql-server/2008/06/08/preventing-accidental-schema-changes-to-the-master-database.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/sql-server/2008/06/08/preventing-accidental-schema-changes-to-the-master-database.html</guid>
			</item>
		
			<item>
				<title>Box selection in Visual Studio</title>
				<description>&lt;p&gt;I was editing a large SQL script inside Visual Studio today and needed to insert several spaces into multiple lines to make the script more readable.&lt;/p&gt;

&lt;p&gt;Turning something like this:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;some text on line a
some text on line b
some text on line c
some text on line d&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;into:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;some text      on line a
some text      on line b
some text      on line c
some text      on line d&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;I thought of doing it manually by hand, but as there were lots of lines to alter, I thought there must be a better way. I then remembered a feature of a word processor called &lt;a href=&quot;http://en.wikipedia.org/wiki/Protext&quot;&gt;ProText&lt;/a&gt; that I had many years ago on the Atari ST that had a feature called “Box Selection”. This enabled you to select text across multiple lines without having to select the whole line (a bit like drawing a box with the mouse).&lt;/p&gt;

&lt;p&gt;A quick search later and I found the &lt;a href=&quot;http://blogs.msdn.com/saraford/archive/2007/07/27/did-you-know-how-to-do-box-selection-in-the-editor.aspx&quot;&gt;instructions on how to do box selections in Visual Studio&lt;/a&gt; in an article on Sara Ford’s blog.&lt;/p&gt;

&lt;p&gt;Just hold down the &lt;kbd&gt;Alt&lt;/kbd&gt; key whilst selecting text with the mouse and Visual Studio will switch from its normal “stream selection” mode into “box selection” mode. Once selected, you can indent the text using the tab key as normal and it will insert space to get the desired effect.&lt;/p&gt;
</description>
				<pubDate>Wed, 28 May 2008 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/visual-studio/2008/05/28/box-selection-in-visual-studio.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/visual-studio/2008/05/28/box-selection-in-visual-studio.html</guid>
			</item>
		
			<item>
				<title>Blinking cursor in Firefox</title>
				<description>&lt;p&gt;I have recently re-installed Firefox, and was getting more and more annoyed by what seemed to be a blinking cursor appearing in web pages. After a bit of searching, I found out what it was thanks to &lt;a href=&quot;http://beyondteck.blogspot.com&quot;&gt;Rishi&lt;/a&gt; who has had the &lt;a href=&quot;http://beyondteck.blogspot.com/2006/05/firefox-blinking-cursor-problem.html&quot;&gt;same problem&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It is a feature called “Caret Browsing” which places a cursor in web pages so that text can be selected using only the keyboard. To turn the feature off, just press the F7 key or change the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;accessibility.browsewithcaret&lt;/code&gt; option from the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;about:config&lt;/code&gt; page.&lt;/p&gt;
</description>
				<pubDate>Thu, 27 Mar 2008 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/firefox/2008/03/27/blinking-cursor-in-firefox.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/firefox/2008/03/27/blinking-cursor-in-firefox.html</guid>
			</item>
		
			<item>
				<title>Building solutions without Visual Studio</title>
				<description>&lt;p&gt;When working with several source control branches, especially with a large solution with many projects, it is not always practical to open Visual Studio to perform a quick build. Using &lt;a href=&quot;http://nant.sourceforge.net&quot;&gt;NAnt&lt;/a&gt; is one alternative solution, but this requires creating and maintaining a build script. Using MSBuild from the command line is another option, but this involves getting the command line arguments correct, and working with command line output is not easy to visually filter. The same goes for using Visual Studio from the command line.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://weblogs.asp.net/gmilano/default.aspx&quot;&gt;Gaston Milano&lt;/a&gt; has created a simple tool called &lt;a href=&quot;http://weblogs.asp.net/gmilano/archive/2007/04/16/a-better-way-to-show-your-build-output-buildconsole-net.aspx&quot;&gt;Build Console&lt;/a&gt; capable of loading both MSBuild and Visual Studio solution files, and building any of the available build targets.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2007/10/buildconsole.gif&quot;&gt;&lt;img src=&quot;/assets/media/images/2007/10/buildconsole.gif&quot; alt=&quot;Build console&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s main features are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The ability to choose which target/project to build.&lt;/li&gt;
  &lt;li&gt;A build report in a tree structure to show the status of each project built.&lt;/li&gt;
  &lt;li&gt;The ability to choose the verbosity of the build output.&lt;/li&gt;
  &lt;li&gt;A coloured build output log to distinguish different types out log output.&lt;/li&gt;
  &lt;li&gt;A ‘quick history’ to load recently built solutions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whilst a little rough around the edges, it comes in very handy for those times where you just need to compile quickly without the overhead of loading Visual Studio.&lt;/p&gt;

</description>
				<pubDate>Thu, 18 Oct 2007 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/visual-studio/2007/10/18/building-solutions-without-visual-studio.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/visual-studio/2007/10/18/building-solutions-without-visual-studio.html</guid>
			</item>
		
			<item>
				<title>Browser toolbars for web development</title>
				<description>&lt;p&gt;I’ve been doing a lot of HTML and CSS recently, and checking that pages appear and behave the same in different browsers can be a bit of a pain. Fortunatley, there are several toolbars that can be used to make this process easier.&lt;/p&gt;

&lt;h4 id=&quot;internet-explorer&quot;&gt;Internet Explorer&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;amp;displaylang=en&quot;&gt;Developer Toolbar&lt;/a&gt;&lt;br /&gt;
This is a toolbar for Internet Explorer versions 6 and 7 that adds a DOM and CSS explorer and editor, as well as tools for viewing pages structures and various type of validation.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.nikhilk.net/Project.WebDevHelper.aspx&quot;&gt;Web Development Helper&lt;/a&gt;&lt;br /&gt;
This is similar to the Developer Toolbar above, but geared more for ASP.Net. It features several browsers for view state, caches, header and response details and call stacks, as well as a DOM explorer.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;firefox&quot;&gt;Firefox&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.getfirebug.com&quot;&gt;Firebug&lt;/a&gt; (&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1843&quot;&gt;also here&lt;/a&gt;)&lt;br /&gt;
This is an extension that adds a CSS, HTML, Javascript and DOM monitor and editor to the browser, as well as a request monitor and a element inspector.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://chrispederick.com/work/web-developer/&quot;&gt;Web Developer Toolbar&lt;/a&gt; (&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/60&quot;&gt;also here&lt;/a&gt;)&lt;br /&gt;
This is a toolbar that adds lots of utilities and tools, including validation and page information and outlining.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://users.skynet.be/mgueury/mozilla/&quot;&gt;HTML Validator&lt;/a&gt; (&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/249&quot;&gt;also here&lt;/a&gt;)&lt;br /&gt;
This is an extension that adds an HTML validator to the browser that validates pages in real time and displays warnings and errors in the page status bar.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.sitepoint.com/dustmeselectors/&quot;&gt;Dust-Me Selectors&lt;/a&gt;&lt;br /&gt;
This is an extension that enables you to inspect CSS style sheets for selectors and styles that are loaded but not used when browsing pages. Useful for consolidating style sheets after a site redesign. NOTE: this didn’t install properly using the xpi file, but worked following a manual install.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.garethhunt.com&quot;&gt;Modify Headers&lt;/a&gt; (&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/249&quot;&gt;also here&lt;/a&gt;)&lt;br /&gt;
This is an extension that enables the viewing and modification of HTTP headers.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://chrispederick.com/work/user-agent-switcher/&quot;&gt;User Agent Switcher&lt;/a&gt; (&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/59&quot;&gt;also here&lt;/a&gt;)&lt;br /&gt;
This is an extension that allows the configuration of custom user-agent strings and enables switching them whilst browsing.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://ieview.mozdev.org&quot;&gt;IE Tab&lt;/a&gt; (&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1419&quot;&gt;also here&lt;/a&gt;)&lt;br /&gt;
This is an extension that allows the viewing of pages using the Internet Explorer rendering engine, but within the Firefox application.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://ieview.mozdev.org&quot;&gt;IE View&lt;/a&gt;&lt;br /&gt;
This extension is similar to the IE Tab extension above, but will open Internet Explorer as a separate window instead of embedding it inside FireFox.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://www.graysonmixon.com/extension/&quot;&gt;IE View Lite&lt;/a&gt; (&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1429&quot;&gt;also here&lt;/a&gt;)&lt;br /&gt;
This extension is a rewrite of the IE View extension above, but written to be more compact and lightweight.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://operaview.mozdev.org&quot;&gt;Opera View&lt;/a&gt; (&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1429&quot;&gt;also here&lt;/a&gt;)&lt;br /&gt;
This extension is similar to the IE View extension above, but will open pages in Opera instead of Internet Explorer.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;opera&quot;&gt;Opera&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://operawiki.info/WebDevToolbar&quot;&gt;Web Development Toolbar &amp;amp; Menu&lt;/a&gt;&lt;br /&gt;
This toolbar and menu set add a set of menus and a toolbar. The menus contain quick links directlry to HTML, CSS, DOM, JS and Unicode reference information. The toolbar adds tools for inspecting page contents, validation, page source viewers and form manipulation.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;http://dev.opera.com/tools/&quot;&gt;Opera Developer Console&lt;/a&gt;&lt;br /&gt;
This tool adds a button onto a toolbar that when clicked opens a windows containing a DOM, JS, CSS and HTTP browser for the current page.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</description>
				<pubDate>Tue, 25 Sep 2007 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/browsers/2007/09/25/browser-toolbars-for-web-development.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/browsers/2007/09/25/browser-toolbars-for-web-development.html</guid>
			</item>
		
			<item>
				<title>Fixing database logins after a restore</title>
				<description>&lt;p&gt;For several years now I’ve been moving development databases between SQL Servers using backup and restore. When you restore the database on the target server, the logins for the database are invariably broken with the database user having an empty login name, meaning that they cannot log in to the database. My usual fix is to delete the database user and re-add it. Paul Hayman however &lt;a href=&quot;http://www.geekzilla.co.uk/View688B3920-1D87-4661-9C95-C3E55630C13C.htm&quot;&gt;pointed out a useful stored procedure&lt;/a&gt; to fix broken logins:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;n&quot;&gt;sp_change_users_login&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;Auto_Fix&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;username&apos;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;where &lt;em&gt;username&lt;/em&gt; is the name of the account to fix.&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;Auto_Fix&lt;/em&gt; option will attempt to match the broken login with an existing user with the same name.&lt;/p&gt;

&lt;p&gt;More information on this can be found in the &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/Aa259633(SQL.80).aspx&quot;&gt;MSDN documentation&lt;/a&gt;. Specific things to note are that it only works with SQL Server and not Windows logins, and that you must be a member of the &lt;strong&gt;sysadmin&lt;/strong&gt; fixed server role for it to work.&lt;/p&gt;
</description>
				<pubDate>Tue, 17 Jul 2007 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/sql-server/2007/07/17/fixing-database-logins-after-a-restore.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/sql-server/2007/07/17/fixing-database-logins-after-a-restore.html</guid>
			</item>
		
			<item>
				<title>Running the OUTPUT clause from C#</title>
				<description>&lt;p&gt;SQL Server 2005 introduced a new feature called the output clause. This enables INSERT, UPDATE and DELETE queries to be run, with the original information which has been changed being returned. This is particularly useful if you want to run a query and know what has been changed by it by returning the identites of the modified rows.&lt;/p&gt;

&lt;p&gt;The full documentation for the output clause can be found in &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/ms177564.aspx&quot;&gt;SQL Server 2005 Books Online&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In trying to use this feature, I could get it to work in a query window, but when trying it using C# and ADO, it was not obvious how to execute the query and return the results because the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ExecuteNonQuery()&lt;/code&gt; method of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SqlCommand&lt;/code&gt; only returns the count of the number of rows that have been updated. After a bit of unsuccessful searching, I came across a &lt;a href=&quot;http://nayyeri.net/archive/2007/03/31/output-clause-in-sql-server-2005.aspx&quot;&gt;post&lt;/a&gt; by &lt;a href=&quot;http://nayyeri.net&quot;&gt;Keyvan Nayyeri&lt;/a&gt; with something that gave me an idea:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;OUTPUT clause works like a SELECT statement but its usage differs in INSERT, UPDATE and DELETE commands&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Switching my code around to run the update query using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ExecuteReader()&lt;/code&gt; method of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SqlCommand&lt;/code&gt; as would be used for a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SELECT&lt;/code&gt; query proved to be fruitful, enabling the returned result set to be read.&lt;/p&gt;
</description>
				<pubDate>Tue, 01 May 2007 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2007/05/01/running-the-output-clause-from-csharp.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2007/05/01/running-the-output-clause-from-csharp.html</guid>
			</item>
		
			<item>
				<title>Windows and .Net framework default versions</title>
				<description>&lt;p&gt;&lt;a href=&quot;http://blogs.msdn.com/astebner/&quot;&gt;Aaron Stebner&lt;/a&gt; has compiled &lt;a href=&quot;http://blogs.msdn.com/astebner/archive/2007/03/14/mailbag-what-version-of-the-net-framework-is-included-in-what-version-of-the-os.aspx&quot;&gt;a list&lt;/a&gt; of which version of the .Net Framework is included in which version of Windows by default:&lt;/p&gt;

&lt;table class=&quot;table table-bordered&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Operating System&lt;/th&gt;
      &lt;th&gt;Framework Version&lt;/th&gt;
      &lt;th&gt;Included As&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Windows XP Home/Professional SP1&lt;/td&gt;
      &lt;td&gt;.NET Framework 1.0 + SP2&lt;/td&gt;
      &lt;td&gt;MSI Based Installer&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Windows XP Home/Professional SP2&lt;/td&gt;
      &lt;td&gt;.NET Framework 1.1 + SP1&lt;/td&gt;
      &lt;td&gt;MSI Based Installer&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Windows XP Media Center Edition&lt;/td&gt;
      &lt;td&gt;.NET Framework 1.0 + SP2&lt;/td&gt;
      &lt;td&gt;OS Component&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Windows XP Tablet PC Edition&lt;/td&gt;
      &lt;td&gt;.NET Framework 1.0 + SP2&lt;/td&gt;
      &lt;td&gt;OS Component&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Windows Server 2003 (all editions)&lt;/td&gt;
      &lt;td&gt;.NET Framework 1.1&lt;/td&gt;
      &lt;td&gt;OS Component&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Windows Server 2003 R2&lt;/td&gt;
      &lt;td&gt;.NET Framework 2.0&lt;/td&gt;
      &lt;td&gt;MSI Based Installer*&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Windows Vista (all editions)&lt;/td&gt;
      &lt;td&gt;.NET Framework 2.0 &amp;amp; 3.0&lt;/td&gt;
      &lt;td&gt;OS Component&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;sup&gt;* although it appears as an OS component, it is actually just an MSI based installer.&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The MSI based installers can be used to install or uninstall the .Net Framework from the OS, enabling it to be removed completely if needed.&lt;/p&gt;

&lt;p&gt;Very useful if you are targeting specific platforms with your .Net applications.&lt;/p&gt;
</description>
				<pubDate>Tue, 24 Apr 2007 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2007/04/24/windows-and-dotnet-framework-default-versions.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2007/04/24/windows-and-dotnet-framework-default-versions.html</guid>
			</item>
		
			<item>
				<title>AssemblyFileVersion compiler warning</title>
				<description>&lt;p&gt;If you are using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AssemblyFileVersion&lt;/code&gt; attribute to mark your compiled assemblies with specific Win32 file version numbers, you may get a compiler warning with certain revision numbers. The compiler warning looks like this:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;warning CS1607: Assembly generation -- The version &apos;2.0.0.070105&apos; specified for the &apos;file version&apos; is not in the normal &apos;major.minor.build.revision&apos; format.&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This warning is documented as occurring when the version string is not in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;major.minor.build.revision&lt;/code&gt; format, but does not explain why it happens for the example above.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://weblogs.asp.net/fbouma/&quot;&gt;Frans Bouma&lt;/a&gt; updated &lt;a href=&quot;http://weblogs.asp.net/fbouma/archive/2007/01/05/assemblyfileversions-2-0-0-071005-is-bad-but-2-0-0-061005-is-good.aspx&quot;&gt;his existing post&lt;/a&gt; with the reason why. The revision part of the version number must not exceed 65535 (ie. a 16-bit number). If it does, the compiler generates the warning. The &lt;a href=&quot;http://blogs.msdn.com/msbuild/&quot;&gt;MSBuild Team&lt;/a&gt; &lt;a href=&quot;http://blogs.msdn.com/msbuild/archive/2007/01/03/why-are-build-numbers-limited-to-65535.aspx&quot;&gt;posted about the same thing&lt;/a&gt;, but also provided the fact that it is the underlying operating system that &lt;a href=&quot;http://blogs.msdn.com/msbuild/archive/2007/01/03/why-are-build-numbers-limited-to-65535.aspx&quot;&gt;imposes this limit&lt;/a&gt;.&lt;/p&gt;
</description>
				<pubDate>Mon, 23 Apr 2007 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2007/04/23/assemblyfileversion-compiler-warning.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2007/04/23/assemblyfileversion-compiler-warning.html</guid>
			</item>
		
			<item>
				<title>The difference between format and quick format</title>
				<description>&lt;p&gt;Having done several installations of Windows over the years and always chosen the “quick format” option over the normal format option (mainly due to the time it takes to do a full format compared to a quick format), I finally looked into what the differences between the two are. Microsoft’s site has a &lt;a href=&quot;http://support.microsoft.com/kb/302686&quot;&gt;knowledge base article&lt;/a&gt; about this very thing.&lt;/p&gt;

&lt;p&gt;A full format will wipe the disk, format it and run a check disk to find any bad sectors. A quick format will wipe the disk and format it, but will skip the check disk stage. As it turns out, the check disk stage is the thing that causes a full format to take a lot longer than a quick format.&lt;/p&gt;

&lt;p&gt;If formatting a new hard disk, it is probably wise therefore to do a full format to find any sectors that may have been damaged whilst the disk was in transit. If formatting an old disk, it is already in a known state and so a quick format should suffice.&lt;/p&gt;
</description>
				<pubDate>Tue, 27 Mar 2007 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/windows/2007/03/27/the-difference-between-format-and-quick-format.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/windows/2007/03/27/the-difference-between-format-and-quick-format.html</guid>
			</item>
		
			<item>
				<title>C# data types and other language features</title>
				<description>&lt;p&gt;There’s a nice little section on Microsoft’s &lt;a href=&quot;http://msdn2.microsoft.com/&quot;&gt;MSDN site&lt;/a&gt; entitled &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/ms228602(VS.80).aspx&quot;&gt;The C# Programming Language for Java Developers&lt;/a&gt; that explains the basics of the C# language features.&lt;/p&gt;

&lt;p&gt;Although not incredibly detailed, it’s quite a useful reference for simple language information, especially about the system types (such as the range of a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;double&lt;/code&gt; or what types can be implicitly cast to a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;short&lt;/code&gt;).&lt;/p&gt;
</description>
				<pubDate>Mon, 19 Mar 2007 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2007/03/19/csharp-data-types-and-other-language-featrures.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2007/03/19/csharp-data-types-and-other-language-featrures.html</guid>
			</item>
		
			<item>
				<title>Accessing network file shares from a command prompt</title>
				<description>&lt;p&gt;If you’ve ever tried to access a network file share in a command prompt by simply using the cd command, you’ll know that it just complains that “CMD does not support UNC paths as current directories”. Well, there is a way to do it (two in fact):&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;net use z: \\machine\share&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;pushd \\machine\share&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Both of these approaches map the network share to a local drive letter that you can change to using the cd command.&lt;/p&gt;

&lt;p&gt;The first one can be combined with the /user switch to provide additional user details:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;net use z: \\machine\share /user:domain\username&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The bonus of using the pushd command over the net use command is that it will automatically change the current directory to the mapped drive (which will be the first unused drive letter available in reverse alphabetical order). Also, when finished with the network share, you can use the popd command to remove the mapped drive.&lt;/p&gt;
</description>
				<pubDate>Thu, 08 Mar 2007 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/windows/2007/03/08/accessing-network-file-shares-from-a-command-prompt.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/windows/2007/03/08/accessing-network-file-shares-from-a-command-prompt.html</guid>
			</item>
		
			<item>
				<title>Google page rank and redirection</title>
				<description>&lt;p&gt;After reading &lt;a href=&quot;http://www.codinghorror.com&quot;&gt;Jeff Atwood&lt;/a&gt;’s &lt;a href=&quot;http://www.codinghorror.com/blog/archives/000797.html&quot;&gt;recent post about URL rewriting to prevent duplicate URLs&lt;/a&gt;, I started to look at my own site’s redirections, specifically with regards to Google’s page rank. The first thing I noticed was that I had two different page ranks for this site.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://adrianbanks.co.uk&quot;&gt;http://adrianbanks.co.uk&lt;/a&gt; had a page rank of 3, whilst &lt;a href=&quot;http://www.adrianbanks.co.uk&quot;&gt;http://www.adrianbanks.co.uk&lt;/a&gt; had a page rank of zero, even though I’ve never really used the &lt;a href=&quot;http://adrianbanks.co.uk&quot;&gt;http://adrianbanks.co.uk&lt;/a&gt; version of the url.&lt;/p&gt;

&lt;p&gt;Jeff’s ISAPI rewrite rules were helpful, but were not going to work on an Apache server. The &lt;a href=&quot;http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html&quot;&gt;Apache docs for the URL rewriting engine&lt;/a&gt; were very detailed, but a little too verbose to glean which exact rules I needed. Luckily, the &lt;a href=&quot;http://www.searchenginepromotionhelp.com&quot;&gt;Search Engine Promotion Help site&lt;/a&gt; has an example of &lt;a href=&quot;http://www.searchenginepromotionhelp.com/m/articles/search-engine-problems/domain-redirection.php&quot;&gt;exactly what I was after&lt;/a&gt;.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-apache&quot; data-lang=&quot;apache&quot;&gt;&lt;span class=&quot;nc&quot;&gt;RewriteEngine&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;On&lt;/span&gt;
&lt;span class=&quot;nc&quot;&gt;RewriteCond&lt;/span&gt; %{HTTP_HOST} !^www\.adrianbanks\.co\.uk [NC]
&lt;span class=&quot;nc&quot;&gt;RewriteCond&lt;/span&gt; %{HTTP_HOST} !^report\.adrianbanks\.co\.uk [NC]
&lt;span class=&quot;nc&quot;&gt;RewriteCond&lt;/span&gt; %{HTTP_HOST} !^$
&lt;span class=&quot;nc&quot;&gt;RewriteRule&lt;/span&gt; ^(.*) http://www.adrianbanks.co.uk/$1 [L,R=301]&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The only alteration I had to make was to add in an extra line to stop any subdomains of my site being redirected to the main site.&lt;/p&gt;

&lt;p&gt;Now for a quick explanation of how the rules work:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The RewriteRule will only run if all of the preceding rewrite conditions (RewriteCond) are true.&lt;/li&gt;
  &lt;li&gt;Line 1 turns on the rewrite engine in Apache.&lt;/li&gt;
  &lt;li&gt;Line 2 will be true if the host url is not www.adrianbanks.co.uk.&lt;/li&gt;
  &lt;li&gt;Line 3 will be true if the host url is not report.adrianbanks.co.uk (this is my alteration for my subdomain).&lt;/li&gt;
  &lt;li&gt;Line 4 will be true if the host url is not empty.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only if all of these conditions are met will the rule run.&lt;/p&gt;

&lt;p&gt;Having made this change, the page rank for &lt;a href=&quot;http://www.adrianbanks.co.uk&quot;&gt;http://www.adrianbanks.co.uk&lt;/a&gt; has now jumped to up 3.&lt;/p&gt;
</description>
				<pubDate>Tue, 06 Mar 2007 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/website/2007/03/06/google-page-rank-and-redirection.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/website/2007/03/06/google-page-rank-and-redirection.html</guid>
			</item>
		
			<item>
				<title>Ambiguous match found</title>
				<description>&lt;p&gt;Whilst porting an ASP.Net application to the .Net 2.0 framework, I came across a spurious error when viewing a few specific pages. The error was occurring during the runtime compilation of these specific aspx pages.&lt;/p&gt;

&lt;pre&gt;
Parser Error

Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: Ambiguous match found.
&lt;/pre&gt;

&lt;p&gt;To make this error more confusing, the error was reported on line 1 of the aspx page which contained nothing more than the page directive tag.&lt;/p&gt;

&lt;p&gt;After a bit of searching, I found the cause of the problem. The cause was that there were two member variables declared with names that differed only by case (one was an ASP.Net &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PlaceHolder&lt;/code&gt; control, the other an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;int&lt;/code&gt;). Simply renaming one of the variables solved the compilation error.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dotnetdebug.net&quot;&gt;Eran Sandler&lt;/a&gt; has also encountered this problem, but delves a lot deeper into what is going on.&lt;/p&gt;
</description>
				<pubDate>Mon, 05 Mar 2007 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2007/03/05/ambiguous-match-found.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2007/03/05/ambiguous-match-found.html</guid>
			</item>
		
			<item>
				<title>Testing applications in different cultures</title>
				<description>&lt;p&gt;Having worked on an application that required localising so that it can be translated into different languages, I know how hard it can be to test the different possibilities while still developing the code. This is especially so if the language is automatically detected from the current culture of the operating system.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://blogs.msdn.com/shawnfa/&quot;&gt;Shawn Farkas&lt;/a&gt; came up with a simple solution for &lt;a href=&quot;http://blogs.msdn.com/shawnfa/archive/2006/10/20/quickly-testing-code-under-different-cultures.aspx&quot;&gt;quickly testing code under different cultures&lt;/a&gt; that involves creating a bootstrap application to first set the required culture on the current thread and then launch the application to be tested.&lt;/p&gt;

&lt;p&gt;One downside is that only the culture of the main thread is set, but for simple GUI testing this should be adequate in most cases.&lt;/p&gt;
</description>
				<pubDate>Thu, 08 Feb 2007 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2007/02/08/testing-applications-in-different-cultures.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2007/02/08/testing-applications-in-different-cultures.html</guid>
			</item>
		
			<item>
				<title>Selecting 'No to all' in a confirm file replace dialog box</title>
				<description>&lt;p&gt;When copying files in Windows, you are sometimes prompted about replacing an existing file.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2007/02/notoall.gif&quot;&gt;&lt;img src=&quot;/assets/media/images/2007/02/notoall.gif&quot; alt=&quot;Confirm file replace&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The available options are Yes, Yes To All, No and Cancel. But what if you are copying a large number of files and want to choose the non-existent ‘No To All’ option? Well simply hold in the shift key while clicking the No option and it will apply that choice to all subsequent dialogs within the current operation.&lt;/p&gt;

</description>
				<pubDate>Thu, 08 Feb 2007 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/windows/2007/02/08/selecting-no-to-all-in-a-confirm-file-replace-dialog-box.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/windows/2007/02/08/selecting-no-to-all-in-a-confirm-file-replace-dialog-box.html</guid>
			</item>
		
			<item>
				<title>Running applications on different versions of the .Net framework</title>
				<description>&lt;p&gt;&lt;a href=&quot;http://blogs.msdn.com/peterlau/&quot;&gt;Peter Laudati&lt;/a&gt; posted about &lt;a href=&quot;http://blogs.msdn.com/peterlau/archive/2006/05/11/595294.aspx&quot;&gt;migrating applications from .Net 1.1 to .Net 2.0&lt;/a&gt;. In doing so, he listed the different behaviours of .Net applications when running on computers with different versions of the .Net Framework installed:&lt;/p&gt;

&lt;table class=&quot;table table-bordered&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Application type&lt;/th&gt;
      &lt;th&gt;Computer with 1.1&lt;/th&gt;
      &lt;th&gt;Computer with 2.0&lt;/th&gt;
      &lt;th&gt;Computer with 1.1 and 2.0&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;1.1 stand-alone application (Web or Microsoft Windows client)&lt;/td&gt;
      &lt;td&gt;Loads with 1.1&lt;/td&gt;
      &lt;td&gt;Loads with 2.0&lt;/td&gt;
      &lt;td&gt;Loads with 1.1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2.0 stand-alone application (Web or Microsoft Windows client)&lt;/td&gt;
      &lt;td&gt;Fails&lt;/td&gt;
      &lt;td&gt;Loads with 2.0&lt;/td&gt;
      &lt;td&gt;Loads with 2.0&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;1.1 add-in to a native application (such as Office or Internet Explorer)&lt;/td&gt;
      &lt;td&gt;Loads with 1.1&lt;/td&gt;
      &lt;td&gt;Loads with 2.0&lt;/td&gt;
      &lt;td&gt;Loads with 2.0 unless the process is configured to run against 1.1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2.0 add-in to a native application (such as Office or Internet Explorer)&lt;/td&gt;
      &lt;td&gt;Fails&lt;/td&gt;
      &lt;td&gt;Loads with 2.0&lt;/td&gt;
      &lt;td&gt;Loads with 2.0&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
</description>
				<pubDate>Tue, 19 Dec 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2006/12/19/running-applications-on-different-versions-of-the-dotnet-framework.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2006/12/19/running-applications-on-different-versions-of-the-dotnet-framework.html</guid>
			</item>
		
			<item>
				<title>Managed stack explorer</title>
				<description>&lt;p&gt;A neat little project on &lt;a href=&quot;http://www.codeplex.com&quot;&gt;CodePlex&lt;/a&gt; called &lt;a href=&quot;http://www.codeplex.com/MSE&quot;&gt;Managed Stack Explorer&lt;/a&gt; enables you to monitor running .Net applications.&lt;/p&gt;

&lt;p&gt;Using this tool, you can view all currently running managed applications, monitor all of their threads, and even collect stack traces at regular intervals. Very useful for getting information about applications whilst running outside of a debugger.&lt;/p&gt;
</description>
				<pubDate>Tue, 19 Dec 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2006/12/19/managed-stack-explorer.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2006/12/19/managed-stack-explorer.html</guid>
			</item>
		
			<item>
				<title>Suppressing FxCop message</title>
				<description>&lt;p&gt;Using the latest version (1.35) of &lt;a href=&quot;http://www.gotdotnet.com/team/fxcop/&quot;&gt;FxCop&lt;/a&gt;, it is possible to exclude generated warning messages in the source code instead of having to exclude them in the FxCop project file. This is accomplished using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;System.Diagnostics.CodeAnalysis.SuppressMessageAttribute&lt;/code&gt; class.&lt;/p&gt;

&lt;p&gt;To exclude a message, simply mark up the method with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SuppressMessage&lt;/code&gt; attribute, declaring both the rule category and the specific rule to exclude:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-csharp&quot; data-lang=&quot;csharp&quot;&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;SuppressMessage&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Microsoft.Design&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;CA1062:ValidateArgumentsOfPublicMethods&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;ConvertToString&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;object&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;obj&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;obj&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;ToString&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The above example will exclude the “Validate Arguments Of Public Methods” rule from the Design category for the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ConvertToString&lt;/code&gt; method (although in this contrived example it is probably a bad idea to do so as passing in a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;null&lt;/code&gt; will clearly cause problems).&lt;/p&gt;

&lt;p&gt;One extra “tweak” that can be utilised in this scenario is the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Justification&lt;/code&gt; property. Altering the above code to:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-csharp&quot; data-lang=&quot;csharp&quot;&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;SuppressMessage&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Microsoft.Design&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;CA1062:ValidateArgumentsOfPublicMethods&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Justification&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;I do have a valid reason&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)]&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;ConvertToString&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;object&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;obj&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;obj&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;ToString&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;will allow the person excluding a message to provide a reason for doing so in the code, alongside the exclusion. FxCop (v1.35) currently doesn’t display this in its output, but will do in the next release (&lt;a href=&quot;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=623855&amp;amp;SiteID=1&quot;&gt;source&lt;/a&gt;). It does however output the justification to a generated report if the options are set to output exclusions to the report.&lt;/p&gt;

&lt;p&gt;Excluding FxCop messages in the source code has advantages over excluding them in the FxCop project as it demonstrates that the message has been specifically excluded for that particular case, but also will withstand class and namespace changes. It also makes switching from the standalone FxCop to Visual Studio’s code analysis an easier process.&lt;/p&gt;

&lt;p&gt;In order to allow the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SuppressMessage&lt;/code&gt; attribute to work, a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CODE_ANALYSIS&lt;/code&gt; conditional compilation symbol must be defined for the project. Without this, FxCop will ignore the suppressed attribute and will still generate a warning.&lt;/p&gt;

&lt;p&gt;More details can be found on the FxCop blog.&lt;/p&gt;
</description>
				<pubDate>Wed, 23 Aug 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2006/08/23/suppressing-fxcop-messages.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2006/08/23/suppressing-fxcop-messages.html</guid>
			</item>
		
			<item>
				<title>SerializationException and System.Data.SqlClient.SqlError</title>
				<description>&lt;p&gt;When remoting, it’s possible to get a strange exception if a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SQLException&lt;/code&gt; occurs on the server.&lt;/p&gt;

&lt;p&gt;The stack trace of the error is:&lt;/p&gt;

&lt;pre class=&quot;stacktrace&quot;&gt;
Exception: System.Runtime.Serialization.SerializationException
Message: Member name ‘System.Data.SqlClient.SqlError server’ not found.

Stack trace:
at System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo.GetMemberTypes (String[] inMemberNames)
at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
at System.Runtime.Serialization.Formatters.Binary.ObjectMap.Create(String name, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryHeaderEnum binaryHeaderEnum)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, IMethodCallMessage methodCallMessage)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (Stream serializationStream, HeaderHandler handler, Boolean fCheck, IMethodCallMessage methodCallMessage)
at System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryResponseMessage(Stream inputStream, IMethodCallMessage reqMsg, Boolean bStrictBinding)
at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)
&lt;/pre&gt;

&lt;p&gt;What is actually happenning here is that the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;System.Data.dll&lt;/code&gt; on the client is a slightly different version to that on the server. When the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SQLException &lt;/code&gt;is deserialised at the client end, there is a missing property on the client that cannot be deserialised.&lt;/p&gt;

&lt;p&gt;This error usually occurs when remoting to a Windows 2003 Server box from a non-Windows 2003 client box. The client has a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;System.Data.dll&lt;/code&gt; of version 1.1.4322.2032. The server has a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;System.Data.dll&lt;/code&gt; of version 1.1.4322.2300. The difference is that the server property of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SqlError&lt;/code&gt; class is never set in v1.1.4322.2032, causing the serialisation error. More detailed info can be found on the &lt;a href=&quot;http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework.adonet/topic21116.aspx&quot;&gt;DevNewsGroups site&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Microsoft has two knowledge base articles, &lt;a href=&quot;http://support.microsoft.com/kb/884871&quot;&gt;KB884871&lt;/a&gt; and &lt;a href=&quot;http://support.microsoft.com/kb/887549/&quot;&gt;KB887549&lt;/a&gt;, that pertain to this issue. The suggested solution is a .NET Framework 1.1 post-SP1 hotfix, but this is only available by &lt;a href=&quot;http://support.microsoft.com/contactus/?ws=support&quot;&gt;contacting Microsoft&lt;/a&gt; directly.&lt;/p&gt;

&lt;p&gt;The hotfix solves the problem, but then stops old SqlError types from being deserialised, resulting in the exception:&lt;/p&gt;

&lt;pre class=&quot;stacktrace&quot;&gt;
Exception: System.Runtime.Serialization.SerializationException
Message: Wrong number of Members. Object System.Data.SqlClient.SqlError has 8 members, number of members deserialized is 7.

Stack trace:
at System.Runtime.Serialization.Formatters.Soap.ReadObjectInfo.PopulateObjectMembers()
at System.Runtime.Serialization.Formatters.Soap.ObjectReader.ParseObjectEnd(ParseRecord pr)
at System.Runtime.Serialization.Formatters.Soap.ObjectReader.Parse(ParseRecord pr)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.EndElement(String prefix, String name, String urn)
at System.Runtime.Serialization.Formatters.Soap.SoapParser.ParseXml()
at System.Runtime.Serialization.Formatters.Soap.SoapParser.Run()
at System.Runtime.Serialization.Formatters.Soap.ObjectReader.Deserialize(HeaderHandler handler, ISerParser serParser)
at System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream serializationStream, HeaderHandler handler)
at System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream serializationStream)
&lt;/pre&gt;

&lt;p&gt;This means that the hotfix is not backwards-compatible. The only way to get everything happy is to upgrade all Windows 2003 boxes to SP1 and all clients (Windows 2000 and Windows XP) to .Net 1.1 SP1 plus the hotfix.&lt;/p&gt;
</description>
				<pubDate>Wed, 19 Jul 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2006/07/19/serializationexception-and-system-data-sqlclient-sqlerror.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2006/07/19/serializationexception-and-system-data-sqlclient-sqlerror.html</guid>
			</item>
		
			<item>
				<title>Guidance explorer</title>
				<description>&lt;p&gt;Microsoft recently released &lt;a href=&quot;http://codegallery.gotdotnet.com/GuidanceExplorer&quot;&gt;Guidance Explorer&lt;/a&gt;, a tool that contains a browsable collection of best-practice patterns for developing .Net and ASP.Net applications.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2006/07/guidance-explorer.gif&quot;&gt;&lt;img src=&quot;/assets/media/images/2006/07/guidance-explorer.gif&quot; alt=&quot;Guidance explorer&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Both the tool and its guidance library have regular updates, containing best-practices for performance and security related issues.&lt;/p&gt;

&lt;p&gt;The tool also has the ability to add custom sets of guidance to allow corporate/team standards to be included.&lt;/p&gt;

</description>
				<pubDate>Wed, 19 Jul 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2006/07/19/guidance-explorer.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2006/07/19/guidance-explorer.html</guid>
			</item>
		
			<item>
				<title>The perils of sp_rename</title>
				<description>&lt;p&gt;&lt;a href=&quot;http://www.simple-talk.com/community/blogs/andras/default.aspx&quot;&gt;Andras Belokosztolszki&lt;/a&gt; from &lt;a href=&quot;http://www.red-gate.com&quot;&gt;Red Gate&lt;/a&gt; posted &lt;a href=&quot;http://www.simple-talk.com/community/blogs/andras/archive/2006/05/10/783.aspx&quot;&gt;an interesting article&lt;/a&gt; about the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sp_rename&lt;/code&gt; stored procedure in SQL Server and the pitfalls that can occur after its use.&lt;/p&gt;

&lt;p&gt;When a stored procedure is created, an object is created in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sysobjects&lt;/code&gt; table (or the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sys.objects&lt;/code&gt; view in SQL Server 2005), and the textual definition is stored in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;syscomments&lt;/code&gt; table (or the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sys.sql_modules&lt;/code&gt; view in SQL Server 2005).&lt;/p&gt;

&lt;p&gt;When using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sp_rename&lt;/code&gt; to rename a stored procudure, the definition is left intact and only the name is changed in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sysobjects&lt;/code&gt; table (or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sys.objects&lt;/code&gt; view). This means that the definition of the stored procedure stored in database now has the wrong name.&lt;/p&gt;

&lt;p&gt;The best way of renaming a stored procedure is to completely delete it and then recreate it with the new name.&lt;/p&gt;

&lt;p&gt;The following SQL displays the definitions of all stored procedures in a database alongside their names:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SQL Server 2000&lt;/strong&gt;&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;k&quot;&gt;SQL&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Server&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2000&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;V2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;V1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;syscomments&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;V1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sysobjects&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;V2&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;V1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;V2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;V2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;xtype&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;P&apos;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;OR&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;V2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;xtype&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;F&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;&lt;strong&gt;SQL Server 2005&lt;/strong&gt;&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;k&quot;&gt;SQL&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Server&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2005&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;V2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;V1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;definition&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sql_modules&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;V1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;objects&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;AS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;V2&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;V1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;object_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;V2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;object_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;It is worth noting that enterprise manager uses the sp_rename stored procedure when using the right-click rename option (although SQL Server 2005 management studio does try to correct this problem if you view the definition of a renamed stored procedure by replacing the original stored name with the new one).&lt;/p&gt;
</description>
				<pubDate>Mon, 10 Jul 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/sql-server/2006/07/10/the-perils-of-sp_rename.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/sql-server/2006/07/10/the-perils-of-sp_rename.html</guid>
			</item>
		
			<item>
				<title>.Net 2.0 installation</title>
				<description>&lt;p&gt;&lt;a href=&quot;http://blogs.msdn.com/astebner/default.aspx&quot;&gt;Aaron Stebner&lt;/a&gt; posted &lt;a href=&quot;http://blogs.msdn.com/astebner/archive/2006/07/02/655011.aspx&quot;&gt;a recent article&lt;/a&gt; about the available installation modes for the &lt;a href=&quot;http://msdn.microsoft.com/netframework/downloads/updates/default.aspx&quot;&gt;.Net Framework 2.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There are three supported modes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Standard Mode&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All UI screens are displayed, including warnings about missing prerequisites, existing beta versions, errors and reboots.&lt;/p&gt;

&lt;p&gt;The setup includes a multi-lingual UI that chooses the correct language from the user’s operating system UI language settings, so a user should always see the install in their preferred language.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unattended Mode&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All UI screens are suppressed, except for a progress dialog during installation.&lt;/p&gt;

&lt;p&gt;To install in unattended mode, use the following command line:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;dotnetfx.exe /q:a /c:&lt;span class=&quot;s2&quot;&gt;&quot;install.exe /qb&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Changing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/qb&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/qb!&lt;/code&gt; will hide the cancel button on the progress dialog, stopping the user from aborting the install.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Silent Mode&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All UI screens are suppressed. This is useful for a custom installer to install the .Net Framework.&lt;/p&gt;

&lt;p&gt;To install in silent mode, use the following command line:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;dotnetfx.exe /q:a /c:&lt;span class=&quot;s2&quot;&gt;&quot;install.exe /q&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;If using silent mode, any errors, previous beta versions or reboots must be handled by the hosting installer since the .Net Framework installer cannot display any dialogs to prompt the user. Aaron also provides details of &lt;a href=&quot;http://blogs.msdn.com/astebner/archive/2005/12/07/501381.aspx&quot;&gt;possible return codes from the installer&lt;/a&gt;, &lt;a href=&quot;http://blogs.msdn.com/astebner/archive/2006/04/30/587352.aspx&quot;&gt;how to detect previous beta versions of the framework&lt;/a&gt; and &lt;a href=&quot;http://blogs.msdn.com/astebner/archive/2006/06/13/627729.aspx&quot;&gt;how to manage reboots&lt;/a&gt;.&lt;/p&gt;
</description>
				<pubDate>Mon, 10 Jul 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2006/07/10/dotnet-20-installation.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2006/07/10/dotnet-20-installation.html</guid>
			</item>
		
			<item>
				<title>ASP.Net web development helper For IE</title>
				<description>&lt;p&gt;&lt;a href=&quot;http://www.nikhilk.net&quot;&gt;Nikhil Kothari&lt;/a&gt; has made a nice little &lt;a href=&quot;http://www.nikhilk.net/Project.WebDevHelper.aspx&quot;&gt;Web Development Helper&lt;/a&gt; for ASP.Net. It works as a plugin for Internet Explorer and is similar to the &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;amp;displaylang=en&quot;&gt;Internet Explorer Development Toolbar&lt;/a&gt;, but with more of an ASP.Net twist.&lt;/p&gt;

&lt;p&gt;Some of its most useful features are:&lt;/p&gt;

&lt;p&gt;-Rich error information for script errors, including call stack, script url and line number.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;a DOM inspector with filtering to enable easy viewing of particular items.&lt;/li&gt;
  &lt;li&gt;a view state browser.&lt;/li&gt;
  &lt;li&gt;trace information can be shown in a separate dialog instead of in the page itself.&lt;/li&gt;
  &lt;li&gt;a full HTTP/HTTPS logger showing all traffic between the browser and the server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Web Development Helper requires .Net 2.0 to run and can only work on the same machine as the server, but this should not be a problem during development.&lt;/p&gt;

&lt;p&gt;After installation, I had the same problem that lots of other people seem to have in that clicking the newly installed toolbar button did nothing. The suggested fix of installing the &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;amp;displaylang=en&quot;&gt;Internet Explorer Development Toolbar&lt;/a&gt; solved the problem though. Nikhil also suggested that a reboot (or killing explorer.exe) may also work because information about plugins is cached on startup.&lt;/p&gt;
</description>
				<pubDate>Mon, 10 Jul 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/aspnet/2006/07/10/aspnet-web-development-helper-for-ie.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/aspnet/2006/07/10/aspnet-web-development-helper-for-ie.html</guid>
			</item>
		
			<item>
				<title>Windows forms and the DesignMode property</title>
				<description>&lt;p&gt;In .Net Windows Forms, any form or control that derives from a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Component&lt;/code&gt; has a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DesignMode&lt;/code&gt; property that tells you whether the control is being rendered in design mode in Visual Studio. This is useful if your control has different behaviour at runtime than at design time (for example, if you show a connection dialog when a form opens but you don’t want it to happen in design mode inside Visual Studio).&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DesignMode&lt;/code&gt; property has its quirks though. Using Lutz Roeder’s Reflector reveals the implementation of the DesignMode property:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-csharp&quot; data-lang=&quot;csharp&quot;&gt;&lt;span class=&quot;k&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;bool&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DesignMode&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;get&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;site&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;site&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;DesignMode&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This shows that design time support is not hooked up until the control is sited. Siting happens after the control is created, but before any properties are set, so if you check the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DesignMode&lt;/code&gt; property in the constructor of a control, it will always be false.&lt;/p&gt;

&lt;p&gt;There is also a bug with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DesignMode&lt;/code&gt; property whereby a custom control inside a custom control will always report its &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DesignMode&lt;/code&gt; property as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;false&lt;/code&gt;. Microsoft has more details of this in &lt;a href=&quot;http://support.microsoft.com/default.aspx?scid=kb;en-us;839202&quot;&gt;knowledge base article KB839202&lt;/a&gt; and in their &lt;a href=&quot;http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=117130&quot;&gt;Visual Studio feedback website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A workaround to both of the above problems it to use the following:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-csharp&quot; data-lang=&quot;csharp&quot;&gt;&lt;span class=&quot;n&quot;&gt;Application&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ExecutablePath&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;ToLower&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;IndexOf&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;devenv.exe&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;A bit crude, but it works.&lt;/p&gt;
</description>
				<pubDate>Fri, 30 Jun 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2006/06/30/windows-forms-and-the-designmode-property.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2006/06/30/windows-forms-and-the-designmode-property.html</guid>
			</item>
		
			<item>
				<title>Setting a NULL field in SQL Server Management Studio</title>
				<description>&lt;p&gt;SQL Server Management Studio provides a simple results view to show the data contained in a table. With this view, it’s possible to edit the data in the table but there is no obvious method of setting a nullable field to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;null&lt;/code&gt; - emptying the cell simply sets the value to empty, which may or may not work depending on the type of the column.&lt;/p&gt;

&lt;p&gt;To set a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;null&lt;/code&gt; value, you have to use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Ctrl-0&lt;/code&gt; (Control + Zero) shortcut. Why is there no option in the GUI to do this?&lt;/p&gt;
</description>
				<pubDate>Thu, 29 Jun 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/sql-server/2006/06/29/setting-a-null-field-in-sql-server-management-studio.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/sql-server/2006/06/29/setting-a-null-field-in-sql-server-management-studio.html</guid>
			</item>
		
			<item>
				<title>Microsoft icons</title>
				<description>&lt;p&gt;Microsoft’s &lt;a href=&quot;http://blogs.msdn.com/brada/archive/2006/06/06/618797.aspx&quot;&gt;Brad Abrams&lt;/a&gt; and &lt;a href=&quot;http://blogs.msdn.com/somasegar/archive/2005/01/23/359124.aspx&quot;&gt;Somasegar&lt;/a&gt; both posted about a set of standard Microsoft icons that ship with Visual Studio 2005. They can be found in a zip file in the Visual Studio 2005 installation directory (usually &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C:\Program Files\Microsoft Visual Studio 8\Common7\VS2005ImageLibrary\VS2005ImageLibrary.zip&lt;/code&gt;). There are over 600 icons in total with a mixture of Windows, Office and Visual Studio icons, and are licenced for reuse in your own applications.&lt;/p&gt;
</description>
				<pubDate>Thu, 29 Jun 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/visual-studio/2006/06/29/microsoft-icons.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/visual-studio/2006/06/29/microsoft-icons.html</guid>
			</item>
		
			<item>
				<title>Extracting MSI files</title>
				<description>&lt;p&gt;The latest trend for even the simplest of tools is to provide the executables as an MSI file, requiring an installation to run the application. Lots of applications simply do not require an installation and will work if the .exe contained in the MSI file is run.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://scott.willeke.com/&quot;&gt;Scott Willeke&lt;/a&gt; has made a nice little tool called &lt;a href=&quot;http://blogs.pingpoet.com/overflow/archive/2005/11/16/14995.aspx&quot;&gt;Less MSIerables&lt;/a&gt; (aka lessmsi) that can extract the contents of an MSI file directly to disk with no installation. Extracting the contents and running the .exe has worked successfully on every simple application I’ve tried so far.&lt;/p&gt;
</description>
				<pubDate>Thu, 29 Jun 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/windows/2006/06/29/extracting-msi-files.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/windows/2006/06/29/extracting-msi-files.html</guid>
			</item>
		
			<item>
				<title>SQL Server system table map</title>
				<description>&lt;p&gt;After trying to modify unique index names on tables in a database using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;INFORMATION_SCHEMA&lt;/code&gt; views and getting nowhere fast, I delved into the system tables to see if they would shed any light on how to do it. This was even more confusing as it’s not obvious how these tables fit together. If only there was a map of the relationships between the system tables. Well, there is - Microsoft helpfully supply one on their &lt;a href=&quot;http://www.microsoft.com/sql/prodinfo/previousversions/systables.mspx&quot;&gt;SQL Server website&lt;/a&gt;. Very useful.&lt;/p&gt;
</description>
				<pubDate>Wed, 21 Jun 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/sql-server/2006/06/21/sql-server-system-table-map.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/sql-server/2006/06/21/sql-server-system-table-map.html</guid>
			</item>
		
			<item>
				<title>Sharing Strong Name Keys Across Multiple Projects In VS2005</title>
				<description>&lt;p&gt;I’ve recently been doing some work in Visual Studio 2005 which consisted of several projects in a single solution that I’d converted from Visual Studio 2003 format. Since the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AssemblyKeyFile&lt;/code&gt; attribute has been deprecated, I began to add the shared strong name key to each project using the project properties view. The problem with this is that it copies the strong name key file to each project directory, making a shared key a bit pointless. This behaviour doesn’t happen (as &lt;a href=&quot;http://blogs.msdn.com/shawnfa/archive/2006/04/24/582278.aspx&quot;&gt;explained in more detail by Shawnfa&lt;/a&gt;) if the strong name key file is added to the project as a linked item before setting it in the project properties view. This leaves a single strong name key file on disk, but still includes it in each project as with Visual Studio 2003’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AssemblyKeyFile&lt;/code&gt; attribute.&lt;/p&gt;
</description>
				<pubDate>Wed, 21 Jun 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2006/06/21/sharing-strong-name-keys-across-multiple-projects-in-vs2005.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2006/06/21/sharing-strong-name-keys-across-multiple-projects-in-vs2005.html</guid>
			</item>
		
			<item>
				<title>Visual Studio 2005 and proxy authentication</title>
				<description>&lt;p&gt;Using Visual Studio 2005 today, I received a “407 Proxy Authentication Required” message when trying to search the online help integrated into the IDE. &lt;a href=&quot;http://support.microsoft.com/?kbid=910804&quot;&gt;KB910804&lt;/a&gt; from Microsoft held the answer.&lt;/p&gt;

&lt;p&gt;In order to allow VS2005 through an authenticating proxy, you have to edit the Visual Studio configuration file located at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C:\Program Files\Common Files\Microsoft Shared\Help 8\dexplore.exe.config&lt;/code&gt;. To add support for the proxy, make sure the proxy element is present:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-xml&quot; data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;
    ...
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;system.net&amp;gt;&lt;/span&gt;
        ...
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;defaultProxy&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;enabled=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;true&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;useDefaultCredentials=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;nt&quot;&gt;&amp;lt;proxy&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;bypassOnLocal=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;True&quot;&lt;/span&gt;
                   &lt;span class=&quot;na&quot;&gt;proxyAddress=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;http://yourproxy:port&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;/defaultProxy&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;/system.net&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;where the correct proxy server is configured in the proxyaddress element.&lt;/p&gt;

&lt;p&gt;If you use the integrated help viewer, you must also add this xml to the configuration file located at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.exe.config&lt;/code&gt;.&lt;/p&gt;
</description>
				<pubDate>Tue, 20 Jun 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/visual-studio/2006/06/20/visual-studio-2005-and-proxy-authentication.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/visual-studio/2006/06/20/visual-studio-2005-and-proxy-authentication.html</guid>
			</item>
		
			<item>
				<title>System.Diagnostics.Process and speed</title>
				<description>&lt;p&gt;I was working on some code that seemed to take an age to get going. Simple I thought: run it throught the &lt;a href=&quot;http://www.red-gate.com/products/ANTS_Profiler/index.htm&quot;&gt;Red Gate ANTS Profiler&lt;/a&gt;, look at the offending code and sort the problem. I wish it was as straightforward. Profiling or debugging the code seemed to make it run quickly, so I had to resort to the good old technique of logging debug output line by line.&lt;/p&gt;

&lt;p&gt;After finding the lethargic code, the line that stalled progress for almost a minute didn’t look that concerning:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-csharp&quot; data-lang=&quot;csharp&quot;&gt;&lt;span class=&quot;n&quot;&gt;Process&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;GetCurrentProcess&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ProcessName&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;A bit of Googling turned up trumps. A &lt;a href=&quot;http://groups.google.co.uk/group/microsoft.public.dotnet.framework.performance/browse_frm/thread/d26aad313dedcd9d/b6db985440fa4b7b?lnk=st&amp;amp;q=c%23+process.processname&amp;amp;rnum=1&amp;amp;hl=en#b6db985440fa4b7b&quot;&gt;post by Brian Grunkemeyer&lt;/a&gt; from the BCL team gave the answer:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The way the Process class currently works, the first time you try to do anything that requires knowing the state of the current process, we take a snapshot of all the processes in the system. So yes, this operation is slow the first time you call it. We could potentially limit this snapshot to just the current process by requesting MORE information about the current process from Windows (CreateToolhelp32Snapshot is a peculiar method), but that leads into peculiar situations where the snapshot information for the current process then gets out of sync if you call another method on the Process class to enumerate all the other processes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This initial snapshot must have been the cause of the delay. A quick code-edit later to avoid the use of the Process class (I was actually interested in the name of the executing file so I used &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Assembly.GetExecutingAssembly()&lt;/code&gt;) and the almost 60 second pause was gone.&lt;/p&gt;

&lt;p&gt;So why was it running quicker when debugging/profiling? I presume that the debugger/profiler would have been using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;System.Diagnostics&lt;/code&gt; namespace, and more specifically the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Process&lt;/code&gt; class, as part of its internals, thus the costly first call snapshot had already happened.&lt;/p&gt;
</description>
				<pubDate>Wed, 14 Jun 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2006/06/14/system-diagnostics-process-and-speed.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2006/06/14/system-diagnostics-process-and-speed.html</guid>
			</item>
		
			<item>
				<title>Fusion log viewer</title>
				<description>&lt;p&gt;Whilst trying to work out why some code was running very slowly (see &lt;a href=&quot;/dotnet/2006/06/14/system-diagnostics-process-and-speed.html&quot;&gt;System.Diagnostics.Process and speed&lt;/a&gt;), I tried to see whether the slowness was caused by loading code contained in a separate dll. To get this information, I needed to look at the fusion logs. Configuring these logs is not fool-proof, so having spent a few hours getting it working, I thought I’d document the process.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://blogs.msdn.com/suzcook/archive/2003/05/29/57120.aspx&quot;&gt;Suzanne Cook’s blog&lt;/a&gt; was quite useful, as was the &lt;a href=&quot;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrffusionlogviewerfuslogvwexe.asp&quot;&gt;Assembly Binding Log Viewer article&lt;/a&gt; on MSDN, but neither of them contained exactly what was needed.&lt;/p&gt;

&lt;p&gt;To set up the fusion logs ready for viewing, some entries need to be added to the registry in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Fusion&lt;/code&gt; key. The combination needed depends on what you’re trying to inspect. The keys are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;LogFailures = 1 (DWORD Value)&lt;/strong&gt;&lt;br /&gt;
This turns on failure logging so that failed attempts to locate all assemblies are logged.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;LogResourceBinds = 1 (DWORD Value)&lt;/strong&gt;&lt;br /&gt;
This turns on failure logging so that failed attempts to locate satellite assemblies are logged. This is not logged by default.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;ForceLog = 1 (DWORD Value)&lt;/strong&gt;&lt;br /&gt;
This turns on logging for all assembly binds - both failures and successes. By default, only failures are logged. This is useful if you want to verify that an assembly is loading from a specific directory instead of from the global assembly cache.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;LogPath = “C:\fusionlogs&quot; (String Value)&lt;/strong&gt;&lt;br /&gt;
If you want to view the fusion logs easily, set the LogPath to a directory to output them to. By default the log files go into the Temporary Internet Files folder of the current user’s profile. For an ASP.Net or a .Net Windows service application, the only way to view the fusion log is to use this option. This is because they run as users other than the current user. &lt;strong&gt;The directory specified must already exist and have appropriate file permissions to be written to. For ASP.Net applications, the ASPNET user must have write permission to the directory.&lt;/strong&gt; If the permissions are wrong, there will be no log output.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you have configured the relevant logging options, running the .Net application will generation the fusion logs. Once generated, the logs can be viewed using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fuslogvw.exe&lt;/code&gt; tool that comes as part of the framework SDK (mine was inside the SDK folder inside Visual Studio’s installation folder). I found that either the 1.1 or 2.0 version will work, but the 2.0 version is a little better as it has a few more options in the GUI:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/media/images/2006/06/fusion-log-viewer.gif&quot;&gt;&lt;img src=&quot;/assets/media/images/2006/06/fusion-log-viewer.gif&quot; alt=&quot;Fusion log viewer&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To view a specific log, choose it from the main section and click the view log button. The log will open in an internet browser showing the assembly binding details.&lt;/p&gt;

</description>
				<pubDate>Wed, 14 Jun 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2006/06/14/fusion-log-viewer.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2006/06/14/fusion-log-viewer.html</guid>
			</item>
		
			<item>
				<title>DNS error when adding a computer to a domain</title>
				<description>&lt;p&gt;After having several problems with my laptop accessing files on my server (the domain controller for my domain), I had a look in the event log and found this error:&lt;/p&gt;

&lt;pre&gt;
The computer [computername] tried to connect to the server \\[servername] using the trust relationship established by the [domainname] domain. However, the computer lost the correct security identifier (SID) when the domain was reconfigured. Reestablish the trust relationship.
&lt;/pre&gt;

&lt;p&gt;I figured that this may be the cause of the problems and so set about reestablishing the trust relationship between the laptop and the server. Sounded like a simple task, but the only (easy) way I could find to do this was to remove the laptop from the domain and then add it again. After removing it successfully, I kept getting an error when trying to re-add it:&lt;/p&gt;

&lt;pre&gt;
The domain name [domainname] might be a NetBIOS domain name. If this is the case, verify that the domain name is properly registered with WINS.
If you are certain that the name is not a NetBIOS domain name, then the following information can help you troubleshoot your DNS configuration.
An error occurred when DNS was queried for the service location (SRV) resource record used to locate a domain controller for domain [domainname].
The error was: &quot;No DNS servers configured for local system.&quot; (error code 0×0000267C DNS_ERROR_NO_DNS_SERVERS)
The query was for the SRV record for _ldap._tcp.dc._msdcs.[domain]”
&lt;/pre&gt;

&lt;p&gt;After puzzling for ages as to why it wasn’t happy, I checked my IP settings and found the problem. Somehow, the IP settings had changed to a specified IP address instead of using DHCP. Changing them back solved the problem straight away.&lt;/p&gt;
</description>
				<pubDate>Wed, 14 Jun 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/windows/2006/06/14/dns-error-when-adding-a-computer-to-a-domain.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/windows/2006/06/14/dns-error-when-adding-a-computer-to-a-domain.html</guid>
			</item>
		
			<item>
				<title>Cats game</title>
				<description>&lt;p&gt;I don’t really play games on my PC, but &lt;a href=&quot;http://www.ferryhalim.com/orisinal/g3/cats.htm&quot;&gt;this Cats game&lt;/a&gt; from &lt;a href=&quot;http://ferryhalim.com/orisinal/&quot;&gt;Ferry Halim’s site&lt;/a&gt; has me addicted. I think it must be because of the pure simplicity of the game, but I suspect it also has something to do with the hypnotic accompanying music. De doo de doo duh, de doo duh. Doo duh, doo de doo duh…&lt;/p&gt;
</description>
				<pubDate>Tue, 13 Jun 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/websites/2006/06/13/cats-game.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/websites/2006/06/13/cats-game.html</guid>
			</item>
		
			<item>
				<title>Security applications break .Net 2.0 remoting</title>
				<description>&lt;p&gt;Jamie Cansdale from TestDriven.Net &lt;a href=&quot;http://weblogs.asp.net/nunitaddin/archive/2006/06/07/Security-Apps-Break-.NET-2.0-Remoting.aspx&quot;&gt;posted about certain security software breaking remoting with .Net 2.0&lt;/a&gt;. He also includes a downloadable example to demonstrate the problem.&lt;/p&gt;

&lt;p&gt;The current list of culprits is:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.eset.com&quot;&gt;NOD32&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.trendmicro.com/en/products/desktop/osce/evaluate/overview.htm&quot;&gt;Trend Micro Office Scan&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.broadcom.com/support/ethernet_nic/faq_drivers.php&quot;&gt;Embassy Trust Suite&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.broadcom.com/support/ethernet_nic/faq_drivers.php&quot;&gt;Broadcom Advanced Control Suite&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.netlimiter.com&quot;&gt;NetLimiter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The common thread amongst these is that they all have some network monitoring functionality.&lt;/p&gt;

&lt;p&gt;The error occurs whenever a .Net TCP remoting channel is closed. Perculiarly, the error happens not on the end that closes the channel, but in the application on the other end of the channel.&lt;/p&gt;

&lt;p&gt;The stack trace of the error is:&lt;/p&gt;

&lt;pre class=&quot;stacktrace&quot;&gt;
Exception: System.AccessViolationException
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

Server stack trace:  
at System.Net.UnsafeNclNativeMethods.OSSOCK.WSAGetOverlappedResult(SafeCloseSocket socketHandle, IntPtr overlapped, UInt32&amp;amp; bytesTransferred, Boolean wait, IntPtr ignored)  
at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)  
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)  
&lt;/pre&gt;

&lt;p&gt;I tried the sample code as described with NOD32, remoting to both localhost and to a separate PC but could not get the behaviour.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Jon Cole from Microsoft has &lt;a href=&quot;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=273738&amp;amp;SiteID=1&quot;&gt;posted on the MSDN forums&lt;/a&gt; verifying that this is indeed a bug, and that it should be fixed in the next release.&lt;/p&gt;
</description>
				<pubDate>Mon, 12 Jun 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/dotnet/2006/06/12/security-applications-break-dotnet-remoting.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/dotnet/2006/06/12/security-applications-break-dotnet-remoting.html</guid>
			</item>
		
			<item>
				<title>ASP.Net 2.0 web application project error</title>
				<description>&lt;p&gt;Chris Sells &lt;a href=&quot;http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=1995&quot;&gt;posted a useful tip&lt;/a&gt; (courtesy of Scott Guthrie) about duplicate types when compiling using the web application project model in Visual Studio 2005.&lt;/p&gt;

&lt;p&gt;The error displays as:&lt;/p&gt;

&lt;pre&gt;
Compilation Error

Description: An error occurred during the compilation of a resource required to service this request.
 
Please review the following specific error details and modify your source code appropriately.
 
Compiler Error Message: CS0433: The type &apos;ASP.clientredirector_ascx&apos; exists in both &apos;C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\sb2\4d76034e\bec2c8d0\App_Web_clientredirector.ascx.cdcab7d2.zmdrab5k.dll&apos; and &apos;C:\Windows\Microsoft.NET\v2.0.50727\Temporary ASP.NET Files\sb2\4d76034e\bec2c8d0\App_Web_axhgbqrn.dll&apos;
&lt;/pre&gt;

&lt;p&gt;The solution is simply (although not obviously) to add the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;batch=&quot;false&quot;&lt;/code&gt; attribute to the compilation element in the web.config file:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-xml&quot; data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;configuration&lt;/span&gt; &lt;span class=&quot;err&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;system.web&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;compilation&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;batch=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;false&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This generates a lot fewer assemblies and avoids the problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; According to Mike Harder (a Software Design Engineer on the ASP.NET team) in his recent &lt;a href=&quot;http://forums.asp.net/thread/1312617.aspx&quot;&gt;post on the ASP.Net forums&lt;/a&gt;, this is a known bug in the ASP.Net compiler involving directory level circular references. An alternative fix to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;batch=&quot;false&quot;&lt;/code&gt; option is to reorganise the files in the web application to avoid a circular reference.&lt;/p&gt;
</description>
				<pubDate>Fri, 09 Jun 2006 00:00:00 +0000</pubDate>
				<link>https://blog.adrianbanks.co.uk/aspnet/2006/06/09/aspnet-20-web-application-project-error.html</link>
				<guid isPermaLink="true">https://blog.adrianbanks.co.uk/aspnet/2006/06/09/aspnet-20-web-application-project-error.html</guid>
			</item>
		
	</channel>
</rss>
