tag:blogger.com,1999:blog-55562807063393786982024-02-19T16:58:29.688+00:00MagicAndi's BlogWill code for cake...Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.comBlogger122125tag:blogger.com,1999:blog-5556280706339378698.post-20524328973664882332022-01-15T20:05:00.005+00:002022-01-15T20:05:38.501+00:00Moving On... A New Blog<p>Folks, after 12 years, I've decided to start up a new blog at <a href="https://tangiest.co.uk/">https://tangiest.co.uk/</a>. The new blog is a bit minimal right now, but I plan to extend it, and eventually migrate all the content from this blog to the new site.</p>
<p>Thank you for taking the time to read this blog, and I look forward to seeing you at the new one!</p>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-12293686844018447152021-09-09T21:09:00.005+01:002021-09-09T21:47:43.693+01:00What I'm Reading #6<p>The latest in an irregular series of posts on what I've been reading.</p>
<h2>Books</h2>
<header>
<h3><a href="https://www.amazon.co.uk/Mr-Mercedes-Stephen-King/dp/1444788647/">Mr Mercedes</a></h3>
<p>by Stephen King</p>
</header>
<p>A pretty decent crime thriller, showing that Stephen King can write a lot more than just horror. I recently read his novella, The Colorado Kid, and learnt from the foreword to that book about the Bill Hodges trilogy. Having read this, the first novel in the series, I'm looking forward to reading the rest, and also watching the TV series. </p>
<header>
<h3><a href="https://www.amazon.co.uk/Star-Wars-Aftermath-Journey-Awakens/dp/1784750034/">Star Wars: Aftermath</a></h3>
<p>by Chuck Wendig</p>
</header>
<p>This Star Wars novel was recommended by a number of people to me, and I have to admit, I found it well written and even moving at times as it imagined the massive changes following the supposed end of the Empire. But in the end, it just didn't keep my attention, and I don't plan to read the rest of the series.</p>
<header>
<h3><a href="https://www.amazon.co.uk/Fragile-Things-Neil-Gaiman/dp/0755334140/">Fragile Things</a></h3>
<p>by Neil Gaiman</p>
</header>
<p>I picked up this collection of short stories simply for the first story, 'A Study in Emerald'. This is is cross-over of a Sherlock Holmes mystery and Lovecraftian horror, and it is just excellent. I tried to read a few of the other stories and gave up - I find Neil Gaiman pretty self-indulgent at the best of times, and this collection confirmed it. As much as I enjoyed the re-imagining of Sherlock Holmes, I really can't recommend this book.</p>
<header>
<h3><a href="https://www.amazon.co.uk/Heart-Shaped-Box-GOLLANCZ-S-F-Hill/dp/1473222702/">Heart Shaped Box</a></h3>
<p>by Joe Hill</p>
</header>
<p>A simply fantastic read. You aren't just reading this horror story, you feel you are living it.</p>
<header>
<h3><a href="https://www.amazon.co.uk/Dreaming-Code-Scott-Rosenberg/dp/1400082471/">Dreaming in Code</a></h3>
<p>by Scott Rosenberg</p>
</header>
<p>Again, a book highly recommended by others, but one I felt was ultimately disappointing. While this exploration of an open-source project was interesting, the project's initial technology choices meant it was ultimately doomed, and this was compounded by weak project leadership. Some of the meta-discussion about open source and technology was interesting, but I ended the book wondering what the point of it all was.</p>
<h2>Articles</h2>
<header>
<h3><a href="https://www.theguardian.com/books/2021/jul/18/an-ugly-truth-inside-facebook-battle-for-domination-sheera-frenkel-cecilia-kang-review">Facebook’s battle for domination</a></h3>
<p>by John Naughton</p>
</header>
<p>John Naughton's review of An Ugly Truth by Sheera Frenkel and Cecilia Kang reads like a long overdue indictment of Facebook, and I've added An Ugly Truth to my reading list as a result. </p>
<header>
<h3><a href="https://www.hackerfactor.com/blog/index.php?/archives/929-One-Bad-Apple.html">One Bad Apple</a></h3>
<p>by Dr. Neal Krawetz</p>
</header>
<p>This long and forensic article takes apart some of the claims made by Apple in defence of their proposed (and now postponed) Child Sexual Abuse Material solution.</p>
<header>
<h3><a href="https://www.theguardian.com/education/2021/jul/03/desperate-graduates-rush-to-study-panic-masters-after-job-rejections">Desperate graduates rush to study ‘panic masters’ after job rejections</a></h3>
<p>by Rachel Hall</p>
</header>
<p>This article on the jump in applications to 'panic Masters' courses due to the uncertain economic climate caught my eye.</p>
<header>
<h3><a href="https://evonomics.com/why-elon-musk-isnt-superman/">Why Elon Musk Isn’t Superman</a></h3>
<p>by Tom O'Reilly</p>
</header>
<p>This article dissects exactly how Elon Musk got so amazingly wealthy despite owning an unprofitable car maker. </p>
<header>
<h3><a href="https://www.vanityfair.com/style/2021/02/carl-lentz-and-the-trouble-at-hillsong">Carl Lentz and the Trouble at Hillsong</a></h3>
<p>by Alex French and Dan Adler</p>
</header>
<p>My wife and I recently watched the Storyville documentary, <a href="https://www.bbc.co.uk/iplayer/episode/m000y2g7/storyville-hillsong-church-god-goes-viral">Hillsong Church: Church goes viral</a>. As Christians, we found it an extremely unsettling film. One of its themes was the double standards that operated in the Hillsong church movement - this article looks at (only) one instance of this, the scandal around one of the more well known pastors, Carl Lentz.</p>
Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-66660286172900231952021-08-11T22:59:00.010+01:002021-09-02T21:31:06.552+01:00The Case of the Unknown 'ˆf_bisa' Gmail Label<p>I noticed yesterday an unknown label, 'ˆf_bisa' appearing in Gmail. I assumed it had been created by my son messing with the keyboard whilst he was watching YouTube earlier (not yet 5 and already a Lego Ninjago fan), and deleted it.</p>
<div class="separator" style="clear: both;"><a href="https://sites.google.com/site/andyparkhill/home/blog-post-images/f_bisaLabel.jpg" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="279" data-original-width="496" src="https://sites.google.com/site/andyparkhill/home/blog-post-images/f_bisaLabel.jpg" alt="^f_bisa label in Gmail" title="^f_bisa label in Gmail" /></a></div>
<p>I thought nothing more about it... until I noticed it was back today. I have tried deleting it a few times, but it refuses to go. I'm assuming it is a bug, possibly due to the synchronization between Gmail and the iOS Mail app? Regardless, a search shows I'm not the only person experiencing this issue:</p>
<div class="separator" style="clear: both;"><a href="https://sites.google.com/site/andyparkhill/home/blog-post-images/WebSearchForf_bisa.jpg" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="618" data-original-width="1218" src="https://sites.google.com/site/andyparkhill/home/blog-post-images/WebSearchForf_bisa.jpg" alt="^f_bisa search results in StartPage.com" title="^f_bisa search results in StartPage.com" width="406" height="206" /></a></div>
<p>Both posts have appeared on Gmail forums in the past few days complaining about the label. Nice to know I'm not alone. Apologies to anyone who has come here looking for an answer - I haven't a clue what is causing this. If you know, please <a href="https://www.andyparkhill.co.uk/p/contact-me.html">get in touch</a>!</p>
<h2>Update - 13/08/2021</h2>
<p>I came across <a href="https://www.tnwcreations.com/post/what-is-f_bisa-gmail-tag-suddenly-appearing/">this article</a> that suggests it may be due to a third party read receipt script hosted at <a href="https://t.sidekickopen45.com" rel="nofollow">https://t.sidekickopen45.com</a>. The subdomain t.sidekickopen45.com redirects to the page <a href="https://www.hubspot.com/abuse-complaints">https://www.hubspot.com/abuse-complaints</a>. <a rel="nofollow" href="https://www.leadfeeder.com/blog/hubspot-sidekick-replacement/">Sidekick</a> also used to be the name of Hubspot's <a href="https://www.hubspot.com/products/sales/email-tracking" rel="nofollow">email tracking tool</a>.</p>
<h2>Further Update - 20/08/2021</h2>
<p> In the original update, I mis-identified the company that was behind the read receipt script. Apologies to those concerned. Thanks to Derek/Dmitry for reaching out to let me know.</p>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-78919972707044662462021-07-21T22:18:00.002+01:002021-08-11T22:38:50.215+01:00Organising My Photo Backups<p>For the last few years, I have been taking regular backups of the various iOS devices around the house. As well as using iTunes, I have taken backups of the photos stored on the device directly. Over time, these photos backups have built up, until I took some time last week to finally organise them.</p>
<p>I wrote the PowerShell script below to process the backup photos by:</p>
<ul>
<li>Checking if a photo with the same file hash exists; if it does, I ignore the duplicate file</li>
<li>I rename the photo to the date and time it was taken, along with the photo resolution, and then move it to the target directory</li>
</ul>
<p>There are numerous examples of similar scripts out there, so this is nothing special. It could do with being optimised further, and I need to look into assigning a frame resolution for videos. But it took just two hours to put together, and ended up saving me 60 GB of disk space, so it was time well spent.</p>
<script src="https://gist.github.com/MagicAndi/cdc3c9b292f81d41054983f92e8dbc42.js"></script>
Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-42019148778098288332021-05-15T19:10:00.002+01:002021-08-22T16:31:00.791+01:00What I'm Reading #5
<p>The latest in an irregular series of posts on what I've been reading.</p>
<h2>Books</h2>
<header>
<h3><a href="https://www.amazon.co.uk/Bad-Blood-Secrets-Silicon-Startup/dp/1509868089/">Bad Blood</a></h3>
<p>by John Carreyrou</p>
</header>
<p>Despite knowing the Theranos story, and having read John Carreyrou's reporting on the story at the time, at the end of this book, I had to stop and ask myself "WTF did I just read?". The answer was a thrilling book detailing what must be the wildest startup scandal in Silicon Valley.</p>
<header>
<h3><a href="https://www.amazon.co.uk/Zed-Joanna-Kavenna/dp/1984898345/">Zed</a></h3>
<p>by Joanna Kavenna</p>
</header>
<p>I found this novel to be so disappointing. It had an interesting premise for a novel, basically updating 1984 to have Big Brother make use of Artificial Intelligence and other technology, and adding an element of Kafka. Unfortunately, the author has tried to be clever, and the result was more irritating than illuminating.</p>
<header>
<h3><a href="https://www.amazon.co.uk/Institute-Stephen-King/dp/1529355397/">The Institute</a></h3>
<p>by Stephen King</p>
</header>
<p>An excellent novel. Stephen King has been back on form for a while (check out Sleeping Beauties if you haven't already read it), and this book is proof his current run of form is continuing.</p>
<h2>Articles</h2>
<header>
<h3><a href="https://gizmodo.com/humans-will-never-colonize-mars-1836316222">Humans Will Never Colonize Mars</a></h3>
<p>by George Dvorsky</p>
</header>
<p>For the attention of Elon Musk and Jeff Bezos. In space, no one can hear your workers scream...</p>
<header>
<h3><a href="https://blog.malwarebytes.com/threat-analysis/2021/04/a-deep-dive-into-saint-bot-downloader/">A deep dive into Saint Bot, a new downloader</a></h3>
</header>
<p>After being on the wrong end of a cyber attack recently, I am fascinated by these detailed descriptions of how malware works. In particular, I love reading about how cyber criminals take the everyday tools I use in my work (.NET and PowerShell) and use them (poorly in most cases) to create new malware vectors.</p>
<header>
<h3><a href="https://www.opendemocracy.net/en/opendemocracyuk/bloody-sunday-british-empire/">Bloody Sunday and how the British empire came home</a></h3>
<p>by Adam Ramsay</p>
</header>
<p>After the recent verdict into the Ballymurphy shootings, I re-read this article on how Bloody Sunday and Ballymurphy weren't abberations, but part of a long history of illegal killings by the British Army.</p>
<header>
<h3><a href="https://hackmag.com/mobile/secure-smartphone/">Counter-Forensics. Protecting your smartphone against the Five Eyes</a></h3>
</header>
<p>The first tutorial I've came across on protecting your smart phone that goes beyond the naive 'enable the screen lock' advice. Worth a read to learn of the real threats to your smart phone's data.</p>
<header>
<h3><a href="https://ellegriffin.substack.com/p/publishing-industry-truth">No one will read your book (and other truths about publishing)</a></h3>
<p>by Elle Griffin</p>
</header>
<p>This long read details exactly why most authors fail to make a living, despite more people reading than ever over lockdown.</p>
<header>
<h3><a href="https://www.newyorker.com/magazine/2021/04/26/the-incredible-rise-of-north-koreas-hacking-army">The Incredible Rise of North Korea’s Hacking Army</a></h3>
<p>by Ed Caesar</p>
</header>
<p>A long article that details the development of North Korean state sanctioned hackers.</p>
Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-78848623384823935872021-03-17T21:39:00.004+00:002021-03-17T21:40:03.564+00:00What I'm Reading #4<p>The latest in an approximately monthly series of posts on what I've been reading.</p>
<h2>Books</h2>
<h3><a href="https://www.amazon.co.uk/84K-eerily-plausible-dystopian-masterpiece/dp/0356507408/">84K</a></h3>
<p>This is the first book I've read by Claire North, and I found it astonishingly good. It is a tale of a dystopian United Kingdom where a price is literally put on people's lives. I'm eagerly looking forward to reading more books by the author.</p>
<h3><a href="https://www.amazon.co.uk/Untitled-Ian-Mcguire-Book-Ha/dp/1471163598/">The Abstainer</a></h3>
<p>This was a highly rated book from Ian McGuire, with rave reviews (<a href="https://www.theguardian.com/books/2020/oct/08/the-abstainer-by-ian-mcguire-review-the-wire-by-gaslight">'The Wire by gaslight'</a>). The first 2 thirds of the book were enjoyable, but the ending was very anti-climatic. As a result, I found it only a so-so read - not so much watching 'The Wire' but more like suffering a rather humdrum episode of NCIS.</p>
<h2>Articles</h2>
<h3><a href="https://www.opendemocracy.net/en/opendemocracyuk/exiting-vampire-castle/">Exiting the Vampire Castle</a></h3>
<p>Mark Fisher's classic take on the infighting and policing that takes place in left-wing social media.</p>
<h3><a href="https://sharedireland.com/unionist-identity-in-ireland/">Unionist Identity in Ireland</a></h3>
<p>An in-depth analysis of unionist identity from <a href="https://twitter.com/choyaa13">Choyaa</a>.</p>
<h3><a href="https://medium.com/pinterest-engineering/demystifying-seo-with-experiments-a183b325cf4c">Demystifying SEO with experiments</a></h3>
<p>An interesting article from the Pinterest Engineering team on how to experiment with search engine optimisation (SEO) at scale.</p>
<h3><a href="https://shkspr.mobi/blog/2021/01/whats-the-point-of-a-lecturer/">What’s the point of a lecturer?</a></h3>
<p>A provoking article on the future of Higher Education and lecturing in universities from Terence Eden. I'm not personally entirely convinced that online learning is the paancea that he thinks it is - the research so far suggests that online learning results in poorer engagement with students, and worse outcomes for disadvantaged students. Blended learning, as proposed by Terence, seems to have similar outcomes to traditional lecturing, but most EdTech seems focussed on online learning only, as this appears to offer the greatest cost savings for institutions (though the evidence for this seems sketchy at best). In the aftermath of the Covid-19 lockdowns, and a year of enforced online learning, it will be interesting to see what effect it has on current students, and what their opinion of it is. I susoect it will be like my opinion of working from home - that it is highly overrated.</p>
<h3><a href="http://www.columbia.edu/dlc/wp/citi/citinoam14.html">Electronics and the Dim Future of the University</a></h3>
<p>Courtesy of John Naughton's recent column on <a href="https://www.theguardian.com/commentisfree/2021/feb/13/universities-need-to-wise-up-or-risk-being-consigned-to-history">Universities and the upheavals in Higher Education due to the pandemic</a>, I read this prescient article (from 1995!) on the future of the University in an online world. We are certainly seeing universities being forced to consider what exactly they are for at the moment.</p>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-61600482614253453112021-02-17T22:12:00.001+00:002021-02-17T22:12:11.629+00:00Migrating from OneNote to Markdown<p>Over the past few weeks, I've been working on migrating my extensive collection of notes from OneNote into Markdown files. I am writing my migration process up for anyone else considering moving from OneNote to Markdown.</p>
<h2>Why Migrate?</h2>
<p>I recently found that I wasn't making use of my OneNote notes as much as I had previously. I realised that I hated using the OneNote client on my iPhone (5s, so a small screen), and also that my notes had grown so large (after 8 years of use) that they really needed pruning. Additionally, I didn't really like having my notes in a proprietary format that I was unable to backup and version. So I looked at the usual alternatives (Notion, SimpleNote) and also at open source alternatives (Joplin, and Laverna), but ultimately, I decided to use Markdown files in a VSCode workspace, synchronized using Dropbox.</p>
<h2>How</h2>
<p>I used this <a href="https://github.com/SjoerdV/ConvertOneNote2MarkDown/">PowerShell script</a> to export my OneNote notes into a basic Markdown file from the OneNote desktop client on Windows 10. It took approximately 4 hours to export all my notes (some 2640 files), across vraious OneNote notebooks.</p>
<p>I then wrote a second PowerShell script to format the exported Markdown files. This second script:</p>
<ul>
<li>Removed any non-ASCII characters from the exported files</li>
<li>Set the page title as a level 1 header</li>
<li>Remove any empty comments from the exported files</li>
<li>Correct the list indentation for the <a href="https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md">rules</a> used by the <a href="https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint">MarkdownLint extension</a> in VSCode</li>
<li>Remove blank lines</li>
<li>Update source path for images (also exported out by the initial script)</li>
</ul>
<br />
<h2>Setup</h2>
<p>As noted already, I'm using VSCode to edit my new Markdown files on my desktop. I created a new workspace for my notes that I have colour coded using the <a href="https://marketplace.visualstudio.com/items?itemName=johnpapa.vscode-peacock">Peacock extension</a> for VSCode. I have my notes organised in a Dropbox directory, and this is automatically backed up daily to a Git repository.</p>
<p>I can then access my notes on my mobile via the Dropbox app. I tried initially to use the built-in Dropbox text editor, but found this a bit limited. I eventually settled on using the <a href="https://1writerapp.com/">1Writer app</a> to create and edit notes on my mobile, and I've been impressed by how intuitive it is to use.</p>
<p>I have been using my current setup for a few weeks now. The main pain has actually been curating the exported notes, and archiving those no longer required. I have came across a few more structured ways of using Markdown files (<a href="https://foambubble.github.io/foam/">Foam</a>, <a href="https://obsidian.md/">Obsidian</a>), and may end up using one in the future, but for now I'm happy with my current setup.</p>
Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-242352607105239582021-02-03T22:10:00.003+00:002021-03-10T21:56:33.286+00:00What I'm Reading #3<h2>Books</h2>
<h3><a href="https://www.amazon.co.uk/Programmed-Inequality-History-Computing-Technologists/dp/0262535181/">Programmed Inequality: How Britain Discarded Women Technologists and Lost Its Edge in Computing</a></h3>
<p>I'm only halfway through this book, which gives a detailed history of the development of the UK computing industry since the first computer, <a href="https://en.wikipedia.org/wiki/Colossus_computer">Colossus</a>. (To any American readers, let me save you some time: <a href="https://en.wikipedia.org/wiki/ENIAC">ENIAC</a> was <em>NOT</em> the first programmable electronic computer. Get over it.)</p>
<p>In particular, it focuses on the social history of the computer, and how the first computer operators were all female, and how the gender of the workforce changed as computers became more important in business and government. An in-depth and fascinating read.</p>
<h3><a href="https://www.amazon.co.uk/Star-Wars-Certain-Point-View/dp/0099542692/">Star Wars: From a Certain Point of View</a></h3>
<p>I'm not a huge Star Wars fan, but my son is currently obessed by the Lego Star Wars cartoons, so I picked up this anthology of short stories based on the initial film over Christmas. It was very a different read to what I had enviaged. It consists of 40 short stories (one for each year since the release of Star Wars in 1977), each story giving the viewpoint of a minor character in the original film: one of the scrap droids in the Jawa transporter, Wuher (the barkeep in the Mos Eisley catina), the Dianiga in the Death Star's trash compactor, one of the rebel X-wing mechanics. In each story, you get to see how they become, in some small way, part of the larger saga. Some were strangely moving, like the one discussing Obi-Wan Kenobi's desert vigil - I had never thought of it as a test of his religious faith before. Recommended, even (or perhaps especially) for those who didn't enjoy the film.</p>
<h2>Articles</h2>
<h3><a href="https://ddubdrahcir.wordpress.com/2020/07/31/have-we-reached-peak-international-students-in-the-uk/">Have we reached ‘peak international students’ in the UK?</a></h3>
<p>This article asks a question that I had also recently started asking myself - have we reached peak international student numbers? Given the <a href="https://www.channel4.com/news/the-international-students-struggling-to-feed-themselves-in-lockdown">recent shameful reporting</a> that some international students have been forced to use food banks, I suspect that we have.</p>
<h3><a href="https://www.wired.com/story/cyberpunk-2077-bugs-reviews-nda/#intcid=_wired-homepage-right-rail_d772b9eb-99b2-4e18-9418-a0b088868b76_popular4-1">How Cyberpunk 2077 Sold a Promise—and Rigged the System</a></h3>
<p>I'm not a gamer, but one of my brothers is. He gave me the heads up about this story, which shows how the company behind Cyberpunk, CD Projekt Red, managed to manipulate the reviews of the game and led to the choru sof disapproval from gamers on actually playing the title.</p>
<h3><a href="https://www.theguardian.com/football/ng-interactive/2020/oct/27/david-squires-on-marcus-rashford-boris-johnson-school-meals">David Squires on ... Marcus Rashford v the Tory government</a></h3>
<p>A classic...</p>
<h3><a href="https://logicmag.io/care/built-to-last/">Built To Last</a></h3>
<p>An interesting read on the attempts of some US states to blame the COBOL programming language (and the lack of COBOL programmers) for unemployment systems not being able to cope with the increase of unemployment claims due to the pandemic. And how it relates to the wider issue of a lack of investment in critical infrastructure.</p>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-10523024043012833332021-01-03T00:16:00.018+00:002021-08-11T23:06:31.201+01:00Thank Christ That Is Over... But Is It?<p>I think we can safely say that 2020 has been a tough year for nearly everyone. But it is important to pause and take stock of what happened over the year, and consider both the good and the bad:</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiUshF4JkIWT35tgjK36X7pZVqzhdww3CL_eAqSeMTHdjtWMQEekV91Ymibgpg0ggz2MqqvxKIZfXqW6LbynhlO54ljYXliiN47rUgsZuL3rJxO6t3IAI46kbuhbgzEyi1iD5CUST3p7k/s0/Screaming.gif" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="214" data-original-width="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiUshF4JkIWT35tgjK36X7pZVqzhdww3CL_eAqSeMTHdjtWMQEekV91Ymibgpg0ggz2MqqvxKIZfXqW6LbynhlO54ljYXliiN47rUgsZuL3rJxO6t3IAI46kbuhbgzEyi1iD5CUST3p7k/s0/Screaming.gif" /></a></div>
<p>No, 2020 really was crap. But our family did have some good news. We were able to improve our financial situation a lot, and that has really helped our mood in the current circumstances. Our son, Matthew, started nursery and really loves it. And after 5 years working at Queen's University, I was able to start working from home, which meant I got to spend a lot more time with my family.</p>
<p>In terms of bad news, we had a few Covid scares. Our son, Matthew, has had to be tested for Covid twice (simple colds needed to be tested before he could go back to nursery), and just before Christmas, his nursery had a confirmed case. With the current large number of cases in Belfast, we won't be sending him back on Monday, and it appears most other parents will also be keeping their children home. We have been bored stupid under lockdown, like everyone else.</p>
<p>Back in January, my wife, Mei, and Matthew, travelled to China to spend time with my wife's family for the Chinese New Year. China locked down on 24th January to combat the Covid-19 pandemic, and my family were unable to travel back until mid-Febrary. I was very stressed about this, and immensely relieved that they were able to get back to Northern Ireland. They then had to self-isolate for 2 weeks. At the end of March, I started working from home, and I have continued to do so ever since.</p>
<p>In May, I started a new job in a different department in QUB. It was advertised as a DevOps role, but in reality, it is an infrastructure/operations role, with little development work. Whilst I have learnt a lot over the past 6 months, especially about Linux and Docker solutions, this isn't where I want to be, and I'll hopefully make a move back into software development soon.</p>
<p>Some of the highlights of the part year have simply been able to meet up and spend time with friends and family whenever the various lockdowns have eased. I have also come to appreciate the benefits of working in an office, and being able to step away from work - something I struggled with when my work was always waiting for me in the bedroom. I also really missed the social interactions with colleagues, which Zoom or Teams just can't replicate. A lot of people have been talking about the office being eliminated following Covid; I think they are over-estimating the benefits of working from home.</p>
<p>In terms of personal projects, I've spent a lot of time on DIY around the home. I cut down on my coding outside of work - one of the side effects of working from home was that I didn't want to code on personal projects in the same environment that I work in.</p>
<p>Anyway, while 2020 has been a tough year for everyone, I suspect that this year, 2021, will be even tougher. Most of us won't be vaccinated against Covid-19 until the end of the year, and I suspect we'll see the economic impact from April onwards, when the furlough scheme ends. Keep yourself and your families safe.</p>
Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-32052666369370963492020-06-19T12:14:00.003+01:002020-07-30T12:59:06.647+01:00What I'm Reading #2<h2>
Books</h2>
<h3>
<a href="https://www.amazon.co.uk/Wolf-Hall-Shortlisted-Golden-Booker/dp/0007230206/ref=sr_1_1?dchild=1&keywords=wolf+hall&qid=1591136790&sr=8-1">Wolf Hall</a></h3>
Still re-reading...<br />
<br />
<h2>
Articles</h2>
<h3>
<a href="https://www.bbc.co.uk/news/health-53022212">The mental health crisis looming in ICU</a></h3>
As the UK and Ireland move to relaxing the Coronavirus lockdown (if it can still be said to exist - it certainly doesn't seem to apply anymore in Belfast), Fergus Walsh points out the cost to NHS ICU staff in terms of ther mental health.<br />
<br />
<h3>
<a href="https://www.theguardian.com/commentisfree/2020/jun/12/oxford-black-professors-cecil-rhodes-british-empire">As one of Oxford's few black professors, let me tell you why I care about Rhodes</a></h3>
Given the news that the <a href="https://www.bbc.co.uk/news/education-53082545">Cecil Rhodes statue may be removed</a> from Oriel College, Simukai Chigudu details why the status is seen as offensive.<br />
<br />
<h3>
<a href="https://metaredux.com/posts/2020/06/08/the-rubocop-name-drama-redux.html">The RuboCop Name Drama Redux</a></h3>
The renewed focus on the Rhodes and other statues came about in the aftermath of the George Floyd protests. Similarly, there has been a look at the use of possibly offensive terminology in open source projects. This post details one attempt to rename the RuboCop project that went badly wrong. See also <a href="https://timriley.info/writing/2020/06/08/rubyists-we-must-do-better/">Tim Riley's write-up</a> of this incident.<br />
<br />
<h3>
<a href="https://jlongster.com/How-I-Became-Better-Programmer">How I Became a Better Programmer</a></h3>
James Long details how he become a better programmer. His key points are to experiment with different languages, and to learn from others.<br />
<br />
<h3>
<a href="https://mikemcquaid.com/2018/06/05/robot-pedantry-human-empathy/">Robot Pedantry, Human Empathy</a></h3>
Mike McQuaid, who leads the Homebrew open source project, details how they automated as much of the contribution pipeline as possible, to allow team members to focus on interacting with humans rather than code.Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-83030439289265141342020-06-05T23:47:00.001+01:002020-06-05T23:50:10.196+01:00What I'm Reading #1<p>The first in a series of posts detailing the best of what I'm reading both online and offline:</p>
<br />
<h2>Books</h2>
<h3><a href="https://www.amazon.co.uk/Wolf-Hall-Shortlisted-Golden-Booker/dp/0007230206/ref=sr_1_1?dchild=1&keywords=wolf+hall&qid=1591136790&sr=8-1">Wolf Hall</a></h3>
<p>I'm re-reading Hilary Mantel first novel on Thomas Cromwell, in preparation for reading the recently released third book in the trilogy.</p>
<h2>Articles</h2>
<h3><a href="https://www.thedetail.tv/articles/racist-intimidation-in-the-village-in-south-belfast-been-going-on-for-years">Racist intimidation in the Village in south Belfast "going on for years"</a></h3>
<p>As the protests in the United States continue over the violent death of George Floyd at the hands of the police, it might be tempting to think we don't have a racism problem in Belfast. Think again. This report from the Detail gives examples of ongoing racist attacks in the Village area of Belfast.</p>
<h3><a href="Doordash and Pizza Arbitrage">Doordash and Pizza Arbitrage</a></h3>
<p>An interesting read on the cut-throat world of food delivery.</p>
<h3><a href="http://hackeducation.com/2020/05/27/machines-of-loving-grace">'All Watched over by Machines of Loving Grace': Care and the Cybernetic University</a></h3>
<p>An essay on the impact of the current pandemic on the use of educational technology, and a look at the long history of the development of this technology.</p>
<h3><a href="https://jussiroine.com/2020/06/building-an-automated-monitoring-tool-to-track-how-many-people-are-at-the-office-by-using-unifi-network-gear-and-azure-logic-apps/">Building an automated monitoring tool to track how many people are at the office by using Unifi network gear and Azure Logic Apps</a></h3>
<p>Jussi Roine details an interesting side project using the Unifi Network's APi and Azure Logic Apps to track who is in the office. I was particularly interested to read about using the <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack">Remote Development extension</a> for VS Code.</p>
<h3><a href="https://mikemcquaid.com/2019/07/22/how-being-a-dad-has-changed-how-i-work/">How Becoming A Dad Has Changed How I Work</a></h3>
<p>Mike McQuaid, leader of the HomeBrew open source project, describes how having a family changed his work-life balance.</p>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-26648325315551203472020-06-03T11:16:00.000+01:002020-06-03T11:16:23.574+01:00Blog Migration SeriesA single place to refer to all my posts on migrating this blog away from Blogger:<br />
<ol>
<li><a href="https://www.andyparkhill.co.uk/2020/04/what-i-want-from-my-new-blog.html">What I want from my new blog</a></li>
<li><a href="https://www.andyparkhill.co.uk/2020/06/static-site-generators.html">Static Site Generators</a></li>
</ol>
Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-34280088739869082232020-06-03T08:00:00.000+01:002020-06-03T11:09:56.222+01:00Static Site GeneratorsIn my last post, I mentioned that my next step in my blog migration was to look at which static site generator (SSG) to use. I'm interested in an open source SSG that I can modify to suit my specific blogging workflow. I've been a long term user of the <a href="https://github.com/OpenLiveWriter/OpenLiveWriter">Open Live Writer</a> tool, so I want something that will be just as simple to use. I've been impressed by K Scott Allen's <a href="https://odetocode.com/blogs/scott/archive/2020/01/23/a-custom-renderer-extension-for-markdig.aspx">series</a> <a href="https://odetocode.com/blogs/scott/archive/2020/01/26/automatic-image-uploads-with-markdig-processing.aspx">of</a> <a href="https://odetocode.com/blogs/scott/archive/2020/01/30/markdown-front-matter-for-metadata.aspx">posts</a> on custom blog publishing tools to replace Open Live Writer, and also by Chris Ferdinandi's article on his <a href="https://gomakethings.com/automating-the-deployment-of-your-static-site-with-hugo-and-github/">blogging setup</a>.<br />
<br />
My specific requirements for an SSG are:<br />
<ul>
<li>Is an actively maintained open source project</li>
<li>Has a range of plugins (for tasks like generating tabular data from spreadsheets)</li>
<li>Has decent documentation to allow me to get started (note, this is where most open source projects fail in my opinion).</li>
<li>Is written in a language I have familarity with (.NET, <strike>Java</strike>, JavaScript) or I am interested in learning (Rust, Python, Go), so that I can customize the SSG (and possibly contribute back to the project).</li>
<li><strike>Uses Markdown templates</strike> <i>[See below]</i></li>
<li>Has a range of responsive templates to allow me to get started blogging quickly.</li>
</ul>
<br />
In my original requirements post, I had been interested in drafting my posts in Markdown, probably using <a href="http://markdownpad.com/">MarkdownPad2</a>. However, over the past 3-4 weeks, I have started a new role in work, which along with general lockdown craziness, means I've had relatively little free time to blog. When I have sat down to work on this post, I haven't been interested in crafting a Markdown document or raw HTML - I want to quickly write up a few paragraphs and post. Given that, I've decided to look at using a CMS (possibly headless) instead of drafting everything in raw HTML/Markdown. This will probably mean a combination of a CMS and SSG.<br />
<br />
Looking at the most popular static site generators are (Hugo, Gatsby) and some less common (11ty, Pretzel), we have:<br />
<br />
<table>
<tbody>
<tr>
<th width="20%">Project</th>
<th width="20%">Language</th>
<th width="20%">Template Type</th>
<th>Comments</th>
</tr>
<tr>
<td><a href="https://gohugo.io/">Hugo</a></td>
<td>Go</td>
<td>HTML</td>
<td>No plugins, but significant 3rd party <a href="https://gohugo.io/tools/">tooling</a> exists, including resources from migrating from other systems (including <a href="https://gohugo.io/tools/migrations/#blogger">Blogger</a>). Extensive documentation.</td>
</tr>
<tr>
<td><a href="https://www.gatsbyjs.org/">Gatsby</a></td>
<td>JavaScript (React)</td>
<td>React</td>
<td>One of the most popular SSGs, with a cloud based option and a rich plugin ecosystem.</td>
</tr>
<tr>
<td><a href="https://jekyllrb.com/">Jekyll</a></td>
<td>Ruby</td>
<td>Liquid</td>
<td>One of the original SSGs, it is a relatively simple SSG geared around blogging. It is feature rich but has poor performance when compiling posts compared to newer options.</td>
</tr>
<tr>
<td><a href="https://github.com/zeit/next.js">Next.js</a></td>
<td>JavaScript</td>
<td>React Framework</td>
<td>A minimalistic framework for server-rendered React applications as well as statically exported React apps. If using the React farmework wasn't bad enough, it also supports CSS-in-JS.</td>
</tr>
<tr>
<td><a href="https://nuxtjs.org/">Nuxt</a></td>
<td>JavaScript</td>
<td>Vue</td>
<td>Inspired by Next.js, but based on the Vue framework instead of React.</td>
</tr>
<tr>
<td><a href="https://blog.getpelican.com/">Pelican</a></td>
<td>Python</td>
<td>Jinja2 for themes, supports Markdown or reStructuredText for posts</td>
<td>Allows import from WordPress, Dotclear, or RSS feeds. A smaller project with less detailed documentation.</td>
</tr>
<tr>
<td><a href="https://metalsmith.io/">Metalsmith</a></td>
<td>JavaScript</td>
<td>Handlebars, JavaScript</td>
<td>Metalsmith is an extremely simple, pluggable static site generator. All the logic is handled that are chained together. While this makes it very flexible, it can mean it takes longer to configure than other SSGs. Poor documentation.</td>
</tr>
<tr>
<td><a href="https://www.11ty.dev/">Eleventy</a></td>
<td>JavaScript</td>
<td>HTML, Markdown, JavaScript and others.</td>
<td>A simpler static site generator, written in JavaScript as an alternative to Jekyll. Transforms a directory of templates (of varying types) into HTML.</td>
</tr>
<tr>
<td><a href="https://github.com/InkProject/ink">InkPaper</a></td>
<td>Go</td>
<td>Markdown, Golang</td>
<td>An fast and simple static blog generator. Not a particularly active GitHub project. No plugin support, poor documentation.</td>
</tr>
<tr>
<td><a href="https://github.com/Code52/pretzel/">Pretzel</a></td>
<td>.NET</td>
<td>Liquid</td>
<td>A simple, pluggable site generation tool written in .NET (C#). Pretzel follows the same convensions as Jekyll and should be compatible with basic Jekyll websites. This is a relatively simple SSG that has not yet been updated to use .NET Core.</td>
</tr>
<tr>
<td><a href="https://getpublii.com/">Publii</a></td>
<td>JavaScript</td>
<td>Handlebars</td>
<td>Publii is a desktop-based CMS for Windows and Mac that makes creating static websites fast and hassle-free. Users can enjoy the benefits of a super-fast and secure static website, with all the convenience that a CMS provides. The app runs locally on your desktop rather than on the site's server.</td>
</tr>
<tr>
<td><a href="https://gridea.dev/">Gridea</a></td>
<td>JavaScript (Vue)</td>
<td>JavaScript</td>
<td>A static blog writing client. A relatively new project, and a lot of the documentation is in Chinese.</td>
</tr>
</tbody></table>
<br />
<br />
After considering the above options, I've decided to go with Hugo. The lack of plugin support initially put me off, but it does seem to support <a href="https://gohugo.io/templates/data-templates/">data driven templates</a>. Eleventy also looks interesting, and if Hugo doesn't work out, I'll possibly use it instead. Both Gridea and Publii look useful, but I think I need to look more depth for a CMS in another post.<br />
<br />
In my next blog post, I'm going to look at setting up Hugo and starting to write a test blog with it. <br />
<br />
<h2>
Resources</h2>
<ul>
<li><a href="https://www.staticgen.com/">StaticGen - a list of Static Site Generators</a></li>
<li><a href="https://www.creativebloq.com/features/10-best-static-site-generators">The 10 best static site generators [2019]</a></li>
<li><a href="https://snipcart.com/blog/choose-best-static-site-generator">Pick the Best Static Site Generator for your 2020 Projects</a></li>
<li><a href="https://scotch.io/tutorials/top-10-static-site-generators-in-2020">The Top 10 Static Site Generators</a></li>
</ul>
<br />
<ul>
</ul>
Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-60913262107773775222020-04-21T23:38:00.001+01:002020-06-03T11:19:27.589+01:00What I want from my new blog<p>In my <a href="https://www.andyparkhill.co.uk/2020/04/andy-uses-this.html">last post</a>, I mentioned that I want to finally migrate my blog away from <a href="https://www.blogger.com/">Blogger</a>. After 10 years, my blog is looking a bit dated, and could do with a refresh. I am also keen to reduce my dependence on Google products.</p>
<p>I thought it would be interesting to blog about the process of moving to a self-hosted blog, with regular updates abou this project. This post is going to detail my requirements for the blog migration project.</p>
<h2>Requirements</h2>
<ul>
<li>Allow me to self-host my blog. This will probably be on Azure initially, but I want the freedom to host wherever I want.</li>
<li>Make use a static site generator (SSG) to generate HTML pages. The SSG should be:</li>
<ul>
<li>Built using a programming language I'm interested in learning - Python/Golang or Rust</li>
<li>Open source</li>
</ul>
<li><strike>Have ability to draft blog posts in Markdown</strike> <em>[Updated 03/06/2020]</em> As detailed <a href="https://www.andyparkhill.co.uk/2020/06/static-site-generators.html">here</a>, I'm no longer want to handcraft all my blog posts in Markdown.</li>
<li>Make use of a blog template that uses minimal, vanilla JavaScript for progressive enhancement where required</li>
<li>Allows me to integrate various little apps (like my <a href="https://www.andyparkhill.co.uk/p/reading-list.html">Reading List</a>) and dashboards into the site</li>
<li>Removes third party dependencies, such as:</li>
<ul>
<li>Google Spreadsheets to power the Reading List</li>
<li>FeedBurner for RSS</li>
<li>The Google Search integration</li>
</ul>
<li>Is fully accessible for screen readers and other assistive technologies (as verified by an accessibility audit).</li>
<li>Does not use any analytics or tracking packages (while I have removed my own Google Analytics integration from this blog some time ago, Blogger has a basic default integration with Google Analytics that cannot be removed)</li>
<li>Use an SSL certificate on my blog - possibly from <a href="https://letsencrypt.org/">Let's Encrypt</a></li>
<li>Allows me to easily include code snippets</li>
<li>The migration will allow me to maintain what little SEO I've picked up from Google over the years - basically, I'll need some way of updating any legacy URLs to point to any updated links.</li>
<li>Allows me the freedom to explore the <a href="https://daverupert.com/rss-club/">RSS club</a> or <a href="https://indieweb.org/">Indieweb</a></li>
</ul>
<p>As part of my plans to revamp my blog (and stave off boredom during the lockdown), I'm planning on blogging weekly updates on the blog migration project. The next installment will be on selecting an SSG to use.</p>
<h2>What I'm Reading</h2>
<h3><a href="https://www.amazon.co.uk/Eureka-Street-Robert-McLiam-Wilson/dp/0749396725/ref=sr_1_1?dchild=1&keywords=eureka+street&qid=1587508120&sr=8-1">Eureka Street</a></h3>
<p>I'm re-reading Robert McLiam Wilson's classic novel about Belfast during the IRA ceasefire.</p>
<h3><a href="https://themedievaldrk.wordpress.com/2019/01/27/mad-max-fury-road-as-a-sequel-to-brokeback-mountain-really/">Mad Max: Fury Road as a Sequel to Brokeback Mountain, really</a></h3>
<p>An unexpected gem of a film review. I loved it!</p>
<h3><a href="https://lukeplant.me.uk/blog/posts/why-im-leaving-elm/">Why I’m leaving Elm</a></h3>
<p>A tale of open source woe from the Elm programming language. Scratch <strike>Elm</strike> from the list of programming languages I'm interested in learning. The <a href="https://news.ycombinator.com/item?id=22821447">discussion about this article</a> on the Orange Hell Site is also worth reading.</p>
<h3><a href="https://www.theguardian.com/news/2020/apr/10/world-health-organization-who-v-coronavirus-why-it-cant-handle-pandemic">The WHO v coronavirus: why it can't handle the pandemic</a></h3>
<p>A long read on the Guardian about the World Health Organisation and why it is struggling with the Coronavirus pandemic. The author's <a href="https://www.theguardian.com/world/audio/2020/apr/21/under-attack-who-and-the-coronavirus-pandemic-podcast">interview</a> with the Guardian's Today in Focus podcast team is also available.</p>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-39934644411257812872020-04-08T08:45:00.000+01:002020-04-09T10:27:32.368+01:00Andy Uses This <p>I’m a big fan of the <a href="https://usesthis.com/">Uses This</a> website, which posts interviews with people asking them about the tools and productivity techniques they use to get stuff done. The interviews range from the awful (Apple fanboys salivating over their Macs, or <shudder/> Emacs diehards) to the sublime, when the interviewee gives you an insight into their personal philosophy, and forces you to question your own outlook.</p>
<p>My personal favourites include interviews with:
<ul>
<li><a href="https://usesthis.com/interviews/joey.hess/">Joey Hess</a> (Software developer and modern day Thoreau)</li>
<li><a href="https://usesthis.com/interviews/helen.zaltzman/">Helen Zaltzman</a> (podcaster)</li>
<li><a href="https://usesthis.com/interviews/lincoln.mullen/">Lincoln Mullen</a> (historian)</li>
<li><a href="https://usesthis.com/interviews/audrey.eschright/">Audrey Eschright</a> (Software engineer and community organiser)</li>
<li><a href="https://usesthis.com/interviews/jesse.kriss/">Jesse Kriss</a> (Software designer and developer)</li>
<li><a href="https://usesthis.com/interviews/tom.preston-werner/">Tom Preston-Werner</a> (Co-founder of GitHub - but I actually preferred the <a href="https://tom.preston-werner.com/2011/05/03/rejected-bio-from-the-setup.html">version</a> that was cut)</li>
<li>And my all-time favourite, <a href="https://usesthis.com/interviews/mhoye/">Mike Hoye</a> (fixer at Mozilla)</li>
</ul>
<p>As I’m very unlikely to ever get interviewed for the site, I thought I would post my own ‘Uses This’ interview.</p>
<p><img alt="Photo of Andy Parkhill" src="https://sites.google.com/site/andyparkhill/home/blog-post-images/PhotoOfAndy.jpg" title="Photo of Andy Parkhill" width="470" height="367"></p>
<header>
<h2 style="font-size:18px;">Andy Parkhill</h2>
<p>Software developer and eejit.</p>
</header>
<h3>Who are you, and what do you do?</h3>
<p>In no particular order, I’m a dad, husband, son, brother, Christian and an eejit. I’m really only any good at being the later. I’ve been working as a software developer for the past 15 years. I mainly work with Microsoft technologies, such as Office 365 and the Azure platform. In the past, I spent many years working with SharePoint (on-premise) but rarely touch it now. I’m currently working for the <a href="https://www.qub.ac.uk/">Queen’s University in Belfast</a>, where I work on a range of different projects (developing mobile apps, building custom sites and bespoke line of business applications).</p>
<p>You can some of my open source code on <a href="https://github.com/MagicAndi">GitHub</a>, though I mainly use <a href="https://gitlab.com/MagicAndi">GitLab</a> these days, and most of my projects are private. I’m on <a href="https://stackexchange.com/users/16356/magicandi?tab=accounts">StackOverflow</a> (though I use it less and less these days), and also on <a href="https://www.wechat.com/en/">WeChat</a> (essential for speaking to family in China), but otherwise I avoid social media. I do have a <a href="https://twitter.com/andyparkhill">Twitter</a> account, but I’m currently on a long term break from it. I feel a lot better when I’m not spending time on sites like Twitter, Facebook, Instagram, and LinkedIn, so I have blocked them across all my devices. I have started using WhatsApp to stay in touch during the Coronavirus lockdown. </p>
<h3>What hardware do you use?</h3>
<p>The most important hardware I use are a notebook and pen. I think best when I commit my thoughts to paper, and I'm most productive when I plan my day in advance using a journal. For the past 5 years, I have been using <a href="http://pukka-pads.co.uk/products/notebooks-pads/metallic-range/">Pukka Pad’s Jotta A5 notebooks</a>, with <a href="https://www.bicworld.com/en/our-products/stationery">BIC Orange Original Fine (0.8mm) ballpoint pens</a> which fit nicely within the notebook’s spiral. The books and pens are cheap, decent quality and can be found everywhere. I also use a ridiculous number of post-it notes daily.</p>
<p>My work PC is a <a href="https://www.dell.com/en-gb/work/shop/business-pcs-desktop-computers/optiplex-7040-pc/spd/optiplex-7040-desktop">Dell Optiplex 7040</a> with i7-6700 DPU @3.40 GHz processor and 16 GB RAM, running Windows 10 Pro. It is around 18 months old at this point. I use a Dell USB SK-8115 keyboard – this is an older keyboard that is a bit more solid and sturdy than the flimsy one that came bundled with the PC. I use an <a href="https://www.amazon.co.uk/Anker%C2%AE-Ergonomic-Optical-Vertical-Buttons/dp/B009D9CZ5C">Anker ergonomic vertical mouse</a>, which I simply love. I use the exact same model of mouse at home, and a wireless version for when I'm travelling with my laptop. Similarly, I use identical <a href="https://www.amazon.co.uk/Fellowes-Crystals-Mouse-Wrist-Support/dp/B0012315XU">Fellowes crystal gel mouse pads</a> and <a href="https://www.amazon.co.uk/Fellowes-Crystals-Keyboard-Wrist-Black/dp/B000WLFK70">keyboard rests</a> at work and home. I have a dual monitor setup in the office, using 2 mismatched Dell monitors.</p>
<p>I have recently started using an old <a href="https://support.microsoft.com/en-gb/help/4037654/surface-pro-2-features">Surface Pro 2 tablet</a> at work. It has a i5-4200 CPU @ 1.6 GHz processor and 4 GB RAM, and runs Windows 10 Pro. I quite like having it for meetings, but it is useless for any development work.</p>
<p>My other main hardware in work are my <a href="https://www.amazon.co.uk/Sennheiser-HD-202-II-Professional/dp/B003LPTAYI/ref=pd_sbs_23_2/257-2017294-4323242?_encoding=UTF8&pd_rd_i=B003LPTAYI&pd_rd_r=ae431228-d4fa-4647-ad57-9256d936559c&pd_rd_w=R9QOb&pd_rd_wg=oKJ41&pf_rd_p=cc188cba-1892-42b3-956f-6c67d0ab7a00&pf_rd_r=SZDXS8YRRAK21VV0M306&psc=1&refRID=SZDXS8YRRAK21VV0M306">Sennheiser HD202 headphones</a>. This is my second set of the same model – I had the initial set for 6 years and liked them, so I didn’t see any point looking at other headphones when I had to replace them.</p>
<p>At home, I have just received and setup my new laptop, a <a href="https://www.dell.com/en-uk/shop/2-in-1-laptops/new-inspiron-14-5000-2-in-1/spd/inspiron-14-5491-2-in-1-laptop/cn51905">Dell Inspiron 14" 2-in-1 (5491) touch enabled laptop</a>, with a i7-10510U CPU @ 4.9 GHz, with 8GB RAM installed, and another 8GB arriving shortly from Crucial. I have it for under a month, and absolutely love it. My previous laptop was also a Dell, an Inspiron 15 (7537) that was over 7 years old, and that I finally managed to brick after it stopped supporting Windows 10. At the minute, I don’t use a monitor along with my laptop at home. Otherwise, my accessories at home match my work setup – a sturdy generic keyboard, Anker vertical mouse, and identical mouse pad and keyboard rest.</p>
<p>My home laptop uses Windows 10 Pro – after several attempts to use a <a href=2https://www.andyparkhill.co.uk/2018/10/goodbye-to-ubuntu-hello-windows-10.html">Linux desktop</a>, I have given up spending my free time messing around in dotfiles and trying to get things working, and instead focus on spending my time getting things done. Windows 10 allows me to do that, and the introduction of WSL means I no longer need to setup a dual boot drive if I ever need to use Linux. Additionally, my laptop is our main PC at home, so my wife also uses it, and she definitely prefers using Windows over Ubuntu.</p>
<p>I currently use an iPhone 5s, having finally given up on my beloved iPhone 4s a few months ago. The iPhone 4s was my first ever Apple product, as I had previously been using Android phones. It was a present from my then-girlfriend (now my wife), so I couldn’t say no... It was second hand when I got it, and after using it for around 5 years, the increasing number of unsupported apps and poor battery life meant it was time to upgrade.</p>
<p>Like most people working in IT, I have a number of other older devices kicking around at home – an iPad mini that I inherited from my wife when she upgraded and that I no longer use, an older model iPad that needs repaired (stuck in a boot loop), and an old Toshiba laptop that I’m still trying to find some use for. Also, a number of old Android phones in various states of repair.</p>
<p>Other notable pieces of hardware:</p>
<ul>
<li>A decent desk, and an sturdy, comfortable office chair that I got when a previous employer moved to smaller premises</li>
<li>Lego – Our son has a large tub of Duplo sets, and a small but growing amount of Lego City sets, and it always keeps him entertained.</li>
<li><a href="https://www.amazon.co.uk/gp/product/B00365EVWE/">Sennheiser CX 870 ear buds</a> – I carry these everywhere in my...</li>
<li><a href="https://www.swissgear.com/backpacks/swissgear-6655-laptop-backpack">Swissgear laptop backpack</a> – I’ve had this bag for over 7 years now and it appears to be indestructible</li>
</ul>
<p>As you can tell, I prefer to using decent low to mid-range hardware. If possible, I max out the RAM for a device, and then continue using it until it fails.</p>
<h3>And what software?</h3>
<p>Any important information I put in my paper journal will eventually end up in <a href="https://products.office.com/en-gb/onenote/digital-note-taking-app">OneNote</a>, which is the best digital notebook and organiser I have came across (the OCR functionality in particular is excellent). I still use the desktop app, as opposed to the web application. My notes are then synched and available across all of my devices.</p>
Using the same OS across my home and work devices means I can have a consistent setup across them all. I use this <a href="https://github.com/Disassembler0/Win10-Initial-Setup-Script">Windows 10 setup script</a> to automate my setup, and I create a PC specific PowerShell script for installing any programs using <a href="https://gist.github.com/MagicAndi/991c9c9aaaeb12c2079d47e12dfe404c">this template</a>. I then have a checklist to complete the my Windows 10 setup (mainly configuring security and privacy options, and application specific configuration). I haven't yet taken the time to automate this, but probably should. It is worth pointing out that my Windows 10 configurations are mainly hiding the new feature bloat (has anyone ever used 3D objects?), and returning it to the classic Windows 7 desktop configuration. To help with this, I also use the <a href="https://github.com/Open-Shell/Open-Shell-Menu">Open Shell</a> for the classic Windows 7 Start menu.
<p>The main desktop applications that I use are: </p>
<ul>
<li>Dropbox – despite its growing cost, and increasing feature bloat, this is still the best synchronization tool I've came across.</li>
<li>My main browser is Firefox, and I sync my profile across my various devices. I work hard to minimize my use of extensions for security, and to avoid being fingerprinted by sites. My main extensions are CanvasBlocker, Privacy Badger, and uBlock Origin. I use <a href="https://www.startpage.com/">Startpage.com</a> for search.</li>
<li>I occasionally use Chromium for web development.</li>
<li>Visual Studio 2019 for development (generally C# but also a little Python).</li>
<li>Visual Studio Code for lightweight code and text editing.</li>
<li>Git and <a href="https://github.com/gitextensions/gitextensions">Git Extensions</a> for source control.</li>
<li>Notepad++ for occasional text editing (specifically for any serious regex work).</li>
<li><a href="https://www.launchy.net/">Launchy</a> – an application launcher. It isn’t really required for Windows 10, but I've grown so used to it that I prefer using it to the built-in launcher.</li>
<li><a href="https://getgreenshot.org/">Greenshot</a> for taking screenshots.</li>
<li><a href="https://www.cobiansoft.com/">Cobian</a> – a backup tool for Windows.</li>
<li>LibreOffice at home, instead of Microsoft Office (though I debate if I still need to install it, given how good the Office 365 web apps are now).</li>
<li><a href="https://markdownpad.com/">MarkdownPad</a> – a Markdown editor for Windows (I have a license for the Pro version).</li>
<li>I use KeePass as my password manager.</li>
<li><a href="https://signal.org/">Signal</a> for secure messaging across my devices.</li>
<li><a href="https://stevemiller.net/puretext/">PureText</a> – a tiny utility for stripping out the formatting of any text copied to the clipboard.</li>
<li>The <a href="https://authy.com/">Authy desktop client</a> for 2FA.</li>
</ul>
<p>I also have some <a href="https://github.com/MagicAndi/HostsUpdater">console</a> <a href="https://github.com/MagicAndi/BlockSiteService">apps</a> that I use to limit my distractions by blocking social media and any advertising on my various machines.</p>
<p>The main web applications/sites that I use are:</p>
<ul>
<li>Gmail</li>
<li>Google Calendar</li>
<li><a href="https://www.wallabag.it/en/">Wallabag</a>, an open source alternative to Pocket</li>
<li><a href="https://feedly.com/">Feedly</a> for managing my RSS subscriptions</li>
<li>Google Spreadsheets</li>
<li>Microsoft To Do</li>
</ul>
<p>I am slowly but surely starting to reduce my use of Google products. I still use Blogger to host this blog, but I've decied to start self-hosting later this year.</p>
<p>I try hard to limit the number of apps I install on my mobile, but...</p>
<ul>
<li>The iOS Mail and Calendar apps</li>
<li>OneNote</li>
<li>Microsoft To Do</li>
<li>Dropbox</li>
<li>Authy for 2FA</li>
<li>MiniKeePass</li>
<li>Signal</li>
<li>WeChat for keeping in touch with family</li>
<li>WhatsApp for keeping in touch with friends and work colleagues</li>
<li>Pleco</li>
<li>Nemo for Cantonese</li>
<li>Shortcuts for iOS</li>
<li>Apple Health app for tracking my weight, along with the Lose It! app for tracking my food intake.</li>
<li>A generic Interval Timer for circuit training</li>
</ul>
<p>After writing this list, I reckon I could do with culling the number of apps even further. I use the iOS Screen Time settings to track and limit my use of my phone.</p>
<h3>What would be your dream setup?</h3>
<p>When I wrote the first draft of this post, my main wish was for my own home office setup, rather than just a desk in our bedroom. Now, in the midst of the Coronavirus lockdown, I actually have a home office with the same desk in the same bedroom, but with (relative) peace and quiet during the working day from my family. It is working out a lot better than I thought, but there are still issues around distractions.</p>
<p>Ideally, I would love to move away from using Google products and, where possible, start self-hosting open source alternatives (like NextCloud, or my own Wallabag instance). Similarly, it would be great to be more involved in open source, and to start programming in other languages outside of the .NET ecosystem. I have started looking at Python, but would love to do more than just Hello World projects.</p>
<p>But that all takes time and I don't have a huge amount of time for programming outside of work these days... I suspose what I am really asking for is more free time - and it turns out Coronavirus has cleared all our social calendars for the foreseeable future. We'll see what I manage to achieve in the next few months.</p>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-27738421479256289832020-03-29T08:00:00.000+01:002020-03-29T19:05:28.931+01:0010 Years of BloggingTen years ago today, I posted for the first time on this blog. At the time, I had given my resignation in my job and had some free time while working my notice. So instead of working for my employer, I decided to do something for myself, and this blog was born.<br />
<br />
My first article was on <a href="https://www.andyparkhill.co.uk/2010/03/alan-turing-and-lego-of-doom.html" target="_blank">Turing machines</a>. My second was about my <a href="https://www.andyparkhill.co.uk/2010/03/moving-on.html" target="_blank">new job</a>. The third detailed <a href="https://www.andyparkhill.co.uk/2010/04/why-im-blogging.html" target="_blank">why I was blogging</a> and what I hoped to blog about - which was really about my side projects and anything technical that jumped out at me. I then started a weekly round-up of links useful to developers, focusing on the .NET space, but also including local developer events and job postings. The weekly roundup died after 4 months, but while posting that, I was also blogging about TV, random technical topics. I blogged a few times on scripting on PowerShell (my most popular post is from 2012, and is on <a href="https://www.andyparkhill.co.uk/2012/02/calling-executable-files-in-powershell.html" target="_blank">calling other programs from PowerShell</a>).<br />
<br />
Over the past few years, I have been blogging less frequently (job and family life have been eating up all my time), but I managed to write a long series on <a href="https://www.andyparkhill.co.uk/2016/11/sharepoint-development-past-present-and.html" target="_blank">SharePoint Development</a> that I'm quite proud of. Though looking back and reading it now, I should have edited ruthlessly down to just 2-3 articles. I have also written a few personal posts over the past 10 years. Altogether, I have posted 106 times. Amazingly, there are people out there who take the time to read my nonsense.<br />
<br />
This blog started because I had some free time and wanted to do something for myself. Ten years later, as I write this at home with my family, we are self-isolating in the middle of a global pandemic. I have some time again for myself, in a way I haven't in a long time. I want to do something for myself - I want to write again, and learn with some side projects. I already have a few draft posts ready to publish. But more importantly, I'm looking at my blog, and realising that I need to invest in it. It is looking tired - I need to move it off Blogger, and onto a new platform that will allow me to do more with it. Here's looking to another 10 years of blogging. And thank you for reading.Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-58555351029128517792019-10-07T19:17:00.000+01:002019-10-07T19:17:02.697+01:00Parenting<p>For the last month, I’ve been looking after my son on my own. My wife has been in China dealing with a family emergency, and due to its nature, it was thought best that she go alone. I am lucky enough to have an employer that could allow me to take unpaid leave to look after Matthew, and we are also lucky enough to be in a position financially to afford to take it. </p><p>For the past month Matthew and I have been together pretty much 24/7. It was pretty intense, and at times, an absolutely exhausting time. Our father/son relationship has deepened greatly, and my appreciation for the work done by my wife Mei in looking after Matthew has grown exponentially. I considered myself a pretty involved father before – I now know I was kidding myself. </p><p><img width="528" height="396" title="Matthew playing with Duplo" alt="Matthew playing with Duplo" src="https://sites.google.com/site/andyparkhill/home/blog-post-images/MatthewPlayingDuplo2.jpg"></p><p>Tomorrow I go back to my regular work, writing text files for a computer. Compared to parenting, it is by far the easier job of the two. The past month has been tough at times – but so are most things that are worth doing. I suspect that in the future, I look back at this as one of the most productive times in my life.</p>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-3227968322568529752019-04-03T08:30:00.000+01:002019-04-03T10:54:13.977+01:00Setting Row and Column Formats in SharePoint Online with PowerShell<p>I’m currently spending most of my time working in Office 365, in particular SharePoint Online (along with Microsoft Flow and PowerApps). While the new modern page look is a major improvement on the classic SharePoint on-premise look, customers still want to be able to customize the default look. </p><p>To allow customisation of how lists and libraries appear, Microsoft allows you to set <a href="https://docs.microsoft.com/en-us/sharepoint/dev/declarative-customization/view-formatting">view formatting</a>. This uses a JSON object to describe how elements are displayed when a row is loaded in a list view. A useful repository of open source JSON formatting samples is available at <a title="https://github.com/SharePoint/sp-dev-list-formatting" href="https://github.com/SharePoint/sp-dev-list-formatting">https://github.com/SharePoint/sp-dev-list-formatting</a>.</p><p>Similarly, you can apply a JSON object to customize how a <a href="https://docs.microsoft.com/en-us/sharepoint/dev/declarative-customization/column-formatting">field (column) is displayed</a> in a list view. Note, neither row or column formatting changes the data in the list item or file; it only changes how it’s displayed to users who browse the list. </p><p>While there is a lot of documentation around setting the JSON formatting using the SharePoint Online UI, there is little documentation around using PowerShell to do this. I came across this method of setting the JSON formatting object:</p>
<!-- HTML generated using hilite.me --><div style="background: rgb(39, 40, 34); border-width: 0.1em 0.1em 0.1em 0.8em; border-style: solid; border-color: gray; padding: 0.2em 0.6em; border-image: none; width: auto; overflow: auto;"><pre style="margin: 0px; line-height: 125%;"><span style="color: rgb(117, 113, 94);"># Get the raw content for the JSON Definition</span>
<span style="color: rgb(248, 248, 242);">$listViewFormattingJSON</span> <span style="color: rgb(248, 248, 242);">=</span> <span style="color: rgb(248, 248, 242);">Get-Content</span> <span style="color: rgb(248, 248, 242);">-Raw</span> <span style="color: rgb(248, 248, 242);">-Path</span> <span style="color: rgb(230, 219, 116);">'.\ViewRowFormat.json'</span><span style="color: rgb(150, 0, 80); background-color: rgb(30, 0, 16);">;</span>
<span style="color: rgb(117, 113, 94);"># Update the List View Formatting Definition</span>
<span style="color: rgb(248, 248, 242);">$view</span> <span style="color: rgb(248, 248, 242);">=</span> <span style="color: rgb(248, 248, 242);">Get-PnPView</span> <span style="color: rgb(248, 248, 242);">-List</span> <span style="color: rgb(248, 248, 242);">$list</span> <span style="color: rgb(248, 248, 242);">-Identity</span> <span style="color: rgb(248, 248, 242);">$viewName</span>
<span style="color: rgb(248, 248, 242);">$view</span> <span style="color: rgb(248, 248, 242);">|</span> <span style="color: rgb(248, 248, 242);">Set-PnPView</span> <span style="color: rgb(248, 248, 242);">-Values</span> <span style="color: rgb(150, 0, 80); background-color: rgb(30, 0, 16);">@</span><span style="color: rgb(248, 248, 242);">{CustomFormatter</span> <span style="color: rgb(248, 248, 242);">=</span> <span style="color: rgb(248, 248, 242);">$listViewFormattingJSON.ToString()}</span>
<span style="color: rgb(248, 248, 242);">Invoke-PnPQuery</span>
</pre></div>
<p>And similarly, to set the column formatting:</p>
<!-- HTML generated using hilite.me --><div style="background: rgb(39, 40, 34); border-width: 0.1em 0.1em 0.1em 0.8em; border-style: solid; border-color: gray; padding: 0.2em 0.6em; border-image: none; width: auto; overflow: auto;"><pre style="margin: 0px; line-height: 125%;"><span style="color: rgb(248, 248, 242);">$statusFieldFormattingJSON</span> <span style="color: rgb(248, 248, 242);">=</span> <span style="color: rgb(248, 248, 242);">Get-Content</span> <span style="color: rgb(248, 248, 242);">-Raw</span> <span style="color: rgb(248, 248, 242);">-Path</span> <span style="color: rgb(230, 219, 116);">'.\StatusColumnFormatting.json'</span><span style="color: rgb(150, 0, 80); background-color: rgb(30, 0, 16);">;</span>
<span style="color: rgb(248, 248, 242);">$statusField</span> <span style="color: rgb(248, 248, 242);">=</span> <span style="color: rgb(248, 248, 242);">Get-PnPField</span> <span style="color: rgb(248, 248, 242);">-List</span> <span style="color: rgb(248, 248, 242);">$ListName</span> <span style="color: rgb(248, 248, 242);">-Identity</span> <span style="color: rgb(230, 219, 116);">'Status'</span>
<span style="color: rgb(248, 248, 242);">$statusField</span> <span style="color: rgb(248, 248, 242);">|</span> <span style="color: rgb(248, 248, 242);">Set-PnPField</span> <span style="color: rgb(248, 248, 242);">-Values</span> <span style="color: rgb(150, 0, 80); background-color: rgb(30, 0, 16);">@</span><span style="color: rgb(248, 248, 242);">{CustomFormatter</span> <span style="color: rgb(248, 248, 242);">=</span> <span style="color: rgb(248, 248, 242);">$statusFieldFormattingJSON.ToString()}</span>
<span style="color: rgb(248, 248, 242);">Invoke-PnPQuery</span>
</pre></div><p> These code snippets help to set the customized view below:</p><p><a href="https://sites.google.com/site/andyparkhill/home/blog-post-images/ListFormatting.png"><img width="500" height="201" title="Formatted List View" alt="List view showing both view and column formatting" src="https://sites.google.com/site/andyparkhill/home/blog-post-images/ListFormatting.png"></a></p><p>Note, I use the <a href="https://docs.microsoft.com/en-us/powershell/sharepoint/sharepoint-pnp/sharepoint-pnp-cmdlets?view=sharepoint-ps">SharePoint Patterns and Practices (PnP) PowerShell</a> library to provision and manage my SharePoint Online solutions.</p>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-29066568681707222282019-01-25T16:49:00.001+00:002019-01-25T16:49:39.882+00:00SysAdmins<p>‘<a title="Programming Sucks" href="https://www.stilldrinking.org/programming-sucks" target="_blank">Most people don’t even know what sysadmins do, but trust me, if they all took a lunch break at the same time they wouldn’t make it to the deli before you ran out of bullets protecting your canned goods from roving bands of mutants.</a>’</p><p>This x100.</p>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-22493516395426537342018-12-13T19:00:00.000+00:002018-12-24T22:31:17.429+00:00PowerShell Core<p>I recently read a great post by Paul Cunningham on <a href="https://paulcunningham.me/career-advice-for-it-professionals/" target="_blank">career advice for IT professionals</a>, and this line stuck with me: ‘Change is a constant’. This really resonated, especially as I belatedly caught up with the recent changes in PowerShell. </p><p>I started using PowerShell in 2008, after a more experienced colleague advised me to start spending one afternoon a week learning about new technologies and tools as part of my professional development. This is great advice, by the way, and I would recommend every developer to do it. I also would suggest <strong><em>not </em></strong>asking your manager for permission to do this – if you’re a professional software developer, you need to make time <strong><em>as part of your job</em></strong> to learn new technologies. It is for both for your benefit (professional development) and your company’s (they get a more efficient developer), even if they may not always realise it.</p><p>So I started using PowerShell 10 years ago, and I quickly started using it daily, especially as my career started involving more and more SharePoint development, support and administration. However, sometimes I don’t follow my own advice, and I haven’t been keeping up with the major changes happening with PowerShell. It was only when I realised that development had stopped on the <a href="https://docs.microsoft.com/en-us/powershell/azure/overview?view=azurermps-6.13.0" target="_blank">AzureRM PowerShell module</a>, and that Microsoft was instead focusing on a new cross platform <a href="https://docs.microsoft.com/en-us/powershell/azure/new-azureps-module-az?view=azurermps-6.13.0" target="_blank">Az module</a> , that I realised that I had missed a number of major announcements about PowerShell and the direction it was heading. With the release of .Net Core in 2016, Microsoft had started implementing a cross platform version of PowerShell, now known as <a href="https://docs.microsoft.com/en-us/powershell/scripting/powershell-scripting?view=powershell-6" target="_blank">PowerShell Core 6.0</a>. This was released to general availability back in <a href="https://blogs.msdn.microsoft.com/powershell/2018/01/10/powershell-core-6-0-generally-available-ga-and-supported/" target="_blank">January 2018</a>. I had missed a major change in an essential developer tool that I use daily. Change really is constant, and I hadn’t been prepared for this particular one!</p><p>The major differences between PowerShell Core and the legacy Windows PowerShell are:</p><ol><li>PowerShell Core is cross platform and can be run on Windows, Linux and Mac systems. </li><li>PowerShell Core is <a href="https://github.com/PowerShell/PowerShell" target="_blank">open source</a>.</li><li>Currently, the major breaking changes in PowerShell Core are:</li><ol><li>PowerShell Workflows are not available.</li><li>The Out-Gridview command is not available in PowerShell Core</li><li>PowerShell Core does not support the WMI v1 cmdlets and a large number of other Windows OS specific cmdlets.</li><li>While Windows PowerShell ships with the ISE editor, PowerShell Core encourages the use of Visual Studio Code.</li><li>PowerShell core is case-sensitive, as it must now run on Unix operating systems.</li></ol></ol><p>As PowerShell Core uses the less feature-rich .NET Core and .NET Standard, it currently only offers a subset of the functionality offered by Windows PowerShell. This will change over time as the Powershell Core framework matures, and as more functionality is developed for it. While Windows PowerShell will continue to be maintained (with bug fixes and security updates), there will be no new functionality added to it. </p><p>It is pretty easy to get started using PowerShell Core. It can be installed and run alongside your existing Windows PowerShell. I use <a href="https://chocolatey.org/" target="_blank">Chocolatey</a> to install (almost) everything on my Windows PCs, as it allows me to configure automatic updates. To install PowerShell Core using Chocolatey, run:</p><p><font face="Courier New"><strong>choco install powershell-core</strong></font></p><p>Once installed, it is worth configuring the following:</p><ol><li>Modify your profile. The profile path in PowerShell Core is different to that of Windows PowerShell, and is at C:\Users\{username}\Documents\PowerShell\Microsoft.PowerShell_profile.ps1</li><li><a href="https://www.iannoble.co.uk/use-powershell-core-visual-studio-code/" target="_blank">Modify VS Code to use the PowerShell Core Integrated Terminal</a>.</li><li>Install the <a href="https://www.powershellgallery.com/packages/WindowsCompatibility/1.0.0" target="_blank">Windows Compatibility module</a> to allow PowerShell Core to invoke commands that are currently only available in Windows PowerShell. This will allow you to run existing PowerShell scripts in PowerShell Core without any changes.</li></ol><p>As I’m spending a lot of time in Azure, the first new PowerShell Core module I installed was the new <a href="https://docs.microsoft.com/en-us/powershell/azure/new-azureps-module-az?view=azurermps-6.13.0" target="_blank">Az module</a>, which replaces the older AzureRM modules. Once the module is installed, to ensure compatibility with existing AzureRm scripts you should run the <font face="Courier New"><strong>Enable-AzureRmAlias</strong></font> cmdlet, to enable aliases for your existing scripts <strong><em>for the current session only</em></strong>.</p>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-18773853768305616412018-11-08T11:03:00.001+00:002018-11-08T11:03:32.243+00:00PowerShell - Writing to the same line with Write-Host<p>This is a PowerShell tip that I’m posting for future use. If you want to write information to the same line using the Write-Host cmdlet, you use the –NoNewLine switch:</p><p><font face="Courier New"><strong>Write-Host "Countdown - $index seconds remaining" –NoNewline</strong></font><p>If you want to overwrite the previous content written, you can use the carriage return character (courtesy of this <a href="https://stackoverflow.com/a/31232087/35483" target="_blank">StackOverflow answer</a> by <a href="https://stackoverflow.com/users/1103014/dullson" target="_blank">Dullson</a>):<p><font face="Courier New"><strong>Write-Host "`rCountdown - $index seconds remaining" –NoNewline</strong></font><p>Note, you may need to use spaces to blank out previous content if the previous string is longer than the new content string:<p><font face="Courier New"><strong>Write-Host "`rCompleted $seconds second countdown. "</strong></font><p>Note, the line above doesn’t use the –NoNewLine switch, so new further content can be written to that line in the console. I’ve used this PowerShell snippet for a <a href="https://gist.github.com/MagicAndi/a18f4fd7543ef2491b756b2fb0d30956" target="_blank">simple sleep timer</a> with a visual countdown, when I didn’t want to use the default progress indicator (the Write-Progress cmdlet).Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-31904456559467314452018-10-30T08:00:00.000+00:002018-10-30T08:00:01.398+00:00Goodbye to Ubuntu, Hello Windows 10<p>For the past 18 months, I've been using Ubuntu for my main laptop at home. This is my third attempt to use a Linux distribution as my <a href="https://www.andyparkhill.co.uk/2010/05/mint-really-is-mint.html" target="_blank">primary Operating System</a>. However, in the past week, I have went back to using Windows on my laptop. This blog post explains why.<p>I have been using Ubuntu 16.04 on my laptop, and I have to admit to being impressed initially. <strong>Everything. Just. Worked.</strong> This was in contrast to previous attempts to using Linux, which had failed due to repeated hardware (driver) issues. This time, my monitors and printers just worked in the same way you would expect on a Windows machine, with no messing around in dot files, or desperate searching of online forums for the correct configuration.<p>After a while, I started to notice a few pain points. These were mainly around programs that were unavailable for Linux, such as WeChat. I could normally work around these programs but the program I really missed was iTunes. My wife and I both use iPhones and iPads, and as I'm the family IT guy, I'm responsible for backing them up and upgrading them. I created a Windows VM to install iTunes on and used this to backup the iOS devices. However the process for connecting the device to the VM, and forcing the host device to release its connection to the device was convoluted. What should be a 10-15 minute process to backup your iPhone would require an hour or two of configuring and restarting VMs and reconnecting devices. <p>As I only backed up the devices once a quarter, this was a pain but bearable. But the final nail in the coffin for my current Linux experiment was the news that Dropbox would no longer support (the default) <a href="https://www.dropboxforum.com/t5/Syncing-and-uploads/Dropbox-client-warns-me-that-it-ll-stop-syncing-in-Nov-why/m-p/290065/highlight/true#M42255" target="_blank">Ubuntu encrypted hard disks</a> from November. I've been a paying customer of Dropbox for seven years, and my workflow is optimised around using it. While I'm deeply unimpressed by their decision to yank support from their Linux customers, I'm not currently prepared to stop using it.<p>To make sure I would be able to continue to use Dropbox, I've rebuilt my laptop with Windows 10. It is great to be using the same OS both at home and work, and I've built both machines using the same configuration scripts. I had thought about running a dual boot setup at home, but as I already use Windows Subsystem for Linux (WSL), I didn't see it being very useful. If I need a full Linux setup, I can simply spin up a virtual machine.<p>While I miss the full control I had over my Ubuntu OS (with all the configuration you need to do to try and keep Windows 10 secure and private, you realise that you're very definitely not in full control of it), I do enjoy the ease of using the Windows OS. It is just easier to get stuff done. When I'm at home, I have limited time to work on personal projects, and I don’t want to be messing around trying to fight the OS. While I enjoyed playing with Linux, I'm not sure I'll be rushing to make it my primary OS again. While Linux has dramatically improved (particularly around hardware support), the lack of support for iOS devices, and the lack of certain proprietary programs mean that Linux still isn't ready for widespread use.</p>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-90073836221581004682018-08-29T08:00:00.001+01:002021-01-03T21:38:16.272+00:00No Tea in China...My family and I were lucky enough to spend June in China visiting my wife's family. We spent a week in Hong Kong, and then crossed the border to spend the next 3 weeks in and around Shenzhen. I thought I post a few random thoughts and observations from my trip...<br>
<br>
<h3>
Hong Kong </h3><p>
I found Hong Kong to be a very friendly city, and I enjoyed the opportunity to use my very rudimentary Cantonese. Despite being a incredibly busy city of some 7 million people, it is a great place to visit as a family with a young child (though we passed on visiting the Peak – the tram didn't look pram friendly). Unfortunately, we spent most of our time organising visas for China, so we didn't see as much of Hong Kong as I hoped. My main impressions were the simply fantastic food (we had our best meal in a little local canteen that most tourists wouldn't look twice at), the excellent metro service (the Octopus card used widely in Hong Kong instead of cash), and a futuristic and incredibly efficient airport. </p><p><img width="467" height="623" title="Mei & Matthew in Hong Kong" alt="https://sites.google.com/site/andyparkhill/home/blog-post-images/MeiAndMatthewinHK.jpg at a public park in Hong Kong" src="https://sites.google.com/site/andyparkhill/home/blog-post-images/MeiAndMatthewinHK.jpg"><br></p>
<h3>China </h3><p>We spent most of our time in Shenzhen, a city in Guangdong Province, just to the north of Hong Kong. Most of my wife’s family live here, and we spent a lot of our time visiting her relatives and introducing them to our son Matthew for the first time. </p><p>Shenzhen is a massive city of over 16 million inhabitants that has sprung up in just 30 years from what was originally a small fishing town. The city is full of skyscrapers (residents are very proud of having the second tallest building in China) and appears to be continually rebuilding itself every few years. People revisiting the city after a few years often get lost, as the cityscape is unrecognisable from the last time they visited. </p><p><img width="516" height="387" title="" alt="Shenzhen skyline at Night" src="https://sites.google.com/site/andyparkhill/home/blog-post-images/ShenzhenSkylineAtNight.jpg"></p><p>Some random thoughts:</p><ul><li>Rental bikes are absolutely everywhere, littering the streets, but relatively few people seem to be using them. A lot more people appear to be using battery powered bikes. </li><li>
Unsurprisingly in this new city, there is still a significant wealth disparity, with large numbers of migrant workers from the rural China coming to the city for work.</li><li>Related to the above, you’ll more commonly speak Mandarin than Cantonese – the people you interact day to day with in Shenzhen (in taxis, in the supermarket) will typically be migrant workers and will not speak Cantonese.</li><li>Like Hong Kong, Shenzhen has a very efficient public transport system (both the local bus network and the growing metro system). The public transport makes up for the traffic in Shenzhen, which is insane.</li><li>
Living costs in Shenzhen seem to be relatively low (for a Westerner), but high relative to the rest of China.</li></ul><p>Whilst in Shenzhen, we paid a visit to the Huaqiangbei, the world famous electronics market. It was an interesting place to visit, but speaking to some of Mei’s family, the market seems to be in decline and employs fewer people than in the past.</p><p>As I’m currently working in a UK university, we visited a local university campus in Shenzhen. There are a number of different universities in Shenzhen, notably the <a href="https://en.wikipedia.org/wiki/Southern_University_of_Science_and_Technology" target="_blank">Southern University of Science and Technology</a> (see also <a href="https://www.timeshighereducation.com/features/how-high-can-sustech-fly" target="_blank">this article</a>). We visited the campus of the Peking University HSBC Business School, which is an international graduate business school, but we also passed by some of the other universities during our travels. It is striking how large the university campuses are, and how much building is going on at them. Higher education is a major focus of the Chinese government, and it is spending a lot of money to turn them into world class institutions. UK universities will not be able to compete on shiny new buildings alone, something which the UK VCs don’t seem to understand. The only way to compete with Chinese universities will be by delivering world class teaching and research – something that UK VCs are actively harming by treating staff as a hindrance rather than an asset. I expect a lot more Chinese students to opt to study in China in the future as the word standing of their universities continue to increase, <a href="https://thepienews.com/news/record-numbers-studying-in-china/" target="_blank">along with increasing numbers of foreign students</a>. </p><p><img width="550" height="413" title="" alt="Enterance to a Hakka Village near Shenzhen" src="https://sites.google.com/site/andyparkhill/home/blog-post-images/HakkaVillage.jpg"><br>
</p><p>We also got a chance to visit the nearby smaller cities of Pingshan and Dayawan, as well as spending a couple of nights at a local holiday resort. <br>
</p><p>Other random thoughts:</p><ul><li>
I noticed a lot more use of people and manual labour (in construction and retail) than would be the case in Europe.</li><li>
There is still significant inequality between the city and rural area. This is unsurprising for a country that has changed, and continues to change, so quickly in recent years..</li><li>There is a very real exercise and fitness culture in China. There were daily dance and Tai Chi sessions in all the local parks that we visited. The parks were filled in the evenings with people exercising (walking and jogging, playing badminton, attending dance classes) after work. </li></ul><p><img width="517" height="689" title="" alt="Exercising in an outdoor gym" src="https://sites.google.com/site/andyparkhill/home/blog-post-images/ExercisingInChina.jpg"></p><ul><li>Driving in China (and particularly Shenzhen) is insane. Defensive driving is essential, as drivers will drive very closely in traffic and will change lanes rapidly without indicating. Whilst the <a href="https://www.scmp.com/magazines/post-magazine/long-reads/article/2142449/chinas-self-driving-vehicles-track-take-global" target="_blank">Chinese government is promoting self driving cars</a>, they are a long way from ever appearing on China’s roads. But given that road accidents kill 700 people a day in China, there will be a greater acceptance of self driven cars in China than in Europe or the US.</li><li>China is a <em>tough</em> place to visit as a foreigner. If you don’t speak or read the language, there is very little allowance given for you, unlike other countries in Asia. Shenzhen was significantly easier for a foreigner than the smaller cities, but still tough. The major street signs in Shenzhen were in both Chinese and English, which was a life saver. I knew a little Cantonese and very little Mandarin, and couldn’t read any Chinese characters. I’m already looking at learning more Mandarin and learning to read Chinese characters in preparation for my next visit.</li><li>WeChat is an essential app if you’re visiting China, as well as using a VPN to access websites outside of the Great Firewall of China. </li><li>Despite trying every coffee and tea shop I came across, I was unable to find a decent cup of black tea with milk. If I hadn’t packed my own teabags, I doubt if I would have survived the whole trip. </li></ul><p>China is huge country, and I only spent a brief time there. But I really enjoyed our stay, and I came away impressed with the scale of the country’s ambition and the people I met there. I’m looking forward to our next visit to China already.</p>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-57782813994737177702018-08-28T08:00:00.000+01:002018-08-28T10:19:38.779+01:00Reducing Azure Costs<p>As part of my study for the Microsoft 70-533 exam, I’ve been interested in finding out how to minimize my costs in Azure. This is particularly important as I’m spinning up a large number of virtual machines and web applications as part of my study for the exam. I’ve gathered the following list of tips on how to reduce your Azure costs.</p><h3>General</h3><ul><li>Each Azure service is priced differently. Use of the <a href="https://azure.microsoft.com/en-gb/pricing/calculator/" target="_blank">Azure Pricing Calculator</a> to estimate the cost for a specific resource and to identify all the resources/services used to host an application. </li><li>While is is obvious that different services will have different costs, not everyone is aware that the same service will vary in cost between the different Azure locations. The <a href="https://azureprice.net/">https://azureprice.net/</a> site lists the regional pricing for Azure VMs.</li><li>You’re charged for the resources services you use, so shut down non-production resources when they're not required (like outside working hours). This can be done using either a scheduled script or by using one of the various cloud management applications. </li><li>Use pre-paid subscriptions to get a discount (even on pay as you go subscriptions) - Microsoft offers discounts of 2.5-5% based on 6 or 12 months pre-payment.</li><li><a href="https://azure.microsoft.com/en-gb/support/legal/offer-details/" target="_blank">If available on your subscription</a>, make use of a spending limit on your Azure account/subscription.</li><li>Also set up <a href="https://docs.microsoft.com/en-us/azure/billing/billing-set-up-alerts" target="_blank">automated email alerts</a> to email you once your account spends more than a set amount.</li><li>Audit your Azure usage so you know what you are paying for and not using in Azure</li><ul><li>View your Azure Subscription in the portal</li><li>Use the free service <a href="https://azure-costs.com/">https://azure-costs.com/</a> to identify your costs</li><li>Consider using the <a href="https://docs.microsoft.com/en-us/azure/cost-management/overview" target="_blank">Azure Cost Management</a> service offered by Cloudyn, a Microsoft subsidiary. </li><li>Delete unused resources</li></ul><li>Use auto-scaling to reduce costs during off hours. These deployment types all support auto-scaling:</li><ul><li>Cloud Service</li><li>App Services</li><li>VM Scale Sets (Including Batch, Service Fabric, Container Service)</li></ul><li>Scaling could also mean shutting your app down completely. App Services have a feature called AlwaysOn that controls if the app should shut down due to no activity. You could also schedule shutting down your dev/QA servers with something like DevTest Labs. There are also third party services like <a href="https://www.parkmycloud.com/">Park My Cloud</a>.</li></ul><p><br></p><h3>Virtual Machines</h3><ul><li>Need to shut down and deallocate VMs to stop Azure continuing to reserve the VM's compute resources<ul><li>Use Azure Portal or PowerShell to do this<li>Can also configure the auto shutdown option on the VM</li></ul><li>Resize over-provisioned VMs<ul><li>Note, the VM will have to be rebooted, so need to avoid when the VM is under peak load</li></ul><li>Use Azure PaaS features; don’t roll your own on VMs unless you have to.<li>Make use of Dynamic Scaling with VM Scale Sets<li>Use Azure Marketplace VM Images to prevent additional licensing costs (such as for the Windows OS)<li>Use <a href="https://azure.microsoft.com/en-us/services/devtest-lab/" target="_blank">Azure DevTest Labs</a> to automate the start-up and shutdown of VMs, and also implement quotas and policies for VM management</li><li>Use Reserved Instances to get discounts on the price of VMs - need to reserve for 1 or 3 years</li><li>Make use of existing Microsoft licences in Azure using the <a href="https://azure.microsoft.com/en-us/pricing/hybrid-benefit/#ahub-calculator" target="_blank">Azure Hybrid Benefit</a></li><li>Make use of Azure Site Recovery to back up your VMs<ul><li>Only pay for replication software and the cost of storage</li></ul></li></ul><p><br></p><h3>Azure SQL</h3><ul><li>Blob storage offers a cost effective solution to store graphics data. Blob storage of type Table and Queue of 2 GB costs $0.14/month and type block blob costs just $0.05/month. A SQL Database of similar capacity will cost $4.98/month. Hence, use blob storage to store images, videos and text files instead of storing in SQL Database. To reduce the cost and increase the performance, put the large items in the blob storage and store the blob record key in SQL database.<li>If you want to develop, test, or build a proof of concept, then use the freely licensed SQL Server Developer edition. A SQL Server Developer edition VM only incurs charges for the cost of the VM, because there are no associated SQL Server licensing costs.</li><li>If you want to run a lightweight workload in production (<4 cores, <1 GB memory, <10 GB/database), use the freely licensed SQL Server Express edition. A SQL Server Express edition VM also only incurs charges for the cost of the VM.</li><li>Use the appropriate edition of SQL Server for other tasks.<li>Use the Pay Per Usage (per second cost of the VM including the SQL Server licence) or the Bring Your Own Licence (BYOL) option as appropriate.<li>Paying the SQL Server licensing per usage is recommended for:<ul><li>Temporary or periodic workloads. For example, an app that needs to support an event for a couple of months every year, or business analysis on Mondays.<li>Workloads with unknown lifetime or scale. For example, an app that may not be required in a few months, or which may require more, or less compute power, depending on demand.</li></ul><li>Bringing your own SQL licensing through License Mobility is recommended for:<ul><li>Continuous workloads. For example, an app that needs to support business operations 24x7.<li>Workloads with known lifetime and scale. For example, an app that is required for the whole year and which demand has been forecasted.</li></ul><li>If you have a lot of databases, consider using <a href="https://docs.microsoft.com/en-us/azure/sql-database/sql-database-elastic-pool" target="_blank">SQL Elastic pools</a>.</li><li>Optimize your SQL Database performance</li></ul><p><br></p><h3>App Services</h3><ul><li>Migrate Apps to Azure App Service, instead of 'Lift and Shift' to a dedicated VM. This is a cheaper option and avoids having to manage a VM.</li><li>Avoid paying for staging slots on Cloud Services:<ul><li>Delete staging slots as quickly as possible, as these are charged at the same rate as a Production slot<li>Cloud Services cost you money even if the servers are stopped. You have to delete them!</li></ul><li>Combine web apps with Azure App Service Plans to reduce server count.<li>Stop using Cloud Service Web Roles unless you have to. Use App Services instead - these are also faster to deploy to.<li>Move Worker Roles to Azure Service Fabric or Container Service. This allows you to combine apps and reduce server count and cost.</li></ul><p><br></p><h3>Miscellaneous</h3><ul><li>Delete the unused VPN gateway and application gateway as they will be charged whether they run inside virtual network or connect to other virtual networks in Azure. Your account will be charged based on the time gateway is provisioned and available.<li>Use Azure Storage for SMB File Shares, instead of a dedicated VM. Again, this is a cheaper option and avoids having to manage a VM.<li>Improve the performance of your application to reduce the amount of cloud resources it uses. Make use of logging and performance monitoring tools/profilers to identify ways of improving your app.</li><li>Consider using a CDN like CloudFlare for additional caching.<li>Consider the Azure cold storage option for reduced costs</li><li>Consider using <a href="https://azure.microsoft.com/en-gb/services/automation/" target="_blank">Azure Automation</a> to automatically build and tear down services/resources when required.</li></ul><h3><br></h3><h3>References</h3><ul><li><a href="https://8kmiles.com/blog/7-tips-to-save-costs-in-azure-cloud-management/">https://8kmiles.com/blog/7-tips-to-save-costs-in-azure-cloud-management/</a></li><li><a href="https://buildazure.com/2017/04/08/top-10-tricks-to-save-money-with-azure-virtual-machines/">https://buildazure.com/2017/04/08/top-10-tricks-to-save-money-with-azure-virtual-machines/</a></li><li><a href="https://www.swc.com/blog/cloud/five-ways-save-money-on-azure-vms">https://www.swc.com/blog/cloud/five-ways-save-money-on-azure-vms</a></li><li><a href="https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sql/virtual-machines-windows-sql-server-pricing-guidance">https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sql/virtual-machines-windows-sql-server-pricing-guidance</a></li><li><a href="https://www.cloudcomputing-news.net/news/2018/may/04/microsoft-azure-pricing-101-tips-and-tricks/">https://www.cloudcomputing-news.net/news/2018/may/04/microsoft-azure-pricing-101-tips-and-tricks/</a></li></ul>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0tag:blogger.com,1999:blog-5556280706339378698.post-74727574044910755942018-08-21T12:42:00.001+01:002018-08-28T10:21:42.394+01:00Microsoft Exam 70-533 - Implementing Microsoft Azure Infrastructure Solutions<p>As I develop solutions using Azure, and because I want learn more about the platform, I’ve decided to study for the <a href="https://www.microsoft.com/en-gb/learning/exam-70-533.aspx" target="_blank">70-533 Implementing Azure Infrastructure Solutions</a> exam. I have mixed thoughts about certifications, but this one will help in my day-to-day work and seems to be in demand with employers.</p>
<p>I have chosen to do the IT exam (70-533) first, rather than the Developer exam (70-532), as there is more of a focus on PowerShell in 70-533, and I love working with PowerShell. There is also significant overlap between the 2 exams, and I do plan on completing 70-532 at a later date.</p>
<p>As I study, I’ll be posting some blog posts on various Azure related topics. I’ll use this post to list all Azure related posts:</p><ol><li><a href="https://www.andyparkhill.co.uk/2018/08/reducing-azure-costs.html" target="_blank">Reducing Azure Costs</a></li></ol>Andy Parkhillhttp://www.blogger.com/profile/05836158515805120800noreply@blogger.com0