<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>2014 on Funky Si's Blog (Dev)</title><link>https://blog-dev.funkysi1701.com/2014/</link><description>Recent content in 2014 on Funky Si's Blog (Dev)</description><generator>Hugo -- gohugo.io</generator><language>en-gb</language><managingEditor>funkysi1701@gmail.com (Simon Foster)</managingEditor><webMaster>funkysi1701@gmail.com (Simon Foster)</webMaster><lastBuildDate>Wed, 31 Dec 2014 20:00:45 +0000</lastBuildDate><atom:link href="https://blog-dev.funkysi1701.com/2014/index.xml" rel="self" type="application/rss+xml"/><item><title>2014 in review: lessons I learned</title><link>https://blog-dev.funkysi1701.com/posts/2014/looking-back-at-2014/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Wed, 31 Dec 2014 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2014/looking-back-at-2014/</guid><category term="Goals">Goals</category><category term="Azure">Azure</category><category term="ITAdmin">ITAdmin</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2014/12/2014-Numbers-Happy-2014-Wallpaper-New-Year-Image-1024x768.jpg"/><description>&lt;p&gt;As today is New Years eve I thought it would be a good chance to look back over the last year.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Tangled network cables illustrating IT complexity" src="https://blog-dev.funkysi1701.com/images/2014/12/tangle.jpg" loading="lazy"
width="1065" height="909"
/&gt;
&lt;/p&gt;
&lt;p&gt;At the start of the year I finally got agreement for the installation of a 30MB leased line. This was an amazing achievement as I had been really struggling to keep everything working on our ADSL connections and the complexity of the connections was starting to cause problems itself.&lt;/p&gt;
&lt;p&gt;However it was not a smooth process, the site survey revealed a substantial installation cost would be required, however the Council was about to launch a voucher scheme that would give us £3000 off. So most of this was just waiting around for the Council to get things going. By April we had it installed and I have been very happy with the ISP we chose, York Data Service (YDS).&lt;/p&gt;
&lt;p&gt;Also during April this year was the end of support for Windows XP and Office 2003. This didn’t impact us too much, mostly due to my constant nagging of the directors to replace our oldest machines. We now only have a couple of machines still running XP and no machines running Office 2003. Most machines are now running Windows 7, I have one Director running Windows 8 for presentations and a few surveyor tablets running windows 8 as well. Like many businesses I am waiting for Windows 10 next year before doing any more substantial replacement of OS.&lt;/p&gt;
&lt;p&gt;In May it was decided that I would move more into development work, so I got a new desktop PC and Visual Studio. I am very happy with my new machine (subject to dell fixing a problem later today) So far I have only dipped my toe into development work, this is largely due to needing more time to build up others to do what I do.&lt;/p&gt;
&lt;p&gt;In June I made another huge achievement. I got agreement for a new server. This was our first Server 2012 server and allowed us to make huge strides towards virtualizing our services. Once we had this server up and running I was able to decommission two of our Windows Server 2003 machines well before it goes out of support next year.&lt;/p&gt;
&lt;p&gt;I am a huge fan of this new server, I have only used a fraction of its memory. Hyper V is really great and I hope to make progress next year into HyperV replication.&lt;/p&gt;
&lt;p&gt;Also during 2014 we made huge progress with our clouds software. Within the last few weeks it is running on the Azure platform which will not only make it far easier to expand and create new features it will provide us with cost savings. I am looking forward to learning more about Azure as I get deeper into development.&lt;/p&gt;
&lt;p&gt;Wow I achieved a lot didn’t I, on top of this I hired a new IT person and trained him up (still more to do), I have also fixed lots of printers, websites, servers (had a server motherboard die!), and made hundreds of changes to our internal databases.&lt;/p&gt;
&lt;p&gt;I don’t know what is in store for 2015. I expect a lots of the same with hopefully more focus on developing in Visual Studio, training myself and my department and getting the last few tweaks into our internal servers.&lt;/p&gt;
&lt;p&gt;I would also like to thank everyone that I have worked with over the last 12 months (you know who you are), as you made a lot of what I have just described possible.&lt;/p&gt;</description></item><item><title>Ultimate software developer quiz</title><link>https://blog-dev.funkysi1701.com/posts/2014/software-developer-quiz/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Fri, 05 Dec 2014 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2014/software-developer-quiz/</guid><category term="Quiz">Quiz</category><category term=""/><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2014/12/Quiz-e1354812026198.jpg"/><description>&lt;p&gt;Moving house, lack of internet and lack of inspiration has caused a lack of posts recently but hopefully more to come. Been doing some filing and found an old software developer quiz. Thought I would have a go.&lt;/p&gt;
&lt;p&gt;Many thanks to &lt;a href="https://twitter.com/zogface"&gt;Keith&lt;/a&gt; for originally writing the quiz.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Questions:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Write a function that determines if a string starts with an upper-case letter A-Z&lt;/li&gt;
&lt;li&gt;Write a function that determines the area of a circle given the radius&lt;/li&gt;
&lt;li&gt;Add up all the values in an array of integers&lt;/li&gt;
&lt;li&gt;Given a table called &amp;ldquo;Nodes&amp;rdquo; with the following structure and sample data (see below after questions):
…where ID is the primary key,andParentID references ID, complete the following:
&lt;ul&gt;
&lt;li&gt;write a stored procedure to return all nodes beneath a given node ID&lt;/li&gt;
&lt;li&gt;describe how you might write a query to return all nodes at any depth below a given node ID (i.e. recursively)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Write a function to get the prime numbers up to 1,000,000&lt;/li&gt;
&lt;li&gt;You’ve been given the following code to review (below table)– what comments would you give back to the developer?&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ID&lt;/th&gt;
&lt;th&gt;ParentID&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Depth&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;NULL&lt;/td&gt;
&lt;td&gt;My Documents&lt;/td&gt;
&lt;td&gt;Folder&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;My Pictures&lt;/td&gt;
&lt;td&gt;Folder&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;My CV&lt;/td&gt;
&lt;td&gt;Document&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Photo of me&lt;/td&gt;
&lt;td&gt;Document&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;CREATE&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;PROCEDURE&lt;/span&gt; GetNode
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;@&lt;/span&gt;NodeId INT
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;AS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;DECLARE&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;ID INT, &lt;span style="color:#f92672"&gt;@&lt;/span&gt;ParentID INT, &lt;span style="color:#f92672"&gt;@&lt;/span&gt;Name NVARCHAR(&lt;span style="color:#ae81ff"&gt;255&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;DECLARE&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;Type&lt;/span&gt; NVARCHAR(&lt;span style="color:#ae81ff"&gt;20&lt;/span&gt;), &lt;span style="color:#f92672"&gt;@&lt;/span&gt;Depth INT
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;SELECT&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;ID &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ID &lt;span style="color:#66d9ef"&gt;FROM&lt;/span&gt; Nodes &lt;span style="color:#66d9ef"&gt;WHERE&lt;/span&gt; ID &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;ID
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;SELECT&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;ParentID &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ParentID &lt;span style="color:#66d9ef"&gt;FROM&lt;/span&gt; Nodes &lt;span style="color:#66d9ef"&gt;where&lt;/span&gt; ID &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;ID
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;IF&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;EXISTS&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;SELECT&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;NULL&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;FROM&lt;/span&gt; Nodes &lt;span style="color:#66d9ef"&gt;WHERE&lt;/span&gt; ID &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;ID &lt;span style="color:#66d9ef"&gt;AND&lt;/span&gt; Name &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;NULL&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;SELECT&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;Name &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;ELSE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;SELECT&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;Name &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Name &lt;span style="color:#66d9ef"&gt;FROM&lt;/span&gt; Nodes &lt;span style="color:#66d9ef"&gt;WHERE&lt;/span&gt; ID &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;ID
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;SELECT&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;Type&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;Type&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;FROM&lt;/span&gt; Nodes &lt;span style="color:#66d9ef"&gt;WHERE&lt;/span&gt; ID &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;ID
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;SELECT&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;Depth &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Depth &lt;span style="color:#66d9ef"&gt;FROM&lt;/span&gt; Nodes &lt;span style="color:#66d9ef"&gt;WHERE&lt;/span&gt; ID &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;ID
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;SELECT&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;ID, &lt;span style="color:#f92672"&gt;@&lt;/span&gt;ParentID, &lt;span style="color:#f92672"&gt;@&lt;/span&gt;Name, &lt;span style="color:#f92672"&gt;@&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;Type&lt;/span&gt;, &lt;span style="color:#f92672"&gt;@&lt;/span&gt;Depth
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;My Answers:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;static&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; GetUpper(&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;char&lt;/span&gt;.IsUpper(&lt;span style="color:#66d9ef"&gt;var&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;]))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;static&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;double&lt;/span&gt; AreaOfCircle(&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; radius)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;double&lt;/span&gt; area = &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; area = Math.PI * radius * radius;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; area;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;static&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; SumArray()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;[] MyArray = &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;[&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;] { &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;18&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;6&lt;/span&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; Sum = MyArray.Sum();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; Sum;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;create&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;procedure&lt;/span&gt; getnodes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;node int
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;select&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;from&lt;/span&gt; dbo.nodes &lt;span style="color:#66d9ef"&gt;where&lt;/span&gt; parentid &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;@&lt;/span&gt;node
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For a recursive query I would write something along the lines of, but it would need to be customised depending on the depth, eg more joins for higher depths&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;select&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;from&lt;/span&gt; dbo.nodes n1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;join&lt;/span&gt; dbo.nodes n2 &lt;span style="color:#66d9ef"&gt;on&lt;/span&gt; n1.id &lt;span style="color:#f92672"&gt;=&lt;/span&gt; n2.ParentId
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;join&lt;/span&gt; dbo.nodes n3 &lt;span style="color:#66d9ef"&gt;on&lt;/span&gt; n2.id &lt;span style="color:#f92672"&gt;=&lt;/span&gt; n3.ParentId
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;where&lt;/span&gt; n1.parentid &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;4544054&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;static&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; prime()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Console.WriteLine(&lt;span style="color:#e6db74"&gt;&amp;#34;Prime: 1&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;long&lt;/span&gt; i = &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;; i &amp;lt;= &lt;span style="color:#ae81ff"&gt;1000000&lt;/span&gt;;i++ )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; isprime = &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; (&lt;span style="color:#66d9ef"&gt;long&lt;/span&gt; j = &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;; j &amp;lt;i; j++)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt;(i%j==&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; isprime = &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;break&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (isprime)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Console.WriteLine(&lt;span style="color:#e6db74"&gt;&amp;#34;Prime: &amp;#34;&lt;/span&gt;+i);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;No Brackets around parameters, @NodeId parameter never used, select @id = id from dbo.nodes where id = @id is pointless as same id that is passed it being set, Name = NULL should be Name is NULL, no from specified in last query. There are probably more issues as well.&lt;/p&gt;</description></item><item><title>Get in the zone, boost productivity</title><link>https://blog-dev.funkysi1701.com/posts/2014/in-the-zone/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sun, 02 Nov 2014 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2014/in-the-zone/</guid><category term="Zone">Zone</category><category term="VisualStudio">VisualStudio</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2014/11/keep-calm-and-get-in-the-zone.png"/><description>&lt;p&gt;On Friday night I had the urge to fire up Visual Studio and tomorrow (Monday) I move house.&lt;/p&gt;
&lt;p&gt;What’s with that? Why am I in a programming mood when I have boxes to pack and shelves to take apart?&lt;/p&gt;
&lt;p&gt;For the last few weeks I have been too busy with other things to do much programming or when I had the time I felt more like relaxing than learning anything new.&lt;/p&gt;
&lt;p&gt;How do I get into the programming zone, what was it about this particular weekend that made me want to? Was it just the fact I had no time to concentrate on it, or is there some more useful factor that controls my desire to code?&lt;/p&gt;
&lt;p&gt;I can think of a few factors that I should make note of.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Peace and quiet – Friday night I had the place to myself so I could concentrate and do whatever I wanted.&lt;/li&gt;
&lt;li&gt;Ideas – Before I started I had some ideas, why don’t I try doing x. Once I have a coding idea I need to investigate it and see where it goes.&lt;/li&gt;
&lt;li&gt;Break from routine – Friday night was the start of a whole week away from work, this gives me more time to forget about the daily stress of the office and think about other things.&lt;/li&gt;
&lt;li&gt;Goals – Work annoyed me on Friday and if I want to achieve my goal of working in development more then I need to work at it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I am not sure how I can put these into practise so that I spend more time on development but we will see. One thing I want to achieve in my new home is a quiet place to concentrate and think without distractions, I have a few options which I will investigate over the next few weeks.&lt;/p&gt;
&lt;p&gt;Anyway need to get back to packing boxes.&lt;/p&gt;</description></item><item><title>If you had £5,000 for technology</title><link>https://blog-dev.funkysi1701.com/posts/2014/if-you-had-5000-to-spend-on-technology-what-would-you-get/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sun, 26 Oct 2014 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2014/if-you-had-5000-to-spend-on-technology-what-would-you-get/</guid><category term="Servers">Servers</category><category term="Spending">Spending</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2014/itunes_dnr.jpg"/><description>&lt;p&gt;I listen to the dot net rocks podcast and they ask this question every show. (If you don’t listen then you should!)&lt;/p&gt;
&lt;p&gt;I don’t know what my answer would be as there are so many gadgets and cool things that I like the sound of.&lt;/p&gt;
&lt;p&gt;I might get a surface pro 3, it’s a tablet with attachable keyboard that’s more powerful than my current laptop. But at £600 it’s expensive so maybe not. Maybe instead I would install a SSD into my existing laptop to increase disk performance.&lt;/p&gt;
&lt;p&gt;I’d like a new car with lots of gadgets built-in. A friend gave me a ride in his new BMW and it’s nice. Bluetooth so I don’t have to have an audio cable to listen to podcasts. Parking sensors so no chance the wife will prang it. Built in satnav etc&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Google self-driving car prototype" src="https://blog-dev.funkysi1701.com/images/2014/google-car.png" loading="lazy"
width="599" height="428"
/&gt;
&lt;/p&gt;
&lt;p&gt;While we are on the subject of cars eventually I’d like a google self driving car as I think Google is a better driver than me. Think about it I drive to a friends I have a drink I sleep in the back seat as my car drives me home. Once all cars are automated I believe the roads will be much safer.&lt;/p&gt;
&lt;p&gt;The last thing I would spend on is an intensive training course on development, I would really like to get further in dev and more training would really help. Specifically something that would help solve my current dev problems. I am sure it is possible for me to learn dev with self-study but that requires a discipline I don’t think I have, I easily eat my time up with my current job, wife and other interests.&lt;/p&gt;
&lt;p&gt;I recently had £6500 to spend on improving my employers IT infrastructure. That was really hard. It sounds like a lot of money, but it really isn’t.&lt;/p&gt;
&lt;p&gt;Once I started looking at the problems that I wanted to solve and what hardware I wanted I quickly used it all up and that was before I factored in license and software costs. In the end I just had to order what I wanted and hope that on a future date I could spend on other areas. I got a super powerful server that I could virtualize almost all our existing physical servers with it I needed licences, which left me just enough to get a NAS for file storage.&lt;/p&gt;</description></item><item><title>Top IT interview questions to answer</title><link>https://blog-dev.funkysi1701.com/posts/2014/interview-questions/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 23 Oct 2014 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2014/interview-questions/</guid><category term="ITAdmin">ITAdmin</category><category term="Interview">Interview</category><category term="Technical">Technical</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2014/10/how-not-to-ace-the-technical-interview.jpg"/><description>&lt;p&gt;I have done a few interviews from both sides of the table, I’m not very good at either but thought I would have a go at answering my favourite questions.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="How not to ace the technical interview cartoon" src="https://blog-dev.funkysi1701.com/images/2014/10/how-not-to-ace-the-technical-interview.jpg" loading="lazy"
width="550" height="454"
/&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Describe an IT disaster and what you did to turn it around?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The question is all about the turn it around bit. I’ve had lots of answers that emphasise the problem rather than what the candidate did to turn things around.&lt;/p&gt;
&lt;p&gt;My answer would be: on a Saturday I was rearranging the server room and when I came to turn on our main file server and pdc it wouldn’t boot. My plans for the weekend went out the window it was all about getting this server back up. I tried the usual unplug everything and reconnect still nothing. I rang a friend to get a second opinion and between the two of us we formulated a plan of action. I then rang my director to tell her that I was having problems and what I was going to try. (keeping people informed is an essential skill)&lt;/p&gt;
&lt;p&gt;So the server in question was getting power but nothing was happening during boot. The motherboard had died. What I needed to do was connect the raid card to another server so I could copy the data from it to our Nas drive (luckily I had an upgrade plan and this failure had just accelerated it)&lt;/p&gt;
&lt;p&gt;A few hours later the data was copying and I could breathe again. I told my director that I had fixed things but there would be minor issues on Monday.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Describe your strengths and weaknesses?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It wouldn’t be an interview without a strengths and weaknesses question. As an interviewer I want at least one weakness and I want it to actually be a weakness.&lt;/p&gt;
&lt;p&gt;My strengths are my problem solving skills, I can look at a problem and investigate what is going on and find a solution. If its a technology I haven’t used before I can read up about it and find out how it works and then use it to solve the issue.&lt;/p&gt;
&lt;p&gt;My weakness is my interpersonal skills, I am much better at analysing a computer issue than figuring out why one member of my staff is not performing. This is an area that is improving over the last few years I have taken on more responsibility over people and I am learning more about getting the best out of them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Technical Questions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I have never included technical questions in one of my interviews until recently and I think it is a good way to gauge ability. I often come out of an interview unsure how well that person would perform under the stresses of my job. If I have something down on paper it is a good start.&lt;/p&gt;
&lt;p&gt;But the personality that comes through during the interview must also be considered as most knowledge can be taught.&lt;/p&gt;
&lt;p&gt;A good technical question I have used in the past is write a paragraph explaining DHCP. This question illustrates what their knowledge is like for an essential technology, but it also indicates what their writing style is like. Could the passage they have written be given to a Director or Client?&lt;/p&gt;
&lt;p&gt;Good IT people need both technical knowledge and the ability to communicate at all levels, I still struggle to know if someone is good or not and even sometimes if I am any good.&lt;/p&gt;</description></item><item><title>Boldly go where no SQL has gone, 2</title><link>https://blog-dev.funkysi1701.com/posts/2014/to-boldly-go-where-no-sql-has-gone-before-part-2/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Tue, 21 Oct 2014 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2014/to-boldly-go-where-no-sql-has-gone-before-part-2/</guid><category term="StarTrek">StarTrek</category><category term="SQL">SQL</category><category term="Database">Database</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2014/10/c285ab50-86a9-44c3-a0ce-d790acae7db1.jpg"/><description>&lt;p&gt;Let’s continue looking at a database schema for storing details of every Star Trek Episode. If you are new to databases, a schema is just the design of the structure of the database.&lt;/p&gt;
&lt;p&gt;We have three tables, Episode, EpisodeWriter and Writer. See my last post for more details of these. It has been suggested that a slight change to this structure would enable storage of more of the creative staff.&lt;/p&gt;
&lt;p&gt;Lets rename Writer and call it Credit, and rename EpisodeWriter and call it EpisodeCredit. Now any creative staff member involved in an episode can be stored in the Credit table. Lets alter EpisodeCredit and add an extra column called CreditType. CreditType is just a text field that stores the role that creative person had on that episode, it can be anything from Director, Writer, Actor, Science Consultant etc.&lt;/p&gt;
&lt;p&gt;We now have the ability to store information relating to the episode in the episode table and any creative people in the credit table. What else can we add to the database? How about a table that can be used to record when an episode was last watched. I am probably weird but sometimes I want to watch a Star Trek episode that I like but I haven’t watched in ages.&lt;/p&gt;
&lt;p&gt;The last watched table is really simple and just have a datetime field and episodeId. This can be further expanded to have a userId field if you wanted to keep track of what episodes your friends had been watching.&lt;/p&gt;
&lt;p&gt;Another idea could be to tag episodes with certain themes or topics like Klingon episodes or meaning of life episodes or Kirk talks a computer to death episodes. Again this is fairly simple table containing TagName and EpisodeId.&lt;/p&gt;</description></item><item><title>Beyond SQL: to boldly go further</title><link>https://blog-dev.funkysi1701.com/posts/2014/to-boldly-go-where-no-sql-has-gone-before/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sun, 12 Oct 2014 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2014/to-boldly-go-where-no-sql-has-gone-before/</guid><category term="StarTrek">StarTrek</category><category term="SQL">SQL</category><category term="Database">Database</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2014/10/enterprise.jpg"/><description>&lt;p&gt;My last post proved quite popular so I am wondering if I can combine a post about IT and Star Trek.&lt;/p&gt;
&lt;p&gt;Years ago I used to have lists of Star Trek episodes, which included such information like original air date, production number, episode title and brief description.&lt;/p&gt;
&lt;p&gt;One thing that was hard to keep track of was how many episodes were written by a specific person. This is because episodes are written by multiple people. A column called writer would then need to contain multiple people, another option would be to have columns called writer1, writer2 etc. This wouldn’t help either as you wouldn’t know which column a specific writer had been saved in.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Database diagram showing a many-to-many relationship between episodes and writers" src="https://blog-dev.funkysi1701.com/images/2014/10/manytomany.jpg" loading="lazy"
width="559" height="334"
/&gt;
&lt;/p&gt;
&lt;p&gt;The relationship between writer and episode is known as a many to many relationship. An episode can have many writers and a writer can have written many episodes. To achieve this structure in a SQL database you will need three database tables as it is not possible to create a many to many join between two tables. The first table will contain all the episodes, the second table will contain all the writers, the third table known as a junction table, will contain the relationship between the two.&lt;/p&gt;
&lt;p&gt;Let’s do an example so we can see how this would work. Gene Roddenberry creator of Star Trek wrote the pilot episode ‘The Cage’. So Gene would be added to the writers table with an id of 1 and The Cage would be added to the episode table with an id of 1. In the junction table, it has two columns episode and writer, so we would enter 1 and 1 into these columns.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;Select&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;from&lt;/span&gt; Episode e
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;Join&lt;/span&gt; EpisodeWriter ew &lt;span style="color:#66d9ef"&gt;on&lt;/span&gt; e.id &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ew.EpisodeId
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;Join&lt;/span&gt; Writer w &lt;span style="color:#66d9ef"&gt;on&lt;/span&gt; w.id &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ew.WriterId
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But if Gene Coon and Gene Roddenberry had writing credits on The Cage we would need to add Gene Coon to the writing table and add an extra entry to the episodewriter table.&lt;/p&gt;
&lt;p&gt;I am going to do more posts based on this as I expand the database structure to include other information, I may go on to create stored procedures for bringing back certain information or I may use this as an example to talk about coding a user interface.&lt;/p&gt;</description></item><item><title>Destination Star Trek</title><link>https://blog-dev.funkysi1701.com/posts/2014/destination-star-trek/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sun, 05 Oct 2014 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2014/destination-star-trek/</guid><category term="StarTrek">StarTrek</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2014/DST3_Logo.jpg"/><description>&lt;p&gt;As a break from my usual topics I am going to talk about what I did over the weekend.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Simon and Laura in Star Trek costume at Destination Star Trek" src="https://blog-dev.funkysi1701.com/images/2014/10670061_10152884492389155_77781042960777157_n.jpg" loading="lazy"
width="360" height="640"
/&gt;
&lt;/p&gt;
&lt;p&gt;I am a huge star trek fan, so me and my wife Laura went to Destination Star Trek, a convention held in London. This is a picture of us in costume, my wife created a tribble costume (A tribble is an alien race that just consists of a ball of fur) and I am wearing an original series captains uniform. We had a great time.&lt;/p&gt;
&lt;p&gt;There are several things that made this trip special.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Friends&lt;/strong&gt;: After the last convention I remember thinking how much better the convention would be with a group of friends. Shortly afterwards I started listening to the trekmate podcast, eventually this lead to me helping out with their website and making friends via twitter with many of the hosts. This weekend was the first time I met up with them and it was great to put faces to names (or twitter names)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Writers and Directors&lt;/strong&gt;: Star Trek has a great philosophy. In the future human beings will put their differences aside and work together to explore the galaxy, this is one reason why Star Trek is so popular even after almost 50 years. This philosophy has been created by the writers and other creative staff over the years. My favourite Star Trek film is Wrath of Khan which was directed by Nicholas Meyer, this weekend I got my DVD signed by him and was able to tell him how I still enjoyed that film over 30 years after it was made. He said that he really appreciated me saying that. Listening to his talk later on, it was fascinating to hear his insights into making my favourite film. It is the writers and directors that make our favourite characters who they are, the actors themselves aren’t allowed to ad lib, all they do is flesh them out with a bit of emotion or a mannerism, it is the writer that create our favourite lines or situations that we remember.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Seven of Nine&lt;/strong&gt;: During my teenage years I had lots of posters of Seven on my walls. Seven of Nine was the ex-borg that walked around the ship in a skin tight catsuit, but she was also highly intelligent and continued to explore what it was to be human. It was great to have my photo taken with her, even if it was rushed due to the large number of people that wanted their picture taken.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trivia&lt;/strong&gt;: On the Friday of the convention, Laura took part in the beginners trivia challenge, she won. On Saturday I took part in the intermediate trivia challenge, I did really badly only got 3 correct, On Sunday I took part in the captain level challenge and I won. I really wasn’t expecting that, after I did so badly the day before. Thanks Marc Stamper and Destination Star Trek for organising that it was great fun, and also fun to meet the other trekkies who I had been competing against via twitter.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Party!&lt;/strong&gt;: On Saturday night we went to a party, we had Romulan Ale to drink, we had some of the actors performing songs (James Darren was particularly good), and some of the actors mingled with fans, it was great to see the actors relaxing and if you were lucky you could chat to them, I asked Vaughn Armstrong how he was enjoying the music, he loved it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is just a taste of what I got up to, there was lots more, like seeing alien costumes, listening to talks, sitting on a mockup of the bridge. Only one way to end this post, &lt;strong&gt;Live Long and Prosper!&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Windows 9 or do I mean 10</title><link>https://blog-dev.funkysi1701.com/posts/2014/windows-9-or-do-i-mean-10/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Wed, 01 Oct 2014 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2014/windows-9-or-do-i-mean-10/</guid><category term="Windows">Windows</category><category term="Microsoft">Microsoft</category><category term="ITAdmin">ITAdmin</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2014/10/windows_10_fullwidth.jpg"/><description>&lt;p&gt;Like many systems administrators I watched as the news came out yesterday about the latest version of windows. What would it be like? What would it be called? Would it be better or worse than previous versions?&lt;/p&gt;
&lt;p&gt;I was shocked when the name of the new operating system was revealed to be Windows 10. What really!? At first I though someone had tweeted a photoshopped image of the press conference, but no it was really going to be called Windows 10.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Windows 10" src="https://blog-dev.funkysi1701.com/images/2014/10/windows_10_fullwidth.jpg" loading="lazy"
width="800" height="478"
/&gt;
&lt;/p&gt;
&lt;p&gt;Windows 10 is the next operating system to be released after windows 8, many had been calling it windows 9 or windows Threshold.&lt;/p&gt;
&lt;p&gt;Microsoft has never had a fixed naming convention for its OSes, so should we really be that surprised at its new name.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows 1.0 (1985)&lt;/li&gt;
&lt;li&gt;Windows 2.0 (1987)&lt;/li&gt;
&lt;li&gt;Windows 3.0 (1990)&lt;/li&gt;
&lt;li&gt;Windows 95 (1995)&lt;/li&gt;
&lt;li&gt;Windows 98 (1998)&lt;/li&gt;
&lt;li&gt;Windows ME (2000)&lt;/li&gt;
&lt;li&gt;Windows XP (2001)&lt;/li&gt;
&lt;li&gt;Windows Vista (2007)&lt;/li&gt;
&lt;li&gt;Windows 7 (2009)&lt;/li&gt;
&lt;li&gt;Windows 8 (2012)&lt;/li&gt;
&lt;li&gt;Windows 10 (2015)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Windows 11 (2021)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One reason Microsoft may have gone with with Windows 10 is because they wanted to signify that the coming Windows release would be the last “major” Windows update. What does it mean to be the last major update?&lt;/p&gt;
&lt;p&gt;If you look at the list of OSes above you will see that between XP and Vista was a huge 6 years, this gap is/has caused a huge headache for IT professionals (me included). Software was written for XP because that is all that was available, when XP moved out of support earlier this year it caused loads as problems as people tried to get this software to work on more modern OSes.&lt;/p&gt;
&lt;p&gt;If windows 10 is around for a long time we may end up with a similar situation to XP, in that loads of software will run only on it and cause problems if you try and port it to whatever comes next. I am only a trainee developer so I don’t know what is involved with building an OS, but I would imagine there must be things that are very difficult or almost impossible to fix without ripping them out and starting again which is what happens when a new version of an OS is written.&lt;/p&gt;
&lt;p&gt;Only time will tell if Windows 10 really is the last version of windows and what will happen to the OS in the future. What ever the case I am downloading a preview so I can have a look (I want my start menu back!)&lt;/p&gt;</description></item><item><title>What is the difference: Dev vs Ops</title><link>https://blog-dev.funkysi1701.com/posts/2014/what-is-the-difference-between-dev-and-ops/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sat, 27 Sep 2014 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2014/what-is-the-difference-between-dev-and-ops/</guid><category term="DevOps">DevOps</category><category term="Operations">Operations</category><category term="ITAdmin">ITAdmin</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2014/09/DevOps-Cloud.jpg"/><description>&lt;p&gt;I want to learn Development and eventually move into a development role. But what is the difference between development and what I already do?&lt;/p&gt;
&lt;p&gt;Put simply Development or programming is the creation of new programs, websites or databases.&lt;/p&gt;
&lt;p&gt;IT Operations or System Administration is the administration of existing servers, websites or databases.&lt;/p&gt;
&lt;p&gt;I have been doing System Administration since I started my job back in 2006. What you do as part of this role can be very simple like setting up new users or computers to something very complex like upgrading the version of Exchange that the company uses for its emails.&lt;/p&gt;
&lt;p&gt;As part of my role I have done a lot of tasks that could be described as development. I have created databases and built new database structures like tables, views and stored procedures. I have also assisted the development department with testing, setting up visual studio, building websites and databases from code.&lt;/p&gt;
&lt;p&gt;Can I describe myself as a developer? I would say yes, I have done plenty of work that is development work.&lt;/p&gt;
&lt;p&gt;Can I get a job as a developer? Possibly but it would depend on the role. I have many of the skills that developers use, but I have limited knowledge in many areas. What I need to do is concentrate my efforts onto the development work I do and delegate as much administration work as I can so my knowledge can increase.&lt;/p&gt;
&lt;p&gt;A Buzz word in IT at the moment is DevOps. I have lost count of the number of times .NetRocks or RunAsRadio have mentioned it.&lt;/p&gt;
&lt;p&gt;DevOps is the integration of IT Development and Operations, it emphasises the need for the two departments to work closely together to achieve common goals. In big companies the two departments can pull against each other if you are not careful, but in my case as I do both roles, it would be very difficult for the development side of myself to blame the operations side of myself for a problem.&lt;/p&gt;
&lt;p&gt;This I think puts me in a good position, I just need to learn more development and I will make a valuable addition to someone’s development team.&lt;/p&gt;</description></item><item><title>I love Nagios</title><link>https://blog-dev.funkysi1701.com/posts/2014/i-love-nagios/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Wed, 24 Sep 2014 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2014/i-love-nagios/</guid><category term="ITAdmin">ITAdmin</category><category term="Monitoring">Monitoring</category><category term="Servers">Servers</category><category term="Nagios">Nagios</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2014/nagios.png"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="Nagios" src="https://blog-dev.funkysi1701.com/images/2014/nagios.png" loading="lazy"
width="212" height="50"
/&gt;
&lt;/p&gt;
&lt;p&gt;You may not have heard of Nagios but it has saved my bacon quite a few times.&lt;/p&gt;
&lt;p&gt;Nagios is an open source server monitoring application that runs on many linux flavours.&lt;/p&gt;
&lt;p&gt;I can’t remember exactly when I first installed nagios but I am guessing it was sometime in 2007/8. My boss gave me a book about it (which I never read) and told me to create a system to monitor the companies servers.&lt;/p&gt;
&lt;p&gt;Nagios is not simple to set up. It relies on setting up various Hosts and services. Hosts are usually physical servers that you want to monitor and services are all the services you want to monitor. As this is a linux program all these can be configured by editing the right config file&lt;/p&gt;
&lt;p&gt;Nagios is very flexible and can be expanded easily with the use of plugins, if you want to monitor something there is usually a plugin available. If you have a dell server running openmanage software there is even a plugin that allows the temperature of your server to be monitored.&lt;/p&gt;
&lt;p&gt;If you want to monitor windows servers the use of nsclient++ is a real advantage. This is a simple client that runs as a service on your windows server. This allows nagios to track memory, cpu, disk space, performance and services, in fact almost everything that you would want to monitor.&lt;/p&gt;
&lt;p&gt;Over the years I have kept a close eye on Nagios and added extra checks as new services were added or problems encountered. A few years ago I dabbled with sending alerts out via SMS message and once I got a smart phone found an app to keep track of Nagios 24/7.&lt;/p&gt;
&lt;p&gt;But recently I have started wondering if Nagios is the best way to monitor modern servers like 2012 or remote services like Azure. I want something that is easy to expand as your IT infrastructure expands. Something that relies on running on a linux OS requires your IT staff have a knowledge of linux and you keep that server maintained and updated.&lt;/p&gt;
&lt;p&gt;My question is: Is Nagios still the best way to monitor my servers?&lt;/p&gt;</description></item></channel></rss>