Greetings PowerShellers! Lately, I’ve been itching to write something up on Microsoft’s Language-Integrated Query (LINQ). You’ve likely encountered it if you’ve done any development in C#. LINQ is an incredibly powerful querying tool for performing look-ups, joins, ordering, and other common tasks on large data sets. We have a few similar cmdlets built into PowerShell, but other than the ‘.Where()’ method on collection objects nothing that comes close to the speed at which LINQ operates. To dig into this topic, we’re going to have to do a quick high level overview of a couple of other .NET staples often encountered in the C# world. You see, unlike most .NET methods which accept object types like integers, strings, and the like, LINQ uses static extension methods which only accept delegate object types. What are delegates? In application development, there is an occasional need for objects within memory to communicate with each other for things such as “button click events.” To address this, the Windows API uses function pointers to create callback functions which then report back to other functions in your applications. Within the .Net Framework, these are called delegates. Delegates are objects that point to another method, or possibly many methods, by storing three key pieces of information: the address of the method on which it makes calls, the parameters (if any) of this method, and the return type (if any) of this method. With this information, a delegate object is able to invoke these methods dynamically at runtime, either synchronously or asynchronously. With this information, a delegate object is able to invoke these methods dynamically at runtime, either synchronously or asynchronously. A simple example of this in C# looks like this:
Last year’s PowerShell + Devops Global Summit was a roller coaster. On one hand, I spoke for the first time - it was terrifying. Getting up in front of a local user group had helped, but it’s not quite the same as a room full of PowerShell-ers, including MVPs and PowerShell team members - eek! On the other hand, I was lucky enough to host the Community Lightning Demos. We managed to give 22 folks the chance to get up in front of the PowerShell community and give a quick, low-pressure ~10 minute demo.
First: Please share this as widely as possible in your social media channels, so we can get the most number of suggestions possible! We’re working with the PowerShell team at Microsoft to identify individuals who have made an outstanding contribution to the PowerShell community. Perhaps they’ve written blog posts that really helped you conquer a PowerShell challenge, or maybe they’ve contributed code (on GitHub or elsewhere) that you rely on. Maybe they’re an amazing teacher, or perhaps they’re an awesome coder. Whatever their contribution, if it’s been notable and helpful to you, we’d like to hear from you.
My journey started off by figuring out how to automate a daily disk space report on the mailserver, which ran most of the company, and emailing the report to my boss at the time. After PowerShell sent that first email, something clicked. I sat back in my chair and thought to myself, “Wow, I don’t have to do this anymore”. I can still feel how exciting and relieving that thought was. Fast forward a few years and I had made automation about 80% of my job. I had moved into a few new roles - Tier 2 Support to Systems Engineer, to Senior Systems Engineer. My last post left off when I left my role as a Senior Systems Engineer and landed a gig as a DevOps Engineer. At the time I thought this was the end of the road. I thought, “I’ll pick up a few new tricks and further improve my PowerShell skills”. I couldn’t have been more wrong. This post picks up at the beginning of my transition into the world of DevOps, where I learned no matter how much you know, you know nothing. Continue reading to hear the rest of the story… http://duffney.io/PowerShell-Story-Continued-BecomingACraftsman
Microsoft recently announced the General Availability (that is, a non-beta release) of PowerShell Core 6.0. A companion document detailing breaking changes, along with some of the language in the announcement, has led to more than a few inquiries in my mailbox. Most take the tone of, “have I been wasting my time learning PowerShell?!?!?” because, at first glance, PowerShell Core looks deeply less functional than its predecessor. Let me tell you what I think.
PowerShell Core 6 is scheduled for General Availability release tomorrow (10th January). As such Jeffrey Snover and the PowerShell Team are hosting an AMA (Ask Me Anything) event on the 11th January from 9am - 10am PT.
“This is going to be a historical week for PowerShell Core 6 🙂 …Join the PowerShell team and @jsnover{.twitter-atreply.pretty-link.js-nav} this Thursday for the PowerShell AMA”
Add it to your calendar here. Due to the timing I expect that the team are mostly hoping for questions related to the release of PS Core, although in the spirit of an AMA anything goes :). If you haven’t yet checked out PowerShell Core 6, you can grab the RC release today and install it side-by-side with Windows PowerShell. I have also written a blog post that explains what PowerShell Core is, why it exists and how it compares which I hope you find informative.
So you’re working for a company that’s going well (or not) and you start to hear rumours of parts of the business being sold off, the project you’re working on is being pulled or worse the business is closing down. Before you know it your x amount of years at said company have come to an end and you’re now redundant. The following Dilbert comic is a possible scenario you may have to deal with. How you deal with this new found freedom is completely up to you? You can go on a big holiday, have some time off doing things around the house, buy that 2 seater car you’ve always dreamed of owning or go straight back into the workforce using the redundancy (if you got any) to pay off a chunk of your mortgage. Whatever you decide to do, at some point (unless you are retiring) you will need to go job hunting again. In my situation I was being made redundant and leaving a company I had worked for, for the last 7 ½ years as a senior system engineer. I have a wife and 2 children so I really just wanted to get back in the workforce as soon as I could. The mortgage was not going to pay itself off. As soon as I heard that I had a month left of work I took out my CV and had to try to remember each position I had occupied over the last 7 ½ years and what my achievements were. And you know what, that is not an easy task. When you’re working and you complete an achievement, you always think to yourself “If ever I have to update my CV ill add this to it”. Problem is 5 years down the line you won’t remember that “good piece of work” and you’ll struggle to put some of the great achievements down on paper for your future employer. After several attempts at updating my CV, it was ready. Now time to start looking for work. My main skills are in Citrix technologies, PowerShell, Windows Server Operating Systems and my company’s proprietary cloud offering. In my job, I spent nearly every day learning something new and applying it to my job but I didn’t bother with getting certified. When job hunting, the first hurdle I came across was my lack of skills that the market place wanted. For nearly every senior engineer role out there, every man and his dog wanted Azure with 0365 and/or AWS. So any roles that looked good to me were out of my reach because I didn’t have those skills/qualifications. I found a couple of roles I really liked the look of and naively sent off my CV to those 2 roles only. There were a few other jobs that looked good but I really wanted one of these 2 roles so didn’t apply for anymore. 2 weeks passed and nothing back so I chased them up and still nothing. Oh well guess they didn’t like my CV so I’ll start looking again. And again I repeated the same process. And again the same outcome. I then started do some reading on recruitment sites and how recruiters get so many CVs that on average they will look at yours for 6 second before choosing to read more or toss it. By now I had finished work and a new job was not in sight, slightly panicking now. I revamped my CV a little, moving my core technical skills to the top of the front page (they were originally at the bottom of the back page) and applied for every job under the sun I liked the look of. I hit every job advertising site I could find and also sent my CV to every tech job agency I could find. If I really liked the look of a job I would follow the online application 30 minutes later with a phone call to get that connection with the job poster and to sell myself (which I hate doing). I updated my LinkedIn page and applied via LinkedIn to jobs on there. I started to use LinkedIn to make contact and catch up with people I knew to see if they had any positions in their companies. I actually found this to be the most successful way to get in to see companies. Through my contacts I had some interviews and even had a job offer with one tech firm. Problem was they had come in with an offer that was 20% below my previous wage. Do I take it to tie me over the Christmas period and get the money coming in again or do I wait for a possible better job that might show up tomorrow? If I took the job and something better came along would I then rescind that offer and my name would then be mud at that company for anything in the future. I decided not to take the job as it would have meant a major financial shuffle for the family and big cutbacks. That same afternoon I contacted another friend, as his company had quite a few positions open due to expansion. He put me in contact with their Talent Manger. The following day I had an interview and that evening I had a job offer which I took. The main take away I hope you get from this is, if this ever happens is to ensure your CV is always up to date. Make sure if and when people leave your present company that you keep some sort of contact with them because you never know when you might need to call on them or you might be able to help them out one day. Keep an eye on the job market and what the market is looking for and get skilled up and/or certified in those areas. If you’re not on LinkedIn get a presence on there, those contacts can be invaluable too. When Job hunting don’t just apply for that one dream job (especially if you’re out of work) hit any one of them that takes your fancy, you are better off having 2 or 3 offers on the table than nothing at all. Last thing to only take the offer if you really want the job, listen to your gut instinct. As it happens the new company I now work at is going to be one of the 1st in Australia to roll out Azure Stack. So I will be learning and get certified in Azure which better place me for my future.
Congratulations to Andrew Pla, winner of our PowerShell + DevOps Global Summit 2018 scholarship. Andrew submitted a stellar application to our review panel, and perfectly fit our profile for someone who’s just peeking out of the “beginner” realm, and who’s demonstrably used PowerShell to help bootstrap their IT career. If you’re attending Summit, be sure to keep an eye out for Andrew and say hi!
Yesterday I pushed my first real project to a public repository on GitHub. It’s small right now though I hope to flesh it out over time, and it is very niche, but I hope it helps others who come across it. Regardless I’m proud of it. If you like, you can check it out here, I’d love your feedback, but that’s not the reason I’m writing this. I’m here to tell you why I did it. You see, I’m a private kind of person. I don’t often put myself out there for fear of embarrassing myself. I have always been worried that I might end up looking silly. That someone who knows more than I do, or knows something differently than I do would catch me out - and if that happened, I couldn’t put the genie back in the bottle. Back in school, I wouldn’t put my hand up even if I knew the right answer, just in case. I was ensnared by Impostor Syndrome, it was crippling, and it had to change. So, what did I do? I started a blog, and in almost a year I’ve managed to get around 10-12 posts up. It isn’t much nor is it pretty, and sometimes I worry too much about the time in between posts, and rush to put something up which is not always perfect. But I’m happy to be doing it all the same. Mostly, I try to post about topics and problems that I haven’t been able to find complete information around elsewhere. I’ve started spending more time sharing and interacting on Twitter and LinkedIn, rather than just reading and clicking links. I’ve even been followed and liked a few times. Lastly, I’ve been spending more time on these forums and elsewhere, helping out where I can. Overall, I feel better in myself, and have a greater level of confidence in my skills, knowledge, and what I can bring to the table. In the end, that is what led me to feeling good enough to publish my project. I can’t say that I’m completely over Impostor Syndrome and I don’t think I ever will be. I can say that I don’t feel it as often as I used to, and I can use it to drive myself to be better. When we are presented with a problem, we often go looking for answers from others. Flip that around and it means that if you have solved a problem, there is probably someone else looking for the answer and would really appreciate your experience. So why not put it out there?