Saturday, March 5, 2016

Self-Organizing Team — Is this possible? What happens to the tech lead role?

Teams, tech leads, self-organization and responsibilities are some of the keywords that I will use this in blog post.
Let me first ease into this topic by talking about the role of tech leads in the software engineering field. Be patient with me as this is all directly related to the main topic. I believe that the role of good tech leads is very often underestimated or taken for granted until they are removed from the equation and then you start realizing how much work goes into it. While the role of tech-lead is kind of stuck in between keeping project/program managers happy and working on low-level technical details, there are what I call unofficial/unwritten benefits of being a tech lead. You are in that special position as a leader where you are closest to all the activities on the floor and you can shape and improve things unofficially even though there are different rules and perceptions at that layer above. If you have that super-connection with your fellow engineers/developers doing the amazing work on the floor, then you are in that unique position to influence how the culture shapes up in the company and how people feel when they show up to work every day. When you reach that level of connection with your fellow developers, you know that you would jump in front of a bus to save them and you know that they would jump in front a bus to save you when it comes to your projects. In most cases, you a tech lead know the members of all teams better than their own resource managers; you are their unofficial manager and you are in the position to influence their careers in positive ways. They follow you because they respect you and that’s a huge responsibility that tech leads have on their shoulders.
This leads me into the topic of SAFe (Scaled Agile Framework) and how the role of a tech-lead gets translated to the TEAM and a new role of a solutions architect gets born which is more tied with the overall architecture, product management and program management.
What do I mean by “tech-lead role gets translated to the TEAM”?
What I mean is that the TEAM does not have an official tech lead and that responsibilities of a tech lead need to be divided into small pieces and shared by the team and then somehow all of that has to be put together and facilitated to hopefully get the same results of having an official tech lead. Yes, there are less and more senior people on the team, but one thing that should NOT be done is just appoint that one more senior person and give all the responsibilities of a tech-lead to that person. What happens when you do that? You are basically taking abilities away from that senior person to do any coding/development throughout the major part of their days. For example, if you your teams are small then you might have just lost 25% of productivity.
What you as the organization really need to is identify the unwritten checklist of what tech leads do in order to make it a successful formula. Don’t try creating this checklist if you are not on the floor. You might have had experience in other companies with this, but their floor is different then the floor in your current company. Please reach out to your leads and team members and come up with a good list and keep fine-tuning it. I will share my list with you below, but let’s first discuss how you put all these pieces together and achieve the same result as if you had a full-time tech lead on the floor. This is where a strong scrum master role is absolutely vital. Let’s assume there are ten of these items on the list which a tech lead would typically handle. Let’s assume these are split among 5 people on the team. If each one of these five people handle two items, does 5 x 2 equal “10”. It will equal “10” if your scrum master does an amazing job and if every team member puts passion into what they are doing and constantly tries to improve it. The chemistry on the team has to be at the top, and the role of a scrum master becomes that much more important. Building that level of chemistry is not easy and to be honest, I am not a big fan of specific things in the agile methodology that make things mechanical and too military-like. How many times did you hear people say “Nobody does agile properly”. First, you can’t do “agile”. The word “agile” is not a noun? I understand why the scrum organizations made the word “agile” a noun; it is because you can sell nouns and you can’t sell adjectives. I am going a bit of tangent here. What I mean is that chemistry within the team cannot be naturally achieved if you have so many rules that you need to follow. In my opinion the agile methodology is about the Agile Manifesto and the programs and certifications that came out of Agile Manifesto are just one interpretation of that manifesto. So don’t allow anybody to tell you “we don’t really do agile here”. Challenge them on that statement. I encourage creative debates on it.
This leads me to the main topic about the self-organizing teams. All of the above recommendations is what can get you closer to having self-organizing teams. I specifically said “closer to self-organizing” because in reality the teams are never 100% self-organizing; you always need a little bit of leadership involvement to keep things in check. Even though that magic 100% is never reached, the main thing is that most of the tech lead responsibilities are evenly distributed among teammates and you are avoiding a very common problem of tech leads being bottlenecks and being overworked.
Here is an example of the list that could be taken from tech leads and distributed among teammates to get closer to self-organizing team. This is the list that I came up with as I was trying to make teams more self-organizing in order to free myself up to focus on strategic architectural items:
  • * Somebody who can decide at the beginning of the sprint when PAIR-PROGRAMMING is needed and on what story. This worked well in a recent projects where we paired up developers on bigger user stories. This was done selectively when needed. Both developers keep each other challenged and you are automatically doing peer-review and what I call drive-by demos.
  • * Coding methodologies review: Appoint a person who needs to have in every sprint a quick session to review with architecture what the approach is and find out what further architecture involvement is needed.
  • * Risk assessment on existing functionality in production due to common code changes: Somebody on the team should be made the owner on this item.
  • * Ongoing special instructions as you are coding during your sprint: Somebody needs constantly check with fellow developers if anything special had to be done besides regular code checkin/commits. Having a person that keeps people honest throughout the sprint is important during busy times and this is one of those things that could save you from late finding in Stage and Production launches. Obviously if you script/automate your special instructions, then it is that much easier.
  • * Quick drive-by meetings to explain to your peer how you are about to code something: You will be surprised how these “drive-by high-level technical designs” increase the quality of the software by a huge factor. Every developer should be doing and scrum master could be constantly encouraging this. This is where architecture members can be brought in if these drive-by sessions require need to be design oriented.
  • * Drive-by technical demos among peers after each user story: Instead of just marking that user story completed and ready for testing, I strongly recommend that you bring over a teammate and do a quick technical demo and you may get some recommendations that will help prevent issues down the line. Every developer should be doing this throughout the sprint.
  • * Peer code-review: When a developer finishes a user story, that piece of code should be given to a peer for a code-review before the code is checked in or committed to your source control. Every developer should be participating in peer code-review instead of relying on tech leads or senior developers.
  • * Main contact person to collaborate with system engineers and DevOps teams: Sometimes you have changes where you need new servers set up or a new type of build. There should be a go-to person on the team to be the spokesperson when communicating with system engineers and DevOps.
  • * Day-to-day support of the environments (Dev & QA): If QA teammates or somebody finds and issue in Dev/QA environments, somebody has to do the initial analysis and determine if it could be related to your teammate’s user story or it could be related to your user story. Having that one go-to person on the team to do the initial analysis saves the rest of the teammates from being interrupted. Obviously you can rotate this responsibility from sprint to sprint as any other responsibility in this list.
  • * Source control (TFS, Git, …etc): Somebody on the team should be responsible for source control related things and your branching and merging strategy. For example somebody should be doing forward integration from the MAIN branch (trunk) into your development branch and deploying those changes to your Dev/QA environments and doing some initial smoke-testing if things are not fully automated.
  • * Builds to Dev and QA runways throughout the sprint: Somebody on the team should be focused on doing daily builds or on-demand builds depending how automated or half-automated your builds are. If the build scripts are owned by a DevOps team outside your team, this teammate should be the focal point communicating with the DevOps team about any changes needed in build scripts as part of your sprint work.
  • * Final code-review: Somebody more senior on your team should review all the code and involve architecture on need-to-need basis on implementation and definitely involve architecture for design decisions before you even get to the final code-review.
  • * Launch preparation: There should somebody dedicated on your team to work with all the external teams (Change Control, DevOps, …etc) on preparation of your release to production. Obviously this person needs to understand the technical details of the release and have ability to translate that into instructions that Change Control team requires from the process point of view.
The items above are just examples of what a tech lead would handle and now the work would be divided among all teammates. Obviously teammates can rotate the responsibilities based on how the team decides.
Good luck, have fun, put passion into what you are doing and try to improve things from iteration to iteration. At a minimum, identify just one thing that you want to change to make things more flexible and do it. Repeat this from iteration to iteration. Isn’t that what agility is all about?
Almir M
#leadership #techlead #team #selforganizing #softwaredevelopment #softwareengineering #scrum #agile #agility #iteration

Monday, February 29, 2016

Python Programming Series - Part 4 - Factory Pattern Example

I have been doing software development for 18+ years, but I am relatively new to the open-source community. I learned a bit of Python back in 2013 and I put it on hold because I was not thrilled with the syntax and code readability as I am used to strongly-typed languages, and I just picked it up again because as I am going through some AWS training and AWS CloudFormation. 

If you are a Python expert, you should not be on this page :)

As I am revisiting Python as a programming language, I figured I would post things as I am learning and putting together examples. That's the point of this series.

DETAILS ON THIS EXAMPLE ARE HERE:
http://almirscorner.blogspot.com/p/python-factory-pattern-example.html


- almirsCorner.com -

#python #programming #code #coding #software #softwaredeveloper #softwareengineering #programmer

Monday, February 15, 2016

Cars & Coffee in Aliso Viejo, California - Feb 13, 2016

Cars & Coffee was fun this Saturday in Aliso Viejo. We had incredible weather. I only took a few pictures. Lamborghini Aventador stole the show in the supercar category. In the classics category, I vote for a view old school Benz. In the affordable category, I would give it to a brand new Mazda MX-5 (Miata) with gold wheels and also an older Mazda Miata with the custom roof and race specs.




Albums:
https://plus.google.com/+AlmirM/posts/diJTqJN88HV

https://plus.google.com/+AlmirM/posts/1SHRgh4xx13



almirsCorner.com

#cars #CarsAndCoffee #OrangeCounty #California #SoCal

Thursday, February 11, 2016

Defense is the BEST Offense — how do you apply this concept in Software Engineering?

Let me start by saying that I am NOT talking about developing software in such a way to protect your job; I am totally against that. I am talking about something else here.
I am talking about a mindset in software engineering that allows you to be offensive and the buzz word that describes this is “being disruptive”. You can develop software very fast, but can you consistently repeat this without creating chaos?
One real life example is the following: You developed a piece of software or a list of features and your QA and Stage testing passed perfectly. Then you are about to go to production and on the day of the production launch, the decision gets made not to launch those features for technical or business reasons. Now the question becomes: Can you easily disable these features and still launch everything to production with these features turned off? If the answer to this question is a CONFIDENT YES, then you are implementing things the right way and you have development methodologies in place that present you with a lot of capabilities and options. It is easy to say this, but this methodology starts before you even write a line of code. On the other hand, one might say “why do I need to develop the feature toggle if I can just be fast and go for it?”. I would say that going fast and taking chances is fine if you have the foundation, but without the foundation and methodology to support you, it is just reckless.
The confident YES in the above scenario gives your product management and your senior management enough confidence to try different things without worrying about failing because the failures or sudden decisions will not cause chaos. I provided just one example that accomplishes this goal.

In conclusion: You are building a defensive feature called “feature toggle” but in turn you are actually providing offensive capabilities for your leadership team to innovate and disrupt. It sounds counter-active, but it is not.


Almir M.
#SoftwareEngineering #SoftwareDevelopment #programming #programmer 

Sunday, January 31, 2016

Winging it — People who master it make you believe that they are following its definition

What does “winging it” mean? We all have done it, but do we master it?


Definition:
To wing it is an idiom that means to improvise, to do something without proper preparation or time to rehearse. People often talk about winging it when they have to do something difficult that they didn’t have time to prepare — like a make speech or give a presentation.
Those who are regularly successful in it are actually memorizing their speeches and the facts from the speech. They practice and practice. Then when the actual meeting or speech or presentation comes, they have the confidence because in the worst case, you memorized everything and you can go by the script. With that confidence, you find opportunities during your presentation to be more natural and that natural behavior keeps your audience engaged; some may say that you are winging it and that you are very good in it but I call it “being very prepared”.
Don’t think that this only applies to your senior management team. This applies to everybody in your organization whether you are in a meeting with 3, 5, 10 or more people.
Try it in your next meeting. Carefully read the agenda for the meeting and come very prepared. Then when you are in this meeting, keep your laptop, notebook and your smartphone away and pay attention to all the discussions. You will be very natural and your points will come across much stronger.
Conclusion:
Those who are great in winging it, they actually rehearse and go against the definition of “winging it”. 


- almirsCorner.com -

Saturday, January 30, 2016

POST Desktop Era - Are we there?

Post Desktop Era.

Back in 90s when I worked at IBM, I used to use dumb terminals connected to Unix servers that had some amazing specifications. Then we went into the direction of having powerful desktop computers and powerful laptops. 

With the introduction of Chromebooks, we are back to those dumb terminal days but still at infancy days. With Chromebooks, you can be almost 100% productive if you are not in IT industry, but when it comes to IT professionals, we are getting there. 

More and more tools are becoming available online through web browsers. Of those tools is Cloud 9 IDE that I am using. I can do Linux, Node.js, Javascript, HTML5, and Python programming all through my browser on my Chromebook. Yes, I have my IDEs for my Windows and Macbook machine, but there is something fun about developing in a cloud IDE :)

The message in the image is what I saw one day when my Cloud 9 IDE was loading; it's awesome.

So are we there yet? If you are an early adopter, we are there. I think we are still a few years away from web browser tools being as good as desktop tools.

Happy Cloud Computing :)


- almirsCorner.com -

#cloud #cloudcomputing #chromebook #chrome #IDE #cloud9 #coding #code #programming #programmer #softwaredevelopment


Saturday, January 23, 2016

Coding / Programming — Think Paper, Paper, Paper, then Code

Most of the software engineering problems are solved in what I call the high-level brainstorming sessions. We basically walk into a meeting room and white-board our thoughts and come up with solutions. When things start falling apart, you better believe this happens in the last stretch of projects and this does work. 
Now the issue is that we as programmers do NOT do the similar type of exercise before a line of code is written?
I typically see developers get requirements in the form of a document or a user story or in the form of walk-by requirements. The next thing I see on developers’ screens is code editors or IDEs. Is that the right thing to do? You may say that you are advanced enough and that you like to dive into code right away, but this happens even to the best of us. We fall into this trap and rarely step back and review our habits.
We have to go back to fundamentals. What did we do in school? Professors taught us to write down our thoughts and to show what we plan to eventually express in code. A piece of paper and a pen can do amazing things early in the game before a line of code is written. Even if it is a napkin, please use it and write down what you plan to do. It does NOT have to be pseudo-code; it could be just a bullet point list in English (or your choice of language) and a bunch of boxes/diagrams describing what you are planning to do when you put your hands on that keyboard in front of your choice of code editor or IDE. This approach prevents potential confusions down the line and it can actually prevent show-stoppers in the 11th hour of your project. Whatever you write down on this piece of paper can also be used as a verification for your code because when you get into coding, you dive down too deep and forget the big picture; this piece of paper is there for you to keep you in check. When a tech lead ask developers how they implemented a specific requirement/user story, developers need to be able to articulate the implementation without showing any line of code. What’s the best way to show a solution and have discussions than a piece of paper with your approach. Then these discussions could lead to what I call “drive-by” mini demos and code reviews which are another great benefit and that deserves its own blog post.
A developer may use the following argument against what I wrote here: “This is slowing me down. Why do I need to waste my time putting my thoughts on paper if I can just sit in front of my computer and start coding it?”
My response to the above argument would be: That’s fine; I am talking about guidelines here. These are not rules. It is up to you to choose when you want to use paper first and as your experience grows, you become better and better in making these decisions. There is no right or wrong; I am just providing some approaches/tools that help with the whole process. In many cases, this takes a bit of your time at the beginning and saves you a lot of headaches later in the project. At the end of the day, if a tech lead asks you to explain how you implemented something, you need to be able to articulate without showing code :)

What’s the conclusion? Think paper, paper, paper, then code.


Almir M.

#programming #coding #code #programmer #softwareengineering #softwaredevelopment 

Monday, January 18, 2016

Python Programming Series - Part 3 - Read a file and write into another file

I have been doing software development for 18+ years, but I am relatively new to the open-source community. I learned a bit of Python back in 2013 and I put it on hold because I was not thrilled with the syntax and code readability as I am used to strongly-typed languages, and I just picked it up again because as I am going through some AWS training and AWS CloudFormation. 

If you are a Python expert, you should not be on this page :)

As I am revisiting Python as a programming language, I figured I would post things as I am learning and putting together examples. That's the point of this series.

DETAILS ON THIS EXAMPLE ARE HERE:
http://almirscorner.blogspot.com/p/python.html



- almirsCorner.com -

#python #programming #code #coding #software #softwaredeveloper #softwareengineering #programmer

Sunday, January 17, 2016

Python Programming Series - Part 2 - String Manipulation Example

I have been doing software development for 18+ years, but I am relatively new to the open-source community. I learned a bit of Python back in 2013 and I put it on hold because I was not thrilled with the syntax and code readability as I am used to strongly-typed languages, and I just picked it up again because as I am going through some AWS training and AWS CloudFormation. 

If you are a Python expert, you should not be on this page :)

As I am revisiting Python as a programming language, I figured I would post things as I am learning and putting together examples. That's the point of this series.

DETAILS ON STRING MANIPULATION ARE HERE:
http://almirscorner.blogspot.com/p/python-string-manipulation.html



- almirsCorner.com - 

#python #programming #code #coding #programmer

Saturday, January 16, 2016

Python Programming Series - Getting Started

I have been doing software development for 18+ years, but I am relatively new to the open-source community. I learned a bit of Python back in 2013 and I put it on hold because I was not thrilled with the syntax and code readability as I am used to strongly-typed languages, and I just picked it up again because as I am going through some AWS training and AWS CloudFormation. 

If you are a Python expert, you should not be on this page :)

As I am revisiting Python as a programming language, I figured I would post things as I am learning and putting together examples. That's the point of this series.

Installing Python:

After installing, set the path and add:  C:\Python27
NOTE: I have been running with version 2.7.x because that is still the most popular and widely used and has the biggest third-party library support. On the other hand you have 3.x versions that my examples have not been tested on.

Python IDE that I like and it is most lightweight:

NOTE: Install the Community edition that is FREE. It is good enough.
You can also use a cloud-based IDE: http://c9.io

Python Tutorials:

Good reference website and full docs is at the official Python site: https://docs.python.org/2/tutorial/
Good tutorials are:


- almirsCorner.com - 
#python #programming #code #coding #programmer #softwareengineering 

Sunday, January 3, 2016

Convert your SLOW old PC into a Chromebook

I had a cheap version of an Acer 11" laptop that was not performing well after a few years. The machine was practically not usable so I decided to research and install the open-source Chromium OS that would make this old laptop a relatively fast "Chromebook".

Before I get into the instructions, let me share the final results. The Chromium OS boots up in 10sec on this "Chromebook". Browsing internet is super fast and YouTube works great, but there are a few things that you have to watch out for if you are already used to using regular Chromebooks and you are doing a direct comparison:


  1. Chrome Web Store:  This will not work as Chromium OS is not compatible with Chrome OS Web Store.
  2. You will not have access to Google Drive through the Chromium File Explorer the way you can do it in Chrome OS. This may not be important to you because you can still access Gmail, Google+ and Google Drive through your browser which is how I typically access it anyways. 
  3. Chromium browser does NOT support Flash. So if you are used to playing games with Flash or watching movies from websites that are powered by Flash, you are out of luck. Keep in mind that you can still play HTML5 games but you will have to find them outside the ChromeOS web store (i.e.  http://html5games.com/ )

After doing some quick research on YouTube, here are the exact steps for getting Chromium install on your USB drive and using it as a boot-up drive, or fully converting your PC into a Chromebook so you don't have to use USB drives as boot-up.

  1. Download and install Win32 Disk Imager that is used for creating your boot-up drive: http://sourceforge.net/projects/win32diskimager/
  2. Download the Chromium OS build from: http://chromeos.hexxeh.net/ and extract the file from the zip file.
  3. Use one USB drive that you don't need. Keep in mind that everything on this USB drive will be formatted so make sure you save its data somewhere before using it.
  4. Use the Win32 Disk Imager:  Create a boot-up USB drive using the Chromium OS build image file by selecting it within the Disk Imager tool.
  5. After the Disk Imager is done creating a boot-up drive, you can leave the USB drive connected and reboot your computer and the boot-up time, you need to make sure that the boot-up is done from the USB drive instead of your hard-drive. Depending on the type of your PC, you press different function keys to get the boot-up menu. For example, on my Acer laptop I pressed F2 while the computer was being rebooted and it presented me with a menu where I was able to select the order of drives used during boot-up.
  6. After you let it boot up from the USB drive, you will get the Chromium screens that will walk you through initial setup with your Gmail address.

If my instructions are not clear, you can watch these two videos:


If you want to fully/permanently convert your PC into a ChromiumBook/Chromebook without needing to use the USB drive, you can do that by following the instructions below, but you need to be very careful; you will NOT have access to your Windows OS anymore and you will first need to back up files from your computer if you plan to do so. Here are the instructions:



- almirsCorner.com - 

#Chromium #Chrome #ChromeOS #Chromebook #PC 

Saturday, January 2, 2016

Sony 55" 4K Ultra HD TV - Google search voice commands

Siri on my iPhone and I don't get along well. She does not understand my accent :) 

I occasionally use Google Now app on my iPhone and its search feature but it is not built with full functionality for iOS. I bought this Sony TV that is running Android OS and I am really enjoying the Google search feature with voice commands.

Here is my YouTube video showing you this feature:
https://www.youtube.com/watch?v=-tmpWJYClQ0




- almirsCorner.com - 

#Sony   #X850C   #Android   #GoogleSearch   #voicecommands  #OkGoogle  

Tuesday, December 15, 2015

Cars & Coffee in Aliso Viejo on Dec 12, 2015

I showed up at the location of Cars & Coffee Aliso Viejo at 6:45am and there were already about 20 cars there. It was very cold for California standards, but it did not stop the car enthusiasts. The place was already full by 7:30am.

Here the link to my album with the pictures that I took with my iPhone:

Full ALBUM - Cars & Coffee Aliso Viejo - Dec 12, 2015


Preview with a few pictures:









- almirsCorner.com -

Saturday, November 14, 2015

Culture that accepts a slight risk of failure (NOT reckless failure) in the interest of being faster and more agile

Let's start with a few options:

(A)
Be fast, risk failure and if needed quickly recover to succeed.

(B)
Be slow and successfully launch.

Obviously the option A does NOT apply to companies that are building planes, ships, cars, medical equipment and what not. However, it does apply to a lot of other IT organizations.

In option A, I am NOT talking about recklessly failing. I am talking about leading a team and trusting them without watching every single line of code and without introducing too many gates during the development of a project. As long as you have professionals on your team, you really need to use "let the baby out of the crib" methodology and allow them to fall as they are learning to walk as a team.

When I say "fail", I also don't mean failing foolishly breaking every rule in the architecture book; that's being foolish and not fast. I am talking about the culture where risking normal failures is NOT looked down upon. It is all about keeping the levels of this risk within normal boundaries and that requires a skill.

This is what "Be Agile" could mean. Let's call it "The Function of Agility":

void beAgile()
{
    while(true)
    {
        developFast();
        allowRiskOfSlightFailure();
        quicklyCorrectIfNeeded();
        succeed();
        identifyWhatNeedsToImprove();
        applyWhatNeedsToChangeIncrementally();
    }
}


We don't need books and certifications. It just boils down to the above Function of Being Agile that we need to stick to; everything else is catering "Be Agile" approach to your company and it may mean that you implement what Scrum organizations put in place, or it may mean that you deviate from it in order to best achieve the goals in your work environment.

How do you gauge if you are on the right path?

It is simple. If the number of your failures is increasing over time and it is actually slowing you down, than you have to revisit the whole approach.

If the number of your failures is the same or less and you are not slowing down your development and deployments, then you are on the right path as long as those failures are not critical to the business. The goal is to keep iterating and NOT repeat the failures.

At the end of the day, if you have the culture that does NOT look down upon slight failures, your team will have so much fun which typically leads to amazing results. It is beautiful to watch the work in action. You can't really measure every step of the way, but what you can measure is how much more value you provided to your customers. That's the measure that matters at the end.


- almirsCorner.com - 

#agile #fast #flexible #BeAgile #SoftwareEngineering #SoftwareDevelopment #teamwork 


Monday, November 2, 2015

Amazon Web Services (AWS) Training - Some Info

I just recently attended a very good two-day training session on AWS. Jon Gallagher (our instructor) is very knowledgeable and good in painting the full picture on AWS. His labs were great too.

Here is the summary of the material covered in this training. We covered a lot in two days.
  • Introduction
  • Lab 1 - Installing AWS CLI & running some basic commands
    • get info on AZ-s
    • get info on EC2 instances
    • get info on S3 buckets
    • get info on SQS queues
    • get info IAM user and list the Groups
  • Security Policies
    • IAM users, groups, roles, S3 buckets permissions, VPC S3 endpoint, SQS permission
    • Sample JSON for a security policy
    • ARN (Amazon Resource Notation) 
  • Lab 2 - IAM setup (Identity & Access Manager)
    • create users
    • create groups
    • assign permission
    • create roles
  • EC2 Info   (Elastic Cloud Compute)
    • EC2 = Instance Type + AMI
    • Instance Type info
    • What is AMI
    • Hypervisor
  • Lab 3 - Working with EC2 from AWS CLI
    • get info on your VPC
    • get info on your subnets
    • create a public/private key to work with CLI
    • create a security group & add rules group
    • create/run an EC2 instance with pre-set AMI
    • SSH into your EC2 instance using the key
    • cURL command to your Hypervisor to get the meta-data
  • VPC & Networking
    • VPC info
    • Tribal knowledge on VPCs
    • setting up a VPC across a regions and multiple AZ-s
    • security layers to VPC and usage of public and private subnets
    • Security Groups as layer before Hypervisor and Hypervisor before you get to EC2
  • Cloud Scaling - EC2, ELB (Elastic Load Balacer) & ASG (Amazon Scaling Groups)
  • Lab 4 - Create Security Groups, AMI and ASG (Auto Scaling Group)
    • create multiple security groups
    • create an EC2 instance
    • create an AMI image from your EC2 instance
    • create an ELB (Elastic Load Balancer)
    • create an ASG (Auto Scaling Group)
  • Automation with CloudFormation
    • Structure of CloudFormation template (parameters, mapping, resources, outputs)
    • Output of one CloudFormation template can be used as input into another CloudFormation template
  • Lab 5 - Launching ASG with CloudFormation template
    • create a new stack in CloudFormation screen in AWS Console
    • load the CloudFromation template
  • Networking & VPCs
    • Default VPC vs. your own VPC
    • NACL to protect your VPC
  • Lab 6 - Building a VPC and ASG with Python Troposphere library
    • installing Python and all the libraries needed
    • running a provided Python script that sets up a VPC and an ASG
  • VPC Endpoints
  • VPC Flows
  • DynamoDB


Almir

#AWS #AmazonWebServices #cloud #CloudComputing #VPC #EC2 #ELB #CloudFormation #Python #Troposphere #Boto