<?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>2015 on Funky Si's Blog (Dev)</title><link>https://blog-dev.funkysi1701.com/2015/</link><description>Recent content in 2015 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>Thu, 31 Dec 2015 20:00:45 +0000</lastBuildDate><atom:link href="https://blog-dev.funkysi1701.com/2015/index.xml" rel="self" type="application/rss+xml"/><item><title>A look back at 2015</title><link>https://blog-dev.funkysi1701.com/posts/2015/look-back-2015/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 31 Dec 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/look-back-2015/</guid><category term="Blogging">Blogging</category><category term="James">James</category><category term="Goals">Goals</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/151218181153-2015-year-in-review-biggest-stories-wrap-up-orig-00025316-large-169.jpg"/><description>&lt;p&gt;Wow! What an amazing year 2015 has been and with 2015 about to end I thought it would be good to look back at what happened in this amazing year.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="2015 Year in Review" src="https://blog-dev.funkysi1701.com/images/151218181153-2015-year-in-review-biggest-stories-wrap-up-orig-00025316-large-169.jpg" loading="lazy"
width="460" height="259"
/&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;January&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I started the year with a declaration that 2015 would be my year of code. Well I have had a few breaks from programming but I have learnt loads this year. I have flitted a bit concentrating on different areas of programming but I think that has broadened my knowledge. I consider myself to be a &lt;a href="https://www.funkysi1701.com/posts/2015/im-a-developer-now/" target="_blank" rel="noopener noreferrer"&gt;programmer now&lt;/a&gt;
, which I didn’t at the start of 2015.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;February&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A first for 2015 was appearing on a &lt;a href="https://www.funkysi1701.com/posts/2015/podcasts/" target="_blank" rel="noopener noreferrer"&gt;podcast&lt;/a&gt;
. The Trekmate podcast &lt;a href="https://www.funkysi1701.com/posts/2015/ten-forward-episode-135-anti-firbob-is-back-or-simons-desert-island-trek/" target="_blank" rel="noopener noreferrer"&gt;Ten Forward&lt;/a&gt;
were the lucky ones that got to experience my first attempt at talking to the world. This continued throughout the year with appearances on &lt;a href="https://www.funkysi1701.com/posts/2015/upper-pylon-2-1-x-09-the-passenger/" target="_blank" rel="noopener noreferrer"&gt;Upper Pylon 2&lt;/a&gt;
, &lt;a href="https://www.funkysi1701.com/posts/2015/the-hunted-tng-s3-e11-the-battle-bridge/" target="_blank" rel="noopener noreferrer"&gt;The Battle Bridge&lt;/a&gt;
and even the &lt;a href="https://www.funkysi1701.com/posts/2015/star-trek-is-back-in-2017/" target="_blank" rel="noopener noreferrer"&gt;Sci-Fi Waffle&lt;/a&gt;
podcast.&lt;/p&gt;
&lt;p&gt;It was a sad time for Trekkies at the end of February when &lt;a href="https://www.funkysi1701.com/posts/2015/hes-really-not-dead-as-long-as-we-remember-him/" target="_blank" rel="noopener noreferrer"&gt;Leonard Nimoy&lt;/a&gt;
passed away.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;March&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In March I talked about my recent efforts with &lt;a href="https://www.funkysi1701.com/posts/2015/azure-traffic-manager/" target="_blank" rel="noopener noreferrer"&gt;Azure Traffic Manager&lt;/a&gt;
to help prevent downtime. I also spent a lot of time improving &lt;a href="https://www.funkysi1701.com/posts/2015/database-deployment/" target="_blank" rel="noopener noreferrer"&gt;databases&lt;/a&gt;
which led me to consider ways to deploy it better.&lt;/p&gt;
&lt;p&gt;Also in March I attended an IT networking event called &lt;a href="https://www.funkysi1701.com/posts/2015/networking-event/" target="_blank" rel="noopener noreferrer"&gt;ITBoss&lt;/a&gt;
. Free food and drinks and a discussion with fellow IT Managers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;April&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;April was a bit of a mixed bag. I celebrated my second wedding anniversary but I also said goodbye to my car due to financial reasons.&lt;/p&gt;
&lt;p&gt;I played about with a &lt;a href="https://www.funkysi1701.com/posts/2015/the-raspberry-pi-adventure-starts/" target="_blank" rel="noopener noreferrer"&gt;Raspberry Pi&lt;/a&gt;
, mostly with the &lt;a href="https://www.funkysi1701.com/posts/2015/security-camera-with-raspberry-pi-camera/" target="_blank" rel="noopener noreferrer"&gt;camera&lt;/a&gt;
. I really must make some time to play with it more.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;May&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In May I went to a C# User Group called Leeds Sharp, was great fun and I really need to make more time and go back in 2016. It did result in one of my &lt;a href="https://www.funkysi1701.com/posts/2015/user-groups-and-f/" target="_blank" rel="noopener noreferrer"&gt;most popular blog posts&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Usually developers don’t enjoy finding bugs in their software but I had great fun when I realised I had a &lt;a href="https://www.funkysi1701.com/posts/2015/overflow/" target="_blank" rel="noopener noreferrer"&gt;Stack Overflow&lt;/a&gt;
in one of my databases, it was easy to fix once I worked out what was going on.&lt;/p&gt;
&lt;p&gt;In May the UK went to the polls as we had another General Election.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;June&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In June I celebrated my &lt;a href="https://www.funkysi1701.com/posts/2015/50th-blog-post/" target="_blank" rel="noopener noreferrer"&gt;50th Blog Post&lt;/a&gt;
. Amazing to think I had already written 50 Blog posts, even more now!&lt;/p&gt;
&lt;p&gt;Leeds Sharp had a coding challenge, to solve &lt;a href="https://www.funkysi1701.com/posts/2015/sudoku-challenge/" target="_blank" rel="noopener noreferrer"&gt;Sodoku&lt;/a&gt;
puzzle programatically. Didn’t get it finished but made a good stab at it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;July&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In July it was SysAdmin Day and I celebrated with my staff the amazing work we do keeping everything working.&lt;/p&gt;
&lt;p&gt;Microsoft launched &lt;a href="https://www.funkysi1701.com/posts/2015/how-to-upgrade-to-windows-10/" target="_blank" rel="noopener noreferrer"&gt;Windows 10&lt;/a&gt;
in July, the latest operating system is being offered for free for a year.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;August&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In August everything changed as my son &lt;a href="https://www.funkysi1701.com/posts/2015/baby-magic-and-becoming-a-father/" target="_blank" rel="noopener noreferrer"&gt;James&lt;/a&gt;
was born. I took time out from blogging and work during this time to spend with James.&lt;/p&gt;
&lt;p&gt;Before James was born I stepped down from my involvement with the &lt;a href="https://www.funkysi1701.com/posts/2015/volunteering-for-a-technical-team/" target="_blank" rel="noopener noreferrer"&gt;technical team&lt;/a&gt;
at St Michael le Belfrey.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;September&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In september it was back to work, where I started planning how to add &lt;a href="https://www.funkysi1701.com/posts/2015/adding-internet-connection-resiliency/" target="_blank" rel="noopener noreferrer"&gt;internet connections&lt;/a&gt;
to reduce the chance of outages.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;October&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In October I took James to a &lt;a href="https://www.funkysi1701.com/posts/2015/james-goes-on-an-adventure-with-daddy/" target="_blank" rel="noopener noreferrer"&gt;dads group&lt;/a&gt;
. This was the first time Dad spent time with James without Mummy and it was awesome.&lt;/p&gt;
&lt;p&gt;I also celebrated my first birthday after becoming a father, was great to have a card from James. James also got the chance to spend time with my family in Nottingham.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;November&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In November the countdown to Christmas began with James appearing in his first Nativity as Jesus and dressed up as an Elf at a Christingle service.&lt;/p&gt;
&lt;p&gt;Exciting Star Trek news was announced this month, a new &lt;a href="https://www.funkysi1701.com/posts/2015/star-trek-is-back-in-2017/" target="_blank" rel="noopener noreferrer"&gt;TV series&lt;/a&gt;
is to be aired in January 2017. No other details yet but very exciting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;December&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;December is all about &lt;a href="https://www.funkysi1701.com/posts/2015/christmas-2015-fosters/" target="_blank" rel="noopener noreferrer"&gt;Christmas&lt;/a&gt;
and we had a great Christmas time as a family.&lt;/p&gt;
&lt;p&gt;Sadly York was hit by Floods just after Christmas, luckily my family was not affected but many others have been. Hopefully by the time you read this the cleanup will be well underway.&lt;/p&gt;
&lt;p&gt;Before Christmas I spent my time counting down the days with the &lt;a href="https://www.funkysi1701.com/posts/2015/christmas-count-code/" target="_blank" rel="noopener noreferrer"&gt;Advent of Code&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What will 2016 bring?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I don’t know. There will be lots more time with James as he continues to learn and develop. I will continue to learn and develop my coding skills. Watch this space as I keep blogging about it.&lt;/p&gt;</description></item><item><title>Christmas 2015 with the Fosters</title><link>https://blog-dev.funkysi1701.com/posts/2015/christmas-2015-fosters/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 24 Dec 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/christmas-2015-fosters/</guid><category term="James">James</category><category term="Elf">Elf</category><category term="Christmas">Christmas</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/20151206_105450.jpg"/><description>&lt;p&gt;Four months ago James David Martin Foster was born. And he is even more awesome now than when he was born.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="James in a Christmas outfit" src="https://blog-dev.funkysi1701.com/images/2015/20151206_105450.jpg" loading="lazy"
width="747" height="1328"
/&gt;
&lt;/p&gt;
&lt;p&gt;As I write this James only has a few sleeps (as James sleeps multiple times in a day I can’t put an exact number) until his first Christmas. James is pretty much unaware of what is going on as he is still too young but that doesn’t stop his parents enjoying the season.&lt;/p&gt;
&lt;p&gt;He has lots of Christmas themed clothes which we have been enjoying taking pictures of him wearing. He makes a great looking elf I think.&lt;/p&gt;
&lt;p&gt;We took James to his first Christingle service at &lt;a href="https://www.belfrey.org/" target="_blank" rel="noopener noreferrer"&gt;St Michael le Belfrey&lt;/a&gt;
at the start of December. A Christingle service is where you stick a candle and cocktail sticks into an orange. James loved it, he already loves looking at lights so loved looking into the light from the candle.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="James at Christingle service" src="https://blog-dev.funkysi1701.com/images/2015/12333053_10153912153609155_79017677_o.jpg" loading="lazy"
width="1144" height="2048"
/&gt;
&lt;/p&gt;
&lt;p&gt;Another Christmas activity we did this year as a family was to appear in a nativity. St Michael le Belfrey every Christmas hold a cafe to tell people the good news about Christmas and they have a nativity outside which includes donkeys. Don’t we make a great holy family. (Excuse the coffee cups but it was cold.)&lt;/p&gt;
&lt;p&gt;Me and James’s mummy have gone a bit crazy with buying him presents, we have both got him lots of things to open on Christmas morning (or more likely mummy/daddy will do the opening)&lt;/p&gt;
&lt;p&gt;James also has three Christmas days to look forward to, with different sides of the family each no doubt with him as the centre of attention.&lt;/p&gt;
&lt;p&gt;Exciting times. Happy Christmas everyone, make yours as special as ours.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Family in nativity scene" src="https://blog-dev.funkysi1701.com/images/2015/12309579_10153809916077792_2703731936729335666_o.jpg" loading="lazy"
width="810" height="1080"
/&gt;
&lt;/p&gt;</description></item><item><title>The Christmas count down with code</title><link>https://blog-dev.funkysi1701.com/posts/2015/christmas-count-code/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 17 Dec 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/christmas-count-code/</guid><category term="Code">Code</category><category term="Challenge">Challenge</category><category term="Santa">Santa</category><category term="HappyChristmas">HappyChristmas</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/adventofcode.jpg"/><description>&lt;p&gt;In December we count down the days to Christmas. People often have advent calendars filled with chocolates or even Lego.&lt;/p&gt;
&lt;p&gt;But what about if you are a programmer, how can you count down the days till Christmas? What about if you had a daily Christmas themed coding challenge? Well &lt;a href="https://adventofcode.com/" target="_blank" rel="noopener noreferrer"&gt;adventofcode.com&lt;/a&gt;
is the answer.
&lt;img class="img-fluid" alt="Advent of Code Christmas coding challenge website" src="https://blog-dev.funkysi1701.com/images/adventofcode.jpg" loading="lazy"
width="691" height="767"
/&gt;
&lt;/p&gt;
&lt;p&gt;Each day a new challenge is available. So far the challenges are related to Christmas and Santa delivering his presents. The challenge is split into two closely linked parts. You are given a randomly generated input and your need to give an answer using a short string or number.&lt;/p&gt;
&lt;p&gt;The challenges are getting harder, with some completely defeating me, (not surprising with my limited programming knowledge). The challenges are language independent so you could try them in javascript or c#. I have been using Visual Studio and C# and my code is viewable on &lt;a href="https://github.com/funkysi1701/AdventSolution" target="_blank" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;So far I have completed Challenges 1 to 6 and also 10. Partly because I found challenge 7 very difficult but I am hoping to have another go at it.&lt;/p&gt;
&lt;p&gt;While coding through these challenges I have done a fair amount of refactoring. I started off with a simple console app with most of my code in one method. As the number of challenges increased I started moving the code for each challenge into its own class, with methods and properties that were unique to the challenge. I also added a main menu so you can choose which challenge to run. Some of my code to answer the challenges takes some time to run so this was quite a time saver over running each challenge in order.&lt;/p&gt;
&lt;p&gt;These challenges are very good at teaching me things about coding. I have got to think about data structures, what is the best way to store this information, classes and methods and return types, how to output data to the screen, how to input/import data.&lt;/p&gt;
&lt;p&gt;Before I try and work on the next challenge lets have a look at the first challenge:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Santa is trying to deliver presents in a large apartment building,
but he can’t find the right floor –
the directions he got are a little confusing.
He starts on the ground floor (floor 0)
and then follows the instructions one character at a time.
An opening parenthesis, (, means he should go up one floor, and a closing parenthesis, ),
means he should go down one floor.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is a simple loop through a long string of ( and ) and keep track of the floor number you are on to calculate what floor Santa finishes on. The second part of the challenge asks at what point in your input string does santa reach the basement (floor -1)&lt;/p&gt;</description></item><item><title>Roddenberry comic</title><link>https://blog-dev.funkysi1701.com/posts/2015/roddenberry-comic/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 10 Dec 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/roddenberry-comic/</guid><category term="Help">Help</category><category term="GeneRoddenberry">GeneRoddenberry</category><category term="Plane">Plane</category><category term="StarTrek">StarTrek</category><media:content medium="image" type="image/webp" url="https://blog-dev.funkysi1701.com/images/1-523x400.webp"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="The Oatmeal comic panel about Gene Roddenberry and a plane crash" src="https://blog-dev.funkysi1701.com/images/1-523x400.webp" loading="lazy"
width="523" height="400"
/&gt;
&lt;/p&gt;
&lt;p&gt;The Oatmeal created a comic which you really should check out. It can be found &lt;a href="https://theoatmeal.com/comics/plane" target="_blank" rel="noopener noreferrer"&gt;here&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;The comic tells the story of a plane crash, in which the 25 year old co-pilot goes back into the burning plane to rescue passengers and lead a group of survivors through the desert to find help.&lt;/p&gt;
&lt;p&gt;The co-pilot was named Gene Roddenberry, and after these events he stopped being a pilot and became a writer and eventually created Star Trek.&lt;/p&gt;
&lt;p&gt;In these uncertain times when you are stranded in the desert, get out and help someone, it may change the world.&lt;/p&gt;</description></item><item><title>SQL Server Management Studio</title><link>https://blog-dev.funkysi1701.com/posts/2015/sql-server-management-studio/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 03 Dec 2015 00:00:00 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/sql-server-management-studio/</guid><category term="Database">Database</category><category term="SQL">SQL</category><description>&lt;p&gt;I use SQL Server Management Studio all the time for writing queries, getting data and general SQL development.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="SQL Server Management Studio" src="https://blog-dev.funkysi1701.com/images/2015/sql-server-2012-management-studio-splash-screen.png" loading="lazy"
width="529" height="360"
/&gt;
&lt;/p&gt;
&lt;p&gt;I have enjoyed seeing the improvements that each new version of SQL Server Management Studio (SSMS) introduced. One great improvement was intellisense.&lt;/p&gt;
&lt;p&gt;This feature saves typing and reduces errors by automatically suggesting tables, column names or other database objects.&lt;/p&gt;
&lt;p&gt;A common query that I get asked to write is provide a spreadsheet that gives the information that satisfies certain criteria. This is easy to do in SSMS, you can write the query, click execute and the rows that satisfy the criteria are displayed. These rows can then be easily copy/pasted into Excel or other spreadsheets.&lt;/p&gt;
&lt;p&gt;A common data item that gets stored in databases is addresses and addresses often contain line breaks to make the data display better. In the earlier versions of SSMS, when you copied and pasted these line breaks were ignored and the data displayed the same in SSMS as it did in Excel. However in the more recent version, theses line breaks got copied across breaking your spreadsheet and making it hard to see what data corresponded with what.&lt;/p&gt;
&lt;p&gt;Now I don’t know if this should be described as introducing a bug or fixing one. I can easily argue both sides. If your data contains a line break and you copy this data it should include the line break in the destination, but if it does that it displays badly in Excel.&lt;/p&gt;
&lt;p&gt;The fix I have been using until recently is to use the following TSQL command in my queries.&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:#66d9ef"&gt;REPLACE&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;REPLACE&lt;/span&gt;(&lt;span style="color:#f92672"&gt;@&lt;/span&gt;str, CHAR(&lt;span style="color:#ae81ff"&gt;13&lt;/span&gt;), &lt;span style="color:#e6db74"&gt;&amp;#34;), CHAR(10), &amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This command replaces any line breaks with an empty string. Both Char(10) and Char(13) are needed because you can have different types of line breaks. This is great if you are writing the script from scratch but isn’t great if your are running a stored procedure or your query has a lot of columns.&lt;/p&gt;
&lt;p&gt;The answer to this is to use Visual Studio to run your SQL query. In Visual Studio you can write and run queries via Server Explorer and the results produced don’t contain line breaks. I have only just discovered this solution, but so far it has worked and is very easy to do, plus as I do most of my development in Visual Studio anyway it saves me having to open SSMS to test my queries.&lt;/p&gt;</description></item><item><title>Black Friday Deals</title><link>https://blog-dev.funkysi1701.com/posts/2015/black-friday-deals/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Fri, 27 Nov 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/black-friday-deals/</guid><category term="Deals">Deals</category><category term="Blogging">Blogging</category><category term="Blackfriday">Blackfriday</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/86910937_t053ll31.jpg"/><description>&lt;h2 id="over-50-off-this-black-friday"&gt;Over 50% Off this Black Friday!&lt;a class="anchor ms-1" href="#over-50-off-this-black-friday" aria-label="Permalink: Over 50% Off this Black Friday!"&gt;&lt;i class="fas fa-link" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Black Friday Deals" src="https://blog-dev.funkysi1701.com/images/86910937_t053ll31.jpg" loading="lazy"
width="660" height="371"
/&gt;
&lt;/p&gt;
&lt;p&gt;Yes you heard it correctly even &lt;a href="https://www.funkysi1701.com" target="_blank" rel="noopener noreferrer"&gt;www.funkysi1701.com&lt;/a&gt;
has amazing offers.&lt;/p&gt;
&lt;p&gt;It is like the whole world has gone “Black Friday” mad, with every company in the world offering amazing and unmissable deals.&lt;/p&gt;
&lt;p&gt;So in an attempt to cash in on all the Black Friday fuss I will write a quick blog post about it.&lt;/p&gt;
&lt;p&gt;I mentioned 50% off well this month I have blogged 50% less than usual. There is one main reason for this, my new born son James is taking a lot of my time and energy and I think it will take a few months of sporadic blog posts before I get the balance right.&lt;/p&gt;
&lt;p&gt;I am not a big fan of spending just for the sake of it. Encouraging people to spend money they don’t have, on things they don’t need shouldn’t be encouraged. However times are hard so companies need to do what they need to, to try and make money.&lt;/p&gt;</description></item><item><title>Star Trek is back (in 2017)</title><link>https://blog-dev.funkysi1701.com/posts/2015/star-trek-is-back-in-2017/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 12 Nov 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/star-trek-is-back-in-2017/</guid><category term="StarTrek">StarTrek</category><category term="Podcast">Podcast</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/11/3f448330857e4ca7ba40ab5465a3c2cb62cdb98c.png"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="3f448330857e4ca7ba40ab5465a3c2cb62cdb98c" src="https://blog-dev.funkysi1701.com/images/2015/11/3f448330857e4ca7ba40ab5465a3c2cb62cdb98c.png" loading="lazy"
width="620" height="260"
/&gt;
&lt;/p&gt;
&lt;p&gt;As you have probably heard Star Trek is coming back to TV. I recently joined with the Sci Fi Waffle podcast to discuss.&lt;/p&gt;
&lt;p&gt;Sci Fi Waffle: Episode 12 – STAR TREK IS BACK!!&lt;/p&gt;
&lt;p&gt;In this episode we discuss the great news that Star Trek IS BACK!!.&lt;/p&gt;
&lt;p&gt;Shawn and I are joined again by James Roberts and TrekMates News feed Editor Simon Foster to speculate about the announcement of a new Star Trek TV series due to debut in January 2017.&lt;/p&gt;
&lt;p&gt;James can be found on our sister podcast &lt;a href="https://www.trekmate.org.uk/category/the-battle-bridge/" target="_blank" rel="noopener noreferrer"&gt;The Battle Bridge&lt;/a&gt;
and Simon can be found on Twitter &lt;a href="https://twitter.com/funkysi1701" target="_blank" rel="noopener noreferrer"&gt;@funkysi1701&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;To listen go &lt;a href="https://www.trekmate.org.uk/sci-fi-waffle-episode-11-star-trek-is-back/" target="_blank" rel="noopener noreferrer"&gt;https://www.trekmate.org.uk/sci-fi-waffle-episode-11-star-trek-is-back/&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>How to speak to the whole world</title><link>https://blog-dev.funkysi1701.com/posts/2015/how-to-speak-to-the-whole-world/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 05 Nov 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/how-to-speak-to-the-whole-world/</guid><category term="Global">Global</category><category term="Blogging">Blogging</category><category term="World">World</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/10/world.png"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="World map showing global website reach" src="https://blog-dev.funkysi1701.com/images/2015/10/world.png" loading="lazy"
width="648" height="423"
/&gt;
&lt;/p&gt;
&lt;p&gt;Having a website is an easy way to reach people across the globe. This website has reached people in almost every continent.&lt;/p&gt;
&lt;p&gt;I have had visitors in each of the following countries.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;United States&lt;/li&gt;
&lt;li&gt;United Kingdom&lt;/li&gt;
&lt;li&gt;Canada&lt;/li&gt;
&lt;li&gt;Germany&lt;/li&gt;
&lt;li&gt;Australia&lt;/li&gt;
&lt;li&gt;India&lt;/li&gt;
&lt;li&gt;France&lt;/li&gt;
&lt;li&gt;Vietnam&lt;/li&gt;
&lt;li&gt;Netherlands&lt;/li&gt;
&lt;li&gt;Poland&lt;/li&gt;
&lt;li&gt;China&lt;/li&gt;
&lt;li&gt;Russia&lt;/li&gt;
&lt;li&gt;Sweden&lt;/li&gt;
&lt;li&gt;European Union&lt;/li&gt;
&lt;li&gt;New Zealand&lt;/li&gt;
&lt;li&gt;Hungary&lt;/li&gt;
&lt;li&gt;Norway&lt;/li&gt;
&lt;li&gt;Spain&lt;/li&gt;
&lt;li&gt;Brazil&lt;/li&gt;
&lt;li&gt;Hong Kong SAR China&lt;/li&gt;
&lt;li&gt;Belgium&lt;/li&gt;
&lt;li&gt;Denmark&lt;/li&gt;
&lt;li&gt;Italy&lt;/li&gt;
&lt;li&gt;Switzerland&lt;/li&gt;
&lt;li&gt;Finland&lt;/li&gt;
&lt;li&gt;Turkey&lt;/li&gt;
&lt;li&gt;Romania&lt;/li&gt;
&lt;li&gt;Singapore&lt;/li&gt;
&lt;li&gt;Israel&lt;/li&gt;
&lt;li&gt;Indonesia&lt;/li&gt;
&lt;li&gt;Serbia&lt;/li&gt;
&lt;li&gt;South Africa&lt;/li&gt;
&lt;li&gt;Lithuania&lt;/li&gt;
&lt;li&gt;Mexico&lt;/li&gt;
&lt;li&gt;Ireland&lt;/li&gt;
&lt;li&gt;South Korea&lt;/li&gt;
&lt;li&gt;Taiwan&lt;/li&gt;
&lt;li&gt;Greece&lt;/li&gt;
&lt;li&gt;Bulgaria&lt;/li&gt;
&lt;li&gt;Ukraine&lt;/li&gt;
&lt;li&gt;Japan&lt;/li&gt;
&lt;li&gt;Austria&lt;/li&gt;
&lt;li&gt;Kenya&lt;/li&gt;
&lt;li&gt;Portugal&lt;/li&gt;
&lt;li&gt;Czech Republic&lt;/li&gt;
&lt;li&gt;Colombia&lt;/li&gt;
&lt;li&gt;Philippines&lt;/li&gt;
&lt;li&gt;United Arab Emirates&lt;/li&gt;
&lt;li&gt;Moldova&lt;/li&gt;
&lt;li&gt;Slovenia&lt;/li&gt;
&lt;li&gt;Malaysia&lt;/li&gt;
&lt;li&gt;Ghana&lt;/li&gt;
&lt;li&gt;Argentina&lt;/li&gt;
&lt;li&gt;Venezuela&lt;/li&gt;
&lt;li&gt;Bangladesh&lt;/li&gt;
&lt;li&gt;Iceland&lt;/li&gt;
&lt;li&gt;Croatia&lt;/li&gt;
&lt;li&gt;Panama&lt;/li&gt;
&lt;li&gt;Belarus&lt;/li&gt;
&lt;li&gt;Slovakia&lt;/li&gt;
&lt;li&gt;Albania&lt;/li&gt;
&lt;li&gt;Kazakhstan&lt;/li&gt;
&lt;li&gt;Algeria&lt;/li&gt;
&lt;li&gt;Puerto Rico&lt;/li&gt;
&lt;li&gt;Thailand&lt;/li&gt;
&lt;li&gt;Estonia&lt;/li&gt;
&lt;li&gt;U.S. Virgin Islands&lt;/li&gt;
&lt;li&gt;Pakistan&lt;/li&gt;
&lt;li&gt;Latvia&lt;/li&gt;
&lt;li&gt;Chile&lt;/li&gt;
&lt;li&gt;Sri Lanka&lt;/li&gt;
&lt;li&gt;Malta&lt;/li&gt;
&lt;li&gt;Costa Rica&lt;/li&gt;
&lt;li&gt;Morocco&lt;/li&gt;
&lt;li&gt;Ethiopia&lt;/li&gt;
&lt;li&gt;Réunion&lt;/li&gt;
&lt;li&gt;Uruguay&lt;/li&gt;
&lt;li&gt;Honduras&lt;/li&gt;
&lt;li&gt;Cyprus&lt;/li&gt;
&lt;li&gt;Tunisia&lt;/li&gt;
&lt;li&gt;Nepal&lt;/li&gt;
&lt;li&gt;Cameroon&lt;/li&gt;
&lt;li&gt;Paraguay&lt;/li&gt;
&lt;li&gt;Gambia&lt;/li&gt;
&lt;li&gt;Peru&lt;/li&gt;
&lt;li&gt;Mauritius&lt;/li&gt;
&lt;li&gt;Bermuda&lt;/li&gt;
&lt;li&gt;Cambodia&lt;/li&gt;
&lt;li&gt;Jersey&lt;/li&gt;
&lt;li&gt;Egypt&lt;/li&gt;
&lt;li&gt;Macedonia&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How cool is that! If you know anyone from any country not mentioned above, send them a link to this page and lets see if we can get this blog seen in even more countries.&lt;/p&gt;
&lt;p&gt;Only a few years ago it would have been incredibly difficult to communicate your ideas to the whole world, now it is available to everyone at a touch of a button.&lt;/p&gt;
&lt;p&gt;The internet has a lot to answer for. On the one hand it is blamed for a decrease of communication between people as they stare at their devices all the time, but on the other hand it has greatly improved communication over larger distances like the use of Skype or the ability to broadcast your ideas on websites and social media.&lt;/p&gt;</description></item><item><title>Top 10 Warp 11 Songs</title><link>https://blog-dev.funkysi1701.com/posts/2015/top-10-warp-11-songs/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 29 Oct 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/top-10-warp-11-songs/</guid><category term="StarTrek">StarTrek</category><category term="Music">Music</category><category term="Warp11">Warp11</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/10/redAlertCover_02.jpg"/><description>&lt;h2 id="i-dont-want-to-go-to-work-just-want-to-hang-with-captain-kirk"&gt;I don’t want to go to work Just want to hang with Captain Kirk&lt;a class="anchor ms-1" href="#i-dont-want-to-go-to-work-just-want-to-hang-with-captain-kirk" aria-label="Permalink: I don’t want to go to work Just want to hang with Captain Kirk"&gt;&lt;i class="fas fa-link" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I am a big Warp 11 fan. Warp 11 are a Star Trek rock band from Sacramento, California. Their songs often feature bad language, sex and drinking but always feature references to Star Trek characters and episodes and a good dose of humour.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Warp 11 Red Alert album cover" src="https://blog-dev.funkysi1701.com/images/2015/10/redAlertCover_02.jpg" loading="lazy"
width="250" height="250"
/&gt;
&lt;/p&gt;
&lt;p&gt;I first listened to Warp 11 in about 2004 and have listened to every album they have released since. The second album Red Alert is probably my favourite but all their albums have a few tracks which I love. They have just released their seventh album and to celebrate this I will list my favourite tracks.&lt;/p&gt;
&lt;p&gt;All lyrics are by Warp 11 and no infringement is intended, if you like what you see go to their website (&lt;a href="https://www.warp11.com" target="_blank" rel="noopener noreferrer"&gt;www.warp11.com&lt;/a&gt;
), or buy their music. Also Warp 11 if you are reading this, come to the UK, I would love to hear you perform live.&lt;/p&gt;
&lt;ol start="10"&gt;
&lt;li&gt;&lt;strong&gt;It’s Dead Jim&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From the fourth album &lt;strong&gt;It’s Dead Jim&lt;/strong&gt;. This song came out after Enterprise was cancelled and is all about the fact there was no more new trek being made. It was a bleak time to be a trekkie and I shared Warp 11’s sadness in this song.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;First they took my TOS
Then they took my TNG
Said “bon voyage” to Voyager
Now there’s nothing left for me
Decommissioned DS9
Now there’s no more Enterprise
Erased the animated show
Yeah, she met a quick demise
The final frontier has been finalized
There ain’t no coming back
It’s getting no reprise
It boldly came and went
Got no Trek to represent
I never thought the day
Would come that I had to say
It’s dead Jim
Space is cold and so am I
Just like Kirk my show has died
Everything has gone awry
I guess it’s time to say goodbye
‘Cause Scotty’s gone and so is Bones
They took their final voyage home
And I guess I’ve always known
That some day I’d be alone
Tore down the sets today
Gave the plastic ears away
Sold the props on eBay
Left my life in disarray
It’s dead Jim
Until they bring it back again
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="9"&gt;
&lt;li&gt;&lt;strong&gt;7 of Mine&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From the second album &lt;strong&gt;Red Alert&lt;/strong&gt;. 7 of 9 is one sexy character so it is no surprise that Warp 11 chose to sing about that in a few songs and I think this is probably the best example.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Flesh and bone and silicone
You’re all by yourself, but you’re never alone
You’re pretty smooth, for a chick full of wires
So cold to the touch
But you set me on fire
Assimilate me
Dominate me
Short circuit my mind
Energize me
Your thighs always rise me
Let’s go out and make your gears grind
Seven of mine
One minute you’re cruel
And then you’re kind
You gave me a virus, but baby I don’t mind
‘Cause I self destruct when I see your behind
I’ll show you the difference between seven and nine
Chorus
Well, life and love are so absurd
And assimilation is the final word
Resistance is futile can’t you see
So, come on now baby and assimilate me
I’ll give you an identity
Locutus ain’t got nothing on me, oh yeah
Let’s grab a shuttle and go to your cube
You bring the oil and honey I’ll bring the lube
It’s not monogamy
‘Cause in the end
When I’m f****** you, I’m f****** all of your friends
Chorus
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="8"&gt;
&lt;li&gt;&lt;strong&gt;Old Country Dr.(The Ballad Of Bones)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From the second album &lt;strong&gt;Red Alert&lt;/strong&gt;. A song dedicated to Bones so of course it is great. The use of harmonica makes you think of the country doctor which is a nice touch. This song gets a sequel as well on one of the later albums.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Well, they call me Bones and I’m third in command
Second in line is a man I just can’t stand
He’s a green blooded, pointy-eared, seven year itch
And when he pon farrs
He’ll try to make me his bitch
Well, I may or may not have divorced my wife
But I damn sure pulled the plug on my daddy’s life
And two months later, well, they found a cure
I’m just an old country doctor on a damned five year tour
The damned teleporter
Yeah, it gives me the creeps
The first time I used it
I couldn’t get it up for weeks
Now my tricorder’s busted
And sick bay just stinks
I guess I’ll just go replicate me a drink
Chorus
Well, Jim is the captain of this here ship
We call her the Enterprise, and the crew’s pretty hip
Yeah, the girls all wear go-go boots and miniskirts
And I spend my days patching all the red shirts
Well, I have been asked to do many a thing
Outside the area of my expertise
Damn it Jim, I know I’ve told you before
Damn it Jim, I know I’ve told you before
Damn it Jim, damn it Jim, I told you before
I’m just an old country doctor on a damned five year tour
Just an old country doctor on a damned five year tour
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="7"&gt;
&lt;li&gt;&lt;strong&gt;Space Happy&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From the second album &lt;strong&gt;Red Alert&lt;/strong&gt;. This song is just solid good fun, with a catchy chorus that I can’t help singing along to.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Gonna take a five year tour
Boldly go where no man’s gone before
Gonna travel to the end
And make new friends
Move ahead warp factor ten
Put a miniskirt on my yeoman
Represent the human race
And we’ll make space
A happy place
To boldly go where no man’s gone before
I think I sang that line once before
(But I’m not too sure)
We’ll be so happy – can’t you see?
A zero-g community
Gonna travel to new worlds
Beam on down and meet some green girls
Gonna see what we can see
A fancy-free galaxy
Chorus
Come and take a tour with me
They’ll be no Kahns or Kobiashi
Gonna travel to the end
And make new friends
With aliens
Chorus
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="6"&gt;
&lt;li&gt;&lt;strong&gt;And Thats Why I’m In A Star Trek Band&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From the second album &lt;strong&gt;Red Alert&lt;/strong&gt;. Not only does the start of this song make me think of the postman pat theme but it is good fun.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;I love gettin’ hummers from chicks dressed as Klingons
Bumpy heads bobbin’ up and down
Like their necks have a spring on
And I know their teeth hurt
But I still get my thing on
And that’s why
And that’s why
I’m in a Star Trek band
I wanna tag team a stripper with Mr. William Shatner
He’ll take the front and hell, I’ll take the back-ner
And when we blow
We’re gonna reach warp factor
And that’s why
And that’s why
I’m in a Star Trek band
Well, people ask me
Where do I find my joy?
Do I like hot girls, green aliens or young boys?
Well, I got two words for you my friend – Leonard Nimoy
And that’s why
And that’s why
I’m in a Star Trek band
And that’s why
And that’s why
We’re in a Star Trek band
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="5"&gt;
&lt;li&gt;&lt;strong&gt;Everything I Do (I Do With William Shatner)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From the second album &lt;strong&gt;Red Alert&lt;/strong&gt;. This was probably the first Warp 11 song I heard and it made me want to listen to the rest. Warp 11 don’t just mention trek, they are actual fans as you can tell from the references that litter their songs.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Everything I do, I do with William Shatner
Loosing all my hair while my belly’s growing fat-ner
And when I drink too much
He holds my hair in his hands
And while I’m blowing chunks
He treats me like the captain
Oh, when we get together we boldly go
Talk about our favorite episodes
I don’t want to go to work
Just want to hang with Captain Kirk
And if I had my way I’d make it so
Everything I do, I do with William Shatner
We drink a couple of brews
Go to the Laundromat-ner
When our clothes are dry
We fold them up together
‘Cause everything I do, I do with William Shatner
Chorus
Hey, spend more time with him than George Takei
Say full speed ahead and we’re on our way
He is so mysterious
His middle name’s Tiberius
And he’ll make me his cabin boy someday
Hey Bill – Let’s go get a tan
Hey Bill – And a green woman
Hey Bill – We’ll kill some Romulans
Hey Bill – I’m your number one fan
‘Cause everything I do, I do with William Shatner
We go to the rodeo and put on our cowboy hat-ners
When we paint the town
We buy each other dinner
We’re fully functional
Just like Brent Spiner
Everything I do, I do with William Shatner
And don’t you wish that you could do it too
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="4"&gt;
&lt;li&gt;&lt;strong&gt;What would William Shatner do?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From the fifth album &lt;strong&gt;I Don’t Want to Go to Heaven as Long as They Have Vulcans in Hell&lt;/strong&gt;. Everyone’s been in situations where they would like to keep there fandom a secret. And what would William Shatner do?&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;I’ve got a girl, the coolest girl in the world
But she ain’t fly for the guys in sci-fi
And I’m a guy with a model Enterprise
Imagine her surprise if she ever finds out
I’ve got a queen, but she only wears blue jeans
And I am a guy in Kirk t-shirt
Black boots and a red miniskirt
I’ll be in world of hurt if she ever finds out
I’ve got to think about it
I’ve got to work it through
If she learns my dark secret
What would William Shatner do?
I’ve got a chick, in bed a lunatic
Won’t be my whore if she knows I love Star Wars
And I know only one thing for sure
I’ll never score If she ever finds out
I’ve got to make a choice now
Deceive her or tell her true
I know Vulcans never lie but
What would William Shatner do?
I love War of the Worlds, got a b**** for green girls
Alien nations, deep space stations
I love flying saucers, say “live long and prosper”
“May the force be with you”, Mr. Sulu
I want to be your man, “by your command”
Don’t want us to be undone, “danger Will Robinson!”
And if I decree “beedee beedee bee”
Does that mean we’ll be through?
What would William Shatner do?
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;&lt;strong&gt;Trekie Girl&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From the second album &lt;strong&gt;Red Alert&lt;/strong&gt;. When I first listened to this song I was a single young man, so of course I dreamed about finding my own Trekie Girl. My wife now shares my love of Trek and looks extremely hot in a starfleet uniform.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;She knows every episode
She wears the boots that go-go-go
She’s got a red miniskirt
She makes me play Captain Kirk
Trekkie girl, Trekkie girl
We go to conventions
She gives me erections
Girl – my Trekkie girl
She paints her skin green
And it’s not Halloween
She rocks my brave new world
She always acts so logical
She drives a Volvo Iike it’s our space shuttle (of love)
She looks just like Britney Spears
Just add a few pounds and some pointy ears
Trekkie girl, Trekkie girl
She loves outer space
Has a black and white face
Oh, girl – my Trekkie girl
I’m her Leonard Nimoy
She’s the real McCoy
She’s got a Spock haircut with curls
And on some nights she tells me
Put my symbiote inside her
She separates my saucer
Yeah, she knows just what to say
And on nights when I loose power
Well it doesn’t even phaser
She grabs my captain’s log
Torpedoes away
She knows every episode
She wears the boots that go-go-go
She’s got a red miniskirt
She makes me play Captain Kirk
Trekkie girl, Trekkie girl
We go to conventions
She gives me erections
Girl – my Trekkie girl
She paints her skin green
And it’s not Halloween
Oh, girl – my Trekkie girl
She loves outer space
Has a black and white face
Oh, girl – my Trekkie girl
I’m her Leonard Nimoy
She’s the real McCoy
My girl – Trekkie girl
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;
&lt;li&gt;&lt;strong&gt;A Song for People Who Never Watch Star Trek&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From the third album &lt;strong&gt;Boldly go down on me&lt;/strong&gt;. This really tells you all you need to know about original series trek, plus I like singing the first line of this song to my son (also called James)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;There was this guy
His name was Jim
You can call him Kirk
Or the Captain
He had a tan
And lots of women
Every episode
He got to blow his l***
He worked with Spock
He was a rock
No emotion
Nothing could rattle him
His blood was green
And Pon Farr could make him scream
And lose control
Though that’s illogical
Each week they’d all warp through space
Fight an alien race
And the Vulcan would pinch a neck
If you want to learn more
Go to the video store
Or just listen to this
Song for people who never watch Star Trek
Then there was Bones
Dr. McCoy
Worked with Nurse Chapel
And removed the red shirt shrapnel
Chased the miniskirts
Screaming, “Dammit, Kirk!”
Wait that wasn’t him
He was screaming, “Dammit Jim!”
Each week on the Enterprise
All the red shirts would die
But no one noticed or got upset
And the next generation
Will watch in syndication
Or just listen to this
Song for people who never watch Star Trek
And for three seasons
You know what they’d do
They’d boldly go
With the rest of their crew
Like Scotty
He was a Scot
And Chekov
He screamed a lot
And Uhura
And Sulu
But let’s face it
After Kirk, Spock and McCoy
Who gives a f*** about the rest of the crew?
&lt;/code&gt;&lt;/pre&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;The Saddest Song Ever Written About Star Trek&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From the fourth album &lt;strong&gt;It’s Dead Jim&lt;/strong&gt;. This song really encapsulates the sadness of Star Trek’s cancellation and the passing away of some of Star Treks greats.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;It was a warm summer’s night when I sat down to write
The prettiest song ever written about Star Trek
The sky was clear
Full of stars above
I thought of Kirk and his crew
And their mission of love
And I sang the first verse
Of the prettiest song ever written about Star Trek
When the words came out
Everything was wrong
For those who’d boldly go
Had already gone
‘Cause the show was cancelled
And the dream was dead
And a red alert started wailing in my head
And I realized I had written
The saddest song ever written
About Star Trek
Now the sky was dark
Devoid of love
And Roddenberry’s ashes were floating up above
Raining down on a man
Singing the saddest song ever written about Star Trek
And now Bones is nothing but bones
He finally went and took his final voyage home
And Scotty’s body just couldn’t take much more
And I’m sure this is the saddest
Song ever written about Star Trek
I thought about space
And the final frontier
And I shed a tear as I finished
The saddest song ever written about Star Trek
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>James goes on adventure with Daddy</title><link>https://blog-dev.funkysi1701.com/posts/2015/james-goes-on-an-adventure-with-daddy/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 22 Oct 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/james-goes-on-an-adventure-with-daddy/</guid><category term="Baby">Baby</category><category term="James">James</category><category term="Father">Father</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/10/12074836_10153714959677792_5717618456858661253_n.jpg"/><description>&lt;p&gt;This weekend I took James on an adventure. As he is only 8 weeks old it was a fairly low key adventure but hopefully he enjoyed himself.&lt;/p&gt;
&lt;p&gt;St Michael le Belfrey have been organizing an event for Dads once a month and this month I wanted to give it a go. I have been looking forward to going for a while.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Author carrying baby James in a front carrier at a dads event" src="https://blog-dev.funkysi1701.com/images/2015/10/12074836_10153714959677792_5717618456858661253_n.jpg" loading="lazy"
width="960" height="640"
/&gt;
&lt;/p&gt;
&lt;p&gt;Looking after a baby is woman’s work. Now I am not being sexist but men are just not equipped. We can’t feed them, we don’t form the same emotional bonds and I suspect I am sleeping through the worst of his crying.&lt;/p&gt;
&lt;p&gt;That said I still want to help and be involved in looking after my son. But my natural inclination is to let mummy do most things and help where needed. Going to this dads event was my first chance to do things without mummy being around.&lt;/p&gt;
&lt;p&gt;So after James had his first feed and his bag had been filled with bottles of milk, nappies, change of clothes and all the other essential accessories for looking after a baby, I left the house with him strapped to my chest.&lt;/p&gt;
&lt;p&gt;The event was very low key. Once I got there I unloaded James from my chest and was left to spend time with him with the occasional chat from other dads, offers of coffee and sausage sandwiches from the organizers.&lt;/p&gt;
&lt;p&gt;James loves staring at the ceiling and the Storehouse had lots of bright lights for him to stare at. He also got to say hello to one of the other babies he has met before at church and the mums group my wife goes to. But it was not all smooth sailing, James didn’t like me sitting down, so I had to stand up holding him close to keep him calm. If I tried to sit down and offer him his bottle he would get grumpy.&lt;/p&gt;
&lt;p&gt;I think it is great that there are events like this for parents. A lot of events are targeted at mothers which is as it should be as they have the majority of work to do, but dads need the odd event to support them as well. Hopefully me and James will be back for more adventures like this.&lt;/p&gt;
&lt;p&gt;One of the things I am looking forward to as James gets older is taking him to places and spending time 1 to 1 with him like I did with my father. I don’t know what his interests will be but whatever it is I want to be there to encourage him.&lt;/p&gt;</description></item><item><title>Backing up SQL databases to Azure</title><link>https://blog-dev.funkysi1701.com/posts/2015/backing-up-sql-databases-to-azure/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 15 Oct 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/backing-up-sql-databases-to-azure/</guid><category term="DevOps">DevOps</category><category term="Backups">Backups</category><category term="Azure">Azure</category><category term="SQL">SQL</category><description>&lt;p&gt;I recently read a blog post by &lt;a href="https://blog.sqlauthority.com/2015/10/06/sql-server-steps-to-backup-to-windows-azure-storage/" target="_blank" rel="noopener noreferrer"&gt;Pinal Dave&lt;/a&gt;
about how you can backup straight to Azure Storage. The procedure he described is only available for SQL Server 2014 or later.&lt;/p&gt;
&lt;p&gt;I won’t go into detail of this method as Pinal describes it better than I can, but the basic of it requires setting up credentials and then running a backup command that includes the URL of the storage container on Azure.&lt;/p&gt;
&lt;p&gt;Unfortunately I am running SQL Server 2005 so this process will not work for me but it did start me thinking of what ways there might be for me to use.&lt;/p&gt;
&lt;p&gt;The next thing I tried was &lt;a href="https://www.microsoft.com/en-us/download/details.aspx?id=40740&amp;amp;WT.mc_id=Blog_SQL_Announce_DI" target="_blank" rel="noopener noreferrer"&gt;Microsoft SQL Server Backup to Microsoft Azure Tool&lt;/a&gt;
. Unfortunately I did not get this tool to work correctly on my setup. However it sounds like a flexible tool that allows compression and encryption of your backup files. This tool redirects your backup files to your Azure Storage so even if I had got it to work correctly it would not have been an ideal solution as I want local copies of my backup files as well.&lt;/p&gt;
&lt;p&gt;After this I started to look at powershell again. Following on from my recent success with &lt;a href="https://www.funkysi1701.com/posts/2015/copying-settings-to-an-azure-website/" target="_blank" rel="noopener noreferrer"&gt;powershell&lt;/a&gt;
I know how to connect to my Azure account so all I needed to script was copying a file from my server to Azure.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Get-ChildItem *.bak -File -Recurse | Set-AzureStorageBlobContent -Container $DestContainer -Force
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This command gets all the backup files in a directory (the recurse switch looks in sub directories as well) and then pipes them to the Set-AzureStorageBlobContent command. This command uploads them to the storage container defined in $DestContainer. I have added the Force switch so that it will replace any files on Azure which have the same name.&lt;/p&gt;
&lt;p&gt;I have only been using this script for the last few days but so far it has been working well. Now if I completely loose all data from the office I can restore from any other location using the data saved on Azure. A great improvement to my disaster recovery policy.&lt;/p&gt;</description></item><item><title>The Hunted, TNG S3 E11 reviewed</title><link>https://blog-dev.funkysi1701.com/posts/2015/the-hunted-tng-s3-e11-the-battle-bridge/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 08 Oct 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/the-hunted-tng-s3-e11-the-battle-bridge/</guid><category term="StarTrek">StarTrek</category><category term="Podcast">Podcast</category><category term="Trekmate">Trekmate</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/10/Danar_captured.jpg"/><description>&lt;p&gt;My latest podcast can be found at &lt;a href="https://www.trekmate.org.uk/the-hunted-tng-s3-e11-the-battle-bridge/" target="_blank" rel="noopener noreferrer"&gt;https://www.trekmate.org.uk/the-hunted-tng-s3-e11-the-battle-bridge/&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;While the Enterprise-D is reviewing a seemingly idyllic planet’s application for Federation membership, an escaped prisoner leads its crew to discover an ugly secret: the government’s shameful treatment of its war veterans.&lt;/p&gt;
&lt;p&gt;Today James and Lou discuss (The Hunted) and what we think of it and much more as well as listener feedback with tonight’s guest host Simon.&lt;/p&gt;
&lt;p&gt;Credit: Main Title Theme (TV Edit) was arranged by &lt;a href="https://memory-alpha.fandom.com/wiki/Dennis_McCarthy" target="_blank" rel="noopener noreferrer"&gt;Dennis McCarthy&lt;/a&gt;
and composed by &lt;a href="https://memory-alpha.fandom.com/wiki/Jerry_Goldsmith" target="_blank" rel="noopener noreferrer"&gt;Jerry Goldsmith&lt;/a&gt;
and &lt;a href="https://memory-alpha.fandom.com/wiki/Alexander_Courage" target="_blank" rel="noopener noreferrer"&gt;Alexander Courage&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;You can download the MP3 version of this show by &lt;a href="https://media.blubrry.com/previouslyalpha/p/media.blubrry.com/trekmatesupplemental/p/media.blubrry.com/loutrekshow/p/media.techpodcasts.com/loutrekshow/p/www.trekmate.org.uk/battlebridge/tbb-s3e11-the_hunted.mp3" target="_blank" rel="noopener noreferrer"&gt;clicking here&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Copying settings to an Azure Website</title><link>https://blog-dev.funkysi1701.com/posts/2015/copying-settings-to-an-azure-website/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 01 Oct 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/copying-settings-to-an-azure-website/</guid><category term="Cloud">Cloud</category><category term="Azure">Azure</category><category term="DevOps">DevOps</category><category term="PowerShell">PowerShell</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/09/2275.app-1.png"/><description>&lt;p&gt;The Software as a Service (SaaS) website that I work on has been sold to lots of clients now. Which is great news.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Azure website app settings configuration screen" src="https://blog-dev.funkysi1701.com/images/2015/09/2275.app-1.png" loading="lazy"
width="550" height="240"
/&gt;
&lt;/p&gt;
&lt;p&gt;However the more Azure websites we have, the more websites we have to administer, especially if like us you take advantage of Traffic Manager which requires multiple website in different regions. Azure has some great options for making this administration easier. One job is adding all the settings onto the Azure portal, so far I have been manually adding these, but a quicker way is to use powershell.&lt;/p&gt;
&lt;h2 id="powershell"&gt;PowerShell&lt;a class="anchor ms-1" href="#powershell" aria-label="Permalink: PowerShell"&gt;&lt;i class="fas fa-link" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;PowerShell is everywhere these days. You can use it to control Servers, Active Directory and Exchange. So it is no surprise that you can use it to control Azure.&lt;/p&gt;
&lt;p&gt;Open a powershell window and run the following command.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Get-AzurePublishSettingsFile
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This command opens an IE window which you can login to Azure and download a file which contains settings that Azure can use. Save the *.publishsettings file and run the following command.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Import-AzurePublishSettingsFile &amp;#34;C:\MyPublishSettings\mysubscriptions.publishsettings&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This imports your Azure settings so that PowerShell can do clever things.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Select-AzureSubscription -Default &amp;#34;mysubscription&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This selects which of your Azure subscriptions to use. Now run the following to import settings into PowerShell.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$s = @{&amp;#34;DebugEmailAccount&amp;#34;=&amp;#34;test@example.com&amp;#34;;&amp;#34;SiteWarningBannerText&amp;#34;=&amp;#34;&amp;#34;}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And finally run the following to import this settings into the Azure website you specified.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Set-AzureWebsite azure-websitename -AppSettings $s
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sounds easy doesn’t it. Well it is. The hardest part is getting the settings in the correct format to be imported but this is only string manipulation.&lt;/p&gt;
&lt;p&gt;For my project I already have a build script which populates a settings.config file with all these settings, so I have just duplicated this to create a settings.config.importtoAzure file. Next time I have a website to create, I can create it on Azure and run the above script, pasting in the settings file that my build has already produced for me.&lt;/p&gt;
&lt;p&gt;This only scratches the surface of what you can do with Azure and PowerShell, hopefully I will do far more in the future.&lt;/p&gt;</description></item><item><title>Add internet connection resilience</title><link>https://blog-dev.funkysi1701.com/posts/2015/adding-internet-connection-resiliency/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 24 Sep 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/adding-internet-connection-resiliency/</guid><category term="Fibre">Fibre</category><category term="VPN">VPN</category><category term="Internet">Internet</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/internet-connection-drops-every-couple-minutes-cable-sxchu-internet1.jpg"/><description>&lt;p&gt;I have been asked to investigate adding a fail over internet connection to one of our offices.&lt;/p&gt;
&lt;p&gt;Currently this office is connected via a wireless link with our head office. Unfortunately we have recently experienced some poor performance with this connection, this has now been corrected but like all technology there is the chance of it failing in some way in the future and causing loss of business because of it.&lt;/p&gt;
&lt;h2 id="internet-connection"&gt;Internet Connection&lt;a class="anchor ms-1" href="#internet-connection" aria-label="Permalink: Internet Connection"&gt;&lt;i class="fas fa-link" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This is one of my first considerations. I need a reliable internet connection and there are a lot of options to consider, lets look at a few.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Internet Connection" src="https://blog-dev.funkysi1701.com/images/2015/internet-connection-drops-every-couple-minutes-cable-sxchu-internet1.jpg" loading="lazy"
width="2193" height="837"
/&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADSL Connection&lt;/strong&gt; This is your standard internet connection that most homes have, you get around 20Mb/s download but only 2Mb/s upload for a fairly low price per month. Speeds are dependent on area and the quality and distance from your exchange, some rural areas have speeds much lower than this. As this connection is for an office I want the best connection I can afford so would rather not go down this option if I can avoid it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FTTC (Fibre to the Cabinet)&lt;/strong&gt; This is what ISPs typically mean when they say superfast broadband. The cables that have been laid to your exchange cabinet have been upgraded to fibre optic cables which are capable of much faster transfer speeds (eg 40Mb/s download and 10Mb/s upload). This is my ideal choice, however BT Openreach are responsible for upgrading the country to these cables and they are not very quick about it. A few years back when investigating this FTTC had almost reached our office, but when I investigated today nothing seems to have progressed. Both FTTC and ADSL require a phone line into the office to run on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Leased Line&lt;/strong&gt; This is where your ISP connects a dedicated line to your office which provides you a much faster connection (upload and download speeds are the same) but this is very expensive. We have this for our head office as this is where our servers are located and the faster speed benefits the entire company. We do not want to do this for every branch office as it will be too expensive.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spur from a Leased Line&lt;/strong&gt; It could be possible to branch or spur off the leased line to our second office. This would be one leased line that terminates in two locations instead of one. However due to the distances involved I do not think this will be possible in my case and may end up costing as much as a second leased line.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ISP&lt;/strong&gt; As well as the type of connection I need to decide who will provide it. There are hundreds of ISPs out there but I like to use ISPs that have a good reputation or I have used in the past and have been happy with. I do not stick with one ISP for all my connections as I like to have some connections that continue to work should that ISP be experiencing problems. ISPs that I would recommend are YDS, Eclipse and PlusNet&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Money Off&lt;/strong&gt; While I am talking about internet connections the government has been offering a scheme offering businesses money off upgrading their connections to a superfast connection (either FTTC or Leased Line) More information can be found on your councils website, If you have an office in York have a look here for more details. We got £3000 off installation so worth investigating if you qualify.&lt;/p&gt;
&lt;h2 id="vpn-connection"&gt;VPN Connection&lt;a class="anchor ms-1" href="#vpn-connection" aria-label="Permalink: VPN Connection"&gt;&lt;i class="fas fa-link" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Offices require access to far more resources than just the internet. This particular office requires access to our email and database servers as a bare minimum. One way to access a remote offices network resources is through a VPN (Virtual Private Network) connection. So my next consideration is how to establish a VPN link between our offices.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Software&lt;/strong&gt; Windows Server includes RRAS (Routing and Remote Access Service) which you can use to configure a VPN connection. One important thing to note is that the server needs at least two network connections, one on the internet with a public IP and one on the internal network.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hardware&lt;/strong&gt; The more expensive routers often have settings that allow the configuration of a VPN connection.&lt;/p&gt;
&lt;p&gt;I have used both of these methods in the past. RRAS is a pain to work with but has evolved with the newer versions of windows server, so may not be as bad as I remember. Using a router to do VPN introduces its own set of problems and there is no guarantee of avoiding RRAS, you may still need it to authenticate the VPN provided by your router.&lt;/p&gt;
&lt;h2 id="multiple-connection-handling"&gt;Multiple Connection Handling&lt;a class="anchor ms-1" href="#multiple-connection-handling" aria-label="Permalink: Multiple Connection Handling"&gt;&lt;i class="fas fa-link" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Internet connectivity is being provided in two ways, the primary way is via a Wireless link and the second way is via one of the options above.&lt;/p&gt;
&lt;p&gt;There are lots of options to deal with multiple connections, do I want to load balance both connections and use them all the time, do I want to fail over onto the second connection only if the first one fails, or do I want it to be a manual process or switching over to the backup network if problems occur.&lt;/p&gt;
&lt;p&gt;As you can see there are lots of different technologies to consider before I can add resiliency to this office and I haven’t even started to think about if an additional server will be required.&lt;/p&gt;</description></item><item><title>Unmanaged Database Deployment</title><link>https://blog-dev.funkysi1701.com/posts/2015/unmanaged-database-deployment/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 10 Sep 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/unmanaged-database-deployment/</guid><category term="SQL">SQL</category><category term="Backups">Backups</category><category term="Deployment">Deployment</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/09/deploy.jpg"/><description>&lt;p&gt;For the past few months I have been deploying changes to my companies database every couple of weeks or so. Over a weekend when the database was not being used I would make a backup of the database, load up visual studio, deploy the database changes and copy a couple of front-end files.&lt;/p&gt;
&lt;p&gt;My weekends and evenings have recently become a bit more precious to me since the arrival of my son James. At suitable times to run the database upgrade I am either, asleep, about to fall asleep or be spending time with James.&lt;/p&gt;
&lt;p&gt;This entire deployment can be set to run at a time of my choosing using SQL Server Jobs, (not sure why I never thought of doing this before). I still need to check everything is working after it has run. The job can send me an email if it encounters any problems so I can still ensure the company has the minimum of problems but has more frequent changes.&lt;/p&gt;
&lt;h2 id="unmanaged-database-deployment"&gt;Unmanaged Database Deployment&lt;a class="anchor ms-1" href="#unmanaged-database-deployment" aria-label="Permalink: Unmanaged Database Deployment"&gt;&lt;i class="fas fa-link" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;OK so what do I need to do to set this up.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Database deployment workflow diagram" src="https://blog-dev.funkysi1701.com/images/2015/09/deploy.jpg" loading="lazy"
width="711" height="811"
/&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Test all your code changes are working correctly on a backup of the database and everything is committed to source control.&lt;/li&gt;
&lt;li&gt;Backup everything that is going to be changed so it can be rolled back in case of a problem. I don’t rely on the daily backup jobs for this, I do my own. Maybe I am a bit paranoid, or maybe I am just being cautious.&lt;/li&gt;
&lt;/ol&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;BACKUP &lt;span style="color:#66d9ef"&gt;DATABASE&lt;/span&gt; DBName &lt;span style="color:#66d9ef"&gt;TO&lt;/span&gt; DISK&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;E:\SQL Backups\Filename.bak&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I would include in the backup file name the date and time of the deployment for easy reference later on. For the front-end files these are backed up daily and only ever change during a deployment so I am going to rely on the day to day backups, plus they are in source control so in a worse case scenario I can look there.&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;From Visual Studio create a deployment script using the publish option and save as a file on your database server.&lt;/li&gt;
&lt;li&gt;Create a SQL Server Job and give it a descriptive name.&lt;/li&gt;
&lt;li&gt;In steps create a step called backup and enter the T-SQL code above. Set this to stop on failure and continue on success.&lt;/li&gt;
&lt;li&gt;Create a second step called upgrade of type operating system with the following code.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sqlcmd -S (local) -i &amp;#34;E:\SQL Backups\deploy_test.sql&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The -S parameter is the name of your SQL Server instance and the -i parameter is the path to the sql script you generated from Visual Studio above. Set this job to quit reporting success or failure.&lt;/p&gt;
&lt;ol start="7"&gt;
&lt;li&gt;In schedule create a date time you want the job to run, make sure this is a one time job as you don’t want it to try and run again possibly causing problems.&lt;/li&gt;
&lt;li&gt;In notifications I have set to email on completion, you can set it to email on failure only. I would prefer to know the outcome of the job regardless.&lt;/li&gt;
&lt;li&gt;Using SQL Server jobs to copy files over the network is possible but is not trivial to setup so I am going to use windows task scheduler for this.&lt;/li&gt;
&lt;li&gt;Create a job in task scheduler to copy all the ADPs or ADEs that have been changed. If the SQL job fails you will need to copy the old versions of these back but that is simple enough to do.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This process can be expanded to check code out of source control and do even more automated deployments but for now this is good enough for my purposes.&lt;/p&gt;</description></item><item><title>Baby Magic and Becoming a Father</title><link>https://blog-dev.funkysi1701.com/posts/2015/baby-magic-and-becoming-a-father/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 03 Sep 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/baby-magic-and-becoming-a-father/</guid><category term="Father">Father</category><category term="Baby">Baby</category><category term="Family">Family</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/07/james5.jpg"/><description>&lt;p&gt;I am pleased to announce the birth of James David Martin Foster weighing 9 lb 12 on 19th August 2015.&lt;/p&gt;
&lt;p&gt;Mother and Baby (and Father) are doing well.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Newborn baby James" src="https://blog-dev.funkysi1701.com/images/2015/07/james5.jpg" loading="lazy"
width="1080" height="810"
/&gt;
&lt;/p&gt;
&lt;p&gt;I am not a baby person, I hate children and I run a mile from other people’s babies.&lt;/p&gt;
&lt;p&gt;But James performed some magic on me and now I will do anything for him. If you have had children you probably know what I am talking about and if you haven’t you are probably like me 24 hours before James arrived.&lt;/p&gt;
&lt;p&gt;During the pregnancy I had been living in denial that I would become a father, despite the wife speaking about nothing else and our home filing with baby equipment. It was only minutes before I first saw my son that I changed.&lt;/p&gt;
&lt;p&gt;Due to James’s large size, the birth wasn’t easy. After about an hour of pushing the midwife called in a team of doctors and nurses to help and I think it was at this point that it started to hit me. I am not an emotional man, if anything I tend to repress my feelings but I completely and utterly failed to do that on this occasion. By the time the baby had been placed on my wife’s chest tears of joy were streaming down my face and this continued for some time. Moments after birth James had a tight grip on my finger. His tiny hands were like miniature versions of my own hands.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Baby James holding finger" src="https://blog-dev.funkysi1701.com/images/2015/08/jameshand.jpg" loading="lazy"
width="562" height="1000"
/&gt;
&lt;/p&gt;
&lt;p&gt;I have been asked what it felt like holding James in my arms for the first time, this happened on the following day. I am not sure if I can put it into words, but a few adjectives come to mind, amazing, great, fantastic, humbling. James depends on me (and his mother) for everything and his existence has put a new spin on everything I do. I want to be there for him, help him learn stuff, provide for him and love him.&lt;/p&gt;
&lt;p&gt;I have been working very hard recently, spending my free time writing this blog, learning stuff and doing other work. The reasons for this hard work are now clear, I work so I can provide for James and so I can spend my free time with him.&lt;/p&gt;
&lt;p&gt;Before James arrived I had it in my head that his mother would do the majority of the caring for him. This is not going to happen now that I have met James. I want to cuddle him, change his nappies, dress him, hold his hand, take him to school, watch TV with him, stroke his head when he is ill, tell him about my life experiences, introduce him to wine, tell him about girls, help him move home, etc.&lt;/p&gt;
&lt;p&gt;I am not saying being a parent is going to be easy. I am pretty clueless about what is in store for us, but already I am worrying if he is OK, trying to calm him down when he is upset and being woken in the early hours.&lt;/p&gt;
&lt;p&gt;Anyway only time will tell if I continue being this positive about fatherhood, but so far I am loving it. Normal blog posts will hopefully resume over the next few weeks (or when I have time).&lt;/p&gt;</description></item><item><title>Due Dates</title><link>https://blog-dev.funkysi1701.com/posts/2015/due-dates/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Mon, 17 Aug 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/due-dates/</guid><category term="DueDate">DueDate</category><category term="Baby">Baby</category><category term="Estimate">Estimate</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/08/928f90bcd221f78a30f18541a5ca2e7f.jpg"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="Expectant parents awaiting a baby&amp;rsquo;s due date" src="https://blog-dev.funkysi1701.com/images/2015/08/928f90bcd221f78a30f18541a5ca2e7f.jpg" loading="lazy"
width="404" height="337"
/&gt;
As I write this I have less than 2 days until the due date for the birth of my first child.&lt;/p&gt;
&lt;p&gt;Its a very exciting time, but it is also infuriating waiting for it to arrive. Even in the 21st century science can not predict with any accuracy when a baby is going to arrive and we just have to wait for mother nature to do its thing.&lt;/p&gt;
&lt;p&gt;I feel like I am stuck in limbo at the moment I have lots of work to do, lots of development changes to do on the databases, but I also know that at a moments notice I need to drop what I am doing and try and be a father.&lt;/p&gt;
&lt;p&gt;Due dates for babies is based on average pregnancies lasting 40 weeks, but there is no such thing as an average pregnancy. But to keep this blog post on topic I somehow need to compare due dates for pregnancy with software development.&lt;/p&gt;
&lt;p&gt;In software development we often get asked for estimates on when a particular development task will be finished. Estimates in software development are very difficult to make accurate as there are so many variables that you do not know the answer to until you start getting stuck into doing the work. One technique is to try and split the work down into small steps and estimate how long each small step will take and then add them all together. But even this technique still has a large margin of error.&lt;/p&gt;
&lt;p&gt;What would it be like if when management asked we gave an estimate similar to what pregnant women receive? Instead of a deadline when all work has to be finished by, you have a date when there is a 50% chance of the work being finished.&lt;/p&gt;
&lt;p&gt;I think management would have a difficult time dealing with this amount of uncertainty, I certainly am waiting for this baby to arrive.&lt;/p&gt;</description></item><item><title>How complex are my stored procs?</title><link>https://blog-dev.funkysi1701.com/posts/2015/how-complex-are-my-stored-procedures/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 13 Aug 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/how-complex-are-my-stored-procedures/</guid><category term="Complexity">Complexity</category><category term="SQL">SQL</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/08/complexity.jpg"/><description>&lt;p&gt;Recently me and my development team have been looking at performance and how to improve it.&lt;/p&gt;
&lt;p&gt;One area of improvement we have identified is with our stored procedures, which we plan to rewrite. But how do we identify which are the easiest to rewrite and which are the hardest?&lt;/p&gt;
&lt;p&gt;My first thought was maybe to count the number of times each keyword is used and rank them somehow. eg each JOIN gets 5, OUTER APPLY gets 20, each term in WHERE gets 1, and then combine that with the length of the query and how many parameters.&lt;/p&gt;
&lt;p&gt;However doing a bit of googling I came across the following &lt;a href="https://aalamrangi.wordpress.com/2012/12/24/calculate-tsql-stored-procedure-complexity" target="_blank" rel="noopener noreferrer"&gt;blog&lt;/a&gt;
and &lt;code&gt;https://gallery.technet.microsoft.com/Calculate-TSQL-Stored-831b683a&lt;/code&gt;. This script analyses the stored procedures in terms of number of lines of code, number of parameters and number of dependencies.&lt;/p&gt;
&lt;p&gt;The complexity is divided into SIMPLE, MEDIUM and COMPLEX.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;WHEN NumberOfLines * NumberOfDependencies * NumberOfParameters &amp;lt; 5000 THEN ‘Simple’
WHEN NumberOfLines * NumberOfDependencies * NumberOfParameters &amp;lt; 10000 THEN ‘Medium’
ELSE ‘Complex’
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
&lt;img class="img-fluid" alt="SQL stored procedure complexity report screenshot" src="https://blog-dev.funkysi1701.com/images/2015/08/reportscreenshot1.png" loading="lazy"
width="674" height="235"
/&gt;
&lt;/p&gt;
&lt;p&gt;This gives a fairly good estimate of which stored procedures are the most complex and which would probably take the longest time to rewrite.&lt;/p&gt;</description></item><item><title>ICYMI What does it mean?</title><link>https://blog-dev.funkysi1701.com/posts/2015/icymi-what-does-it-mean/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Mon, 10 Aug 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/icymi-what-does-it-mean/</guid><category term="ICYMI">ICYMI</category><category term="Learning">Learning</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/08/in-case-you-missed-it-small.jpg"/><description>&lt;p&gt;For a while now I have seen ICYMI splattered around the internet. I had no idea what it meant so just ignored it but I have finally had enough and I googled for a definition and I now know what it means.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ICYMI – In Case You Missed It
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
&lt;img class="img-fluid" alt="ICYMI acronym explained as In Case You Missed It" src="https://blog-dev.funkysi1701.com/images/2015/08/in-case-you-missed-it-small.jpg" loading="lazy"
width="400" height="400"
/&gt;
ICYMI is often used on social media sites to indicate articles that you might have missed.&lt;/p&gt;
&lt;p&gt;Software Development is littered with acronyms and technical terms that I don’t always know the meaning of.&lt;/p&gt;
&lt;p&gt;When reading it is easy to ignore them and try and understand the rest of the article. However there are loads of resources out there that can explain technical terms in a wide variety of different ways.&lt;/p&gt;
&lt;p&gt;I have tried to explain a few different terms and concepts on this &lt;a href="https://www.funkysi1701.com/" target="_blank" rel="noopener noreferrer"&gt;blog&lt;/a&gt;
. In the process of writing them I often do a bit of research and read a variety of different definitions, some confuse the heck out of me, while others make me go ahh that makes sense now.&lt;/p&gt;
&lt;p&gt;When reading to learn, don’t be afraid to dig deeper and understand it all, don’t read the same terms again and again not understanding them like I did with ICYMI.&lt;/p&gt;</description></item><item><title>Common git commands</title><link>https://blog-dev.funkysi1701.com/posts/2015/common-git-commands/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 06 Aug 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/common-git-commands/</guid><category term="Git">Git</category><category term="SourceControl">SourceControl</category><description>&lt;p&gt;I use git as my source control system. Here are some of the most common git commands in no particular order.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check Out a git Repository &lt;strong&gt;git clone /path/to/repository&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Add files to commit &lt;strong&gt;git add &lt;filename&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Commit files to &lt;strong&gt;git git commit -m “Commit message”&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Push changes to server &lt;strong&gt;git push origin master&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Show status &lt;strong&gt;git status&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Create new branch &lt;strong&gt;git checkout -b &lt;branchname&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Switch to a branch &lt;strong&gt;git checkout &lt;branchname&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Get remote changes &lt;strong&gt;git pull&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Merge a different branch into the current one &lt;strong&gt;git merge &lt;branchname&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;View merge conflicts &lt;strong&gt;git diff&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Temporarily stash uncommitted changes &lt;strong&gt;git stash&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Undo a commit &lt;strong&gt;git reset –hard &lt;commit&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Show details about a commit &lt;strong&gt;git show &lt;commit&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Show version history of current branch &lt;strong&gt;git log&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Gets all remote branches &lt;strong&gt;git fetch origin&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most of the time I use the &lt;a href="https://sourceforge.net/projects/gitextensions/" target="_blank" rel="noopener noreferrer"&gt;git extensions&lt;/a&gt;
tools to do my git work, but there are times when only the command line will do.&lt;/p&gt;</description></item><item><title>Volunteering for a Technical Team</title><link>https://blog-dev.funkysi1701.com/posts/2015/volunteering-for-a-technical-team/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Mon, 03 Aug 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/volunteering-for-a-technical-team/</guid><category term="EasyWorship">EasyWorship</category><category term="Church">Church</category><category term="Volunteers">Volunteers</category><category term="Projection">Projection</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/20150802_113719.jpg"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="Church worship projection desk with screens and equipment" src="https://blog-dev.funkysi1701.com/images/20150802_113719.jpg" loading="lazy"
width="5312" height="2988"
/&gt;
For the past few years I have volunteered on the technical team at my local church &lt;a href="https://www.belfrey.org/" target="_blank" rel="noopener noreferrer"&gt;St Michael le Belfrey&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;For the church to function well it requires volunteers in all sorts of roles, people to welcome visitors, people to pray, people to play music, people to look after children and many other roles.&lt;/p&gt;
&lt;p&gt;My natural ability lies more with technology than with people so when I decided that I wanted to get more involved it was the technical team that I volunteered for. The technical team is split into two main parts, the PA team which concerns itself with ensuring everyone can hear everything OK and the Projection team which concerns itself with everything that gets projected. I have no knowledge about what sounds good and what doesn’t so it was the projection team that I joined and have been involved with.&lt;/p&gt;
&lt;p&gt;The church has three projectors, one big one and two slightly smaller ones for the side aisles, and a PC located at the back of church which is what the projectionist uses to control what gets projected. There are many things that get projected, lyrics to songs, PowerPoint presentations and the occasional video and to make things easy one piece of software is used to control all of this &lt;a href="https://easyworship.com/" target="_blank" rel="noopener noreferrer"&gt;EasyWorship&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;EasyWorship contains a huge database of song lyrics, so you can quickly select what ever is being sung and project the lyrics on screen. It also allows the addition of PowerPoint files, image or video files and even a web page and they can be projected. EasyWorship allows different things to be queued up in order and that order can be saved as a schedule.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Projection team volunteers at St Michael le Belfrey church" src="https://blog-dev.funkysi1701.com/images/2015/CFMwY_UUgAAc2k2.jpg" loading="lazy"
width="600" height="450"
/&gt;
&lt;/p&gt;
&lt;p&gt;The projectionist’s job is to follow along with the order of service and project things onto screen at the right time. Simple! No not really. The worship leader will skip songs, play songs in a different order, add new songs, videos will fail to play, easy worship will freeze up or crash or the liturgy that the vicar wants isn’t in the EasyWorship database.&lt;/p&gt;
&lt;p&gt;You need to be on your toes as a projectionist but over the years I have become a good projectionist and have really enjoyed my time doing this. You can see me having a laugh with the Head of Music and Worship on the right.&lt;/p&gt;
&lt;p&gt;More recently I have taken on a bigger role for the projection team. I have been coordinating the rota for the volunteers on the projection team. This has given me new challenges, but it has been great to work closely with the Technical Manager and more recently the Head of Music and Worship and get to know the whole team better. The biggest problem that the team has is insufficient volunteers, it had this problem when I joined the team and it has this problem today. If you are reading this consider if this is something you could get involved with? The team has some really hard working people who do an excellent job each week, just wish we had a few more to ease everyone’s work load.&lt;/p&gt;
&lt;p&gt;I am taking a break from the projection team as my wife is due to give birth to my first child in the next few days. I have had a great time, I have worked with some great people and for the most part I will miss volunteering. There are of course things that have not been great, volunteers that have left the team, changes at the church, and many early mornings when I would rather still be in bed but I am glad that I have been involved.&lt;/p&gt;</description></item><item><title>Upper Pylon 2 x09: The Passenger</title><link>https://blog-dev.funkysi1701.com/posts/2015/upper-pylon-2-1-x-09-the-passenger/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 30 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/upper-pylon-2-1-x-09-the-passenger/</guid><category term="StarTrek">StarTrek</category><category term="Podcast">Podcast</category><category term="Trekmate">Trekmate</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/07/Bashir-Choked.jpg"/><description>&lt;p&gt;I recorded another podcast the other week; it can be found at &lt;a href="https://www.trekmate.org.uk/upper-pylon-2-1-x-09-the-passenger/" target="_blank" rel="noopener noreferrer"&gt;https://www.trekmate.org.uk/upper-pylon-2-1-x-09-the-passenger/&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Doctor Bashir being choked in DS9 episode The Passenger" src="https://blog-dev.funkysi1701.com/images/2015/07/Bashir-Choked.jpg" loading="lazy"
width="638" height="480"
/&gt;
&lt;/p&gt;
&lt;p&gt;This week on Upper Pylon 2, we are joined by our first UK guest, Simon (aka &lt;a href="https://twitter.com/funkysi1701" target="_blank" rel="noopener noreferrer"&gt;funkysi1701&lt;/a&gt;
) as we take a look at the Bashir-centric “mystery” episode, “The Passenger.”&lt;/p&gt;
&lt;p&gt;When a former prisioner, Rao Vantika (a name you’ll hear COUNTLESS times throughout the episode) is killed, his pursuer believes that the late murderer is not really dead, and continues her investigation at DS9 while an important shipment is scheduled to arrive. Will Vantika reappear, and if so, who will he appear as? Well, if you’ve seen the opening of the episode, it really isn’t all that hard to deduce. But join the UP2 crew as we dissect this little caper.&lt;/p&gt;
&lt;p&gt;As always, be sure to leave us your feedback about the episode!&lt;/p&gt;</description></item><item><title>10 facts about Windows 10</title><link>https://blog-dev.funkysi1701.com/posts/2015/10-facts-about-windows-10/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Wed, 29 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/10-facts-about-windows-10/</guid><category term="Microsoft">Microsoft</category><category term="Windows10">Windows10</category><category term="OperatingSystem">OperatingSystem</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/07/Windows-10_Product-Family.jpg"/><description>&lt;p&gt;Today Microsoft release Windows 10 so what else can I talk about? I like many technology people are very excited today. This version of window is the first that Microsoft have release for free.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Windows 10 product family across devices" src="https://blog-dev.funkysi1701.com/images/2015/07/Windows-10_Product-Family.jpg" loading="lazy"
width="1920" height="1080"
/&gt;
&lt;/p&gt;
&lt;p&gt;10 You heard that correct Windows 10 is &lt;strong&gt;free&lt;/strong&gt;. If you upgrade your device to windows 10 before 29th July 2016 it is free and will continue working on that device forever.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Upgrade to Windows 10 within the first year and it is yours free, forever.
No subscriptions, no additional costs.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;9 As with any upgrade always backup your computer and any important files before you do anything. Microsoft and any IT expert will tell you this. For a great guide to upgrading see Scott Hansleman’s &lt;a href="https://www.hanselman.com/blog/getting-started-with-windows-10" target="_blank" rel="noopener noreferrer"&gt;blog&lt;/a&gt;
. I have upgraded my laptop without any problems but there will always be exceptions so take extra care.&lt;/p&gt;
&lt;p&gt;8 Windows 10 is the &lt;strong&gt;LAST&lt;/strong&gt; version of windows. I don’t know what this means but I can take a guess.&lt;/p&gt;
&lt;p&gt;Typically Microsoft has created a new version of windows every few years. With every new version there has come headaches and problems as people try to make software and hardware work with the next version. Microsoft is instead going to try and release updates and patches to the operating system to keep things up to date.&lt;/p&gt;
&lt;p&gt;However I can see that only working for so long. Eventually Microsoft will make something new but it is unlikely to be called Windows. Maybe it will be something hosted in the Cloud, as they have a really strong presence with Azure which is only going to grow as time goes on.&lt;/p&gt;
&lt;p&gt;7 Windows 10 is available in 7 different flavours.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows 10 Home – equivalent to the Home editions we have had since XP. This version is designed for your typical consumer.&lt;/li&gt;
&lt;li&gt;Windows 10 Mobile – this version is designed to run on phones and tablets. Unlike previous Phone versions, everything you can find on the desktop OS should be available on the phone (but optimised for the smaller screens)&lt;/li&gt;
&lt;li&gt;Windows 10 Pro – this is the version I will be testing with my work PCs. It is designed for small businesses and allows domain joining.&lt;/li&gt;
&lt;li&gt;Windows 10 Enterprise – this version is only available via Volume Licensing so not easily available to the typical user but is aimed at larger businesses.&lt;/li&gt;
&lt;li&gt;Windows 10 Education – another version that is only available via Volume Licensing but targeted at schools and universities.&lt;/li&gt;
&lt;li&gt;Windows 10 Mobile Enterprise – this version is for mobile and tablets in the business world. Standard policies can be applied to all your employees mobile devices.&lt;/li&gt;
&lt;li&gt;Windows 10 IoT Core – this is an interesting version designed to run on hardware and Internet of Things (IoT) devices. I would quite like to play with this version on my Raspberry Pi&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;6 Windows 10 introduces a brand new web browser called Edge. For years web developers have hated Internet Explorer, for its lack of support for the latest web standards. Internet Explorer 6 caused many users to migrate away to browsers like firefox and later Chrome and despite Microsoft’s best effort with the later versions people have not moved back. Edge is an attempt at a fresh start.&lt;/p&gt;
&lt;p&gt;5 In 2011 Apple introduced the personal assistant Siri, well now Microsoft are bringing us &lt;strong&gt;Cortana&lt;/strong&gt; the windows equivalent. With Cortana you can ask your computer to do anything, set reminders, search the internet, answer questions, anything. With advanced voice recognition you can speak as well as type your questions. Cortana is now part of Windows 10.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Windows 10 desktop screenshot with Start menu" src="https://blog-dev.funkysi1701.com/images/2015/05/win10.jpg" loading="lazy"
width="888" height="537"
/&gt;
&lt;/p&gt;
&lt;p&gt;4 Windows 10 brings back the start menu. The start menu you have always used to access programs works the same but features of the windows 8 start screen have been incorporated into it.&lt;/p&gt;
&lt;p&gt;3 Windows 10 is more &lt;strong&gt;secure&lt;/strong&gt;. Security patches are frequently released for all operating systems, but windows 10 has been designed with security in mind. For businesses there are options to completely lock down your users environment only allowing ‘white listed’ programs to run.&lt;/p&gt;
&lt;p&gt;2 &lt;strong&gt;Continuum&lt;/strong&gt; is one of the most revolutionary things about Windows 10. Continuum is the notion that one computing experience is continued regardless of the device used or the location. Continuum will automatically adjust your screen to make the best use of its size. Tablets and phones have the tiled view and start screen, if you connect a keyboard and monitor it will behave like a full blown PC. This is mind bending, that a phone running windows 10 can do as much as your laptop.&lt;/p&gt;
&lt;p&gt;1 Today I am off to a Windows 10 launch event where I expect many of these features will be discussed and most likely many more.&lt;/p&gt;</description></item><item><title>Writing better Git commit messages</title><link>https://blog-dev.funkysi1701.com/posts/2015/writing-better-git-commit-messages/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sat, 25 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/writing-better-git-commit-messages/</guid><category term="Git">Git</category><category term="SourceControl">SourceControl</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/07/git_commit.png"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="XKCD comic about Git commit messages" src="https://blog-dev.funkysi1701.com/images/2015/07/git_commit.png" loading="lazy"
width="439" height="250"
/&gt;
&lt;/p&gt;
&lt;p&gt;I always use source control for my coding changes, however some of my commit messages leave something to be desired.&lt;/p&gt;
&lt;p&gt;I always try to write a commit message but I often think that the change themselves should be enough to indicate what I did. I also don’t need to include who made the change or the time and date and that gets included automatically.&lt;/p&gt;
&lt;p&gt;Here are some tips I have found that may help me in the future.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Ask yourself why you are making this change. The Who, When and What are already being covered so it is only the why that needs including in the commit message.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If your commit breaks something or causes side affects or a new dependency this should be included in the commit message. If your commit breaks functionality, consider if you really need to commit it yet, maybe only commit once fixed?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If your commit includes a long list of changes consider if the commit needs splitting into several commits. It is easy to only commit one or two files write a specific commit message and then commit the rest of the changes separately.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Consider including a subject for larger commits. The following comes from the git manual.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Though not required, it’s a good idea to begin the commit message with a single short
(less than 50 character) line summarizing the change, followed by a blank line and then
a more thorough description. The text up to the first blank line in a commit message
is treated as the commit title, and that title is used throughout Git.
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="5"&gt;
&lt;li&gt;If you use a subject follow the following conventions:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Limit of 50 characters&lt;/li&gt;
&lt;li&gt;Start with a capital letter&lt;/li&gt;
&lt;li&gt;Do not end with a full stop&lt;/li&gt;
&lt;li&gt;Use the imperative mood i.e. write as if issuing a command&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>My love/hate with Microsoft Access</title><link>https://blog-dev.funkysi1701.com/posts/2015/microsoft-access/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Fri, 24 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/microsoft-access/</guid><category term="Database">Database</category><category term="Access">Access</category><category term="SQL">SQL</category><category term="VBA">VBA</category><category term="MicrosoftOffice">MicrosoftOffice</category><description>&lt;p&gt;For historical reasons I use Microsoft Access as the front-end for all my line of business databases.&lt;/p&gt;
&lt;p&gt;Access allows you to create an ADP file that can connect to your SQL Server database. However Office has dropped support for this, so the last version of office that I can use is Office 2010.&lt;/p&gt;
&lt;p&gt;Before I start hating on Access there are some good things about the platform. Users with very little knowledge can create a database fairly quickly. Development time is also fairly low as it doesn’t take long to create a new form, and add a few buttons which open different reports.&lt;/p&gt;
&lt;p&gt;For the last 5 years or so I have built a range of different forms in Access, (and even if I do say so myself), I have got quite good at creating forms that users can be more productive with. Access has the concept of a subform which is a form embedded in a form, each form can be connected to a different query and can be connected to each other so it is relatively easy to create something quite powerful.&lt;/p&gt;
&lt;p&gt;Access report are an easy way to create professional looking reports that can be sent out to clients, or used by management and they also have the concept of subreports, (same as subforms but embedded in a report), this means you don’t have to write one query to pull back every piece of data that shows up in a report.&lt;/p&gt;
&lt;p&gt;VBA or Visual Basic for Access allows you easily do things programmatically, like run something if something is selected or a button is clicked. This is not the easiest programming language to work with, however once you have used it for a while you get used to its quirks. My favourite function is IIF, the syntax is fairly simple IIF(expr, truepart, falsepart), if expr evaluates to true the truepart is executed (executed can be as simple as displaying certain text in certain conditions), if it is false the falsepart is executed, and you can also chain them together which I have done to produce something very complex looking.&lt;/p&gt;
&lt;p&gt;Now for the negative side of things. Access creates a binary ADP file, binary files can not be version controlled in git or subversion. This is a big problem as I want to keep track of every change I make. It also means that branching or working with others on big projects is also difficult.&lt;/p&gt;
&lt;p&gt;One work around I have found to this problem is &lt;a href="https://accesssvn.codeplex.com/" target="_blank" rel="noopener noreferrer"&gt;AccessSVN&lt;/a&gt;
. This program takes an ADP and creates text files of every form and report. It also can create an ADP from these files as well, however I have had varying success with this feature so I prefer to just create the text files if possible. What I do after I have made a change to the ADP is to run AccessSVN, create text files and commit these to source control. You can then see what controls have been changed or added. It also helps with bugs as I have found that sometimes while testing access will apply a filter to a form, which will break things if deployed, which is very annoying.&lt;/p&gt;
&lt;p&gt;Access can only do what access was designed to do. There are some advanced features that we would like to add to our databases. Things like sending emails or uploading reports to a website. This is not Access fault as it was never designed to be able to do such things but I am often asked about what is possible.&lt;/p&gt;
&lt;p&gt;End of support for Office 2010 is approaching and I have plans to stop using Access but until then I need to keep supporting our existing front ends.&lt;/p&gt;</description></item><item><title>Seven signs you are a bad programmer</title><link>https://blog-dev.funkysi1701.com/posts/2015/7-warning-signs-that-you-are-a-bad-programmer/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 23 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/7-warning-signs-that-you-are-a-bad-programmer/</guid><category term="BadProgrammer">BadProgrammer</category><category term="Plan">Plan</category><category term="SourceControl">SourceControl</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/07/you_are_coding_it_wrong.png"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="You are coding it wrong" src="https://blog-dev.funkysi1701.com/images/2015/07/you_are_coding_it_wrong.png" loading="lazy"
width="359" height="232"
/&gt;
&lt;/p&gt;
&lt;p&gt;Am I a good programmer or a bad programmer?&lt;/p&gt;
&lt;p&gt;Here are 7 signs that might mean you are more towards the bad end of the scale.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1: You fail to plan before you start coding&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am very guilty of this, I love to jump into the code before thinking. But I am slowly starting to see the advantages of sketching a few things out before I write any code.&lt;/p&gt;
&lt;p&gt;Most of my coding recently has been SQL based and I am starting to like sketching out table designs. I have also started to sketch out the UI before I start coding. I am not saying that you need to plan every single line of code, but a little bit of planning can go a long way.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2: You fail to use version control&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have blogged about using version control in the past but it really is a very useful technology. It not only keeps track of every file in your solution and stores its entire history, but you can separate different versions into branches and see who changed what and when (and if the commit message is detailed enough why).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3: You use bad variable names&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Whats wrong with variable1 and variable2 as variable names? Variables should be named after what they do or what they contain, but it is very easy to start copy and pasting them and before you know it you have a variable1 and variable2 situation. Remember that Visual Studio has some powerful refactoring tools so relatively easy to get them back in order.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;4: You repeat your code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’ve been reading Pragmatic Programmer and one of their first tips was DRY – Don’t Repeat Yourself. They go to extremes with nothing being repeated anywhere in your code, but I don’t think you need to go too far, you can be reasonable. If you have the same code repeated four times, then creating a function for this code will dramatically improve your code.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;5: You struggle to understand your own code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Why did I do it this way? I feel like I am always trying to remember the reasons I chose to code the way I did previously. Part of the reason for this is that I am constantly learning at the moment, but there is more that I can do to help myself understand in the future.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;6: You are selfish and don’t share&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am not selfish, if I learn something really cool I have to tell someone. I like writing stuff on here to share with the world. I am thinking of news ways to train my staff.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;7: You work on multiple projects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yes Guilty as charged with this one. I have multiple projects that I am working on at work, I also have a fair few personal projects that I would like to work on. Not sure I completely agree that multiple projects equals bad programmer.&lt;/p&gt;</description></item><item><title>Things to know before database work</title><link>https://blog-dev.funkysi1701.com/posts/2015/things-to-know-before-working-on-your-databasethings-to-know-before-working-on-your-database/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Mon, 20 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/things-to-know-before-working-on-your-databasethings-to-know-before-working-on-your-database/</guid><category term="Backups">Backups</category><category term="SQL">SQL</category><category term="DisasterRecovery">DisasterRecovery</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/07/uf010206.jpg"/><description>&lt;p&gt;I recently saw this blog &lt;a href="https://www.brentozar.com/archive/2015/07/questions-to-ask-before-you-touch-a-database-server/" target="_blank" rel="noopener noreferrer"&gt;post&lt;/a&gt;
by &lt;a href="https://www.brentozar.com/team/brent-ozar/" target="_blank" rel="noopener noreferrer"&gt;Brent Ozar&lt;/a&gt;
that I thought I might discuss.&lt;/p&gt;
&lt;p&gt;Brent listed 13 questions to ask about a database before you start working with it. I am going to go through these 13 questions and expand on them based on my experiences.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Is this database in production now?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I think it should go without saying that the first thing you should find out is if your database is in production. If its not in production you can do what you like and no one will notice.
I know what databases are in production and which aren’t where I work so I can answer this one.&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;&lt;strong&gt;If this goes down, what apps go down with it?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What apps are running on what databases is a good second question. I have at least one database which has multiple front end apps. At first glance you would think that that these two apps are not connected but they are, I need to be careful with both of these apps to make sure they don’t break each other.
I know what apps run off what databases.&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;&lt;strong&gt;When those apps go down, is there potential for loss of life or money?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is a difficult question so I will split it into two. Loss of life, my databases don’t control life support machines or nuclear weapons so my first instinct would be to say no. However it is not that straightforward, what if your app allowed contractors to know the location of dangers inside a property they were working in. Once your app goes down, they could have an accident due to lack of information.
Loss of money, this one is more straightforward. Time is money in the business world so any time that your app is down and your employees are not able to work is a loss of money. If your database is linked to an eCommerce site, the loss of money could be extremely high.
I know what affect downtime will have on my users and business.&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li&gt;&lt;strong&gt;How sensitive are these apps to temporary slowdowns?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Similar to the previous question, a slowdown can be as serious as downtime for some applications.
Luckily most of my apps are internal only so are not seriously affected by slowness.&lt;/p&gt;
&lt;ol start="5"&gt;
&lt;li&gt;&lt;strong&gt;When was the last successful backup?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I manage the backup schedule for all my databases so I know exactly when each one was last backed up. When ever I do anything to a production database I will run a backup so I can roll back in case of problems. As part of developing changes I run my changes on a backup of the data. I can script all my changes and repeatedly run them against a backup until I am sure no problems will occur.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Illustration of SQL Server database backup and restore" src="https://blog-dev.funkysi1701.com/images/2015/07/uf010206.jpg" loading="lazy"
width="233" height="238"
/&gt;
&lt;/p&gt;
&lt;ol start="6"&gt;
&lt;li&gt;&lt;strong&gt;When was the last successful restore test?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;More important than a backup is testing restoring your databases. If you can’t restore data then your backup is useless. I try to test restoring my backups at least weekly so I know that I can rely on my backups.&lt;/p&gt;
&lt;ol start="7"&gt;
&lt;li&gt;&lt;strong&gt;Is everyone okay losing data back to the last successful backup?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If disaster strikes you could loose all data between now and the time of your last backup. But all is not lost transactional backups can be scheduled throughout the day, in my case the most data we could loose is 15 minutes. This could be configured to be more or less frequent depending on your data. But remember the previous question and make sure you test a restore of your transactional backups, if you can’t restore from them you will be forced to restore from the last successful backup.&lt;/p&gt;
&lt;ol start="8"&gt;
&lt;li&gt;&lt;strong&gt;When was the last successful clean corruption test?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Corruption can be a killer if it is not found quickly. If you need to restore to the last backup before corruption occurred this could result in a significant amount of data loss. To check for corruption you need to run DBCC regularly.&lt;/p&gt;
&lt;ol start="9"&gt;
&lt;li&gt;&lt;strong&gt;Do we have a development or staging environment where I can test my changes first?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If the answer to this is no, then your next job is to setup a development or staging area. Having a development environment makes development a lot easier and I don’t think I could manage to do all the changes I have done recently without one.&lt;/p&gt;
&lt;ol start="10"&gt;
&lt;li&gt;&lt;strong&gt;Is there any documentation for why the server was configured this way?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I really wish we had more documentation about configurations as it would make finding out why thing were setup the way they are. So unfortunately the answer to this question is No.&lt;/p&gt;
&lt;ol start="11"&gt;
&lt;li&gt;&lt;strong&gt;What changes am I not allowed to make?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Depending on what your app does, where it is hosted, how quick the changes are needed and many other factors will all restrict what changes you can make. Historical decisions on the database can also affect what changes can be made, if the database has been structured in a certain way, it may be very difficult to restructure it in a more efficient way.&lt;/p&gt;
&lt;ol start="12"&gt;
&lt;li&gt;&lt;strong&gt;Who can test that my changes fixed the problem?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is an interesting question, from experience the best people to speak to about problems with the database are the users. If they can show you how to reproduce a problem, you should be able to fix this problem, after that you can probably get them to verify that it has been fixed.&lt;/p&gt;
&lt;ol start="13"&gt;
&lt;li&gt;&lt;strong&gt;Who can test that the apps still work as designed, and that my changes didn’t have unintended side effects?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is an extension of the previous question. The main users of your app should be your first port of call to find out if the app works as expected. However exploring side affects and undesired features is something that I would test as part of the development process. It has taken a while but I have constructed a detailed check list that can be used for testing so I know that most bugs can be found before release.&lt;/p&gt;</description></item><item><title>New Horizons Pluto Spacecraft</title><link>https://blog-dev.funkysi1701.com/posts/2015/new-horizons-pluto-spacecraft/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Tue, 14 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/new-horizons-pluto-spacecraft/</guid><category term="Pluto">Pluto</category><category term="Hardware">Hardware</category><category term="Spacecraft">Spacecraft</category><category term="Software">Software</category><category term="Technology">Technology</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/07/84270464_p_lorri_fullframe_color.png"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="Colour photograph of Pluto taken by New Horizons" src="https://blog-dev.funkysi1701.com/images/2015/07/84270464_p_lorri_fullframe_color.png" loading="lazy"
width="976" height="630"
/&gt;
&lt;/p&gt;
&lt;p&gt;To explore Strange New Worlds, well today the NASA spacecraft New Horizons has been doing just that. This is the most detailed photograph yet of the furthest planet we have ever explored, Pluto.&lt;/p&gt;
&lt;p&gt;New Horizons was launched on 19th January 2006. It has been travelling for 3463 days (9.5 years).&lt;/p&gt;
&lt;p&gt;In 2006 we were still using Windows XP and Office 2003. In 2006 I wasn’t even working in IT. As a software developer it is hard to imagine writing software that won’t be used for another 9.5 years.&lt;/p&gt;
&lt;p&gt;The spacecraft carries two computer systems: the Command and Data Handling system and the Guidance and Control processor. Each of the two systems is duplicated for redundancy, for a total of four computers. The processor used for its flight computers is the Mongoose-V, a 12 MHz radiation-hardened version of the MIPS R3000 CPU. Multiple clocks and timing routines are implemented in hardware and software to help prevent faults and downtime. To conserve heat and mass, spacecraft and instrument electronics are housed together in IEMs (integrated electronics modules). There are two redundant IEMs. Including other functions such as instrument and radio electronics, each IEM contains 9 boards. The processor distributes operating commands to each subsystem, collects and processes instrument data, and sequences information sent back to Earth. It also runs the advanced “autonomy” algorithms that allow the spacecraft to check the status of each system and, if necessary, correct any problems, switch to backup systems or contact operators on Earth for help.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Diagram of the New Horizons spacecraft structure" src="https://blog-dev.funkysi1701.com/images/2015/07/Mission-Spacecraft-structure.jpg" loading="lazy"
width="720" height="523"
/&gt;
&lt;/p&gt;
&lt;p&gt;For data storage, New Horizons carries two low-power solid-state recorders (one backup) that can hold up to 8 gigabytes each. The main processor collects, compresses, reformats, sorts and stores science and housekeeping (telemetry) data on the recorder – similar to a flash memory card for a digital camera – for transmission to Earth through the telecommunications subsystem.&lt;/p&gt;
&lt;p&gt;Communication with the spacecraft is via X band. The craft had a communication rate of 38 kbit/s at Jupiter; at Pluto’s distance, a rate of approximately 1000 bit/s. To put this speed into context, the size of the image at the top of this page is 649kb and would take over 86 minutes to travel from Pluto to Earth, (I am sure the actual image was much larger and took even longer to reach us.) Besides the low bandwidth, Pluto’s distance also causes a latency of about 4.5 hours (one-way). The 70 m (230 ft) NASA Deep Space Network (DSN) dishes are used to relay commands once it is beyond Jupiter. It will take 16 months to send the full set of Pluto encounter science data back to Earth.&lt;/p&gt;
&lt;p&gt;Most software encounters a problem from time to time, but the software on board this spacecraft has to keep running for almost a decade. Due to the distances involved its not possible to upload any code tweaks. Any commands that are sent to the spacecraft will take 4.5 hours to even get there so there needs to be a huge amount of autonomy and redundancy to cope with such a massive journey.&lt;/p&gt;
&lt;p&gt;I can’t even imagine how you would begin to write the software to run such a craft. I don’t think I have written any code that is as old as is running on the New Horizons craft, and if I had I would guess the quality would be quite poor certainly not good enough to work non stop for a decade.&lt;/p&gt;
&lt;p&gt;There are some incredibly clever people out there who have been involved in this project. Congratulations team you have every right on being proud as the data starts to trickle back to earth.&lt;/p&gt;</description></item><item><title>How to upgrade to Windows 10</title><link>https://blog-dev.funkysi1701.com/posts/2015/how-to-upgrade-to-windows-10/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sat, 11 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/how-to-upgrade-to-windows-10/</guid><category term="ScottHansleman">ScottHansleman</category><category term="Free">Free</category><category term="SystemAdministration">SystemAdministration</category><category term="Windows10">Windows10</category><category term="Upgrade">Upgrade</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;Microsoft are releasing a new operating system on July 29th called Windows 10.&lt;/p&gt;
&lt;p&gt;If you have questions about Windows 10 watch this video by &lt;a href="https://www.hanselman.com/blog/windows-10-is-comingheres-what-to-tell-nontechnical-parent" target="_blank" rel="noopener noreferrer"&gt;Scott Hansleman&lt;/a&gt;
. He explains how to upgrade from Windows 7 and 8 to Windows 10 and what to expect after you upgrade.&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/nuCpdlMFvUY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;My advice to everyone is that you backup your devices before you upgrade, this is good practice before you install any software or updates.&lt;/p&gt;
&lt;p&gt;Microsoft are offering Windows 10 for free for a whole year, so don’t panic. Take your time, backup all your important files and when you are ready install Windows 10. Nothing is going to stop working after July 29th if you don’t have the latest operating system on your machine.&lt;/p&gt;
&lt;p&gt;I hope this helps answer some of your questions about what to do at the end of the month. If not feel free to write a comment or contact me with your questions.&lt;/p&gt;</description></item><item><title>Why do we call them bugs?</title><link>https://blog-dev.funkysi1701.com/posts/2015/why-do-we-call-them-bugs/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Tue, 07 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/why-do-we-call-them-bugs/</guid><category term="Debugging">Debugging</category><category term="Bugs">Bugs</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/07/11666093_10153470803062792_4914668365512645054_n.jpg"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="Insect resting outdoors" src="https://blog-dev.funkysi1701.com/images/2015/07/11666093_10153470803062792_4914668365512645054_n.jpg" loading="lazy"
width="960" height="540"
/&gt;
&lt;/p&gt;
&lt;p&gt;On my way home from the office I spotted this little chap. In my expert opinion it is a &amp;ldquo;bug&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;This particular &amp;ldquo;bug&amp;rdquo; is harmlessly sitting outside, but have you ever wondered why computer problems are often named after this little chap (and his friends)?&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Moth taped in Grace Hopper&amp;rsquo;s 1947 computer logbook" src="https://blog-dev.funkysi1701.com/images/2015/07/H96566k.jpg" loading="lazy"
width="740" height="583"
/&gt;
&lt;/p&gt;
&lt;p&gt;The first recorded bug report was in 1947 when Grace Hopper found a moth between the relays of a Harvard Mark II, this moth was then tapped in the log book as evidence.&lt;/p&gt;
&lt;p&gt;Since then the process of removing bugs has been called &amp;ldquo;debugging&amp;rdquo;. However bugs had existed in electrical devices before this.&lt;/p&gt;
&lt;p&gt;In the early days of telegraphy, there were two types of keyers. The older “manual” keyers which required the operator to code the dots and dashes. And the newer, semi-automatic keyers that would send a string of dots automatically. These semi-automatic keyers were called &amp;ldquo;bugs&amp;rdquo;. One of the most common brands of these keyers, the Vibroplex, used a graphic of a beetle.&lt;/p&gt;
&lt;p&gt;Luckily the bugs I deal with don’t have legs or wings and are just errors in computer code. When I debug code I need to look at the inner workings of the code, looking for problems, most often it is a typo or piece of logic that doesn’t match up. But the relationship between computer bugs and living bugs does continue, the bug tracking software bugzilla uses a cartoon bug as its logo.&lt;/p&gt;</description></item><item><title>Agile Software Development</title><link>https://blog-dev.funkysi1701.com/posts/2015/agile-software-development/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sat, 04 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/agile-software-development/</guid><category term="Agile">Agile</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/07/Agile-Marketing-Series-What-is-Agile-Marketing.png"/><description>&lt;p&gt;I have heard the term &lt;strong&gt;Agile Software Development&lt;/strong&gt; quite a bit, but lets see if we can define it and see if I do any of the processes involved with it.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Agile Software Development" src="https://blog-dev.funkysi1701.com/images/2015/07/Agile-Marketing-Series-What-is-Agile-Marketing.png" loading="lazy"
width="579" height="290"
/&gt;
&lt;/p&gt;
&lt;p&gt;The dictionary defines ‘Agile’ as mentally quick, or nimble, or quick in movement.&lt;/p&gt;
&lt;p&gt;In 2001 The Manifesto for Agile Software Development first introduced the term agile. The manifesto is based on 12 principles.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Customer satisfaction by early and continuous delivery of useful software&lt;/li&gt;
&lt;li&gt;Welcome changing requirements, even late in development&lt;/li&gt;
&lt;li&gt;Working software is delivered frequently (weeks rather than months)&lt;/li&gt;
&lt;li&gt;Close, daily cooperation between business people and developers&lt;/li&gt;
&lt;li&gt;Projects are built around motivated individuals, who should be trusted&lt;/li&gt;
&lt;li&gt;Face-to-face conversation is the best form of communication (co-location)&lt;/li&gt;
&lt;li&gt;Working software is the principal measure of progress&lt;/li&gt;
&lt;li&gt;Sustainable development, able to maintain a constant pace&lt;/li&gt;
&lt;li&gt;Continuous attention to technical excellence and good design&lt;/li&gt;
&lt;li&gt;Simplicity—the art of maximizing the amount of work not done—is essential&lt;/li&gt;
&lt;li&gt;Self-organizing teams&lt;/li&gt;
&lt;li&gt;Regular adaptation to changing circumstance&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lets go through this list one by one and examine what I understand of it and how I might have used it in the past.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Customer satisfaction by early and continuous delivery of useful software&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My boss bombards me with hundreds of changes that she wants straight away, I keep her reasonably happy by giving her regular small improvements. Yesterday I released some changes, and two weeks before that I released another chunk, on Monday I will find out that I haven’t included feature Y, so in another couple of weeks feature Y will be delivered. This is my understanding of delivering continuous improvements to my software.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Welcome changing requirements, even late in development&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lets ignore the word welcome, as changing requirements are really annoying. I designed a system to track how far through a 5 step process you were, after I deployed that change it was discovered that the process was actually 18 steps. Annoying as this was, my design allowed the easy addition of these extra stages.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Working software is delivered frequently&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Yes, I do this, see my comments above. If you make a single change and then deploy it, bug fixes are easy as most of it is still in your head. If you spend 6 months making 1000 changes, it will take you extra time to remind yourself what you did and why.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Close, daily cooperation between business people and developers&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I don’t do this daily but I regularly demo my changes to other departments and directors so I can gather feedback and further revise my changes. Before I start work I always try to understand what is needed and how they want it to work and try and figure out what they need not what they want (different things)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Projects are built around motivated individuals, who should be trusted&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Not sure I understand this one. There are people that use my projects that I always go to, to find out how it is being used. There are also people that are not interested in change, it is always far more difficult to convince them of the value of what I am working on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Face-to-face conversation is the best form of communication&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When I was an IT support guy, I used to like going up to someone’s desk and seeing them experience the problem, it could usually be fixed in a couple of clicks. However when you had a call from a remote office and had to talk through trying different things it could take hours to fix. The same can be said of deploying a new feature, if you talk to your users and explain what has been added they are far more likely to use it, than if you send them an email listing what you have done.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Working software is the principal measure of progress&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If a Manager can click two buttons to find out how busy their department is, when before they only had out of date spreadsheets, this is a clear measure of progress. Any time spent on code that never gets deployed doesn’t improve anything, its only when that code starts being used has progress been made.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sustainable development, able to maintain a constant pace&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I am pretty sure I don’t do this. I work harder at some times than others. Sometimes there are other projects or other demands on my time and so development on a particular project will decrease and there are times when I eat, sleep, dream about a project.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Continuous attention to technical excellence and good design&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I do strive towards good design and with each deployment aim to improve the quality of code in production. However my limited knowledge means that I don’t always produce the best code but it is improving. If I look at some work I have done in the past, I would definitely do some of that differently if working on it now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Simplicity—the art of maximizing the amount of work not done—is essential&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When I first read this one, it made no sense to me. However I believe it can be restated as minimising the amount of work done. Recently I was writing SQL code and I had about 4 or 5 different queries to produce the report that was needed. Every time the requirements changed it was a long slog through each of these queries to update them. In the end I had to rewrite this whole process using one query, it took some time but was simpler and is now easier and quicker to maintain. The simpler the code is the easier and quicker it is to maintain, and you have less work to do.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Self-organizing teams&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Not sure this applies to me as I work in a team of one. I do try and keep myself organised but not sure if that qualifies as self-organizing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Regular adaptation to changing circumstance&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Very similar to the second point about changing requirements but I think also includes changes required due to problems you encounter along the way. A simple example of this is when you encounter a problem, there are lots of different ways to solve it. If you can’t solve something in the database layer, then it might be solved with a script or in the user interface.&lt;/p&gt;
&lt;p&gt;So in summary I am not only a developer but very close to being an Agile developer as well, assuming these 12 points are what is needed to be ‘Agile’&lt;/p&gt;</description></item><item><title>Developer Personality Test</title><link>https://blog-dev.funkysi1701.com/posts/2015/developer-personality-test/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 02 Jul 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/developer-personality-test/</guid><category term="Developer">Developer</category><category term="Personaility">Personaility</category><category term="Myers-Briggs">Myers-Briggs</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/07/19etmksoopu2ojpg.jpg"/><description>&lt;p&gt;I was sent a &lt;a href="https://www.surveygizmo.com/s3/1883619/Developer-Personality-Test" target="_blank" rel="noopener noreferrer"&gt;link&lt;/a&gt;
to a developer personality test earlier. The test aims to give you a look at your developer personality similar to the famous Myers-Briggs personality test. A shorter version of this test can be found &lt;a href="https://www.surveygizmo.com/s3/1900187/Short-Developer-Personality-Test" target="_blank" rel="noopener noreferrer"&gt;here&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Myers-Briggs tells you if you are &lt;strong&gt;Introvert (I)&lt;/strong&gt; or &lt;strong&gt;Extrovert (E)&lt;/strong&gt;, &lt;strong&gt;Feeling (F)&lt;/strong&gt; or &lt;strong&gt;Thinking (T)&lt;/strong&gt;, &lt;strong&gt;Perception (P)&lt;/strong&gt; or &lt;strong&gt;Judging (J)&lt;/strong&gt; and &lt;strong&gt;Sensing (S)&lt;/strong&gt; or &lt;strong&gt;Intuition (N)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This test however tells you if you are:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Independent vs Collaborative&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract vs Low-Level&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Frontier vs Conservative&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Generalist vs Specialist&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Idealist vs Pragmatist&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Developer personality test trait spectrum diagram" src="https://blog-dev.funkysi1701.com/images/2015/07/19etmksoopu2ojpg.jpg" loading="lazy"
width="1196" height="1280"
/&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Independent:&lt;/strong&gt;
You prefer to spend most of your time working in an isolated environment. You rarely want to collaborate because you have a better chance of solving problems on your own. If you do have to collaborate on the direction of a project, you dislike it when you have to defend your position or when others try to muddy your plans for the project. It’s better to have one strong vision for a project from the lead programmer on that project. Having a large team or allowing others to have significant control over the project risks communication errors, a muddied code base, and inefficiencies. If one developer has a firm grasp on the entire codebase, they’ll be much better at fixing and improving it quickly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Collaborative:&lt;/strong&gt;
Good code doesn’t happen in a vacuum. You need a team to keep you energized and on your toes so that you’re constantly improving the project code using the entire team’s varied experience and strengths. You like to talk frequently with colleagues and discuss ideas so that you can learn from others and spark ideas. It doesn’t matter what their experience level is, you can always learn something by including everyone. A solo coder can’t possibly code a large software project with the speed and quality that a team can.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract:&lt;/strong&gt;
You prefer to write in languages and frameworks that simplify development as much as possible and use as few characters and lines of code as possible. The trajectory of software development has always been toward making life easier and error-free. Programming has always been about adding more abstraction layers to simplify tasks, so why not trust the technology on your layer and don’t worry about handling the lower layers?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Low-Level:&lt;/strong&gt;
The more abstraction tools and high-level languages we build, the further we get from understanding and controlling the deeper components in our programs. This means lower performance and endless bug searches. Developers today need to have a stronger understanding of compilers, memory management, pointer arithmetic, and other low-level topics.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Frontiers:&lt;/strong&gt;
You like to work at the cutting edge. Using too many old languages and technologies bores you, and it severely hinders your software’s potential to keep outdated technologies in it for too long. Developers need keep their ears to the ground for new technologies and new versions of tools that they already use. Even if the community and maturity of the project isn’t at a level that most enterprises would consider “safe,” you’re willing to be an early adopter if you believe the community and the technology has momentum. Development technology is changing faster every day, and we need to constantly be adopting new tools and methods to keep up.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conservative:&lt;/strong&gt;
It seems like every 10 years we forget all the problems we solved in the previous decade and start to build ‘new’ tools that solve the same problems, even though there is a perfectly good solution that has existed for years. Enterprises have it right when they make conservative decisions about their technology stack. Why would you hang your business on a technology with only a few years of maturity in just a handful of production use cases? Technologies like PHP, Java, and SQL have been mainstays of the development industry for years, and it takes a lot of time for new technologies to make it into that maturity tier.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Generalist:&lt;/strong&gt;
You like to be known as a “Jack of all Trades” and a reference for others on your team. You jump at every chance to enhance your skills in a wide variety technology topics, not just the ones that apply to your day to day work. You don’t always know when it might be useful to have these extra skills, but when the time comes, you are ready. If more developers took the time to learn other skills outside of the ones relevant to their project, they’d work more seamlessly with the rest of their organization because they’d have more empathy and understanding of the challenges that their colleagues face.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Specialist:&lt;/strong&gt;
If you’re a Jack of all Trades, you’re a master of none. Mastery in one or two areas is what makes you valuable. What’s the point of learning skills for other jobs you don’t have and can’t control? When you plan for a project or do technical research, it’s always focused on something you’re working on. You don’t get side-tracked. If you learn a new skill, it’s because the project requires that you do it. Most or all of your hobby projects are also building your mastery of the skills you use at your job.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Idealist:&lt;/strong&gt;
You believe in the power of well-defined processes. It’s crucial to an organization’s success that they create and follow appropriate and effective processes for building software. Trying to improvise or play it by ear invites the possibility of workflow errors that can decrease the quality of the software or even cause major product failures. Planning is also extremely important to you. You like to research all of the things you will need to know before starting a project. It’s important to find out the best architecture for your software beforehand, and then strictly implement that architecture with objective best practices. The more planning and scaffolding you do in the beginning, the less overall work you will have to do to complete the software.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pragmatist:&lt;/strong&gt;
Speed is your best weapon in a competitive industry, and to quickly prototype and build new products, you need to have a flexible, pragmatic process. You don’t have a few months to plan your projects, you need to just start coding and a good path for the project will reveal itself. Great products are made through frequent feedback and releases, so why shouldn’t your plan be just as adaptable? Your plan should be adapted to changes in the software, and your expertise should be adapted to the project. You shouldn’t spend your precious time studying a problem that you’re not certain to run into while coding your projects. Trying to build test coverage for every possible scenario and having long meetings throughout the process are a waste of time and distract you from doing more productive work.&lt;/p&gt;
&lt;p&gt;I am not going to admit where I came in this test as being a newbie developer my answers are very subjective and I don’t believe I have enough experience to really say where I lie on many of these issues.&lt;/p&gt;
&lt;p&gt;I only have experience of working on my own and in very small teams, while I think working in a bigger team would have benefits I have no experience of this.&lt;/p&gt;</description></item><item><title>Sudoku Challenge</title><link>https://blog-dev.funkysi1701.com/posts/2015/sudoku-challenge/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Fri, 26 Jun 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/sudoku-challenge/</guid><category term="Dojo">Dojo</category><category term="C-Sharp">C-Sharp</category><category term="LeedsSharp">LeedsSharp</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/06/2000px-Sudoku-by-L2G-20050714.svg_.png"/><description>&lt;p&gt;Last night I went to a Code Dojo at Leeds Sharp (the coding user group I have started going to). A Code Dojo is a programming challenge that people work on usually in pairs.&lt;/p&gt;
&lt;p&gt;The challenge that we worked on was to code a solution to the puzzle game Sudoku. The code we worked with can be found on github.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Partially completed Sudoku puzzle grid" src="https://blog-dev.funkysi1701.com/images/2015/06/2000px-Sudoku-by-L2G-20050714.svg_.png" loading="lazy"
width="2000" height="2000"
/&gt;
&lt;/p&gt;
&lt;p&gt;I don’t know much about Sudoku but the game goes like this. You start with a 9×9 grid, and the idea is to fill in all the missing numbers.&lt;/p&gt;
&lt;p&gt;Each Row can only use each digit 1 to 9 once, each column can only use each digit 1 to 9 once and each subgrid (3×3) can only use each digit once.&lt;/p&gt;
&lt;p&gt;I worked with Richard one of the Leeds Sharp organisers, we started by trying to loop through each empty cell and insert values in a brute force attack, but this approach didn’t get us very far (literally as the application crashed!)&lt;/p&gt;
&lt;p&gt;The approach that we needed to use was to loop through calculating possible values.&lt;/p&gt;
&lt;p&gt;It was only when I sat down at this dojo did I realise how much I still have to learn, but while talking with Richard about different approaches and different coding structures I started to learn.&lt;/p&gt;</description></item><item><title>Fathers Day</title><link>https://blog-dev.funkysi1701.com/posts/2015/fathers-day/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sun, 21 Jun 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/fathers-day/</guid><category term="Father">Father</category><category term="BASIC">BASIC</category><category term="1980s">1980s</category><category term="Lynx">Lynx</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/06/PRODPIC-2926.jpg"/><description>&lt;p&gt;In the UK today is Fathers Day. Happy Fathers Day Dad!&lt;/p&gt;
&lt;p&gt;I thought I might talk about how he encouraged my interest in technology, especially as in about 8 weeks I will become a parent and will have someone to encourage and inspire.&lt;/p&gt;
&lt;p&gt;I am going to sound really old but when I was born there was no internet, no mobile phones and computers more often appeared in sci-fi than in your home.&lt;/p&gt;
&lt;p&gt;The first computer I remember us owning was a Lynx. A quick google reveals there were a number of different models, I have no idea what we had but here is what I found.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Camputers Lynx home computer" src="https://blog-dev.funkysi1701.com/images/2015/06/PRODPIC-2926.jpg" loading="lazy"
width="500" height="308"
/&gt;
&lt;/p&gt;
&lt;p&gt;In March 1983 the Lynx 48K was released, in September this was upgraded to 96K. In December 1983 a new Lynx was released with 128K. To put these numbers in perspective on my desktop is an image file that is 123K! The CPU in this computer was rated at between 4 and 6Mhz. (Modern PCs have CPUs around the 1.5Ghz or 1500Mhz)&lt;/p&gt;
&lt;p&gt;The Lynx we had, didn’t have a disk drive or a mouse. Programs were loaded from audio tapes (Audio tape was a form of data storage that came before CDs where data was stored on magnetic tape, most often used for music) The tapes we had would often get stuck and data wouldn’t load. The answer to this was to fast-forward/rewind the tape or hit the tape on your leg. For some reason this is a memory I still have of my dad hitting a tape on his leg to get a game or something else to load on the lynx. We also had a joystick for playing some of the games. I believe we also had an early thermal printer.&lt;/p&gt;
&lt;p&gt;My memory of the Lynx is in black and white. The reason for this is that the Lynx was connected to an old black and white TV, it was a special treat when we connected the main colour TV to the Lynx.&lt;/p&gt;
&lt;p&gt;We had a wide range of games for the Lynx, I can remember Jet Set Willy, and Diggerman. But there were also programs which my father had created. The Lynx had a form of BASIC where you can write you own programs and my father spent many hours writing programs for me and my sister. (We actually never realized this at the time)&lt;/p&gt;
&lt;p&gt;With that as my introduction to computers is it any wonder that I do what I do now? Now what should I do for my child to encourage them in a similar way?&lt;/p&gt;
&lt;p&gt;As a family we never owned a games console. Not sure if this was a financial or moral choice but it is something I will have to think about. I want my child to be knowledgeable about computers and able to compete in the competitive job market, but I also want them to know about science and nature and to enjoy their childhood. Lots of technology choices to make over the next few years.&lt;/p&gt;</description></item><item><title>50th Blog Post</title><link>https://blog-dev.funkysi1701.com/posts/2015/50th-blog-post/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Wed, 17 Jun 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/50th-blog-post/</guid><category term="Blog">Blog</category><category term="50">50</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/06/top-50-2012.jpg"/><description>&lt;p&gt;WOW! I have reached the milestone of 50 blog posts.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Top 50" src="https://blog-dev.funkysi1701.com/images/2015/06/top-50-2012.jpg" loading="lazy"
width="1500" height="1125"
/&gt;
&lt;/p&gt;
&lt;p&gt;I have tried to blog at least every week and I have learnt a lot. I have talked about my work, technology, things I have learnt, things I want to do and many more things. It is too soon to tell if my blog is going to be a success, but I think I am starting to find my ‘blog’ voice and I intend to keep on blogging.&lt;/p&gt;
&lt;p&gt;To celebrate here are some of my highlights.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.funkysi1701.com/posts/2015/user-groups-and-f/" target="_blank" rel="noopener noreferrer"&gt;User Groups and F#&lt;/a&gt;
By far my most popular blog post. I talk about my first visit to the Leeds Sharp group and an introduction to the F# language.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.funkysi1701.com/posts/2015/monitoring-screens/" target="_blank" rel="noopener noreferrer"&gt;Monitoring Screens&lt;/a&gt;
I talk about creating a big screen of vital monitoring information.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.funkysi1701.com/posts/2015/ten-forward-episode-135-anti-firbob-is-back-or-simons-desert-island-trek/" target="_blank" rel="noopener noreferrer"&gt;Ten Forward Episode #135&lt;/a&gt;
– Simon’s Desert Island Trek My appearance on the Ten Forward Podcast&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.funkysi1701.com/posts/2015/building-something-with-a-raspberry-pi/" target="_blank" rel="noopener noreferrer"&gt;Building something with a Raspberry Pi&lt;/a&gt;
I blog about getting a Raspberry Pi to play around with&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.funkysi1701.com/posts/2015/javascript-progress/" target="_blank" rel="noopener noreferrer"&gt;Javascript progress&lt;/a&gt;
About learning javascript&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.funkysi1701.com/posts/2015/the-raspberry-pi-adventure-starts/" target="_blank" rel="noopener noreferrer"&gt;The Raspberry Pi Adventure Starts&lt;/a&gt;
I get a Raspberry Pi and start building something with it&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.funkysi1701.com/posts/2015/weakest-database-design/" target="_blank" rel="noopener noreferrer"&gt;Weakest Database Design&lt;/a&gt;
I talk about database design&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.funkysi1701.com/posts/2015/trying-windows-10/" target="_blank" rel="noopener noreferrer"&gt;Trying Windows 10&lt;/a&gt;
I talk about my experience with the latest windows operating system&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.funkysi1701.com/posts/2015/laziness/" target="_blank" rel="noopener noreferrer"&gt;Laziness&lt;/a&gt;
I talk about the extreme ways IT Professionals go to be more lazy&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Requirement Gathering</title><link>https://blog-dev.funkysi1701.com/posts/2015/requirement-gathering/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Tue, 16 Jun 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/requirement-gathering/</guid><category term="Database">Database</category><category term="Requirements">Requirements</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/06/Requirements-Gathering-User-Experience-UX-Project-Cartoon.jpg"/><description>&lt;p&gt;&lt;strong&gt;Why is it so hard to find out exactly what is needed when designing changes to a system?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Cartoon illustrating requirements gathering problems in software projects" src="https://blog-dev.funkysi1701.com/images/2015/06/Requirements-Gathering-User-Experience-UX-Project-Cartoon.jpg" loading="lazy"
width="728" height="543"
/&gt;
&lt;/p&gt;
&lt;p&gt;When adding functionality to databases I always like to dive in and start adding extra columns and new tables. But at some point you need to find out what is needed.&lt;/p&gt;
&lt;p&gt;The process of gathering requirements that I have followed goes something like this.&lt;/p&gt;
&lt;p&gt;My boss tells me that we need a system to solve x problem. This is the broad overview of what is needed.&lt;/p&gt;
&lt;p&gt;Next I need to find out specifically how the system is being used and what things need adding. Discussing the specifics with my boss often results in a high level of confusion. I always try to speak with the users that will be using this system on a daily basis. If I create something that isn’t liked people will avoid using it and it won’t solve the original problem so I always think it is very important to speak to the day to day user.&lt;/p&gt;
&lt;p&gt;After I have an idea of what is needed, I build something. Once I have something that sort of works, I will try and demonstrate this to the user to gather feedback. This feedback is invaluable as it will often reveal if I am going in the right direction and reveal missing requirements that need to be incorporated in the finished solution.&lt;/p&gt;
&lt;p&gt;I will often repeat the last stage a few times especially if there is a big change needed, once I am happy I will demonstrate to my boss before deploying the solution.&lt;/p&gt;
&lt;p&gt;After deployment there is often a period of fixing issues and gathering feedback before I can consider the project finished.&lt;/p&gt;
&lt;p&gt;This whole process is very time consuming as there is a period of changes being tweaked back and forth following feedback. A better way is to gather a detailed specification of what is needed and work towards delivering that.&lt;/p&gt;</description></item><item><title>Runaway SQL Log growth</title><link>https://blog-dev.funkysi1701.com/posts/2015/runaway-sql-log-growth/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Fri, 12 Jun 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/runaway-sql-log-growth/</guid><category term="ITAdmin">ITAdmin</category><category term="Backups">Backups</category><category term="SQL">SQL</category><description>&lt;p&gt;Today is my day off, but I wake up and have a quick look at &lt;a href="https://www.funkysi1701.com/posts/2014/i-love-nagios/" target="_blank" rel="noopener noreferrer"&gt;nagios&lt;/a&gt;
to see if there is anything I need to worry about. Yes there is, SQL Server has run out of disk space on its data disk.&lt;/p&gt;
&lt;p&gt;I race downstairs and VPN onto the server to find out what has happened. One of my monitoring databases has had runaway log growth and is over 80Gb is size.&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;BACKUP LOG [DBName] &lt;span style="color:#66d9ef"&gt;WITH&lt;/span&gt; TRUNCATE_ONLY
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DBCC SHRINKFILE(&lt;span style="color:#e6db74"&gt;&amp;#39;DBName_Log&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Free disk space is back to normal, all users will be unaware of the problem and everything is fine again. I create a daily job that runs the above code, that way it should stay a manageable size.&lt;/p&gt;
&lt;p&gt;Next I need to find out why it happened and to prevent it happening again in the future (Next time I have a day off I want to lie in!)&lt;/p&gt;
&lt;p&gt;I check the SQL logs and notice&lt;/p&gt;
&lt;p&gt;BACKUP LOG WITH TRUNCATE_ONLY or WITH NO_LOG is deprecated. The simple recovery model should be used to automatically truncate the transaction log.&lt;/p&gt;
&lt;p&gt;Then I remember what I have done to cause this issue. I have a separate disk for my backup files and earlier in the week I noticed this disk was filling up, a large amount of space was taken up by transactional backup files. I thought I don’t need to backup the transactions for this non critical database, I will just do a full backup at the start of everyday.&lt;/p&gt;
&lt;p&gt;However what I forgot is that a transactional backup keeps the log file under control, once this backup was stopped the log file grew uncontrollably. The answer, change the database from FULL mode to SIMPLE.
&lt;img class="img-fluid" alt="image002" src="https://blog-dev.funkysi1701.com/images/2015/image002-300x270.png" loading="lazy"
width="300" height="270"
/&gt;
&lt;/p&gt;
&lt;p&gt;This is my understanding of how backups work in FULL mode. A full backup is done at the start of the day which resets the log file, then changes in the database are stored in the log file, this is backed up into a transactional backup and the log file gets reset. If you have regular transactional backups throughout the day the log file doesn’t grow too much, however with no transactional backups your log file contains an entire days worth of changes and so for a monitoring database this could be quite large.&lt;/p&gt;
&lt;p&gt;In SIMPLE mode you can’t do transactional backups and the log doesn’t grow uncontrollably. This shouldn’t be used for production databases as if there is a problem you could loose data.&lt;/p&gt;</description></item><item><title>Don’t Live with Broken Windows</title><link>https://blog-dev.funkysi1701.com/posts/2015/pragmatic-programmer-broken-windows/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Mon, 08 Jun 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/pragmatic-programmer-broken-windows/</guid><category term="Windows">Windows</category><category term="Books">Books</category><category term="Tips">Tips</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/06/tpp.jpg"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="Building with a broken window illustrating broken windows theory" src="https://blog-dev.funkysi1701.com/images/2015/06/1-ucIHdOcnByPsF5eX0j_mhg.jpeg" loading="lazy"
width="2000" height="1360"
/&gt;
&lt;/p&gt;
&lt;p&gt;Last night I started reading &lt;a href="https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master-ebook/dp/B003GCTQAE/ref=mt_kindle?_encoding=UTF8&amp;amp;me=" target="_blank" rel="noopener noreferrer"&gt;The Pragmatic Programmer by Andrew Hunt and David Thomas&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;One practical tip that immediately jumped out at me as useful in my quest to be a better programmer: &lt;strong&gt;Don’t live with broken windows&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Cover of The Pragmatic Programmer book" src="https://blog-dev.funkysi1701.com/images/2015/06/tpp.jpg" loading="lazy"
width="2200" height="2800"
/&gt;
&lt;/p&gt;
&lt;p&gt;The theory goes like this: an abandoned building with a single broken window attracts additional broken windows, graffiti, litter, and a sense that no one cares about this building. However this can be avoided if the authorities repair the window straight away.&lt;/p&gt;
&lt;p&gt;You can apply this theory to other walks of life, too, like keeping your kitchen clean. After you’ve spent hours cleaning your kitchen to make it spotless, you make an effort to keep it clean. But if your kitchen is piled high with dirty pans, leaving out an extra mug or dirty bowl isn’t going to feel like it makes any difference.&lt;/p&gt;
&lt;p&gt;The software engineering implications of this theory are that if you take care to keep your code tidy, it will stay that way. If you know something is broken but never make time to fix it, other bugs and issues will creep into it, until it’s a mess that no one dares touch.&lt;/p&gt;
&lt;p&gt;We have a website that is starting to get a bit buggy. It’s not broken, but it’s been a while since anyone has given it any love. Bits of its functionality are starting to get flaky.&lt;/p&gt;
&lt;p&gt;Being the only programmer in my place of work, I seldom have time to think about this website — let alone sit down and maintain it.&lt;/p&gt;
&lt;p&gt;But the number of related support calls have been gradually increasing — more windows are breaking — and I’m spending more and more time patching its bugs to keep people happy.&lt;/p&gt;
&lt;p&gt;Know that I’m aware of the broken windows principle, I know exactly what to do: sit down with this website for a couple of days and find out what exactly is causing these issues.&lt;/p&gt;
&lt;p&gt;Then I’ll rebuild the flaky bits, replace the proverbial cracked glass, and wash down a few walls while I’m at it.&lt;/p&gt;</description></item><item><title>I’m a developer now</title><link>https://blog-dev.funkysi1701.com/posts/2015/im-a-developer-now/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Wed, 03 Jun 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/im-a-developer-now/</guid><category term="Self-Belief">Self-Belief</category><description>&lt;p&gt;For a while now I have been at the door of describing myself as a developer, but I think I have finally gone through that door.&lt;/p&gt;
&lt;p&gt;It is all a state of mind, its not about having x amount of knowledge, its just about saying “Yeah, I’m a developer now.”&lt;/p&gt;
&lt;p&gt;One thing that pushed me through that door, was an application form for something in which I ticked the software developer box instead of the IT Manager box.&lt;/p&gt;
&lt;p&gt;The other thing is some of the tasks I worked on recently. One of our databases has a Web Service running that supplies a website with some figures, and we found out recently that this needed changing due to a change on this website. Our contractor quoted us to do this work, I think it was 8 hours. My boss said why don’t you have a go at doing it instead and save us money.&lt;/p&gt;
&lt;p&gt;So I had a go, thinking this will take me a couple of days at least, as I will have to figure out how the code works and end up not understanding it. But no I had the changes done in less time than the contractor had quoted us. Go Me! I will say that these changes have yet to be fully tested, so I still might end up spending more time on this.&lt;/p&gt;</description></item><item><title>User Groups and F#</title><link>https://blog-dev.funkysi1701.com/posts/2015/user-groups-and-f/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sat, 30 May 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/user-groups-and-f/</guid><category term="F-Sharp">F-Sharp</category><category term="C-Sharp">C-Sharp</category><category term="LeedsSharp">LeedsSharp</category><category term="UserGroups">UserGroups</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/05/CGHJLlbWEAAbl14.jpg"/><description>&lt;p&gt;For a while I have been threatening to try a user group. Well this week I went to my first meeting.&lt;/p&gt;
&lt;p&gt;The user group I went to is called &lt;a href="https://www.meetup.com/leeds-sharp/" target="_blank" rel="noopener noreferrer"&gt;Leeds Sharp&lt;/a&gt;
who are celebrating their third birthday, happy birthday guys and thanks for the cake.&lt;/p&gt;
&lt;p&gt;The talk was all about F#. I know nothing about &lt;a href="https://fsharp.org/" target="_blank" rel="noopener noreferrer"&gt;F#&lt;/a&gt;
other than it is in visual studio. The speaker was &lt;a href="https://twitter.com/ptrelford" target="_blank" rel="noopener noreferrer"&gt;Phil Trelford&lt;/a&gt;
an expert in F# and former game developer who regularly speaks at conferences. Phil is an expert programmer, one of his stories was that while he had a broken arm, he wrote a copy of Excel in F#. Even with two hands I wouldn’t know where to start on something like that.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Leeds Sharp user group third birthday cake" src="https://blog-dev.funkysi1701.com/images/2015/05/CGHJLlbWEAAbl14.jpg" loading="lazy"
width="1024" height="577"
/&gt;
&lt;/p&gt;
&lt;p&gt;There are plenty of advantages to using F# over C#, fewer lines of code was one. In Phil’s example he had some C# code which was about 30 lines but the F# was 2, part of the reason for this is F# has no {}.&lt;/p&gt;
&lt;p&gt;I found myself thinking this must be too good to be true there must be some disadvantages to using F#?&lt;/p&gt;
&lt;p&gt;I don’t know what they are yet, I am guessing you need to play around with the language a bit to really understand them.&lt;/p&gt;
&lt;p&gt;One claim that was made was that F# has less bugs. I am unsure how this can be true. Code is written by humans, humans will make mistakes which ever language they choose, there will be bugs.&lt;/p&gt;
&lt;p&gt;After the group I came away with a few things to try out. Try the F# tutorial that can be found in Visual Studio, try a Koan, this is a piece of code that contains failing tests, in the process of fixing the tests you learn the language, come back next time to Leeds Sharp and learn something else.&lt;/p&gt;</description></item><item><title>Visual Studio</title><link>https://blog-dev.funkysi1701.com/posts/2015/visual-studio/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Tue, 26 May 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/visual-studio/</guid><category term="CodeLens">CodeLens</category><category term="Azure">Azure</category><category term="VisualStudio">VisualStudio</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/05/i1.png"/><description>&lt;p&gt;I recently replaced my installation of Visual Studio 2013 with Visual Studio 2015 RC.&lt;/p&gt;
&lt;p&gt;I like the new version, I am not a Visual Studio expert so it will probably take me a while to find all the good stuff but here are some initial thoughts.&lt;/p&gt;
&lt;p&gt;Being as my MSDN subscription is still valid I have installed the professional version to take advantage of its extra features like CodeLens.&lt;/p&gt;
&lt;p&gt;One of the first things I spotted was that the integration with Azure has been improved. In the last version it was difficult to sign in to Azure with the correct credentials, especially if you have more than one Azure account. Now you can add multiple Accounts and Subscriptions.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Visual Studio Azure account and subscription settings" src="https://blog-dev.funkysi1701.com/images/2015/05/i1.png" loading="lazy"
width="582" height="252"
/&gt;
&lt;/p&gt;
&lt;p&gt;CodeLens is a feature that has been around in Visual Studio since 2013, but in 2015 it is available in Professional meaning more people have access to it.&lt;/p&gt;
&lt;p&gt;CodeLens gives coders useful information at a glance. Above each class/method is listed how many references there are. If you click on the number of references you can see where that class or method is referenced in the rest of your code. Useful to be able to see which methods or classes are not being used.&lt;/p&gt;
&lt;p&gt;Next CodeLens shows who (according to git) last changed the class or method and how many days ago that was. Clicking on it shows a cool graph of when changes have happened and who did them.&lt;/p&gt;
&lt;p&gt;Next you can see the number of changes that have been made, basically a source control history, but without having to load up your git client.&lt;/p&gt;
&lt;p&gt;For code that doesn’t contain classes or methods such as T_SQL you can see at the bottom of your code window the last two CodeLens information to help you track down what changes have happened recently.&lt;/p&gt;
&lt;p&gt;The last new feature that I have noticed is the Light Bulbs that keep showing up all over my code. I think the Light Bulbs might be called Quick Actions, but whatever they are called they are suggestions on how to improve your code. So far they have suggested to be to get rid of using references that are not used, simplify a fully qualified name, drop unneeded this keywords. I am sure more will popup as I do more coding.&lt;/p&gt;
&lt;p&gt;These improvements to Visual Studio I like, and I am sure there are many more that I haven’t noticed. I expect support for the vNext .net framework is also in there somewhere which hopefully I can play around with soon.&lt;/p&gt;</description></item><item><title>Overflow</title><link>https://blog-dev.funkysi1701.com/posts/2015/overflow/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Fri, 22 May 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/overflow/</guid><category term="Database">Database</category><category term="Access">Access</category><category term="Integer">Integer</category><category term="SQL">SQL</category><category term="Overflow">Overflow</category><category term="Variables">Variables</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/05/error.jpg"/><description>&lt;p&gt;Today I encountered a new error.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Microsoft Access run-time error 6 overflow dialog" src="https://blog-dev.funkysi1701.com/images/2015/05/error.jpg" loading="lazy"
width="385" height="220"
/&gt;
&lt;/p&gt;
&lt;p&gt;Run-time error ‘6’: Overflow doesn’t really tell me much. The error was occurring in the Access ADP front-end of our main database. It was only occurring for one particular Id number which was really confusing me.&lt;/p&gt;
&lt;p&gt;First thing I tried was to remove the most recent changes I had made, this made no difference. So time to look at the VBA code that was run just before the error.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Dim iPropertyId As Integer
iPropertyId = DLookup(“PropertyId”, “Survey”, “[ProjectNo]=” &amp;amp; Me.ProjectNo)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;All looks good, even running the Dlookup query in SQL Management Studio threw no errors.&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; PropertyId &lt;span style="color:#66d9ef"&gt;FROM&lt;/span&gt; dbo.Survey &lt;span style="color:#66d9ef"&gt;WHERE&lt;/span&gt; ProjectNo &lt;span style="color:#f92672"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Next thing I tried was explicitly setting iPropertyId to the problematic Id, still the same error.&lt;/p&gt;
&lt;p&gt;This made me look at the error message again. Overflow suggest something being too big, but what could it be.&lt;/p&gt;
&lt;p&gt;Integer has a size limit of 32,767 and the value I was trying to pass into iProperty was 32779. This was what was causing the problem, my database had grown to such a size that Integer was too small, I needed to change it to a Long Integer. Long has a size of 2,147,483,647 so my database should keep working for a while more.&lt;/p&gt;
&lt;p&gt;The famous programming help website &lt;a href="https://stackoverflow.com/questions" target="_blank" rel="noopener noreferrer"&gt;Stack Overflow&lt;/a&gt;
is named after such an error. This error shows how difficult it is to decide what variable type to use, as you don’t know how quickly your database will grow.&lt;/p&gt;</description></item><item><title>Trying windows 10</title><link>https://blog-dev.funkysi1701.com/posts/2015/trying-windows-10/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sun, 17 May 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/trying-windows-10/</guid><category term="Windows8">Windows8</category><category term="Windows10">Windows10</category><category term="Format">Format</category><category term="Reinstall">Reinstall</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/05/win10.jpg"/><description>&lt;p&gt;My laptop has been getting a bit cluttered up with stuff so this weekend I gave it a reset.&lt;/p&gt;
&lt;p&gt;As I am using windows 8 this was much easier than doing a format reinstall which I have done many times with previous OSes. Open settings and select recovery and after about 4 hours everything was back to factory settings.&lt;/p&gt;
&lt;p&gt;I then installed a few updates and then installed the windows 10 preview. One of the requirements for windows 10 is Windows 8 Update (the one that came after 8.1), it took a few reboots and updates until I got that installed.&lt;/p&gt;
&lt;p&gt;I had purchased the pro pack which gives you the same features as windows 8 pro but I didn’t notice until after I installed 10 that this hadn’t been installed. I will need to roll back to windows 8 apply the update and then reinstall 10 again. I can’t really be bothered to do that, so I will live without HyperV for now. As it is I have done a lot of sitting around waiting for things to finish installing.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Windows 10 desktop on a laptop" src="https://blog-dev.funkysi1701.com/images/2015/05/win10.jpg" loading="lazy"
width="888" height="537"
/&gt;
&lt;/p&gt;
&lt;p&gt;I much prefer Windows 10 to Windows 8, an earlier preview had an issue with drivers for my second screen but that appears to have been resolved now. The start menu is back and I prefer it, to being taken to that extra screen of options that windows 8 had.&lt;/p&gt;
&lt;p&gt;I prefer the email client that windows 8 had to the windows 10 version as my work emails don’t work with it. I assume this is due to how my exchange server has been configured and maybe a later preview will allow my email to work or failing that I will have to get emails at work fixed properly.&lt;/p&gt;
&lt;p&gt;All apps now open in windows which is much nicer. Cortana is very similar to Google Home on my phone where I can talk and ask it stuff. But I never use this sort of feature apart from testing it.&lt;/p&gt;
&lt;p&gt;The new web browser has some nice features like the option to scribble over a web page but nothing that special that I think I will change my default browser from Chrome. It will be interesting to see how it performs in browser stats.&lt;/p&gt;
&lt;p&gt;I am part way through installing Visual Studio 2015 RC, but I think that will have to be a separate post.&lt;/p&gt;</description></item><item><title>As A Service</title><link>https://blog-dev.funkysi1701.com/posts/2015/as-a-service/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sat, 16 May 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/as-a-service/</guid><category term="Azure">Azure</category><category term="AsAService">AsAService</category><category term="Cloud">Cloud</category><category term="PaaS">PaaS</category><category term="IaaS">IaaS</category><category term="SaaS">SaaS</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/05/19656ee.jpg"/><description>&lt;p&gt;In Cloud Computing there are a lot of terms that end aas or As a Service. Most of these I hadn’t heard of until I started writing this list.&lt;/p&gt;
&lt;p&gt;Any service that is delivered over the internet instead of hosted locally on your network or PC could in theory be described as an As a Service.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Pizza as a Service diagram comparing SaaS, PaaS and IaaS" src="https://blog-dev.funkysi1701.com/images/2015/05/19656ee.jpg" loading="lazy"
width="841" height="675"
/&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PaaS Platform As a Service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is one of the big ones. Microsoft Azure provides a Platform as a Service which I am familiar with. Platform as a Service is where a provider provides a platform where you can build apps or websites.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SaaS Software As a Service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Another popular one. Software as a Service can be as simple as a website that runs a service that a customer wants to use, I work for a company that provides a SaaS product.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IaaS Infrastructure As a Service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The last of the big ones. A good example of IaaS is a Virtual Machine which can either be hosted on a server somewhere (a private cloud) or on the internet via a company such as Azure (public cloud) The Pizza as a Service diagram illustrates the differences between Saas, PaaS and Iaas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NaaS Network As a Service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is just a type of IaaS that specializes in providing networking. Anything that provides network connectivity could be included in this category.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CaaS Communications As a Service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Another subtype of IaaS this time specializing in communications, this could include Voice over IP or other similar technologies.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MONaaS Monitoring As a Service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you have a SaaS, PaaS or IaaS you will most likely want to monitor that it is working, I certainly do. This is something that is often included in your IaaS or PaaS package. Azure has various tools for monitoring and this could be included in this category.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BaaS Backup As a Service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With the growth of cloud storage and the decrease in its cost, backing up to the cloud is a very attractive option. Any service that allows you to backup and restore from the internet can be included in this category. Your provider needs to manage your backups for it to be truly BaaS rather than just another place to store your files.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DaaS Desktop As a Service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is where your desktop is visualized and stored in the cloud. I know very little about this as I have never used it, but I would imagine you need a strong internet connection for it to work reliably.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DBaaS Database As a Service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is a simple one if your database is stored in the cloud like Azure SQL Database then it fits into this category. If you run your own sql server install on a VM then it doesn’t fit in this category as you are still managing it yourself and is IaaS&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HaaS Hardware As a Service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;HaaS this is another subcategory of IaaS which concentrates on hardware.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IDaaS Identity As a Service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is where the management of who you are is managed in the cloud. Single Sign-On could be achieved if a website redirected determining if you are who you say you are to a particular IDaaS. Azure Active Directory is an example of this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SaaS Storage As a Service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You get the idea now, storing files on a remote cloud product is an example of Storage as a Service. DropBox or OneDrive are good examples of this.&lt;/p&gt;
&lt;p&gt;Writing this blog post has given me a better understanding of all the aaS that are out there. I am sure I haven’t explained some of these very well and no doubt missed some off.&lt;/p&gt;</description></item><item><title>Top 25 Star Trek Characters</title><link>https://blog-dev.funkysi1701.com/posts/2015/top-25-star-trek-characters/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sun, 10 May 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/top-25-star-trek-characters/</guid><category term="StarTrek">StarTrek</category><category term="TNG">TNG</category><category term="DS9">DS9</category><category term="Voyager">Voyager</category><category term="TOS">TOS</category><category term="Enterprise">Enterprise</category><category term="Spock">Spock</category><category term="Picard">Picard</category><category term="Data">Data</category><category term="Kirk">Kirk</category><category term="Rankings">Rankings</category><category term="SciFi">SciFi</category><category term="Television">Television</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/02/Spock_2293.jpg"/><description>&lt;p&gt;I am going to take a break this week from talking about technology to talk about Star Trek.&lt;/p&gt;
&lt;p&gt;I have just listened to a &lt;a href="https://www.trekmate.org.uk/ten-forward-episode-146-lists-are-dumb-but-this-episode-is-not/" target="_blank" rel="noopener noreferrer"&gt;podcast&lt;/a&gt;
where they consider this &lt;a href="https://www.ign.com/articles/2009/05/08/top-25-star-trek-characters" target="_blank" rel="noopener noreferrer"&gt;list&lt;/a&gt;
of great Star Trek Characters. I am now going to try and come up with my own top 25 characters. Here we go.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Spock&lt;/strong&gt;. My number one star trek character is Spock. Leonard Nimoy who recently passed away brilliantly brought this character to life. We have the inner turmoil that many of us can associate with, we have a journey to become more human, we have the pursuit of logic. We have the great interplay between him and McCoy and Kirk.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Spock as played by Leonard Nimoy" src="https://blog-dev.funkysi1701.com/images/2015/02/Spock_2293.jpg" loading="lazy"
width="720" height="544"
/&gt;
&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Data&lt;/strong&gt;. My second number one star trek character, well OK, second star trek character is Data. His weekly exploration of what it meant to be human is star trek&amp;rsquo;s best exploration of the human condition. There are so many moments which make me like Data but I think when he builds his daughter, Lal is possibly my favourite.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Picard&lt;/strong&gt;. The Captain of the Enterprise. You want to know about leadership or diplomacy you watch Captain Picard in action. If only more of our world leaders could be like Captain Picard we would have all our Earthly problems sorted by tea-time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Kirk&lt;/strong&gt;. The original captain of the Enterprise, not so much a Diplomat but could talk a computer to death in minutes. A fun guy to be around as long as you didn’t work in security or want a long lasting relationship with him, (sorry ladies this guy is married to the Enterprise)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Worf&lt;/strong&gt;. Our favourite Klingon. The most honourable man on this list and could handle himself in a battle. Also popular with the ladies if Troi and Dax have anything to say about it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sisko&lt;/strong&gt;. Our third captain, but Sisko had much more on his plate than the others. He had a Son to bring up, he lost his wife, he was in the middle of the biggest war the Federation has ever seen (at least on screen anyway), he became a religious icon and later a God.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;7 of 9&lt;/strong&gt;. The sexy borg from Voyager what’s not to like? Also brought some much needed conflict to the Voyager crew.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Garak&lt;/strong&gt;. The plain and simple tailor from DS9. But is he also a spy? There are so many layers to Garak you have no idea what to believe.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;McCoy&lt;/strong&gt;. Bones to his friends. A great Doctor but even greater friend to Jim Kirk and Spock (not that either of them would admit it.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;EMH&lt;/strong&gt;. Please state the nature of the medical emergency, started the show off as just another piece of technology and ended up one of the crews most important characters.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Janeway&lt;/strong&gt; Coffee Addict and defeated the Borg our first female captain.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Dukat&lt;/strong&gt;. DS9s regular bad guy. Started off Bad, then softened to be a good guy for a bit and then signed an alliance that started a war, in the middle of that he went crazy and ended up going to the Bajoran Hell&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Weyoun&lt;/strong&gt;. The leader of the dominion from the Gamma Quadrant. Was a clone so he could be killed off a few times and still come back. Had some great interplay with Dukat and later Damar.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Damar&lt;/strong&gt;. Started life as Dukat’s lieutenant and rose in rank to leader of his people, before switching sides to lead a rebellion.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Scotty&lt;/strong&gt;. You cannae change the laws of Physics. An engineer that weekly performed miracles, more often because of large repair estimates.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Barclay&lt;/strong&gt;. The only Starfleet officer that was unsure of himself and couldn&amp;rsquo;t talk to people (Oh a bit like me then)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Riker&lt;/strong&gt; The Captain Kirk of Picard’s crew, could inspire his crew and was popular with the ladies, but looks better with a beard.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;O’Brien&lt;/strong&gt;. The everyman of DS9. He constantly had a station that was falling apart but he managed to keep it going, a bit like how I feel sometimes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Quark/Rom/Nog&lt;/strong&gt;. These three Ferengi made the Ferengi good again. Nog started off as comic relief and ended up a Starfleet officer after turning his back on the acquisition of profit. Rom like his son turned his back on profit to fix things, and Quark was the businessman always had his eye for profit.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Odo&lt;/strong&gt;. The shape shifting outsider that maintained order. Was truly an outsider with no idea where he had come from, but eventually he came to tolerate and even love us Solids.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Martok&lt;/strong&gt; Klingon with one eye that welcomed Worf into his house after his second dis-commendation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Zefram Cochrane&lt;/strong&gt; Without this guy there would be no Star Trek. Invented the warp drive and enjoyed drinking.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Uhura&lt;/strong&gt; Just a communications officer, but in reality was so much more. One of the first black women on television and inspired a generation to better themselves, was the other half of the first inter-racial kiss&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mirror Universe Hoshi&lt;/strong&gt;. Our universe Hoshi Sato was timid and scared of warp drive, the mirror universe version ended up empress of an entire Empire.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Kai Winn&lt;/strong&gt; Power corrupts and Absolute power corrupts absolutely and Kai Winn is a prime example of this, so blinded by power she couldn&amp;rsquo;t hear what her precious Gods were telling her and ended up sleeping with her arch enemy.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="more-star-trek-content"&gt;More Star Trek Content&lt;a class="anchor ms-1" href="#more-star-trek-content" aria-label="Permalink: More Star Trek Content"&gt;&lt;i class="fas fa-link" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you enjoyed this character ranking, check out these other Star Trek articles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog-dev.funkysi1701.com/posts/2016/top-50-star-trek-episodes/"&gt;Top 50 Star Trek Episodes&lt;/a&gt;
- My ranking of the greatest episodes across all series&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog-dev.funkysi1701.com/posts/2021/a-comparison-of-all-good-things-and-star-trek-picard/"&gt;A Comparison of All Good Things and Star Trek Picard&lt;/a&gt;
- Examining how Picard&amp;rsquo;s future was predicted&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog-dev.funkysi1701.com/posts/2016/star-trek-episode-review-the-best-of-both-worlds/"&gt;Star Trek Episode Review: The Best of Both Worlds&lt;/a&gt;
- A deep dive into the iconic Borg episode featuring Picard&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog-dev.funkysi1701.com/posts/2023/picard-season-three"&gt;Picard Season 3&lt;/a&gt;
- My thoughts on the final season of Star Trek Picard&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog-dev.funkysi1701.com/posts/2024/trekranks"&gt;TrekRanks #174&lt;/a&gt;
- My appearance on the TrekRanks podcast&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Want more Trek content?&lt;/strong&gt; Browse all my &lt;a href="https://blog-dev.funkysi1701.com/tags/star-trek/"&gt;Star Trek articles&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;All 900+ Star Trek episodes are now available in &lt;a href="https://www.episodeatlas.com/" target="_blank" rel="noopener noreferrer"&gt;Episode Atlas&lt;/a&gt;
. Track episodes featuring your favorite characters.&lt;/p&gt;</description></item><item><title>Using your Rubber Duck</title><link>https://blog-dev.funkysi1701.com/posts/2015/rubber-duck/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Mon, 04 May 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/rubber-duck/</guid><category term="Lonely">Lonely</category><category term="RubberDuck">RubberDuck</category><category term="Troubleshooting">Troubleshooting</category><description>&lt;p&gt;Rubber Duck is a process in development where you talk through an issue with an inanimate object such as a Rubber Duck. It gets its name from the book The Pragmatic Programmer where it was first used.&lt;/p&gt;
&lt;p&gt;I am the only programmer where I work and often I find myself with a question that I can’t find the answer to. I do however have a few friends who are far more knowledgeable than I am about this sort of thing. I often find myself explaining my problem via an email to them. During the process of writing this email I have to explain my problem and this sometime reveals the problem and I don’t even need to send the email. At other times by the time they have replied to me, my brain has moved on with the problem sufficiently that I am close to a solution if I am not already there.&lt;/p&gt;
&lt;p&gt;Other people use different items as their ‘Rubber Duck’, people on the code newbie forum have used items such as a cat, stuffed octopus, a Lego minfig, or just plain old talking to yourself.&lt;/p&gt;
&lt;p&gt;Being the only programmer in my office is difficult. A simple what do you think of this question that could be asked across the office has to be done inside my head and I may think a needlessly complex solution is better than a simple one just because I haven’t thought of the simpler version yet. There are of course advantages to being the only programmer, I can do what I want and learn any technology I like, but I am starting to think the advantages of programming in a group are outweighing programming alone.&lt;/p&gt;</description></item><item><title>I might actually like SQL Server</title><link>https://blog-dev.funkysi1701.com/posts/2015/i-might-actually-like-sql-server/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 23 Apr 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/i-might-actually-like-sql-server/</guid><category term="Learning">Learning</category><category term="SQL">SQL</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/download.jpg"/><description>&lt;p&gt;How did this happen I think I may actually like SQL Server now?&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="SQL Server logo" src="https://blog-dev.funkysi1701.com/images/2015/download.jpg" loading="lazy"
width="248" height="203"
/&gt;
&lt;/p&gt;
&lt;p&gt;I remember a few years back when I used to grumble about writing a SQL query that included a JOIN. For some reason back then I could never get my head around JOINs.&lt;/p&gt;
&lt;p&gt;Today is a totally different story. I wrote a deployment script that did the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;dropped a database,&lt;/li&gt;
&lt;li&gt;restored a database from a backup file,&lt;/li&gt;
&lt;li&gt;Created a database table,&lt;/li&gt;
&lt;li&gt;copied the contents of a table into this table,&lt;/li&gt;
&lt;li&gt;disabled and re-enabled some triggers,&lt;/li&gt;
&lt;li&gt;dropped some constraints and columns from a table&lt;/li&gt;
&lt;li&gt;and renamed some columns.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It’s not like I woke up this morning with SQL Server knowledge. For many years I have been adding extra features and changing functionality to our line of business database and over time my SQL confidence has grown.&lt;/p&gt;
&lt;p&gt;For every single one of the steps above I googled and looked up the SQL syntax (every time I write an insert or update statement I look up the syntax, one day it will stick in my brain!) I think the main reason is once you have used SQL for a while you get to see how it works and can split it down into small steps.&lt;/p&gt;
&lt;p&gt;As I &lt;a href="https://www.funkysi1701.com/posts/2015/weakest-database-design/" target="_blank" rel="noopener noreferrer"&gt;blogged&lt;/a&gt;
the other day I am currently working on improving a bad database and today I wanted to test the deployment process. All my changes are in a SSDT project so I took a backup of my database and tried to publish.&lt;/p&gt;
&lt;p&gt;Error! Your changes will result in data loss, no surprises there as I was expecting that error. The main culprit for this was a trigger I wrote but I didn’t find that out until the end of the day.&lt;/p&gt;
&lt;p&gt;As I was working on a backup I could do what I like including destructive changes. I tried creating a pre deployment script. I thought if that runs first, I can persuade SSDT that it matches SQL Server and therefore no data is being lost.&lt;/p&gt;
&lt;p&gt;This didn’t work, but I had created the start of my script mentioned above. I had steps 3 and 4. Lets try running my script first and then try running the deployment of my SSDT project. To get this to work I am going to have to rebuild my database a few times, I did this manually with SQL Management studio a couple of times until I thought, I could add this to my script – that’s step 1 and 2 done.&lt;/p&gt;
&lt;p&gt;Then I got some errors about triggers so I tried disabling them and re-enabling them after it had finished. That’s step 5.&lt;/p&gt;
&lt;p&gt;Finally I needed to drop some columns, this resulted in an error about a constraint. A few trial and error run through’s to find out which constraints I needed to drop and then I could drop the columns.&lt;/p&gt;
&lt;p&gt;The last step was to rename some columns. I thought after this I can run publish from visual studio. No it still complained about data loss. I dropped another trigger and then I could run everything without any errors.&lt;/p&gt;
&lt;p&gt;Wohoo! Aren’t I clever. A simplified version of my code is below&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;USE master &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;–&lt;/span&gt;can&lt;span style="color:#960050;background-color:#1e0010"&gt;’&lt;/span&gt;t &lt;span style="color:#66d9ef"&gt;drop&lt;/span&gt; the &lt;span style="color:#66d9ef"&gt;database&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; its &lt;span style="color:#66d9ef"&gt;open&lt;/span&gt;&lt;span style="color:#f92672"&gt;!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;–&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;Step &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;DROP&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;DATABASE&lt;/span&gt; DBName
&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:#960050;background-color:#1e0010"&gt;–&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;Step &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RESTORE &lt;span style="color:#66d9ef"&gt;DATABASE&lt;/span&gt; DBName &lt;span style="color:#66d9ef"&gt;FROM&lt;/span&gt; DISK&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;’&lt;/span&gt;E:&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;DBName.bak&lt;span style="color:#960050;background-color:#1e0010"&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;WITH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;MOVE&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;‘&lt;/span&gt;DBName_dat&lt;span style="color:#960050;background-color:#1e0010"&gt;’&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;TO&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;‘&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;C&lt;/span&gt;:&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;Program Files (x86)&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;Microsoft &lt;span style="color:#66d9ef"&gt;SQL&lt;/span&gt; Server&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;MSSQL12.MSSQLSERVER&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;MSSQL&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;DATA&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;DBName.mdf&lt;span style="color:#960050;background-color:#1e0010"&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;MOVE&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;‘&lt;/span&gt;DBName_log&lt;span style="color:#960050;background-color:#1e0010"&gt;’&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;TO&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;‘&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;C&lt;/span&gt;:&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;Program Files (x86)&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;Microsoft &lt;span style="color:#66d9ef"&gt;SQL&lt;/span&gt; Server&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;MSSQL12.MSSQLSERVER&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;MSSQL&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;DATA&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;\&lt;/span&gt;DBName.ldf&lt;span style="color:#960050;background-color:#1e0010"&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;REPLACE&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;STATS&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;USE DBName &lt;span style="color:#960050;background-color:#1e0010"&gt;–&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;swap back &lt;span style="color:#66d9ef"&gt;to&lt;/span&gt; the &lt;span style="color:#66d9ef"&gt;database&lt;/span&gt; you just restored
&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:#960050;background-color:#1e0010"&gt;–&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;Step &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&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;TABLE&lt;/span&gt; TName2 (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ID INT &lt;span style="color:#66d9ef"&gt;NOT&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;Name NVARCHAR(&lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;NOT&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;Address NVARCHAR(&lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;NOT&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;City NVARCHAR(&lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;NOT&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;Postcode NVARCHAR(&lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;NOT&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&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;–&lt;/span&gt;Step &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DISABLE &lt;span style="color:#66d9ef"&gt;TRIGGER&lt;/span&gt; TR_Trigger &lt;span style="color:#66d9ef"&gt;ON&lt;/span&gt; TName1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;GO&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:#960050;background-color:#1e0010"&gt;–&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;Step &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;INSERT&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;INTO&lt;/span&gt; TName2 (Id,Name)
&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; Id, Name &lt;span style="color:#66d9ef"&gt;FROM&lt;/span&gt; TName1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;GO&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:#960050;background-color:#1e0010"&gt;–&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;Step &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;ALTER&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;TABLE&lt;/span&gt; TName1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;DROP&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;CONSTRAINT&lt;/span&gt; [DF_Id], [DF_Name]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;GO&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;ALTER&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;TABLE&lt;/span&gt; TName1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;DROP&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;COLUMN&lt;/span&gt; Id, Name
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;GO&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:#960050;background-color:#1e0010"&gt;–&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;Step &lt;span style="color:#ae81ff"&gt;7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sp_RENAME &lt;span style="color:#960050;background-color:#1e0010"&gt;‘&lt;/span&gt;TName1.City&lt;span style="color:#960050;background-color:#1e0010"&gt;’&lt;/span&gt;, &lt;span style="color:#960050;background-color:#1e0010"&gt;‘&lt;/span&gt;Area&lt;span style="color:#960050;background-color:#1e0010"&gt;’&lt;/span&gt; , &lt;span style="color:#960050;background-color:#1e0010"&gt;‘&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;COLUMN&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&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;GO&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:#960050;background-color:#1e0010"&gt;–&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;drop&lt;/span&gt; that &lt;span style="color:#66d9ef"&gt;last&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;trigger&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;DROP&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;TRIGGER&lt;/span&gt; TR_Trigger2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;GO&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:#960050;background-color:#1e0010"&gt;–&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;Step &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ENABLE &lt;span style="color:#66d9ef"&gt;TRIGGER&lt;/span&gt; TR_Trigger &lt;span style="color:#66d9ef"&gt;ON&lt;/span&gt; TName1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Weakest Database Design</title><link>https://blog-dev.funkysi1701.com/posts/2015/weakest-database-design/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Tue, 21 Apr 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/weakest-database-design/</guid><category term="BadDesign">BadDesign</category><category term="SQL">SQL</category><category term="DatabaseDesign">DatabaseDesign</category><description>&lt;p&gt;I have been recently working on a database that hasn’t been designed but has been hacked together by lots of people over the years.&lt;/p&gt;
&lt;p&gt;It started life as an Microsoft Access database created by my director to keep track of all the projects that our company does. It was not much more than one table listing everything. At some point the data and frontend was split with the data being stored in SQL Server and the front end being an Microsoft Access ADP.&lt;/p&gt;
&lt;p&gt;Over the years more and more columns have been added to this table that it long ago became pretty much unmanageable. A few normalized tables exist but for the most part everything is stored in this one table which makes querying it very difficult. At the last count there were 81 columns in this one database table.&lt;/p&gt;
&lt;p&gt;Attempts to improve this database have been tried before but due to the fact that the whole company basically runs off this database and no one person knows everything that the database needs to do causes any changes to be very difficult. I suspect it may be beyond my abilities but I am going to give it a go.&lt;/p&gt;
&lt;p&gt;One advantage I have is version control. All the tables and the structure is in version control, so when I break things I can roll them back. Any changes to the front end are also in source control, these are harder to roll back in case of problems but not impossible.&lt;/p&gt;
&lt;p&gt;I have met with department heads to try and establish which of the 81 columns are being used and which could be dropped. Database design shouldn’t be a democracy, your databases should be designed in a way to store your data most efficiently. In this case it felt a bit like the database was playing “the weakest link” with everyone voting off unpopular columns. “You are the weakest database column. Goodbye!” After much discussion I have over 30 columns that can be dropped and 10 or so that require further investigation.&lt;/p&gt;
&lt;p&gt;Using the Visual Studio project of the database, I removed the columns. This generated thousands of errors as most columns are included in loads of views and stored procedures. All these references need removing, so not a small job. This is made worse by the fact that the views and stored procedures are in a mess, and it is very hard to read the T-SQL code and see what is doing what. Part of my next job is going to be tidying up all these queries so I can see what’s what.&lt;/p&gt;
&lt;p&gt;The advantage of using the Visual Studio project to do these changes is that I can generate a SQL script of the changes and I can rerun a few times and test restoring different columns as it is unlikely to be a smooth deployment.&lt;/p&gt;</description></item><item><title>Raspberry Pi security camera project</title><link>https://blog-dev.funkysi1701.com/posts/2015/security-camera-with-raspberry-pi-camera/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Wed, 15 Apr 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/security-camera-with-raspberry-pi-camera/</guid><category term="PHP">PHP</category><category term="Camera">Camera</category><category term="Bash">Bash</category><category term="RaspberryPi">RaspberryPi</category><category term="Project">Project</category><description>&lt;p&gt;So my first Raspberry Pi project is a security camera. If you have read my previous Raspberry Pi posts you will know that I have been playing about with the camera but I had one or two problems with Pidora so I am using Raspbian for this example.&lt;/p&gt;
&lt;p&gt;To take a photo with the camera module you can use the command raspistill, this has lots of options you can view the full list by just running the command with no arguments. I will list a few options I have used.&lt;/p&gt;
&lt;p&gt;-o filename : this outputs an image to a file with name filename
-vf : vertical flip
-hf: horizontal flip these are useful if the camera is upside down etc
-q number: quality of jpg image between 0 and 100, the default image size is around 3 Mb, I reduced it to quality = 10 which gave me an image size of 300Kb which is more reasonable
-a text: annotate you image with some text, I found that the text needed to start with a character, numbers only failed for me.&lt;/p&gt;
&lt;p&gt;I want to script the creation of images, so I decided to name the files my script created with the time and date.&lt;/p&gt;
&lt;p&gt;This is fairly easy with a bash script.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;DATE=$(date +”%Y-%m-%d_%H%M”)
raspistill -q 10 -vf -hf -a a$DATE -o /var/www/$DATE.jpg
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The first $DATE is the date I have added to the image itself, because of the problem I encountered with annotating numbers only I have added an extra a to the start of this.&lt;/p&gt;
&lt;p&gt;It is now very easy to get CRON to run this script every few minutes, I decided to run it every 2 minutes.&lt;/p&gt;
&lt;p&gt;My next script tidies up so you don’t get overrun with images.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cd /var/www
ls *.jpg &amp;gt; stills.txt
mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=1920:1080 -o timelapse.avi -mf type=jpeg:fps=24 mf://@stills.txt
rm /var/www/*.jpg
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The third line in this script does something really rather clever it creates a video from all the images you have taken. In order for this to work you will need to install mencoder (sudo apt-get install mencoder)&lt;/p&gt;
&lt;p&gt;This is all rather good but wouldn’t it be rather cool if this images were uploaded somewhere. If someone was up to no good and they might want to disable your security camera. My first thought was to use something like DropBox, but unfortunately it is not supported by the processor on a raspberry pi. However I have found &lt;code&gt;copy.com&lt;/code&gt; to be rather good for syncing files.&lt;/p&gt;
&lt;p&gt;To install just run wget &lt;code&gt;https://copy.com/install/linux/Copy.tgz&lt;/code&gt; and extract the file to install the client on your raspberry pi.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;./CopyConsole -daemon -u=gary@example.com -p=’mypass’ -root=/home/pi/Copy
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This command syncs the folder you have set in -root with copy.com.&lt;/p&gt;
&lt;p&gt;The last thing I did was create a php file running on the webserver that allows you to scroll through the different images. I experimented with using javascript to auto scroll through the images but I found the manual way more useful. All the files I have written I have added to my &lt;a href="https://github.com/funkysi1701/RaspberryPi" target="_blank" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
page.&lt;/p&gt;</description></item><item><title>The Raspberry Pi Adventure Starts</title><link>https://blog-dev.funkysi1701.com/posts/2015/the-raspberry-pi-adventure-starts/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sat, 11 Apr 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/the-raspberry-pi-adventure-starts/</guid><category term="Linux">Linux</category><category term="Fedora">Fedora</category><category term="Camera">Camera</category><category term="RaspberryPi">RaspberryPi</category><category term="Pidora">Pidora</category><description>&lt;p&gt;I am currently buzzing with excitement about my Raspberry Pi. I will try to document here what I have done so far.&lt;/p&gt;
&lt;p&gt;I decided to buy the camera module along with my Pi. It was straightforward to connect them up, lift the connector behind the network port, insert the ribbon cable, push connector back down.&lt;/p&gt;
&lt;p&gt;Next I connected up Keyboard, Mouse, Monitor, SD Card and Power. And my Pi had life.&lt;/p&gt;
&lt;p&gt;I was then given a screen full of options to install, Pidora is an OS which is based on Fedora which I have some experience of so I went with that one.&lt;/p&gt;
&lt;p&gt;After that was installed I was presented with a standard desktop with various programs installed.&lt;/p&gt;
&lt;p&gt;So far I had not plugged in a network cable because that would mean sitting in the hall next to the router, I thought before I do that lets see if wifi will work. I have a usb wifi adapter that I use with my PC, so I plugged that in.&lt;/p&gt;
&lt;p&gt;Nothing happened, having some experience of linux I wasn’t surprised. I went to network connections filled in the name of my wifi connection and its password and it connected. WOW! That was easy.&lt;/p&gt;
&lt;p&gt;So I then installed &lt;a href="https://www.webmin.com/download.html" target="_blank" rel="noopener noreferrer"&gt;webmin&lt;/a&gt;
so I could remotely administer it and updated it with YUM. I also started the SSH service so I can use putty to login to my Pi from the comfort of my laptop. Even better than that I found a SSH client for my smart phone so I can even control my Pi from my phone!&lt;/p&gt;
&lt;p&gt;EDIT: I forgot that in order to get webmin to work I needed to do the following.&lt;/p&gt;
&lt;p&gt;mv /etc/redhat-release /etc/redhat-release.bak
echo “Fedora release 20 (Heisenbug)” &amp;gt; /etc/redhat-release&lt;/p&gt;
&lt;p&gt;OK So now I am able to configure settings on my Pi from a browser or use SSH (Secure SHell) to login to run any command I like.&lt;/p&gt;
&lt;p&gt;Now lets lookup how to use the camera. The &lt;a href="https://www.raspberrypi.com/documentation/configuration/camera.md" target="_blank" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;
says that the camera first needs enabling using the command raspi-config. This command doesn’t exist in Pidora. Lets skip it and see if it works anyway. It does! The command raspistill -v -o test.jpg took a picture of my ceiling.&lt;/p&gt;
&lt;p&gt;Now how do I look at this picture remotely. SSH is a command line only interface, so I can see a 2Mb file has been created. How about installing a web server on my Pi?&lt;/p&gt;
&lt;p&gt;yum install httpd&lt;/p&gt;
&lt;p&gt;This install apache which is the default (and very popular) web server.&lt;/p&gt;
&lt;p&gt;service httpd start&lt;/p&gt;
&lt;p&gt;This starts the web server. Going to https://[IP] where [IP] is the ip address of your raspberry pi will show you the default apache page.&lt;/p&gt;
&lt;p&gt;Now if you run raspistill -v -o /var/www/html/image1.jpg it will create your photo on the web server.&lt;/p&gt;
&lt;p&gt;Not bad for my first steps, the command above could be scheduled and images taken every hour. There is also options for recording video.&lt;/p&gt;</description></item><item><title>Building something with Raspberry Pi</title><link>https://blog-dev.funkysi1701.com/posts/2015/building-something-with-a-raspberry-pi/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sun, 05 Apr 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/building-something-with-a-raspberry-pi/</guid><category term="MarchIsForMakers">MarchIsForMakers</category><category term="C-Sharp">C-Sharp</category><category term="Arduino">Arduino</category><category term="Hardware">Hardware</category><category term="Electronics">Electronics</category><category term="RaspberryPi">RaspberryPi</category><category term="Project">Project</category><category term="Mono">Mono</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/04/Raspberry_Pi_-_Model_A.jpg"/><description>&lt;p&gt;Many years ago I spent a lot of time learning about electronics. It was great fun, I can’t remember specific things I built, but learning what resistors and capacitors do was fascinating.&lt;/p&gt;
&lt;p&gt;I haven’t really thought about this much as my interests have been concentrated on computers and programming, but recently my interest has been peaked again.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Raspberry Pi Model A board" src="https://blog-dev.funkysi1701.com/images/2015/04/Raspberry_Pi_-_Model_A.jpg" loading="lazy"
width="600" height="600"
/&gt;
&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://www.codenewbie.org/" target="_blank" rel="noopener noreferrer"&gt;CodeNewbie&lt;/a&gt;
and &lt;a href="https://hanselminutes.com/" target="_blank" rel="noopener noreferrer"&gt;Hanselminutes&lt;/a&gt;
podcasts have been running a month of stuff about making things and doing clever things with hardware called &lt;a href="https://marchisformakers.com/" target="_blank" rel="noopener noreferrer"&gt;#Marchisformakers&lt;/a&gt;
, this began to start me thinking about this stuff again.&lt;/p&gt;
&lt;p&gt;Yesterday a friend of mine was showing me what he had been doing with a Raspberry Pi and Arduino. It is amazing what you can do with these tiny bits of technology and I was very impressed.&lt;/p&gt;
&lt;p&gt;Now I am thinking what mini project could I play around with and which piece of hardware should I base it on. I don’t know much about the two platforms yet but I have found a &lt;a href="https://www.codenewbie.org/blogs/everything-you-ever-wanted-to-know-about-arduino-and-raspberry-pi" target="_blank" rel="noopener noreferrer"&gt;blog&lt;/a&gt;
post that introduces the two. My current thoughts are to start with the Raspberry Pi, it is a UK technology and it uses a linux OS (which I have some knowledge of).&lt;/p&gt;
&lt;p&gt;Being a windows developer, most of my programming knowledge is with C# and Visual Studio. To use my existing knowledge I could install and use MONO, which means I can program the Raspberry Pi using C# (see &lt;code&gt;https://logicalgenetics.com/raspberry-pi-and-mono-hello-world&lt;/code&gt; for more details about MONO on Raspberry Pi).&lt;/p&gt;
&lt;p&gt;But deciding on a language to use, doesn’t help me choose a project. I haven’t even got myself a Raspberry Pi yet so I may decide more once I have had a play around with it. Thoughts so far include getting wi-fi to work on the Raspberry Pi or maybe adding a camera and sticking it somewhere and taking pictures, maybe even build myself a baby monitor (might go down well with the wife if its baby related)&lt;/p&gt;</description></item><item><title>Building a CI Server with TeamCity</title><link>https://blog-dev.funkysi1701.com/posts/2015/teamcity/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Wed, 01 Apr 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/teamcity/</guid><category term="ContinuousIntegration">ContinuousIntegration</category><category term="DevOps">DevOps</category><category term="TeamCity">TeamCity</category><category term="Test">Test</category><description>&lt;p&gt;TeamCity is a Continuous Integration software package which is very easy to install and set up. So easy I managed it over a weekend.&lt;/p&gt;
&lt;p&gt;First of all I fired up a VM in Azure. I found that a Basic A1 VM was sufficient so running a CI server doesn’t have to be expensive, alternatively you could always set a Virtual or Physical server on your own network, but that of course takes a bit longer to set up.&lt;/p&gt;
&lt;p&gt;Before I get too far you are probably asking what is Continuous Integration. A Continuous Integration server takes your code from your source control repository, it then automatically builds it, runs automated tests against it and can even deploy it to production. The main advantages of this is that you can see the health of you code, you can also test different configurations.&lt;/p&gt;
&lt;p&gt;So once you have a server ready, you need to install a few things. First &lt;a href="https://www.jetbrains.com/teamcity/download/" target="_blank" rel="noopener noreferrer"&gt;TeamCity&lt;/a&gt;
, just install with the default settings. My project is a Visual Studio project so I also needed to install Visual Studio (They have a free edition which does everything I need now, Thank you Microsoft) and SQL Server Express Edition.&lt;/p&gt;
&lt;p&gt;Once TeamCity is installed the rest of the config can be made via the web interface. To make it easier I pointed a domain at my VM (a CNAME record is probably better as an Azure IP address may change) and opened port 80 in the Azure config. First create a build config and then create a VCS Root, this is where you specify where your source control is. TeamCity supports Github and bitbucket and probably many others. You can specify which branch you want to checkout so you can test out the latest features you have written.&lt;/p&gt;
&lt;p&gt;Next you need to configure the steps needed to build your project, whatever you do in Visual Studio can be configured here. You then need to configure how often the build should run, it can be scheduled at specific times, this is how I remember CI servers being configured but now you can also have builds being triggered after commits to source control, very clever.&lt;/p&gt;
&lt;p&gt;That is just about all I have configured so far. My project has a few NUnit tests written for it, these are scheduled to run after every build. In my case 94 of them are currently failing so I now need to learn how my tests work.&lt;/p&gt;
&lt;p&gt;There are additional deployment steps that can be configured but I have not investigated these yet. Notifications about what CI is doing is also possible usually by email but there are other options available.&lt;/p&gt;</description></item><item><title>Monitoring Screens</title><link>https://blog-dev.funkysi1701.com/posts/2015/monitoring-screens/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Wed, 25 Mar 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/monitoring-screens/</guid><category term="BigScreen">BigScreen</category><category term="Azure">Azure</category><category term="jQuery">jQuery</category><category term="JavaScript">JavaScript</category><category term="Nagios">Nagios</category><category term="Monitoring">Monitoring</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/03/perf.jpg"/><description>&lt;p&gt;We all know that it is important to monitor your servers and services, so you can spot issues before they become problems. I personally have spent a lot of time configuring &lt;a href="https://www.funkysi1701.com/posts/2014/i-love-nagios/" target="_blank" rel="noopener noreferrer"&gt;nagios&lt;/a&gt;
to email me about issues and I have recently been configuring various different alerts in Azure.&lt;/p&gt;
&lt;p&gt;My old boss has this idea that I should have a big monitor screen displaying all the vital stats of my servers and services, I personally disagree with this idea and think that notifications on my phone and email alerts are sufficient. He will no doubt correct my thinking when he reads this, but I believe part of his thinking is to make the monitoring of your infrastructure move visible and make it obvious to anyone that walks past that you have your eye on everything.&lt;/p&gt;
&lt;p&gt;For the purpose of this blog post lets assume he has convinced me and I have convinced my actual boss to spend money on the required technology to do this (No easy feat). What exactly would I display on this screen?&lt;/p&gt;
&lt;p&gt;I have Google Chromecast that I use for streaming various things to my TV, this is a relatively cheap bit of technology that could allow a TV or monitor to display a web page with the required stats displayed.
&lt;img class="img-fluid" alt="Server performance graphs on a monitoring dashboard" src="https://blog-dev.funkysi1701.com/images/2015/03/perf.jpg" loading="lazy"
width="980" height="349"
/&gt;
&lt;/p&gt;
&lt;p&gt;The two main sources of information that I want to display are New Relic for monitoring my azure websites and Nagios for monitoring my internal servers. New Relic allows you to easily export live performance data as iframes so I quickly threw together a web page full of these graphs. However if you have a static screen on the wall you don’t want to have to scroll to see different information so I needed to come up with another way to display this information.&lt;/p&gt;
&lt;p&gt;My first thought was a slide show. There are lots of javascript scripts that cycle through a series of images like a slideshow, this could be adapted to cycle through a series of iframes and display everything I want.&lt;/p&gt;
&lt;p&gt;My script goes something like this and requires jquery as well as javascript. First of all the script waits for the page to load completely with the ready function, it then defines the urls which will be put into the iframe one at a time. It than counts the number of urls you have. It then loops through changing the contents of the src attribute in the iframe every few seconds, in my example it changes every 9 seconds but once this is used in production you may want to increase this.&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-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;script&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;type&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;text/javascript&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;$&lt;/span&gt;(document).&lt;span style="color:#a6e22e"&gt;ready&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;function&lt;/span&gt;(){
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;locations&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [&lt;span style="color:#e6db74"&gt;&amp;#34;URL1&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;URL2&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;etc&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;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;len&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;locations&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;length&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;iframe&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;$&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;#frame&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;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&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 style="color:#a6e22e"&gt;setInterval&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; () {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;iframe&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;attr&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;src&amp;#39;&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;locations&lt;/span&gt;[&lt;span style="color:#f92672"&gt;++&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;%&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;len&lt;/span&gt;]);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }, &lt;span style="color:#ae81ff"&gt;9000&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;&amp;lt;/&lt;span style="color:#f92672"&gt;script&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now what information wants to be included in a script like this? Showing too much performance data can almost be as bad as not doing it at all as problems gets drowned out in the noise. For me I have performance of my websites, followed by Nagios problems, followed by the azure status page, followed by memory usage of all my servers and lastly showing number of connections to my databases. Another question to consider is what time scales do you want to graph over, too long and you don’t see what is happening now, but too short and you may only worry about an intermittent issue?&lt;/p&gt;</description></item><item><title>Networking Event</title><link>https://blog-dev.funkysi1701.com/posts/2015/networking-event/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sun, 22 Mar 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/networking-event/</guid><category term="ITManagers">ITManagers</category><category term="Change">Change</category><category term="Networking">Networking</category><category term="ITBoss">ITBoss</category><category term="Strategy">Strategy</category><description>&lt;p&gt;I recently went to an event called ITBoss organised by &lt;a href="https://www.corecomconsulting.co.uk/" target="_blank" rel="noopener noreferrer"&gt;Core Com Consulting&lt;/a&gt;
. It was really good, helped partly by a free bar and great food.&lt;/p&gt;
&lt;p&gt;The event was hosted in a pub in central Leeds, so I rushed to the train station from work to get there. And yes I was the first to arrive (Why do I always do that?). The event was targeted at IT Leaders and Managers and was limited to about 20 people.&lt;/p&gt;
&lt;p&gt;To begin with I just chatted to the hosts and other people as we waited for everyone to arrive. Once we got going we had a short presentation about the need for Strategy. Interestingly the next day I suggested a strategy meeting with my director, so something must have sunk in from this.&lt;/p&gt;
&lt;p&gt;The main gist of the talk was that IT leaders need to pop there head up from day to day work to look at where they are going, and this should be matched with the overall direction of the company. I agree with this, recently I have been thinking of what direction our infrastructure needs to go in, it is currently just in my head, but at least that is a start. However our company directors are poor at sharing their long term vision, so it is hard for me to know where the company is going. I need to step up and challenge this behavior, so I can deliver the changes that are needed. Not easy but that is what the best IT leaders are doing.&lt;/p&gt;
&lt;p&gt;After this we broke for food, which was very nice. I had a chat with a couple of people. I found it interesting that one gentleman was surprised that I wanted to get into development. I think I understand why, most of the people in the room where senior managers, while I share their job titles, I don’t share their salaries. He saw development as a demotion, I see it as a promotion.&lt;/p&gt;
&lt;p&gt;After food we had some discussion questions. Mine was the first, How to convince others of the need for change? Some interesting ideas where presented, but it is the need to work closely with others, find out their requirements which is the difficult part not anything technical. The other topics of discussion where relating to recruiting people with skills that you have no knowledge of and around the topic of security and privacy in this modern age. Both were very interesting with lots of viewpoints expressed.&lt;/p&gt;
&lt;p&gt;I enjoyed the evening and hope to go to another at some point. Previous events I have been to have been technical, but lacked the networking that this one had. While I am not very good at networking, at this event it was easy to have a conversation or two with people.&lt;/p&gt;</description></item><item><title>Source Control Fail</title><link>https://blog-dev.funkysi1701.com/posts/2015/source-control-fail/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Mon, 16 Mar 2015 00:00:00 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/source-control-fail/</guid><category term="Git">Git</category><description>&lt;p&gt;Every developer uses source control, it is a great tool for keeping track of changes to your code, seeing who has done what.&lt;/p&gt;
&lt;p&gt;However I keep messing up, my use of it. I am fairly disciplined when creating new features, all my changes will get committed to source control and when I am happy I will deploy these changes to the live system. But as soon as there is a bug, especially one where the client is chasing for a fix, I will deploy a fix as soon as humanly possible on to the live system.&lt;/p&gt;
&lt;p&gt;At first glance there is nothing wrong with what I have described but what happens the next time I deploy a new feature. Yes the bug the client was complaining about gets deployed with the new feature as the fix was never committed into source control. The client gets angry as the bug he was screaming about is back again.&lt;/p&gt;
&lt;p&gt;Every change you make to the system &lt;strong&gt;MUST&lt;/strong&gt; be committed to source control. If it isn’t that change will look like it never existed. I have worked with source control for over 5 years why do I keep making this rookie mistake over and over.&lt;/p&gt;
&lt;p&gt;Troy Hunt has a &lt;a href="https://www.troyhunt.com/10-commandments-of-good-source-control/" target="_blank" rel="noopener noreferrer"&gt;blog post&lt;/a&gt;
about the 10 commandments of using source control. His number two commandment is “If it’s not in source control, it doesn’t exist” He talks more about code you have written being not saved into source control, but the principal is the same for my example as his.&lt;/p&gt;
&lt;p&gt;There are ways to automatically deploy from source control, however most of the time you don’t want your live database being rebuilt because you fixed a typo. Additional steps will need to be implemented and there is still the chance that you might want to bypass these steps to fix the urgent problem. The only way past this problem is for you and everyone on your team to be disciplined and only ever commit to source control first, and only after that deploy live (either automatically or manually)&lt;/p&gt;</description></item><item><title>Azure Traffic Manager</title><link>https://blog-dev.funkysi1701.com/posts/2015/azure-traffic-manager/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 12 Mar 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/azure-traffic-manager/</guid><category term="Azure">Azure</category><category term="DevOps">DevOps</category><category term="ITAdmin">ITAdmin</category><description>&lt;p&gt;I have spent most of the day tweaking my Azure websites. Lots of fun!&lt;/p&gt;
&lt;p&gt;Last week unfortunately Azure had some problems and many websites that were running in the North Europe data centre were unavailable for several hours. And you guessed it my websites were hosted here.&lt;/p&gt;
&lt;p&gt;All hosting providers are going to have downtime from time to time and this is just something you have to take on the chin. The important thing to do in times like these is communicate with your customers about what is going on and that you are doing everything you can to restore service.&lt;/p&gt;
&lt;p&gt;However Azure has some amazing features that you can configure to help manage when downtime occurs.&lt;/p&gt;
&lt;p&gt;Azure is Microsoft’s global cloud platform. And it really is global, there are data centres in North Europe, West Europe, Brazil, Japan, two more in Asia and five in the US. In the event of problems it is highly unlikely that more than one of these would go down at once. If all of these are unavailable, I expect the planet earth is facing some kind of cataclysmic event and the fact that my website is down is not a priority.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Azure Traffic Manager" src="https://blog-dev.funkysi1701.com/images/2015/IC750592.jpg" loading="lazy"
width="856" height="449"
/&gt;
To take advantage of these multiple data centres, Azure has something called a Traffic Manager.&lt;/p&gt;
&lt;p&gt;Traffic Manager has various settings but I am using it in failover mode. This means that if one website goes down, the next one is used.&lt;/p&gt;
&lt;p&gt;All you need to do is create a traffic manager, add two or more websites to it (called endpoints) and choose a page that needs to be monitored so Azure knows which websites are up and which are down.&lt;/p&gt;
&lt;p&gt;If you are using SSL or custom domain names, there are a few extra steps you need to do. Your custom domain name needs pointing at the traffic manager, not the individual websites. The websites themselves have three domain names, the traffic manager address, the azure address and the custom domain name. The SSL certificate can then be assigned to each website that you have added to the traffic manager.&lt;/p&gt;
&lt;p&gt;That was easy wasn’t it, and now if a website goes down traffic manager will use the next one. While testing this, the transition to the next website was almost immediate. I did notice that if you had a browser showing the website open during a problem you sometimes got an error page, I think this was probably due to browser caching, reopening a tab or browser fixed this issue.&lt;/p&gt;</description></item><item><title>Tidying my desktop</title><link>https://blog-dev.funkysi1701.com/posts/2015/tidying-my-desktop/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Wed, 11 Mar 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/tidying-my-desktop/</guid><category term="PowerShell">PowerShell</category><category term="Desktop">Desktop</category><category term="ITAdmin">ITAdmin</category><description>&lt;p&gt;My desktop is always a mess. I constantly download files there and forget all about them.&lt;/p&gt;
&lt;p&gt;Every now and then I copy files into sub directories, so my desktop looks sane for a day or two before it gets out of control again.&lt;/p&gt;
&lt;p&gt;Why don’t I write a script that I can schedule to do this for me. Then my desktop will always be tidy.&lt;/p&gt;
&lt;p&gt;I have written a few simple batch scripts, but of course the best scripting language out there at the moment is PowerShell. Lets use that.&lt;/p&gt;
&lt;p&gt;Windows provides a nice little utility for writing scripts called the Windows PowerShell ISE, so let&amp;rsquo;s start by loading that up.&lt;/p&gt;
&lt;p&gt;PS has lots of help included to help you, just run &lt;strong&gt;Get-Help [name of ps command]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To move files you can use &lt;strong&gt;Move-Item&lt;/strong&gt; which works very similar to copy, specify source and destination. In my case I moved files based on their file extension.&lt;/p&gt;
&lt;p&gt;Move-Item *.pdf folder&lt;/p&gt;
&lt;p&gt;Now all I need to do is schedule this script to run either every day or so, or maybe every time I login or switch my computer on.&lt;/p&gt;
&lt;p&gt;PowerShell can do lots more interesting things which hopefully I will blog about soon.&lt;/p&gt;</description></item><item><title>Database Deployment</title><link>https://blog-dev.funkysi1701.com/posts/2015/database-deployment/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 05 Mar 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/database-deployment/</guid><category term="Deployment">Deployment</category><category term="Database">Database</category><category term="SQL">SQL</category><description>&lt;p&gt;One of my jobs is adding extra features to our internal databases. There is a fair amount of risk in doing this. I could make a change to one of the queries in the database that stops the rest of the company using it as they need to. This could be a costly mistake, almost as bad as the database server being inaccessible.&lt;/p&gt;
&lt;p&gt;One way to reduce this risk is to test, test and test the database. First I take a backup of the database and make my changes to that. I can do anything I like to my backup database without worrying that it will affect anyone else. Once I have finished making my changes and I have tested that everything is working exactly as I want, I need to apply my changes to the production database.&lt;/p&gt;
&lt;p&gt;Until recently I made a note of every change that I have made and then made the same change to the production database. But what if I forget to apply one of my changes to production, I have a broken database on my hands, disaster!&lt;/p&gt;
&lt;p&gt;But there is a better way to track database changes. SSDT or SQL Server Data Tools.&lt;/p&gt;
&lt;p&gt;Create a Database project with Visual Studio, you can then point this at your live database. This will scan the database and save scripts for all the Tables, Views, Stored Procedures, Triggers and any other object in the database. This doesn’t import the data, just the structures that contain the data. So no data protection issues or problems because your database is terabytes in size.&lt;/p&gt;
&lt;p&gt;Now comes the really cool part, Visual Studio allows you to build a copy of the database from these scripts. All you need to do is edit the scripts and test like you did before. Once you are happy with your changes and everything is working as you want, you can point your visual studio project back at your production database and it will magically deploy all your changes, or if you are as paranoid as me about breaking things, it will create a script that you can thoroughly analyse before running on your production database.&lt;/p&gt;
&lt;p&gt;I do not know why I never thought of setting this up until recently, it will reduce the number of times I roll out my changes but forget to setup permissions, (these can be scripted) or forget that tiny change I did weeks ago but never rolled out.&lt;/p&gt;
&lt;p&gt;And of course all the changes that you make can be saved in source control, so easy to see what changes have been made and by whom.&lt;/p&gt;
&lt;p&gt;This process even works with complicated database structures, in my case I needed to setup three database projects that depend on each other. Dependencies can be setup, and the test databases can even be built with different names for testing on the production server, (although I wouldn’t recommend it!)&lt;/p&gt;</description></item><item><title>Leonard Nimoy lives while remembered</title><link>https://blog-dev.funkysi1701.com/posts/2015/hes-really-not-dead-as-long-as-we-remember-him/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sat, 28 Feb 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/hes-really-not-dead-as-long-as-we-remember-him/</guid><category term="Science">Science</category><category term="LeonardNimoy">LeonardNimoy</category><category term="StarTrek">StarTrek</category><category term="Spock">Spock</category><category term="Technology">Technology</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/02/74cc28416b646ae6f87d5a502fbd03b7.jpg"/><description>&lt;p&gt;In the film Star Trek 2: The Wrath of Khan Spock sacrifices himself to save the Enterprise from destruction. What follows is a very moving funeral scene and his coffin is launched into space. McCoy tells Kirk that he is not dead as long as we remember him.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Spock as played by Leonard Nimoy" src="https://blog-dev.funkysi1701.com/images/2015/02/Spock_2293.jpg" loading="lazy"
width="720" height="544"
/&gt;
&lt;/p&gt;
&lt;p&gt;Yesterday the actor Leonard Nimoy passed away and millions of trekkies around the world are taking comfort in those words.&lt;/p&gt;
&lt;p&gt;Reading social media it is clear that he affected the lives of millions of people with his portrayal of Spock. I have seen tweets from NASA and astronauts saying how they were encouraged by Star Trek. The chip manufacturer Intel even tweeted about his death. I am sure there are many in the science and technology space that could say Mr Spock encouraged them in some way.&lt;/p&gt;
&lt;p&gt;The portrayal of science and technology in Star Trek had an affect on me. I studied Mathematics, Chemistry and Physics at school, I later did a Physics degree. All because the spark of curiosity about how stuff works was encouraged by a TV show. I remember one time while studying physics learning about the hysteresis curve, then Star Trek the next day mentions detecting changes in the hysteresis curve might solve some problem. Wow the stuff I am learning is in Star Trek!&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Leonard Nimoy colour headshot portrait" src="https://blog-dev.funkysi1701.com/images/2015/02/color_nimoy_headshot.jpg" loading="lazy"
width="393" height="500"
/&gt;
&lt;/p&gt;
&lt;p&gt;Later in my life I got involved in working with computers, and as science officer Mr Spock was the first expert in computers I knew.&lt;/p&gt;
&lt;p&gt;But Mr Spock was half Vulcan and suppressed his emotions. There have been times in my life where I have tried really hard to suppress my emotions. I can think of a time when a family member has died and I needed to shut myself in a room, similar to Spock in Naked Time, and wrestle with my emotions. In recent years I have had a more Data approach of exploring my feelings and my humanity as a Vulcan lifestyle of suppressed emotion is not healthy.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Leonard Nimoy giving the Vulcan Live Long and Prosper salute" src="https://blog-dev.funkysi1701.com/images/2015/02/74cc28416b646ae6f87d5a502fbd03b7.jpg" loading="lazy"
width="500" height="503"
/&gt;
&lt;/p&gt;
&lt;p&gt;Thank you Leonard Nimoy for all that you gave us, although I never met you I can continue to watch and enjoy your work, Live Long and Prosper.&lt;/p&gt;</description></item><item><title>Source Code for Game of Life</title><link>https://blog-dev.funkysi1701.com/posts/2015/source-code-for-game-of-life/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sat, 21 Feb 2015 09:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/source-code-for-game-of-life/</guid><category term="Java">Java</category><category term="SourceCode">SourceCode</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/02/Life.jpg"/><description>&lt;p&gt;Last week I blogged about the Game of Life.&lt;/p&gt;
&lt;p&gt;Well it took some searching through dead hard drives and old USB storage but I found the program I wrote, and better than that I have figured out how to turn it back into source code.&lt;/p&gt;
&lt;p&gt;The file date is November 2004 and the source code has no comments so I don’t know what was going through my head when I wrote it, or even what some of it does.&lt;/p&gt;
&lt;p&gt;To view the source code download &lt;a href="https://blog-dev.funkysi1701.com/images/2015/02/Life.src_.zip"&gt;Life.src&lt;/a&gt;
, to download the finished program download &lt;a href="https://blog-dev.funkysi1701.com/images/2015/02/Life.zip"&gt;Life&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Life" src="https://blog-dev.funkysi1701.com/images/2015/02/Life.jpg" loading="lazy"
width="595" height="300"
/&gt;
&lt;/p&gt;
&lt;p&gt;I am actually surprised I was expected the code to be much worse than it was, I am not saying it is good, but I can see more than one method and I can’t see any code that obviously is repeated. I can see some terrible variable names. Note to future self don’t use tmp676_674!&lt;/p&gt;
&lt;p&gt;Assuming that I wrote this in 2004 what would I have been doing then? It was before I started working in IT. (Hard to imagine I know!) It may even have been before I started living with Keith, before he recruited me for my first IT role. I think I was probably working as an administrator for Defra at this point.&lt;/p&gt;
&lt;p&gt;If we put 2004 in technical terms, it was before I joined facebook, Office 2003 and XP would have been installed on my PC, and probably felt brand new.&lt;/p&gt;</description></item><item><title>Cloud Computing</title><link>https://blog-dev.funkysi1701.com/posts/2015/cloud-computing/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Thu, 19 Feb 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/cloud-computing/</guid><category term="Cloud">Cloud</category><category term="Azure">Azure</category><category term="Google">Google</category><category term="Computing">Computing</category><category term="OneDrive">OneDrive</category><description>&lt;p&gt;I work for a company that provides a cloud computing website, but what is Cloud Computing?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Cloud_computing" target="_blank" rel="noopener noreferrer"&gt;Wikipedia&lt;/a&gt;
defines it as “Cloud computing involves deploying groups of remote servers and software networks that allow centralized data storage and online access to computer services or resources.”&lt;/p&gt;
&lt;p&gt;Erm. What does that mean? Well in simple terms it means storing you data on a remote server. Any time you submit information onto a website, you are submitting your information to the “Cloud”&lt;/p&gt;
&lt;p&gt;But there is more that the Cloud can do for you. The search giant Google, which also develops the android mobile phone operating system, have developed a range of cloud computing products. The Google Drive product allows you to upload and even create files, these files are saved into the Cloud, once in the cloud they can be accessed from any device that has an internet connection. No longer do you run the risk of your favourite file being on a computer that won’t turn on or being on a dead hard drive, save it to the cloud and you will always have access to it.&lt;/p&gt;
&lt;p&gt;Google isn’t the only one that does this, Microsoft have OneDrive which they are incorporating into the heart of their operating system, Apple and many other companies have released similar products.&lt;/p&gt;
&lt;p&gt;This age of cloud computing allows a clearer separation between your data and your device. It won’t be long before whatever device you are using your files will be there to be worked on. You are in the office working on a spreadsheet, you save it to the Cloud, you can then continue working on it with your tablet while on the road. Just before bed you want to check if you added something to that doc, so you quickly check your phone. How cool is this!&lt;/p&gt;
&lt;p&gt;But if I put my system administer hat on, Cloud computing goes far further than that. Microsoft Azure allows many of the services you would typically have running on your server, saved into the cloud. This has many advantages and allows you to concentrate on other problems while leaving the cloud to look after these services.&lt;/p&gt;</description></item><item><title>Choosing a Blog Theme</title><link>https://blog-dev.funkysi1701.com/posts/2015/blog-theme/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sun, 15 Feb 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/blog-theme/</guid><category term="Theme">Theme</category><category term="Blogging">Blogging</category><category term="WordPress">WordPress</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/02/unnamed.png"/><description>&lt;p&gt;You may have noticed that my blog has a new home. It can now be found on its own domain &lt;a href="https://www.funkysi1701.com" target="_blank" rel="noopener noreferrer"&gt;https://www.funkysi1701.com&lt;/a&gt;
. This change not only gives me more flexibility to make any change I like, it also feels good to have a website again. If you had followed my blog, do keep following it at the new location.&lt;/p&gt;
&lt;p&gt;I have also been playing about with giving the site a new look, hope you all like it. I have gone for a more image focussed front page. No doubt in a few weeks I will be bored and change the look again.&lt;/p&gt;
&lt;p&gt;I have recently been reading about blogging and one suggestion is to have a clear theme, or idea of what the blog is about. I am not sure my blog has a clear theme.&lt;/p&gt;
&lt;p&gt;When I started blogging I was more interested in blogging than thinking about what I was blogging about. The vague theme I worked off was to talk about what I do, to answer the question, &amp;ldquo;What do you do?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I think this is a fairly good theme, but it could probably do with some refinement. The best themed blogs are specialist or about something specific. As I am generally learning about development, rather than doing development I think this should be part of what I concentrate my blogs about. A minority of my blogs can continue to be about the other things I spend my time doing, as it’s always good to have a break from the main “meat” of the blog every now and then.&lt;/p&gt;
&lt;p&gt;The people who read my blogs are split between technical people and non-technical people, so I would like to continue to explain what I do in non-technical terms. This is an essential skill for a developer (or SysAdmin) as you will always need to explain what you are doing, or discuss requirements. It is not an easy skill and like development itself, the more I do it the better at it I will become.&lt;/p&gt;
&lt;p&gt;So watch this space for the blogs to come. I know I will be working with Azure over the next few weeks so maybe some blogs about that, maybe some more SQL blogs or maybe about what I learn next.&lt;/p&gt;</description></item><item><title>Ten Forward 135: desert island Trek</title><link>https://blog-dev.funkysi1701.com/posts/2015/ten-forward-episode-135-anti-firbob-is-back-or-simons-desert-island-trek/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Fri, 13 Feb 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/ten-forward-episode-135-anti-firbob-is-back-or-simons-desert-island-trek/</guid><category term="StarTrek">StarTrek</category><category term="Podcast">Podcast</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/02/Spock_and_Horta_mind_meld1.jpg"/><description>&lt;p&gt;The podcast I recorded the other week has been released — why not have a listen by heading over to &lt;a href="https://www.trekmate.org.uk/ten-forward-episode-135-anti-firbob-is-back-or-simons-desert-island-trek/" target="_blank" rel="noopener noreferrer"&gt;trekmate.org.uk&lt;/a&gt;
?&lt;/p&gt;
&lt;p&gt;This week Sina, Chris and Paul welcome Simon Foster, Trek Mate’s News Editor, to do discuss his Desert Island Trek choices. Paul becomes Firbob, or AntiFirbob, or&amp;hellip;something like that. Boo hiss Firbob. Every one listen and decide – Simon or Firbob?&lt;/p&gt;
&lt;p&gt;You can reach Simon here:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/funkysi1701" target="_blank" rel="noopener noreferrer"&gt;@funkysi1701&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Complaints to @firbob1&lt;/p&gt;
&lt;p&gt;You can reach the rest of the gang here:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://twitter.com/queenkatblue" target="_blank" rel="noopener noreferrer"&gt;@queenkatblue&lt;/a&gt;
, &lt;a href="https://twitter.com/chriscantfly" target="_blank" rel="noopener noreferrer"&gt;@chriscantfly&lt;/a&gt;
, or &lt;a href="https://www.facebook.com/TenForwardPod" target="_blank" rel="noopener noreferrer"&gt;facebook.com/TenForwardPod&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Game of Life</title><link>https://blog-dev.funkysi1701.com/posts/2015/game-of-life/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Wed, 11 Feb 2015 09:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/game-of-life/</guid><category term="Java">Java</category><description>&lt;p&gt;Many, many years ago I tried to learn Java. I didn’t get very far but one of the things I built was The Game of Life.&lt;/p&gt;
&lt;p&gt;Unfortunately I can not find the code I wrote, probably a good things as it is probably amusingly bad.&lt;/p&gt;
&lt;p&gt;Now you are probably asking what is the &lt;a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life" target="_blank" rel="noopener noreferrer"&gt;Game of Life&lt;/a&gt;
? The game of life, sometimes called cellular automation, is a simulation of cells being born and dying. It is sometimes called Conway’s Game of Life after the British mathematician who devised it in 1970.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Gosper&amp;rsquo;s glider gun pattern in Conway&amp;rsquo;s Game of Life" src="https://blog-dev.funkysi1701.com/images/Gospers_glider_gun.gif" loading="lazy"
width="250" height="180"
/&gt;
&lt;/p&gt;
&lt;p&gt;The game has several rules:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Any cell with less than three neighbours will die on the next turn&lt;/li&gt;
&lt;li&gt;Any cell with three neighbours lives on to the next turn&lt;/li&gt;
&lt;li&gt;Any cell with more than three neighbours will die on the next turn&lt;/li&gt;
&lt;li&gt;Any dead cell with three live neighbours will be born on the next turn&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now I had not thought about this game until the other day when I came across a &lt;code&gt;https://chaosnil.wordpress.com/2015/02/09/new-project-conways-game-of-life-in-every-language/&lt;/code&gt; and a &lt;code&gt;https://github.com/chaomodus/gameoflife&lt;/code&gt; which sparked my interest again. This version is written in javascript, but the blog mentions a desire to build this program in many different languages. I want to build this with visual studio in C# as it should provide a good training exercise.&lt;/p&gt;
&lt;p&gt;There are several problems I need to overcome to achieve this, I am currently trying to work out how to &amp;ldquo;draw&amp;rdquo; the cells. My current thinking is that maybe I can code it using characters to display the cells and then replace with pixels once I have the logic correct. Well lots for me to learn!&lt;/p&gt;</description></item><item><title>Great British Code Off</title><link>https://blog-dev.funkysi1701.com/posts/2015/great-british-code-off/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Sat, 07 Feb 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/great-british-code-off/</guid><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/02/logo1.jpg"/><description>&lt;p&gt;
&lt;img class="img-fluid" alt="Great British Code Off" src="https://blog-dev.funkysi1701.com/images/2015/02/logo.jpg" loading="lazy"
width="242" height="157"
/&gt;
&lt;/p&gt;
&lt;p&gt;The Great British Bake Off and The Great British Sewing Bee are very popular TV shows. Each week the contestants take part in a baking or sewing challenge and the judges choose the best and the worst, with the worst having to leave. This is very entertaining as you watch the drama between the contestants and the reactions as the judges tell them they are rubbish.&lt;/p&gt;
&lt;p&gt;Could this simple format be applied to computer programming? I think it could.&lt;/p&gt;
&lt;p&gt;The only developers I know argue about the best way of tackling different problems, despite being friends. I am going to assume that this is typical behaviour and not unique to them. So for this TV show, we will split the contestants into pairs, that way we would get the added drama of how well they work together.&lt;/p&gt;
&lt;p&gt;I am still undecided if the pairs stick together each week with one pair leaving or if we randomize the pairs with one person leaves. The second option would cause there to be a group of three every other week, not sure if this would be a benefit or a curse for that group.&lt;/p&gt;
&lt;p&gt;My friends who are experienced programmers have agreed to be the judges, they both have experience of hiring and firing people, know what to look for in good code, and never agree so should be entertaining enough.&lt;/p&gt;
&lt;p&gt;On the bake off the contestants don’t really know how well they have done until the judges cut into their cake and take a bite. For the code off we could not compile the code until the judges run it, would make coding extra difficult as if the contestants are anything like me, I run my code every five minutes to see what affect that change has made.&lt;/p&gt;
&lt;p&gt;So what challenges can we come up with?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web Design week&lt;/li&gt;
&lt;li&gt;Stored Procedure week&lt;/li&gt;
&lt;li&gt;Mobile App week&lt;/li&gt;
&lt;li&gt;Loops&lt;/li&gt;
&lt;li&gt;Logic problems&lt;/li&gt;
&lt;li&gt;Bugs weeks&lt;/li&gt;
&lt;li&gt;Performance issues&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I think we are onto a winner here. What does everyone else think?&lt;/p&gt;</description></item><item><title>Laziness</title><link>https://blog-dev.funkysi1701.com/posts/2015/laziness/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Wed, 04 Feb 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/laziness/</guid><category term="PowerShell">PowerShell</category><category term="RDP">RDP</category><category term="Lazy">Lazy</category><category term="ITAdmin">ITAdmin</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/02/bill-gates-quote.jpg"/><description>&lt;p&gt;I am lazy, I won’t try and deny that. When my alarm goes off in the morning, I will snooze it for twenty minutes or so before getting out of bed.&lt;/p&gt;
&lt;p&gt;
&lt;img class="img-fluid" alt="Bill Gates quote about hiring a lazy person for a difficult job" src="https://blog-dev.funkysi1701.com/images/2015/02/bill-gates-quote.jpg" loading="lazy"
width="460" height="298"
/&gt;
&lt;/p&gt;
&lt;p&gt;In my work my laziness continues. Remote Desktop (or RDP) is probably my number one laziness tool. For those that don’t know RDP allows you to connect to another computer and access it like you were sat in front of it. So I can be sat at my desk and RDP into any other computer in the office including any server. However this laziness tool does sometimes require a bit of effort sometimes, powering on the target computer, logging on locally, making sure the user account you are using is allowed to use RDP.&lt;/p&gt;
&lt;p&gt;Writing a script is another example of a laziness tool. I often get asked to do tedious and long-winded task, because I am lazy I will go out of my way to learn how to write a script to do this, so that I can run this script and do this long-winded task in a matter of seconds. There are loads of different types of scripts from database SQL scripts, to PowerShell scripts that can do almost anything on your server.&lt;/p&gt;
&lt;p&gt;PowerShell is something Microsoft are really pushing at the moment, you can even write scripts to create new user accounts, so no longer will you have to remember to tick that tickbox for every new user account. And because PowerShell is part of almost all MS technologies you can link Exchange to Active Directory and you don’t even have to remember the right syntax as PowerShell has a built-in help command to tell you how to run that useful command.&lt;/p&gt;
&lt;p&gt;As I am now moving into a more developer role can I continue to be lazy? I sure can. Code should be written once and reused as often as possible and this is one of the features of OOP (Object Oriented Programming).&lt;/p&gt;
&lt;p&gt;It can be as simple as creating a master page so you don’t need to recreate the same code on every one of your webpages. Or every time you find yourself rewriting the same code again, you plug it into a method so it can be called again and again.&lt;/p&gt;
&lt;p&gt;But of course the ultimate way to be lazy is of course get yourself some staff and spend all day getting them to do everything. If you are lucky they may even try and adopt some of these lazy ideas.&lt;/p&gt;</description></item><item><title>Podcasts</title><link>https://blog-dev.funkysi1701.com/posts/2015/podcasts/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Tue, 27 Jan 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/podcasts/</guid><category term="ITAdmin">ITAdmin</category><category term="StarTrek">StarTrek</category><category term="Podcast">Podcast</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/01/128900.png"/><description>&lt;p&gt;For a while now I have been listening to podcasts. For those that don’t know a podcast is an audio file that you can download and listen to, usually about a topic you are interested in. The topics that interest me are obviously Star Trek, Science and Technology and IT stuff. I mainly listen to them in the car when I am driving, but sometimes it will be at home when doing jobs around the house.&lt;/p&gt;
&lt;p&gt;I think the first podcast I listened to was &lt;a href="https://www.trekmate.org.uk/" target="_blank" rel="noopener noreferrer"&gt;Trekmate&lt;/a&gt;
. Trekmate as the name suggests is about Star Trek, it’s a few guys talking about Star Trek. It’s very similar to those conversations you have in the pub with your mates. Trekmate do lots of podcasts, one for almost every flavour of Star Trek out there, I don’t keep up with all of them, but the ones I listen to I really enjoy.&lt;/p&gt;
&lt;p&gt;My favourite podcast that is work related is &lt;a href="https://www.runasradio.com/" target="_blank" rel="noopener noreferrer"&gt;RunAs Radio&lt;/a&gt;
. If you are a SysAdmin or have an interest in servers or IT you should listen to this. The host Richard Campbell interviews IT experts about a particular piece of technology, one week it will be Exchange, the next Security, and then SQL Server. Often I will learn something that I will want to try out, some weeks I won’t learn something specific but will give be an insight into which way IT for businesses is going. I think it was probably only after listening to RunAs Radio that are started having more of a long term plan for my IT infrastructure at work.&lt;/p&gt;
&lt;p&gt;As I have blogged about before I am learning Development so obviously I listen to &lt;a href="https://www.dotnetrocks.com/" target="_blank" rel="noopener noreferrer"&gt;.NET Rocks&lt;/a&gt;
. This is hosted by Carl Franklin and Richard Campbell (yes the same guy that does RunAs Radio) who talk to developers about code, learning and IT from a more Developer point of view. This is released 3 times a week so is a bit hit and miss sometimes, but most weeks there will be something relevant to me or worth listening to.&lt;/p&gt;
&lt;p&gt;A few days ago I did something for the first time, I was a guest on one of the Trekmate pods, TenForward. I reviewed 5 Star Trek episodes. This was a bit of a leap for me as an introvert I don’t like to be the center of attention and I certainly don’t like how my voice sounds recorded. Hopefully when released people will like it and I will do lots more of these in the future. Once it has been released I will put a link up here so you can all have a listen.&lt;/p&gt;</description></item><item><title>Pair Programming</title><link>https://blog-dev.funkysi1701.com/posts/2015/pair-programming/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Mon, 19 Jan 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/pair-programming/</guid><category term="PairProgramming">PairProgramming</category><category term="FreeCodeCamp">FreeCodeCamp</category><media:content medium="image" type="image/jpeg" url="https://blog-dev.funkysi1701.com/images/2015/01/PairProgrammingInAction.jpg"/><description>&lt;p&gt;So I have been working through the challenges on the &lt;a href="https://www.freecodecamp.org/" target="_blank" rel="noopener noreferrer"&gt;freecodecamp&lt;/a&gt;
website and one of the unique things that this site does is give you the chance to program with another person.&lt;/p&gt;
&lt;p&gt;I am an introvert and if you were to ask me to pick up the phone and ring someone I will procrastinate a lot before doing it (if I do it at all), I also am not good at speaking with strangers but I have been enjoying the pair programming I have done so far.&lt;/p&gt;
&lt;p&gt;I have only pair programmed a couple of times so far, so I am no expert. The first time was with someone from North America, it was weird to begin with talking to your computer and hearing an american voice respond, but you soon forget that as you concentrate on the problems you are working on.&lt;/p&gt;
&lt;p&gt;The second time was with someone from the Netherlands. This time we tackled some trickier problems. Both times I took more of a back seat but I think contributed useful stuff and I certainly learnt a lot from the other person.&lt;/p&gt;
&lt;p&gt;I think that is the key thing about pair programming, you learn so much about how to look at a problem from another angle, or learn about a function you haven’t heard of before. If you are reading this and it was you that I pair programmed with a big thank you for spending the time with me, I learnt a lot.&lt;/p&gt;
&lt;p&gt;I was trying to pair program again tonight but technical problems prevented me. One problem I have found is finding a partner, was hoping to do some yesterday but no one else was around to partner with.&lt;/p&gt;
&lt;p&gt;I would be interested to learn what companies use pair programming. I imagine a pointy haired boss would say why pay two people to do one job, when you could get them working on different things. However if you want to build up your team and give them loads more skills then pair programming would be great. I also think there are probably some problems that are crying out for pair programming.&lt;/p&gt;</description></item><item><title>Javascript progress</title><link>https://blog-dev.funkysi1701.com/posts/2015/javascript-progress/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Fri, 16 Jan 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/javascript-progress/</guid><category term="JavaScript">JavaScript</category><category term="SourceCode">SourceCode</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/01/logo_JavaScript.png"/><description>&lt;p&gt;I got excited earlier this week as I started playing around with the javascript I have been learning.&lt;/p&gt;
&lt;p&gt;I thought I would try and create useful javascript that could be applied to an online filestore. Somewhere that you could upload, delete, edit files and folders and various options to do with your files would popup via javascript or jquery code.&lt;/p&gt;
&lt;p&gt;So far I have created a static HTML page which lists a few dummy files. I have added a button which adds a new row into my table and I have used jquery to highlight any selected files and also when the mouse passes over.&lt;/p&gt;
&lt;p&gt;If you want to follow my progress I have put my files on &lt;a href="https://github.com/funkysi1701/CodeSamples/tree/master/clouds-js" target="_blank" rel="noopener noreferrer"&gt;github&lt;/a&gt;
. It’s very basic stuff and I have already got a few lines I would like to refactor but not bad for an evenings work. I have lots of feature ideas to add to this page which should help me learn the basics.&lt;/p&gt;
&lt;p&gt;The trouble with learning all this javascript is that I am starting to get all my programming languages confused. Earlier this week I started writing a for loop in javascript, only problem was I was working on an MS Access ADP (Don’t ask!) which requires the code in VBA. That is never going to work. Oh well.&lt;/p&gt;
&lt;p&gt;If anyone knows good ways to stop myself getting my programming languages all confused do let me know.&lt;/p&gt;</description></item><item><title>My Year of Code</title><link>https://blog-dev.funkysi1701.com/posts/2015/my-year-of-code/</link><author>funkysi1701@gmail.com (funkysi1701)</author><pubDate>Fri, 09 Jan 2015 20:00:45 +0000</pubDate><guid>https://blog-dev.funkysi1701.com/posts/2015/my-year-of-code/</guid><category term="JavaScript">JavaScript</category><category term="jQuery">jQuery</category><category term="FreeCodeCamp">FreeCodeCamp</category><media:content medium="image" type="image/png" url="https://blog-dev.funkysi1701.com/images/2015/01/AK29YaTf_400x400.png"/><description>&lt;p&gt;There is no escaping the fact that we are in 2015 now. My new years resolution is to do more coding.&lt;/p&gt;
&lt;p&gt;Over Christmas I thought I would have a go at &lt;a href="https://www.codecademy.com" target="_blank" rel="noopener noreferrer"&gt;https://www.codecademy.com&lt;/a&gt;
I completed the javascript course and I was just wondering what I should try next when I saw a tweet about &lt;a href="https://www.freecodecamp.org/" target="_blank" rel="noopener noreferrer"&gt;freecodecamp&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Since then I have been addicted to doing the exercises that they have, almost everyday I have made a bit of progress.&lt;/p&gt;
&lt;p&gt;But this site is not just about teaching you how to code, it has an active forum where you can ask questions and understand more about what it takes to become a developer.&lt;/p&gt;
&lt;p&gt;Before I started these exercises I didn’t know much javascript or jquery but I am starting to learn quite a few commands that hopefully I can put into use at some point. Whatever development I end up doing I am sure I am going to need javascript at some point.&lt;/p&gt;
&lt;p&gt;One of the tips I have learnt is that you need to practise daily. Did you ever use flash cards to help pass exams? Well there is an electronic version of them now called Anki. Just add a question/answer pair to your deck of cards and review them each day, the ones you find difficult you review more often than the ones you have learnt.&lt;/p&gt;
&lt;p&gt;Hopefully I can keep this up and later in the year I will be well on way to writing lots of useful code.&lt;/p&gt;</description></item></channel></rss>