The AWS CDK using C#

If you want to automate the provisioning of your infrastructure in AWS you would use CloudFormation. You can code some or even all your infrastructure with the use of the CloudFormation template language, which is written in YAML or JSON. JSON and more so YAML are very human-readable, providing a way to document your Infrastructure as well.

The disadvantage of JSON and YAML is that it lacks the abstraction and reuse of a general-purpose languages, such as C#, GO, PowerShell and such like. Many times, a few lines of code in one of these languages can much more in JSON or YAML!

Amazon have seemed to notice this, and with the emergence of Pulumi, have developed the AWS Cloud Development Kit (CDK). The advantage to the CDK for AWS customers is that it’s an open source project, so no further cost.

The AWS Cloud Development Kit (CDK) is a software framework allowing you to use a general-purpose language to write code which is then provisioned through CloudFormation. As of the release of version 0.33.0, you can use five different general-purpose languages in the CDK. They are TypeScript, JavaScript, Java, Python and the one I’ll be demoing, C#.

I won’t be going into details on how to get started with setting up your environment to use the CDK with the language of your choice as AWS do a pretty good job themselves, which is detailed here, https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html.

I’m going to talk through creating an app, initializing, compiling and deploying. The App I will be demoing will create an S3 bucket, which will be versioned, named and encrypted. Also, I’ll be adding a life cycle rule to expire any content within 30 days.

There are three parts to consider when using the CDK, they are Constructs, Stacks and Apps.

Everything in the AWS CDK is a construct. A Construct is an AWS cloud component which we will use to create something, in this case an S3 bucket. The stack is your root construct. It will contain the constructs you have used to define your AWS environment. The main artifact of the CDK is the App, which is the wrapper to deploy your stack or stacks.

Getting started requires you to create a new folder and initialize empty Git repository. Once done, create the app by using the AWS Cloud Development Kit command line calling the command ‘cdk init –language csharp‘. The AWS CDK details these steps, which can be read here, https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html. The main two files I will be working with is of course the program.cs and our own stack cs file. Compiling the app is done with .NET core’s dotnet command line. Worth pointing out as well, this demo is performed using .NET Core 3 Preview 5.

Before defining the Program.cs file, lets create our stack. I’m going to show the completed MyStack.cs file and break down the main areas.

  1. The C# using directive is adding the namespace required to make use of the required constructs to build your environment. The AWS CDK has many namespaces available and are detailed here, https://docs.aws.amazon.com/cdk/api/latest/dotnet/api/index.html.
    To add a namespace, the dotnet command line is used. This is done like so, dotnet add package amazon.CDK.AWS.S3
  2. Creating your own stack is done by inheriting the Stack class. In this example I’ve created the derived class called MyStack.
  3. The stack constructor signature we have inherited with our derived class, MyStack, has three main parameters, which you will notice on all constructs (these are populated when we initialize our MyStack class, which we will come to):
    1. scope – Parent of this stack, usually a Program instance.
    2. name – The name of the CloudFormation stack.
    3. props – Stack properties
  4. Bucket is also a construct which is a part of the amazon.cdk.aws.s3 namespace. The bucket construct is a childof the stack. ‘MyFirstBucket’ is an id of the bucket construct. The bucket props class (BucketProps) gives us the option to name the bucket (line 17). For this bucket I’ve enabled versioning and encryption.
  5. Declaration of a Life cycle rule happens on line 21, in which the properties of Id (naming of the rule) and ExpirationInDays are defined.
  6. The method on the bucket class, AddLifecycleRule, is called to add our life cycle rule previously created in step 5.

Now that we have MyStack.cs file, we can setup the program.cs. Here is how it’s done:

  1. A new object is created from the App class. This line of code already exists when creating a new project with the cdk init command.This is a representation of a CDK program.
  2. We are now using the MyStack class we wrote to create our bucket. The StackProps class is used to allow us to define the AWS account Id and the region where the bucket will be created. By making use of the StackProps class in this way by setting up a new environment allows us to create buckets across multiple accounts and regions.
  3. Lastly, the run method is called to invoke the process of building our bucket.

To pull all of this together we are required to build the project and all of its dependencies. This is done by running the dotnet build command from the directory of our Csharp files, program.cs and MyStack.cs:

We now have a Build succeeded, so let’s deploy our app!

Running from the root folder, run the cdk deploy command:

The above screen gives us the details on the deployment and the steps. Notice that as well as the bucket being created, we have a CloudFormation stack also created.

Checking from within the console, I can see that our work was successful:

The two arrows are pointing at the bucket name and the custom Lifecycle rule we attached.

Viewing the CloudFormation template that our code created can be done through the CDK command line by typing in cdk synth:

I hope this article has shown the great potential in the AWS CDK. The documentation by AWS has greatly improved, with the CDK reference the standout. There is so much more you can do with the CDK, even down to creating your own constructs. So, take a look and get building!

Should you wish to try out this demo yourself, the code shown s up on my GitHub account.

https://github.com/Graham-Beer/AWS_CDK_S3Bucket

Hi, I’m Dave and This is How I Work

Our contributors are hard at working building snips and courses for our training partners but surprisingly enough they already have a life outside of TechSnips!

To bring to light our contributors are real human beings, we’re putting on a blog post series entitled How I Work where we get a glimpse into the humans behind the TechSnips contributor.

Today, it’s Dave’s Pinkawa’s turn.

Where are you located?

Currently in a suburb of Chicago called Crystal Lake, IL.

What are your current gigs?

Full-time Systems Administrator
I also teach CompTIA courses at a local community college once a week (12-week classes, up to 3 times per year)
TechSnips Contributor

What’s one word to describe your work?

Ever-changing (Technically two words? Oh well!)

What apps, software, or tools can’t you live without?

OneNote – Miscellaneous note taking, very organizable, and easy to store in any cloud storage provider (OneDrive / Google Drive, etc)
Google Calendar – Life is crazy, but made so much easier with shared calendars even in my personal life.
ToDoist – Where the calendar helps keep my brain organized long-term, ToDoist is treated like my bullet journal for the coming next 7 days. The nicest part for me is re-occurring events, like reminders for workout days, garbage pickup, etc that can be set.
PowerShell – My go-to for just about everything work-wise if I can help it. I attribute much of my career growth to taking on this language.

What does your workspace look like?

At home, I have an office space carved out for myself just off of the family room.
2 monitors, gaming PC, and a shelf stuffed with IT related books I’ve accumulated over the years.

What’s a typical workweek look like?

Lately, it’s been Mondays and Fridays working from home, with Tuesday/Wednesday/Thursday in the office.
On nights/weeks that I have class, I typically work from the office because it’s closer to campus (even if it’s on a Monday)

What do you like the best about your role?

The challenge of proper prioritization. Every day there is a new task at hand, and by some stroke of luck, I can context-switch my brain very efficiently.

What’s something about you that no one knows about?

I’m a certified scuba diver, that will probably never scuba dive again!
Having passed my final dive test with my class, all of whom were fine, I experienced decompression sickness!

What do you listen to while you work?

Soundcloud / Amazon Music have been my go-to for a while, listening to podcasts of various DJs or sets of their music from festivals.
When I listen to music while working, it can’t have lyrics otherwise it’s distracting for me.
Artists I’ve liked for this lately: Nora En Pure, Eric Prydz, Above & Beyond

What do you wish you could change about your work?

While I get to partake in creating scripted solutions for problems, oftentimes my day is spent discussing problems and how to solve them instead of being hands-on in the console. My current goal is to up the ratio of time spent scripting vs. time spent answering emails, etc.

Is there anything else you’d like to add that might be interesting to readers?

The PowerShell Summit was an amazing and eye-opening experience, which has been great to share with co-workers and other community members about the learnings there.

Don’t Forget that Some People Can’t See Colors

Did you know that estimates say that up to 8 percent of males (and .5 percent of females) have issues seeing some colors?  Nobody is sure why, but many of us are affected by this problem. I was almost thirty before I realized that when people said something like “he’s turning red with embarrassment,” they were being literal. I had always thought it was just an odd saying. It’s surprising how many minor, day-to-day, things are based on colors.
  • What color hair does she have?
  • What color was that car?
  • Is the grass green or turning brown?
  • Is that steak rare or medium?
And then there are some larger issues to deal with.
When I first learned to drive I had to teach myself that the middle light meant slow down, top meant stop, and bottom meant go. While the colors of the lights don’t all look quite the same to me (which allows me to compare them to each other) none of them look like the colors people tell me they are. To me, the bottom light is an off white, and the other two are different shades of red. When it comes to those single, flashing lights, I have nothing to compare to so have no idea what they are. I always assume they are red, just to be safe.

When I was nineteen I joined the Navy and was interested in the nuclear program. During my physical they did a vision test which included some color testing.
Can you see anything here? I can’t.
After miserably failing that, they informed me that they didn’t want me anywhere near something nuclear if I might connect (or cut) the wrong wires.

A few years after that I started a PC repair shop and consulting company to help home users and small business owners. One of my reasons for doing this was because I could build custom PCs and sell them for quite a bit less than the big brands of the time. While building a PC is pretty straight forward, back then there were many wires that weren’t labelled so I frequently ran into color coded diagrams.

I never caused a fire, but I did wire things incorrectly more than once.
When DSL started to appear in my town I was able to get a contract with one of the larger ISPs to install and configure DSL modems. They aren’t hard to set up, but they caused me some embarrassment. Once connected, they check for DSL signal on the phone line and a light blinks to let you know the status.
Error codes were not a pattern of blinks (which would have been great) but were color coded. Consider how awkward it is to call your client over, point to the little blinking light, and ask what color it is. I eventually learned to say that I needed another pair of eyes and would intently stare at the monitor while having them tell me the LED color.

In today’s tech world the issues are different, but still there. My cell phone has an LED that flashes for alerts. It can flash different colors for different things, but they all look pretty much the same to me. I’ve run into many games over the years where the character colors all look the same. Some web sites use link colors that (to me) look identical to the regular text so I have no idea there’s a link to click on. If you are in IT and design anything for others to use, please keep us color disadvantaged folks in mind. Make your error codes show a number or blink in a pattern, not just depend on a changing color. If you have to use color-coded wires, please label them too. Making a web site or game? Offer a black and white or ‘color blind friendly’ version, too. We may be a minority, but there are millions of us. Making millions of people happy with your product certainly can’t hurt.

How to Remove Built-in Windows 10 Apps

Windows 10 includes a number of built-in apps ranging from basic apps like Calculator and Weather to more task-focused apps like Mail and Photos. While these built-in apps are fine for most situations, in a business environment, they may be inappropriate, redundant or unsupported. Very often, these apps are my pose a security risk.  The problem is that Microsoft doesn’t make it easy to uninstall some of these apps. There is no uninstall button when uninstalling using normal methods. The built-in apps must be uninstalled through PowerShell. Before we get started, I do not recommend uninstalling all the packages. Many of them are needed for the Windows 10 “Experience” and others, like the .NET framework, are needed for other programs. Be picky about which applications to uninstall. You can reinstall all the applications and I will have a PowerShell command to just that at the end of this article

Different sets of packages

There are actually two different kinds of applications that we will be working with.
  • AppXPackages – Applications installed with the operating system
  • AppXProvisionedPackages – Applications installed as part of the user profile first time set up.
The first step is to get an inventory of the applications that are installed. To do that start PowerShell with elevated privileges. For the AppxPackages we can enter the command Get-AppxPackage.
The provisioned packages have a slightly different command and also need the -Online parameter. The -Online parameter denotes that we want a list from the current online operating system as opposed to an image file located in a local directory. This will present a list of all the details regarding each package. This is a rather verbose listing and all I am interested in is the Nameof the package for the AppxPackages and the DisplayName for the provisoned packages.
Details of get-appxpackage listing
Listing for get-appxprovisionedpackage
To make things a little easier, let’s pipe the results through Select-Object and select the Name and the DisplayName properties. This will give us a list like the one below. This list is easier to work with. Now we can easily copy and paste the applications were are interested in.
Output of get-appxpackage | select object name

One trick that I use is to save the results to a text file and then open that file in Visual Studio Code. For example: Now that we have our list, we can start building our script. Selecting the applications from the list that you want to be uninstalled, build a simple array and populate the names of the applications into the array as seen below. I have given my array a variable called $ProvisionedAppPackageNames.
With my array populated with the specific applications I want to be removed, we can now set up the for loop to step through each package to uninstall.
If for any reason you want to reinstall all applications, type in the following command in an elevated PowerShell console

How to Whitelist Programs using Software Restriction Policies

If you have end users (and who doesn’t?) you should be worried about what they might try to run or install on their computer. Some people just don’t pay attention, clicking on any box that may appear.

Others simply think they can do whatever they want on their work machine.

But, for the most part, people simply don’t understand that an innocent appearing pop up may actually be something that they don’t want.

Antivirus software can help, but we all know it’s far from foolproof.  Another great idea is to make sure your users are not local administrators.  Unfortunately, that doesn’t stop them from installing all programs, just those that go into protected areas like the Program Files folder.  Anything that installs under a profile, like most browsers (and most crypto infections) can install with only user-level access. So what’s an admin to do? Whitelist!

Whitelisting is a process where you select a list of programs and allow only those programs to run.  If a user tries to run (or install) anything not on the list, it will fail with an error similar to this:

 

There are many third party programs out there that can implement whitelisting, but Windows Server already has this ability built in.  If you are using Pro versions of Windows on your Desktops you can use Software Restriction Policies (SRP).  If you are using Enterprise versions you can use the more full-featured Applocker, but most small businesses will find SRP is more than enough.

Software Restriction Policies are configured via Group Policy, and work just like any other GPO.  You can configure it as a User or a Computer GPO and then apply it however you like.  You can even set up SRP via Local Policy on machines that are not on a domain.

SRP offers several ways to add programs to the whitelist.

  • By path.  This is the broadest method, allowing you to add entire folders. This is the method used to add the default items, like the Windows folder.  This should only be done with paths that you trust and that cannot be written to by your Users.  If your user has write access, the path isn’t safe because the User could put anything in there.
  • Programs by filename. This allows you to specify a particular location (like c:\MyProgram) and only allow a certain filename to run from it.  This is a little more restrictive than allowing an entire folder, but if the User can write to this location there is the chance that they might delete the real program and replace it with something of their own.  For less tech-savvy users, though, this isn’t very likely to happen.
  • Network Zones. This allows programs if they come from a trusted site, like your local Intranet. While this option exists, it seems unlikely that any SMBs would ever use it.
  • Hash rules. With this option, SRP will create a hash of the file you want to allow and then it will be allowed to run no matter what folder it happens to be in.  This is considerably more secure than a path rule because only this exact file will be allowed.  If you ever need to update the file, you’ll need a new rule to create a new hash.
  • Certificate rules. These are probably the most secure type, because they are based on a certificate from the manufacturer.  Because of this, they require more work from the PC and can slow down processing.  Each time you run a program with a Certificate Rule applied it has to check in with the Server to see if the Certificate is valid and if it’s expired or not.  When the certificate does expire, you’ll need to create a new rule.

While it sounds somewhat intimidating, getting SRP up and running really isn’t that bad.  I’ve created a snip on the basic setup here:

https://techsnips.io/snips/how-to-create-a-basic-software-restriction-policy-srp-via-gpo/

And the NSA has a handy (somewhat outdated) PDF here:

https://apps.nsa.gov/iaarchive/library/reports/application-whitelisting-using-srp.cfm

As long as you remember to test your settings on a small group before deploying to the entire network, you’ll find SRP to be fairly painless.  Whether you decide to use SRP, Applocker, or another option, with whitelisting your network will be safer than ever before.

 

TechSnips is Now a Community Platform

When I started TechSnips just eight months ago, I had originally intended to recruit contributors, help them get their short videos on techsnips.io and sell subscriptions. This didn’t turn out like I had originally intended at all. Time to pivot!

We’re now no longer just snips, but we now have a snip and a growing course program that I’m really excited about. Unlike snips, our course program is helping us grow financially which allows me to make this announcement.

Relaxing the Snip Contract

For many years, I’ve been heavily involved with a technical community; the Microsoft community to be specific. I’ve been a Microsoft MVP for five years now and have thoroughly enjoyed both getting to know other people and more importantly helping so many professionals in the careers.

With that being said, as of yesterday, when a new TechSnips contributor joined us, they were required to sign a contract stating that they were not allowed to host their snips on any other platform. They were allowed to link to their videos but under no circumstances were they allowed to take the actual edited video that’s hosted on techsnips.io and make copies of it.

This contract was based on our old business model and was already outdated. That era is over.

As of today, I’m announcing that all TechSnips contributors are free to do with their snips whatever they please. Every TechSnips contributor now is granted a non-exclusive, perpetual license on every snip they produce through our publishing platform granting them to use their snips wherever and however they want granted they don’t modify the video.

Also, to prevent any conflicts with moonlighting policies, all contributors have the right to not get paid by TechSnips making techsnips.io a true, community platform helping technology professionals without letting money/tax issues get in the way.

All contributors now are able to get their videos professionally edited, hosted on techsnips.io, promoted for free and get the ability to take their final snip and share it with their community!

I hope this shift to make our snip format and platform completely free and accessible to everyone continues to encourage greater community involvement and to give everyone a chance to help others in their own technical community!

-Adam

How TechSnips Does Courses

If you’ve ever subscribed to or purchased content on e-learning services like Pluralsight, CBT Nuggets, LinkedIn Learning (Lynda), Udemy, et al., you’ve been a student of an e-learning course. These courses aim to help students learn a particular skill, help them pass a certification exam or enter an entirely new profession. A course can be just about anything, especially on Udemy!

Every successful e-learning course has lots of students and a single or a handful of instructors. A wildly popular course could have millions of students yet an only instructor (author). The chances of being a student on a course are a whole lot more likely than being the course author.

At TechSnips, we help IT professionals, developers, tech pros of all walks of life transform from one of the many (students) to one of the few (instructors). We help subject matter experts (SMEs) turn the knowledge in their head into a well-thought-out course that will potentially help millions of students learn a new skill to get that promotion, pass that certification exam to get a new job or just get a jump start on a new hobby!

Snips vs. Courses

Before we get into courses, it’s important you first understand our split snip vs. course programs. If you’ve seen our website, techsnips.io, you’ll see here nor there a course. TechSnips.io hosts short, how-to videos that get right to the point and teach a task. We call these videos snips. Snips are perfect if an IT pro knows what his problem is just not how to do it. Snips teach how to perform a task. Courses, on the other hand, explain how to build a skill.

Snips are the perfect solution in a pinch for that system administrator that can’t figure out how to upload files to Microsoft Azure, install a PowerShell module or how to back up a virtual machine. These are all tasks. Courses, on the other hand, teach skills that may or may not be groups of snips combined with slides, quizzes, etc.

A snip teaches how to repair a car transmission; a course teaches how to become a mechanic. Task vs. skill. Learning how to fix a car transmission is an important task every mechanic needs to learn, but it’s not nearly everything a mechanic needs to know to become ASE certified.

TechSnips still maintains our snip platform and will continue to do so but will not be the primary business focus for the time being.

E-Learning Training Companies

Previously, I mentioned companies like Pluralsight, LinkedIn Learning (Lynda), Udemy and others. These companies provide courses directly to their customers. Each company has a two-sided market; students and instructors. To attract customers (students), these companies must produce great courses. But to create great courses, they need experts (instructors) that can teach them. They can and do hire full-time instructors but also hire many contractors to develop these courses.

Each training company built and maintains its own platform, has its own students and markets their individual courses to acquire as many customers as possible.

These companies invest lots of money acquiring both instructors and students creating a large match-making service.

TechSnips is not a training company although we do tend to dabble in our own courses from time to time. Our primary focus is on filling a gap in our training company partners’ content libraries by providing access to many different experts capable of producing many different courses.

We work directly with training companies, not against them to provide a “Courses as a Service” platform by automating and removing every logistical task necessary to create a course. We strive to let experts teach their skills and handle the rest.

Working Directly with Training Companies

Typically, when an e-learning company needs a course created, they will reach out to individual authors in an attempt to woo a subject matter expert to build the course for them. Or, a potential course author will reach out to the training company and pitch course ideas to see if the training company will bite. Either way, the relationship is always 1:1 between a single author and the training company.

On the surface, this 1:1 relationship sounds simple until a course newbie really gets into it. They will soon be overwhelmed by course logistics.

  • What kind of outline are you looking for?
  • What kind of instructional style do you want?
  • When do I need to put in slides?
  • What slide template do I use again?
  • Do you always need a course introduction?
  • Holy hell, I’ve got to build my own demo environment?
  • Now, a module is part of a course, and a lesson is part of a module, right?
  • Do you need the videos in MP4, AVI or MOV format?
  • What’s the framerate supposed to be?
  • How long should the course be? Do you have a max length per lesson?
  • What is “scope” and how does it relate to courses and individual lessons?
  • What exactly does this contract I’m signing mean?
  • You mean to tell me I have to be a video editor too on top of all of this?
  • …and on and on.

I went through all of this when I was first producing courses for various companies and to be honest, I hated it. I loved coming up with the scenarios and teaching, but I hated all of the logistics that went into ensuring the course was packaged precisely how the training company wanted it.

I especially hated doing my own editing. I tried to outsource as much as possible, but I would then have to train contractors on the exact specifications the company needed, remember to pay them and still handle all of the paperwork with the training company. I wished there was a better way…

Where TechSnips Comes In

Training companies will always have their own specific requirements, and these hoops will still have to be jumped through, but we believe the author shouldn’t have to. We think a subject matter expert should do what they do best; be an expert in the subject they’re teaching! Crazy concept, huh?

We believe that it’s entirely unnecessary for an expert to concern him or herself with all of the logistics that go into course production. Instead, we want an expert to teach. That’s it. Plain and simple. All of the other rigamarole that goes into getting a course laid out and submitted to a training company shouldn’t even come into the picture.

Spreading the Workload

I’ve seen it many times. When you lay a pre-created 3-hour course outline in front of a tech expert that’s never authored a course before, their eyes glaze over. Even though the first part (coming up the outline) is completed for them, time building demo environments, building slides and a lot of deep thinking all come to a head and freeze them up. “That…..will take me a few months!”, they say. …and they’re right if they’re on their own.

What makes TechSnips unique is our contributor community. We have nearly 100 experts in our community now and growing that can help. Courses are typically created by a single author and for a good reason. It’s hard to delegate responsibilities to multiple people, but we believe we’ve cracked that nut.

TechSnips has a model that allows us to assign multiple authors to a single course all using a single platform and payments evenly split by the amount of work each author puts in. We’re even working on multiple authors per lesson! Imagine getting that sweet, sweet passive income from a course when all you’ve done is create the scripts the course presenter then records in the video. It’s possible as a TechSnips course author.

Creating a Course from Scratch

If you’ve never been involved in creating an e-learning course, the process is the same regardless if you’re creating courses for Pluralsight, LinkedIn Learning (Lynda), CBT Nuggets or any other large training company.

In a tiny nutshell, the overall stages to publish a course are:

  • Course pitch (working with the company to determine what course they want)
  • Course summary (creating an overall review of what the course is about)
  • Course proposal (building an outline of sections, lessons, abstracts, etc.)
  • Approval (working with the company to agree on your proposal)
  • Paperwork (reading and signing legal contracts)
  • Demos (building demo environments, coming up with scripts and recording)
  • Slides (building slide decks and recording slides)
  • Editing (after recording, ensuring the video flows nicely)
  • Submitting demo/slides (sending demos/slides to the company)
  • Demos/slides approval (performing any edits/re-records necessary)
  • Publishing the course (company publishes your course on their platform)
  • Getting paid (Yay! We’re done!)

We at TechSnips understand these stages intimately and have designed an automated system to account for all of them allowing all of our course authors to only worry about the absolute minimum. However, we’re not going to gloss over the fact that creating a course whether you’re partnering with TechSnips or not requires work.

Effort Required to Build a Course

With talk of all this work, are you scared yet? I hope not! Producing courses with TechSnips alleviates a ton of work, but we’re not going to build the course for you! You’re the expert; we’re just the platform.

Before we too far into this topic, I have to let you know that everyone is different. Please don’t join a course and 200 hours into it, gripe to me telling me I told you that it was only going to take 20 hours if you’ve decided to boil the ocean! I can only provide numbers based on my personal experience.

Let’s break down the applicable stages from the section above that entail doing some work on the part of the course author. Remember, these are rough numbers from my personal experience from producing or helping produce ~30 different courses. These numbers are also in man hours. They do not include time waiting for a response from the training company.

Based on a typical 2-hour course, here is a breakdown by stage in hours both by working with the training company alone or and as a TechSnips contributor:

Stage No Help from TechSnips As a TechSnips Contributor
Course pitch .5 0
Course summary 1 .5
Course proposal 2 1
Course approval 1 .5
Paperwork .5 .25
Demos 50 25
Slides* 20 15
Editing 20 0
Submitting demos/slides 2 2
Demos/slides approval 2 1

We reduce the course author’s workload in every stage. Through services like mentoring/coaching presentation skills, providing prebuilt lab environments, removing all editing required and providing a single platform linked to multiple training companies, we expedite from pitch to payment.

*We help out with slides as well and may eventually take this down to 0. A tech expert doesn’t need to be a PowerPoint ninja too!

Get Started Today

If you’re currently not a TechSnips contributor or are and have yet to get started on your first course, what are you waiting for? Go outside, pick up some snow and let’s see what kind of monster we can build together!

Join Us!

Passive Income: The Holy Grail of Money-Making

Imagine for a minute getting paid to do nothing. Every month, money just appears in your checking account without a finger lifted on your part. It’s like clockwork. Every month, the money comes in. The amount may vary month-to-month but usually stays around the same. This monthly account deposit is everyone’s best friend; passive income.

Many people think the only way to make money is to trade in their time. Whether you have a full-time job working 40 hours/week or are a consultant charging $150/hr, the amount of money you receive is dependent on the amount of time you put in. Work more, get paid more whether you’re going into overtime or burning the midnight oil as a consultant or contractor.

If you’ve never experienced passive income before, getting paid every month when you haven’t stepped foot outside your door to go to work seems crazy. It almost looks too good to be true but, I assure you, it’s not. It’s merely extending the payment model you’re used to over a long period. The work still must be done, but you are paid not based on your time but on the value your work delivers.

Passive income is a general term that refers to putting in work for a limited amount of time and getting paid for that work for years to come. Passive income can be achieved lots of ways from building software or an online service and providing a self-service checkout, writing a book and collecting royalties, writing an eBook and hosting it on a platform like Leanpub and receiving a share of the revenue, having blog sponsors or any other activity that requires work upfront with payments over time.

The Snowball Story

A great metaphor to explain passive income is to compare it to a snowball.

Imagine you’re outside on a snowy day, pick up some snow and make a snowball. The snow is that wet, sticky snow, so you’re able to create this snowball easily. Holding the snowball in your hand, it weighs no more than a few ounces. This is the money you receive from royalties your first month via your first course. Cute but nothing to write home about.

That snowball in your hand reminds you of the mountains, so you decide you need to climb Mt. Everest to achieve spiritual enlightenment. Just go with me here. You battle the elements and take your little snowball with you to the top as a reminder of where you came from.

Once you’re at the top, you then decide to free your little snowball and roll it down the mountain. At first, it merrily bounces along down the mountain but soon begins to grow mowing down shrubs, grow some more where it’s now pummeling small trees, roll down a few more thousand feet and it’s taking out entire basecamps! By the time it gets to the bottom of the mountain, it’s on a mission and soon takes out tiny Tibetan towns.

Your once cute little snowball has morphed into a monster consuming everything in its path. Now imagine that snowball is your money and the altitude is time. The farther down the mountain the snowball goes, the more work you do and the more value you create exponentially growing your snowball and the bigger your bank account gets. In this metaphor the snowball eventually stops; it’s simple physics. But in our real, passive income example, the money keeps coming in month after month forever!

Building Passive Income with E-learning Courses

Passive income comes in many forms, but here at TechSnips, we provide this nirvana-like service in the way of e-learning courses. The TechSnips Course program partners with leading training companies that need online courses and we also publish our own. Regardless of where the course is posted, it will always be made for sale and will always be consumed by students over time.

A course provides value to consumers not once or twice, but, typically, for years. Since that value is spread out over time, TechSnips and you, get paid for the work that we put into building that course over that timespan.

For a course to be successful, it needs to meet three rough criteria:

  • It has to be marketed well and in front of potential students
  • It has to be packaged well
  • It has to be a well-produced, quality course that students can learn from

TechSnips and our partners take care of the first two criteria, and the third is up to you. We help you build the best course possible, but it’s ultimately up to you to make the course awesome. To develop your monster snowball, the key is quantity. The equation is simple; the more courses you produce, the more money you make and the longer your passive income will continue over time.

Let’s Talk Numbers

We’re talking passive income here, but we also need to speak to the upfront payments you get when authoring courses with TechSnips. When a course is completed, you will receive anywhere from $800 to $2000+. If you’ve decided to go lone ranger on the course and are the sole author, that entire amount is yours. If not, that amount is then split between any other authors that are also assigned to that course.

The upfront payment isn’t bad but hardly worth the 30-50+ hours of work that may go into a 2-hour course. The real money is in the passive income!

A snowball can start its journey at various sizes, and no two snowballs will take the same route down the mountain just like course royalties and revenue sharing. The size of the monster at the bottom depends on a multitude of factors, but it all comes down to popularity. The amount of passive income you receive depends on how favorited your course is with its audience.

For example, Pluralsight uses its own platform to host courses for students and pays royalties based on minutes viewed. Packt, on the other hand, distributes their courses amongst many different platforms and pays you based on a percentage of revenue earned from your course. Either way, you get paid more if your course is popular and less if no one wants to watch it.

Once you’re approved as a TechSnips course author, you can build courses for many different training companies all with a single platform.

It’s tough to determine how much you can anticipate receiving per month in passive income. The number all depends on the TechSnips course partner, the time of year, how good the partner is at marketing your course, if your course is aimed at beginners, intermediate or experts and more. With that being said, I can provide a big range. If you are the sole author on a course, you can expect anywhere from $20 – $2000/month. I told you it was a big range! I can’t, with a good conscience, tell you exactly how much you will make.

How much you make solely depends on your ability to teach a great course and how many courses you produce.

Get Started Today!

If you’re currently not a TechSnips contributor or are and have yet to get started on your first course and are not presently seeing passive income, what are you waiting for? Go outside, pick up some snow and let’s see what kind of monster we can build together!

Join us! 

TechSnips: Startup Struggles and Eternal Optimism

A Startup Founder

Short term pain, long term gain. That’s what we hear from people when they are watching on the sidelines when we’re working towards a goal. These people either strive to motivate us or are entertained by watching us struggle and want to see how stubborn we can be.

We go to the gym, see no results the next day. We start eating healthy and feel no different. We stay in a job that’s meh just because it’s comfortable and we entrepreneurs bust our asses for nothing for months sometimes years in hopes of a big payoff someday.

What does each of these situations have in common? They all require either:

  • A. balls
  • B. stupidity
  • C. tenacity and grit

I’m positive it takes a little bit of each.

When I quit my job nearly eight months ago for an opportunity that had no guarantee, no paycheck and no clear end goal everyone thought I had a screw loose. “Grit! “, I told them. “No, it’s a vision!”, I told them. They’d nod and wish me well still thinking I was nuts.

Short term pain

Imagine for a minute you’re on a tightrope high above the ground wobbling on a 1-inch wire. Scary, right? Now imagine you have an enormous cushion made of baby lamb’s wool and unicorn tears below you. If you were to fall, it may actually feel wonderful feeling that soft embrace of the net.

You’d happily stroll along the wire without a care in the world. Who cares if I fall? Hell, I may jump! This is what a nice, cushy job feels like. Another week, another big paycheck. Ain’t life grand? For some maybe.

There’s no pain but no challenge. No fulfillment. Take your Hawaii vacation with your loads of PTO and buy that Ferrari. As my Australian friends say, “Good on ya!”. But what kind of way is that to live? What are you actually accomplishing? Do you feel like you’re making a difference in the world? If not, ask yourself if this is what you want for the rest of your life.

Sure. There will be fights with your spouse, you’ll question your sanity, you’ll run budgets nonstop to reassure yourself it’ll be OK and you’ll constantly wonder what you’re committing your life to really is a good idea after all. “WTF HAVE I DONE??”

It’s painful. Sometimes very. But nothing great comes free and without risk.

Rome wasn’t built in a day and neither can a fruitful and fulfilling business like TechSnips.

Long term gain

It’s been nearly eight months since I started TechSnips and I can finally say my attitude is beginning to change from a pain to gain mentality.

We’re not making loads of money by any means and we’re not a huge team capable of destroying our competition. We do, however, have momentum and a growing community.

Since we’ve pivoted to focus on our course partner program we received our first course payment this month. Talk about exciting! We now have 13 courses in the queue and our dedicated team of contributors are hard at work cranking them out. I can see the snowball starting to build!

We are an agile company capable of coordinating hundreds of moving parts at once though our highly systematized processes. I knew being Adam the Automator would come in handy besides the occasional blog article or two.

We’re attracting 3-5 new contributors every week who immediately are put in touch with Anthony, my first lieutenant/VP of Content where he’s able to get them up to speed fast and part of our community.

I can say that after all of the hard work, we’re finally hitting our stride. With a dedicated community, collective knowledge and everyone’s commitment to coming together making TechSnips a success, I know we will succeed.

  • Adam

How to Quickly Export and Import an OVF Into vCenter With PowerCLI

Background

In my current day job, I’m often asked about using PowerCLI to perform a number of tasks in a vCenter cluster. This is a story about a recent request for assistance from a colleague who needed to export a custom monitoring appliance template to a new vCenter cluster that was being built. My colleague was under a time constraint and did not have the necessary access to the template.

Getting Started

Never wanting to miss a chance to use PowerShell or PowerCLI, I jumped in head first to help. I gathered the necessary information from my colleague, and began connecting to the cluster:

This takes just a moment to complete. Next, I know what verbs I’m going to need, so I look up what commands are available. Notice that I truncate my verb using the correct quoting syntax, as explained in a previous post of mine:

Discovering PowerCLI commands using Get-Command

There are two cmdlets that stand out; Export-VApp and Import-VApp.

Both of these cmdlets appear to be exactly what I need. But first, I’ll educate myself a little more on the proper use for each. I start with Export-VApp This cmdlet will export the powered off VM as an OVF to the current directory my session is in by default if I do not specify a path. I have a path in mind, so I’m going to go with the following code:

But there’s an issue:Powered On VM Error

I should have thought about that a bit more before running the command. You cannot export a running VM to an OVF! No worries, this is a quick fix. I’ll modify my code a little more:

That was easy. With the template appliance now offline, I could resume running the Export-VApp cmdlet I tried to run earlier. This process took about 10 minutes, and wasn’t a very large appliance to begin with. Now I have a 3.5 GB appliance ready to be deployed into another vCenter environment. Or do I?

Trouble Ahead

Feeling like I’m driving the train now, I enter and run the following code:

The notion just crossed my mind that I got ahead of myself, and failed to find out if I was actually connecting to another vCenter cluster.

Something happened when I began to import the previously exported VM appliance. A sea of red error messages.

Trouble Behind

I read the error message, and sure enough, the host is not a part of a vCenter cluster and therefore does not have proper licensing to complete the import using PowerCLI. This is a limitation that VMware enforces. No worries, I could still connect to the web interface of the host and manually import using the HTML 5 interface. The wizard walks you through each step, give the imported appliance a name, choose the OVF, datastore, deployment type (thick or thin provisioned), and verify the configuration. After that, select finish and the import begins. While the previous import attempt would work great with a vCenter cluster, it was simply not going to work in this situation. This took a little longer than expected but was straight forward. You can read more about the process here.

In the end, the import was a success, and my colleague met their deadline.

Final Thoughts

Until this exercise, I was not aware that not all PowerCLI cmdlets were available in all situations. However, Both of us learned a new skill and, while experiencing some unforeseen adversity, we still accomplished the task at hand. Too often we rush through IT projects looking for the ‘quick’ fix. Watch your speed, take another minute or two to ask questions, step back and understand the problem you are trying to solve. You may find you’ll learn something new.