Friday, May 31, 2019

Will you disregard important relationship advice?

I want to give. In life, it's the relationships that we form with each other that matter. We need to develop close relationships with other people. They could be our spouses, children, friends, or co-workers. We are not meant to sit alone in boxes isolated from the rest of the world. We often bury our heads in our phones or get sucked into video games or what not. It becomes easy to get frustrated with others and choose isolation. How is this affecting us as a society? How does it affect us as individuals?

I'm not sure how to answer the first question. Okay, I recant my previous statement: I can answer the question. I'm convinced my answer will stand the heat of logical debate. The lack of relationships makes us poor. We become poor in compassion, generosity, and caring for our fellow human beings. I know there exist plenty of examples of people helping others. That's great, and I make the world a better place one person at a time. Yet, I see so many examples of people hating other people for one reason or another. They're Mexican. They're Jewish. They're Muslim. They're LGBTQ. They're whatever they may be, perceived to be different and thus a threat. For each type of person, the haters give reasons for expressing their hate. They're going to take our jobs. They want to replace us. They want to kill us. They live in sin. So many reasons to hate, yet how well do you know these marginalized groups? Will they take our jobs? Do they want to replace us? Do they definitely want to kill us? Do they actually live their lives in sin?

Develop close relationships with people and get to know them better. Think of all the ways we can make this world a better place by listening to other people's stories. Visit a local mosque and learn how their congregants are attempting to live their own lives in peace. I know co-workers who are Muslim, and I respect them because respecting others is the right thing to do. For those haters of Jews, I can tell you I have no intention of replacing you. (Yes, I'm Jewish. I'm proud of it, and I'm not going anywhere because the United States of America is my home.) In fact, I'm trying get through this struggle called life like everyone else. I have a wife whom I love and have arguments with over and over again. It is outright difficult. Forming close relationships means you have to be vulnerable. You must admit your flaws and mistakes. (Click to Tweet) You must put yourself in the shoes of the other person even should they lack feet.

How does this lack of contact with other affect us as individuals? It makes us feel small and insignificant. What can I do, so future generations remember me despite being one out of billions on this planet? I see many ways to do this: become famous, write books people won't forget, do heroic actions in the face of danger. After thinking about this, I tend to think this is a wrong approach. Instead of being important to billions of people, I should become important to a few close people. One must develop close and intimate bonds with my family and friends. You should do wonderful things showing compassion, love, and generosity. This will make you remembered by future generations. What I mean is that you should not forget the people who love you. You should not forget that there are people in this world who are different. You can improve their lives through simple acts of love and kindness. Form close relationships with people who are not like you. Learn their cultures. What does it mean to be Hispanic? To be Jewish? Muslim? LGBTQ? Put whatever preconceived notions you might have aside. Get to know them as individuals.

Forming close relationships and bonds with other people is a never ending task. There will always be haters, yet there will be people yearning for close friendships. We will continue getting into arguments with our loved ones, yet we can work through those issues. Be vulnerable. Know that you will make mistakes, yet take responsibility for them. You should learn with the intent to improve yourself and your relationships. Get to know others, so you can know yourself. It will hurt at times. That is a risk you must take to develop your friendships and loving bonds.

Our world can be a good and nasty place. Many people what to do harm to others. This was true in the past, it is true now, and it will be true in the future. You can improve our world by showing love and kindness to one person at a time. Imagine a child who bullies others because their mother recently died. The father retreats into grief by displaying anger. If you can coach and mentor that child, show them love. Let the child know their father loves them, and it is okay to grieve a loved one.

Quite often, people choose hate because they feel isolated and unloved. You cannot reach each person who closed their hearts, yet form a bond with that person. This individual might have become the instigator of the next mass shooting had you moved on. Instead of responding with anger, invest time to understand their hate. You might need to reach within yourself and understand why you respond the way that you do. This is an opportunity for you to show them you are there for them and care. Open their hearts with patience, kindness, understanding, and compassion. You can improve the world one person at a time. (Click to Tweet)

Remember, our time on this planet is finite. Although future generations might forgot you and me, we must make positive impacts. Be positive forces in the lives of those close to us. By showing examples of kindness and compassion, they in turn will do the same. Not every single person we influence will do this of course, yet one or two will, and the pattern will repeat. Thus, you can have a great positive impact on the world by forging a few meaningful relationships. After all, quality not quantity matters.


Wednesday, May 29, 2019

How to Evolve Your Stagnant Career towards Exciting Fields in STEM

Recently, a contact on LinkedIn asked me how to transition into a cyber security role. Although i know little about cyber security, I gave advice that you can apply if you decide to change careers. Let's suppose that you decide to change fields within the science, technology, engineering, and mathematics (STEM) fields. How do you effectively drive your career in a different direction? You could follow one of several paths:

  1. Earn an advanced degree in your targeted field
  2. Learn on your own pace
  3. Take on stretch assignments within your current company
A quick qualifier before I discuss these methods: I assume that you already have an undergraduate degree in a STEM field. You have a basic understanding of science and mathematics. I'll discuss these three methods in detail.

Earn an Advanced Degree

Of your three options, earning an advanced degree requires the greatest effort. It will focus you provided you know in general what field you want to move into. You will specialize within a specific field. For example, you could earn a Master Degree in Computer Science with a emphasis on machine learning. If you to earn a PhD, you will perform ground breaking research in a field, and you will become an expert. In my case, I performed research in applying genetic algorithms to adapt antenna array hardware that spatially focused wireless energy in a signal of interest while simultaneously minimizing energy towards interfering sources. Don't let my research description frighten you: you can develop a fulfilling career in Industry with a PhD. You will develop skills important to advancing your career while earning your PhD.

If earning an advanced degree takes so much effort, why pursue one? I can give you several reasons:
  • Your employer offers tuition assistance or reimbursement
  • You realize that you need an advanced degree to move up quicker
  • You have the time to pursue the degree
  • Your career has flatlined
  • You enjoy learning in a classroom setting
  • For a PhD, you enjoy researching and teaching others
The first three reasons apply if you work at a company that encourages continuous learning. Clearly, you need time to read textbooks, study for exams, and develop class projects. You won't do classwork during normal office hours, so you need to set aside hours during evenings and weekends. Not an easy option if you work for a startup or have a young family to raise. It can be done if you can set clear boundaries.

What do I mean by one's career flatlining? This could be a euphemism for unemployment. It could mean you've been stuck in the same role for years. You see no clear path to promotion. In this case, an advanced degree could be a good option for you. It won't be easy especially if you are unemployed. However, you can get fellowships for PhD's in STEM majors provided you put together a strong application package. In spite of it's difficulties, a PhD represents a better option if you are unemployed and on limited income. If you feel stuck at your current employer, you should take advantage of your work's tuition reimbursement program. If you enjoy research, get a PhD. Otherwise, earn a Master Degree. Remember, a PhD can take four to five years in a full-time program. Should you have a family, you must communicate your educational intents with them because it will eat into family time.



Learn on Your Own Pace

Learning on your own pace involves taking online courses without credit towards a degree, reading books, and do it yourself (DIY) projects. You can find online courses offered through your company's continuous learning program, or you can find free classes offered by universities. MIT and Stanford both offer their classes online free. MIT offers free lectures on MIT Open Courseware. Stanford offers free courses on iTunes via Stanford on iTunes. You take these classes online as if you're a student, yet you do not receive credit for the classes.

I enjoy reading books, and I choose books in subjects unfamiliar to me. If you are interested in learning about machine learning, you can read a plethora of books on the subject. For a high-level overview of AI, I suggest that you read AIQ: How People and Machines Are Smarter Together. Read as many books as you can and focus on the field that you want to enter. As you read books, take detailed notes. It doesn't matter if you write in physical notebooks or apps like Evernote. You must write down and organize your thoughts, impressions, and references when immersing yourself in learning materials. Otherwise you will soon forget what you read.

DIY projects can be physical or virtual. They can be a combination of both. It depends on what you want to learn. Interested in building robots or automating your home? Buy a Raspberry Pi and learn to program in Python. Do you want to program Alexa Skills to make Alexa do cool things? Go through the tutorials in the Alexa Skill Kit. Yes, these examples are specific to computer programming, software engineering, and computer engineering. However, you should pick projects relevant to the field you want to transition.


Stretch Assignments

This option depends on availability. Your employer might not allow employees to take on temporary assignments outside of their defined roles. If this is your situation, you will need to focus on the other options I described above. However, I encourage you to take rotational assignments outside of your specialty. This will challenge you and allow you to grow. Speak to your manager and see if you can take a temporary assignment. It will be difficult at first. However, your peers will want you to succeed, and they will help you get on track. They will make sure you know information you need to succeed.

Employees face challenges during stretch assignments. Challenges include rapidly learning new skills while subjected to a project deadline. Of course, therein lies the difficulty of first convincing one's manager to allow for a stretch assignment. This couples with finding a team lead or program manager willing to risk bringing in a novice into their organization. It helps if you establish a track record for excellence prior to seeking rotational assignments. If your assignment lasts nine to twelve months, you can expect the first three months to consist of learning on the job. This helps convince your rotational manager to bring you on. Whatever challenges you face, you will find the stretch assignment to be worth its troubles. You will challenge yourself and learn skills in a new field. The power in stretch assignments is that you can try out a new field. If you do not like this field, you can return to your previous assignment, or take on a different role for a year.


Summary

You can move  into a new field. It will take work, and you will need to prove your capability along the way. In this post, I discussed three ways you can move out of your current are of knowledge into a different line of STEM work You have options depending on your situation. You can earn and advanced degree, learn on your own pace, or take on stretch assignments at work. Whichever path you choose, you will succeed.





Saturday, May 25, 2019

Update on My First Alexa Skill Top 50 Podcasts Quiz

In a previous article, I wrote about my experiences developing my first Alexa skill. I will update you on the status of my skill submission. Following submission, the Amazon Alexa skills team failed my skill because it was missing a background image for the Amazon Alexa display. This was my own fault because I thought of adding the background images as an upgrade. In my mind, the Minimum Viable Product (MVP) was the skill itself. The simple answer would be to disable display support. I decided this would be poor programming habit, as I would be excluding users with Amazon Alexa displays. Thus, this article will discuss how I addressed the Amazon Alexa Skills team reason for rejecting my skill and resubmitting it for certification.

In an Amazon Alexa skill that supports displays, programmers will see a function of the form supportsDisplay(handlerInput). This function checks to see if the Amazon Alexa device (i.e., Echo) supports a display. If the result is true, the skill will display either a background image or an image related to the quiz question. I originally commented out code wherever a call to supportsDisplay existed. My first step was to removed my comment blocks and re-enable the display code.

If I left my code as is, the code would not compile. I did not define my background image and quiz item images. To get images to work with Amazon Alexa skills supporting displays, I needed to understand how to use the Amazon Web Services' Amazon Simple Storage Solution (S3) for storing files on the cloud. The Alexa skill would access images from my AWS Free Tier S3 bucket. For readers interested in learning more about storing files on the cloud via AWS, I suggest you read AWS' article titled Store and Retrieve a File. For my podcast, a bucket already existed for my podcast, so I found a background image from a free stock photo site (via a Google search) and uploaded it there. When you upload an image for your Amazon Alexa Skill via S3, the default setting for Manage public permissions is "Do not grant public access to this object(s) (Recommended)." You want to change this to "Grant public read access to this object(s)" because Alexa users will need to access it when they use your skill. See the image below.



The next step in uploading an image to AWS S3 is to set the storage class properties. The default storage class is Standard. Unless you subscribe to an AWS service other than the Free Tier, leave the default storage class as is and click next (see below). Click Next to review your upload, and click Upload.



Once you have a background image uploaded, you need to reference it in your Amazon Alexa skill javascript code. In my podcast code, I referenced my background image as

const backgroundImagePath = "https://s3.amazonaws.com/toppodcastquizshow-userfiles-mobilehub-187033348/public/podcastQuizBackground.jpeg";

In the quiz podcast, the backgroundImagePath  constant variable is referenced in a function called getBackgroundImage(label, height = 1024, width = 600). Notice this function uses a default width and height for the image. You must supply the function with a label. In the US States Quiz, this call looked like

const backgroundImage = new Alexa.ImageHelper().addImageInstance(getBackgroundImage(attributes.quizItem.Abbreviation)).getImage();

Clearly, my Podcast quiz does not have a quizItem field called Abbreviation. During the quiz section of my code, I changed this call to

const backgroundImage = new Alexa.ImageHelper().addImageInstance(getBackgroundImage(attributes.quizItem.podcast)).getImage();

This works great for showing the background image during a quiz. There exists another section of code that displays an image when the Amazon Alexa user asks Alexa to them them about a specific podcast (example: "Tell me about How I Built This.") I changed my code in that section by commenting out the definition of the variable image and replaced it with the following block of code:



I ran the tests, and my Podcasts Quiz skill displayed background images as expected. Note that I could have added individual images for each podcast for the "tell me about..." option. However, I decided against this because it was more work that I was willing to do at that time, and the podcast images are likely copyrighted. I resubmitted my Podcasts Quiz for Certification and am waiting on the results of the Amazon Alexa team review. Images of my Alexa skill in action in the Alex Developer Console are below. In the first case, the Amazon Alexa user asked for more information on "How I built This" Alexa said the network is NPR, the artist is Guy Raz, and the ranking order at the time of code development is 15.


Below is the example of the quiz. For this question, Alexa asked "What is the Network of Over My Dead Body?" The choices were Wondery, Barstool Sports, and Oprah. The correct answer was Wondery.


I hope that you enjoyed this podcast. Please come back for updates on my Alexa Skills development and other topics.

Thursday, May 23, 2019

Cool Tech: MIT CSAILS System Lets Wearers Control Robots with their Biceps

This is awesome technology: control a robot with your biceps. The system is called RoboRaise. According to the article, the system "enables human orchestrators to perform tasks with machines by moving their arm muscles." Imagine what you could do:

  • Lift heavy boxes in a factory on the other side of the world 
  • Place construction materials on a high rise building from a remote area 
  • Assist a person with moving a heavy object 


The graduate students assisted the robot by going through the motion, and the robot learned to pick up visual cues from its human trainer. Pretty cool, don't you think?

Above: A human and robot work together to lift an object.
(Image Credit: MIT CSAIL)