<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Connor</title>
    <description>The latest articles on DEV Community by Connor (@therealgrinny).</description>
    <link>https://dev.to/therealgrinny</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F273334%2F02b7c1f6-64c5-4ea3-923b-53f2110036a5.png</url>
      <title>DEV Community: Connor</title>
      <link>https://dev.to/therealgrinny</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/therealgrinny"/>
    <language>en</language>
    <item>
      <title>Quick tips for Powershell scripters</title>
      <dc:creator>Connor</dc:creator>
      <pubDate>Wed, 30 Mar 2022 20:24:01 +0000</pubDate>
      <link>https://dev.to/therealgrinny/quick-tips-for-powershell-scripters-1cf5</link>
      <guid>https://dev.to/therealgrinny/quick-tips-for-powershell-scripters-1cf5</guid>
      <description>&lt;p&gt;Here's some quick and dirty help if you've gotten rusty with Powershell or otherwise aren't sure quite how to do things.&lt;/p&gt;

&lt;h2&gt;
  
  
  1: Modules are your best friend
&lt;/h2&gt;

&lt;p&gt;Chances are that whatever you're trying to do inside a Microsoft environment has a module either written or trusted by Microsoft already at &lt;a href="https://powershellgallery.com"&gt;Powershellgallery&lt;/a&gt;. Don't reinvent the wheel.&lt;/p&gt;

&lt;h2&gt;
  
  
  2: MS Docs are your first and best reference
&lt;/h2&gt;

&lt;p&gt;Microsoft's documentation actually doesn't suck when it comes to Powershell. It's not going to hold your hand all the way, but if you've got even a mite of experience doing scripting that touches environment variables and networked services (like AD, O365, Exchange) then you'll be able to pick up on the examples and concepts the documentation offers pretty easily. &lt;strong&gt;Don't be afraid to dig a few links deep into your questions.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3: Powershell has two major versions
&lt;/h2&gt;

&lt;p&gt;Powershell 5.1 comes installed by default on Win10, and I think it's still the default on Win11 as well. This version of Powershell is written in .NET Framework, which is Windows-native. This is by far the most common option, as opposed to Powershell 7, which is written in .NET Core. Core is inherently cross-platform. If you run Powershell on a *nix system like Linux or Mac, it's v7 running on .NET Core. &lt;em&gt;This is important because not all assemblies and modules are usable on both platforms.&lt;/em&gt; A notable difference here is MSOnline, which depends on cryptography dependencies inside Powershell 5 that are not available in 7; and therefore MS now encourages you use the MS Graph API and other Azure-based modules as a replacement for the old MSOnline module.&lt;/p&gt;

&lt;h2&gt;
  
  
  4: Iterate, iterate, I T E R A T E
&lt;/h2&gt;

&lt;p&gt;One of the most powerful combos in Powershell is the combination of &lt;code&gt;If-Else&lt;/code&gt; flow control and a &lt;code&gt;ForEach&lt;/code&gt; loop walking over every complex object inside a data container like an Array, ArrayList, or HashTable.&lt;/p&gt;

&lt;p&gt;You can use this to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Grab a specific user group using Get-ADGroupMember, put all the user objects in an array, and then grab all of their usernames. You can pipe those usernames into other commands, or just use it as a simple way to dump out a list of who's in what groups.&lt;/li&gt;
&lt;li&gt;Make bulk changes to Exchange accounts by pulling out all accounts on a specific Filter, and then running a set of commands ForEach. Anyone who's spent a lot of time in the Exchange console GUI can probably agree that it takes a while to do stuff by hand.&lt;/li&gt;
&lt;li&gt;Check and even change the MFA status of users in your tenant in order to fix security holes, get info for audits, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've got a handful of sample scripts at &lt;a href="https://github.com/the-real-grinny/grinnylib"&gt;GrinnyLib&lt;/a&gt; on Github. I just recently started putting scripts I use regularly there, that I've written myself. You'll probably recognize that some of these examples can be used for concepts I mentioned in this post.&lt;/p&gt;

&lt;p&gt;If any of these helped you out, leave a comment!&lt;/p&gt;

</description>
      <category>azure</category>
      <category>powershell</category>
      <category>help</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Tiny Programs 1: docshund-rs</title>
      <dc:creator>Connor</dc:creator>
      <pubDate>Fri, 25 Mar 2022 15:21:45 +0000</pubDate>
      <link>https://dev.to/therealgrinny/tiny-programs-1-docshund-rs-3829</link>
      <guid>https://dev.to/therealgrinny/tiny-programs-1-docshund-rs-3829</guid>
      <description>&lt;p&gt;Long story short, I've wound up starting work on a small Tesseract OCR program. I call it &lt;code&gt;docshund-rs&lt;/code&gt;, because it finds things in documents like a dachshund finds gophers in holes, and it's written in Rust. I'm intensely creative.&lt;/p&gt;

&lt;p&gt;It took me longer to remember how Rust does Result&amp;lt;&amp;gt; type returns and accordingly unwrap the results of the &lt;code&gt;tesseract-rs&lt;/code&gt; calls than it did to get the program working.&lt;/p&gt;

&lt;p&gt;Though, all things told, it's already pretty cool. It can successfully scan image files like JPEG, PNG and TIF with a reasonable degree of accuracy.&lt;/p&gt;

&lt;p&gt;Ultimately I think &lt;code&gt;docshund-rs&lt;/code&gt; will be a program that can take a PDF file, turn it into images, and then process a bunch of those pages concurrently before barfing the output back out into a searchable PDF, or at least just a text file dump.&lt;/p&gt;

&lt;p&gt;This is also subject to my interest level in the project, which usually varies wildly.&lt;/p&gt;

&lt;p&gt;Though I think I'll keep a running tab of Tiny Programs and link it all together as a series, regardless.&lt;/p&gt;

&lt;p&gt;Title photo by &lt;a href="https://unsplash.com/@just_another_photographa?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;James Watson&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/dachshund?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>datascience</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Hi again. Where did the time go?</title>
      <dc:creator>Connor</dc:creator>
      <pubDate>Wed, 16 Mar 2022 04:19:24 +0000</pubDate>
      <link>https://dev.to/therealgrinny/hi-again-where-did-the-time-go-4fa2</link>
      <guid>https://dev.to/therealgrinny/hi-again-where-did-the-time-go-4fa2</guid>
      <description>&lt;p&gt;Long story short I posted here in like 2019 &lt;em&gt;once&lt;/em&gt; and I got thousands of views on that post.&lt;/p&gt;

&lt;p&gt;Still tickles me pink to this day.&lt;/p&gt;

&lt;p&gt;That post was all about being a web developer and how crazy it is, furthermore, to be a full stack dev of any sort. From how I understand it the industry has only continued to grow in that direction. Cue thoughts, rants and controversy about Web3, and what it likely means for developers who make things for browsers and mobile devices.&lt;/p&gt;

&lt;p&gt;But since that post I have left that corner of the tech industry behind and I'm pretty okay with that.&lt;/p&gt;

&lt;p&gt;At this point I'm actually a senior systems administrator in a department of about two dozen people. I have little or nothing to do with web development anymore beyond talking with internal software and and devops folks on how their new in-house deliverables will integrate with our standing systems.&lt;/p&gt;

&lt;p&gt;Nowadays when I'm programming at work it's usually some .NET-heavy PowerShell and maybe some C# if I actually need a fully compiled application, and not just a PSSession full of .NET assembly calls and NuGet modules.&lt;/p&gt;

&lt;p&gt;At home I'm messing around with Rust for fun and building a Discord bot with a friend. I'm slowly unlearning my hatred for finicky systems-level programming instilled by learning C++ as a first language.&lt;/p&gt;

&lt;p&gt;Frankly I'm posting here again because Twitter's a cesspool and Fediverse often feels like I'm standing between groups of people with signs and bullhorns; probably arguing about something Big Tech said or did. I'm not about that vibe.&lt;/p&gt;

&lt;p&gt;So uh, hi? Again?&lt;/p&gt;




&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@sleblanc01?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Stephanie LeBlanc&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/bear-wave?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>watercooler</category>
      <category>it</category>
      <category>career</category>
      <category>introduction</category>
    </item>
    <item>
      <title>Being A Full Stack Web Dev is Kinda Crazy</title>
      <dc:creator>Connor</dc:creator>
      <pubDate>Fri, 22 Nov 2019 19:49:07 +0000</pubDate>
      <link>https://dev.to/therealgrinny/being-a-web-dev-is-kinda-crazy-25m0</link>
      <guid>https://dev.to/therealgrinny/being-a-web-dev-is-kinda-crazy-25m0</guid>
      <description>&lt;p&gt;Last night I was reviewing the skills I've gained since starting my journey as a developer.&lt;/p&gt;

&lt;p&gt;I realized something: as a loose estimate, you need a firm grasp of &lt;em&gt;no less than 11 different systems or syntax models&lt;/em&gt; just to carry a modern web app from backend to client, from indev to production on your own.&lt;/p&gt;

&lt;p&gt;I'm not joking, and that's no small feat.&lt;/p&gt;

&lt;h2&gt;
  
  
  The List
&lt;/h2&gt;

&lt;p&gt;This is a brief example of a full stack dev's possible code languages and other systems that they would use at some point in the full stack devops cycle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All 3: HTML5/CSS3/JS&lt;/strong&gt;&lt;br&gt;
These should be obvious for anyone in web dev.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;At least one each of:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SQL distro - for database&lt;/li&gt;
&lt;li&gt;Java/Python/C# - for serverside logic&lt;/li&gt;
&lt;li&gt;React/Angular/Vue/etc - for frontend&lt;/li&gt;
&lt;li&gt;Bootstrap/Bulma/etc - CSS design&lt;/li&gt;
&lt;li&gt;Apache or other webserver - for hosting&lt;/li&gt;
&lt;li&gt;Node.js - for package management&lt;/li&gt;
&lt;li&gt;Webpack, Browserify, Parcel - build scripts and cross compiling&lt;/li&gt;
&lt;li&gt;LINUX - because I guarantee you will use it at some stage, if not develop all of your work in a Linux distro already.&lt;/li&gt;
&lt;li&gt;probably other stuff I forgot&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  And Even More
&lt;/h2&gt;

&lt;p&gt;This list doesn't even touch on details of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;design principles&lt;/li&gt;
&lt;li&gt;version control&lt;/li&gt;
&lt;li&gt;networking&lt;/li&gt;
&lt;li&gt;hardware&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and the deluge of standards and specific knowledge for each. Usually it's required to have at least passing knowledge in those areas as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  So What?
&lt;/h2&gt;

&lt;p&gt;If you were to follow the requirements of that list your list of skills could be something like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;HTML5/CSS3/JS&lt;/li&gt;
&lt;li&gt;Oracle SQL&lt;/li&gt;
&lt;li&gt;Java&lt;/li&gt;
&lt;li&gt;Vue&lt;/li&gt;
&lt;li&gt;Bootstrap&lt;/li&gt;
&lt;li&gt;Apache&lt;/li&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Webpack&lt;/li&gt;
&lt;li&gt;Debian (&amp;amp; Bash)&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;Adobe XD for design/wireframe&lt;/li&gt;
&lt;li&gt;And maybe a bit of firewall/netsec stuff.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Personally, it's so satisfying to know I can do most of that list already. I'm learning more every day. It's been a long road but compiling that list makes it so much cooler to see my own progress.&lt;/p&gt;

&lt;p&gt;It also humbles me &lt;em&gt;considerably&lt;/em&gt;. I'm reminded that people who really know their stuff in this field are worth respecting. Because it takes a lot of work to get there.&lt;/p&gt;

&lt;p&gt;If you're ever feeling a bit of impostor syndrome, if &lt;em&gt;"I can't do this"&lt;/em&gt; keeps creeping into your head...&lt;/p&gt;

&lt;p&gt;Stop and think about what you already know. We have to do &lt;strong&gt;a lot&lt;/strong&gt; in this field to be competitive. Not convinced?&lt;/p&gt;

&lt;p&gt;That list is an impressive one for anyone else on the planet: imagine people's reaction if you told some random passerby that was curious that you know 10 programming languages and use them all at work. Their heads might explode. I know plenty of great people who are very knowledgeable in their fields that look at me like I'm &lt;em&gt;Hackerman&lt;/em&gt; for knowing that the Developer Tools in Chrome even exist.&lt;/p&gt;

&lt;p&gt;But for us, that kind of portfolio is just "par for the course." It's easy to get caught up in that viewpoint and forget that we're already specialists in a field that can be really opaque to a lot of people. Remember that. And stay humble about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Don't compare. Just improve yourself. Give yourself some credit. List your accomplishments to yourself.&lt;/p&gt;

&lt;p&gt;And next time you question if your web developer friend is crazy (or if you are) for doing what we do..&lt;/p&gt;

&lt;p&gt;Yes. I'm pretty sure we're all crazy.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>fullstack</category>
    </item>
  </channel>
</rss>
