The combination of Docker Desktop, Windows Subsystem for Linux (WSL), and Visual Studio Code with extensions is extremely powerful!
I seen that a lot of software developers use Mac, and I’ve used Macs too. However now that Microsoft has a focus on open source, everything has changed. Windows 10 can leverage many Linux distros with the WSL. Using PowerShell and the Bash Shell natively is amazing. We will still leverage virtualization on Windows utilizing Hyper-V for Linux Docker containers, however we can still use the WSL with Docker Desktop. There’s extra configuration needed to make it work. This is due to limitations of WSL not being able to run daemons as a service. Regardless this is the best development experience I’ve seen as I can run locally just as easily as in the cloud and I know though my testing it’ll work the same. The portability of containers solves a lot of challenges.
Here I’ll show you the essentials of preparing your Windows 10 computer for modern applications development in the cloud.
The following steps will add the Eclipse IDE dependencies and the AWS Toolkit for Eclipse.
Well, it’s been a while since I posted hasn’t it. A lot has changed in the 5 years since I last posted. Back then I was working with defense contractors developing a lot of on-prem infrastructure tools with PowerShell. Moved into cloud computing and doing Serverless development and DevOps automation for Continuous Integration and Continuous Deployment using AWS services. This has revolutionized the ways in which I look at computing. In the process I’ve gone back and forth on what development environments and languages to work with. There’s just so many options. Since I was working with PowerShell and .NET I used PowerShell ISE and VisualStudio primarily. I moved from enterprise Windows environments to then using Linux/Unix first with traditional virtualization, then containerization, and functions. Further abstracting away from the physical systems to focus working with services and my code that runs it. What I really care about is if someone is making a request for information or submitting information how can I retrieve the data and present that information to them as quickly, reliably, and securely as possible.
In the future posts I’ll be comparing development environment and patterns for cloud native applications. As I’m utilizing AWS services this will be focused on their development tools. Continue reading
This function will list all connections to a Windows computer in PowerShell. While most admins are familiar with Netstat and unless you have Windows 8.1 or Server 2012 R2 there’s no PowerShell equivalent. There’s a .Net method that could be utilized but it doesn’t supply the process identifier (PID) to relate that connection the process using it. Alternatively you create a custom type that uses IP Helper that does have the PID but that’s unnecessarily complicated for what I want. Instead I opted for parsing Netstat’s string output into a format I could use. Additionally I added in DNS lookup for remote addresses, process details from Get-Process, and several parameters to get just what you want.
If you have data that you’re collecting with PowerShell and wan’t to insert new entries or update existing ones in a Database then a SQL MERGE function is what you need. I frequently run scheduled queries to collect information that I want to submit to SQL for reporting purposes. When testing this function I was able to merge a DataTable with 100,000+ rows and 20+ columns very quickly. A unique identifier in the results is used as a primary key in the merger. When there’s a match it updates that row, if it doesn’t exist already it inserts it as a new row. To do this effectively a temporary table is created by first looking up the primary key in the targeted table (if there’s one); then builds the query with all the columns in the source. It also compares the source columns to the target table columns to make sure they correspond for the column mapping. The DataTable is then bulk copied to the temporary table, this becomes the source of the merge to the target table. After which the temporary table is dropped.