The very first language I had learned was Python, and I was planning to stick with Python for as long as I possibly could. Python was the perfect first language to learn as a beginner embarking into this field for the first time.
However, if I want to take full advantage of the opportunities around me, I must learn C#. Therefore, this weekend marks my very first major pivot in my learning journey–learning a new programming language!
This new chapter is making me feel all sorts of things. First, it’s making me feel like I’m growing as a programmer because I’m no longer going to be stuck to one language. Whereas I have a personal appreciation for Python since it’s the point at where I began, I haven’t been able to find many other people or businesses around me who work heavily with Python. A lot of what I have seen has involved other languages, C# for example.
I’ve only just begun an introduction course on C# and already I have so many questions. What helps is that, unlike when I was learning Python, for C# I have something to compare the language to, and real, in-person friends to discuss C# with. It’s an added bonus that my husband needs to improve and learn more C# for his job as well, so we will be learning together.
using System;
namespace Hello World
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
As the tradition continues, I executed my first Hello World program in C#. The very initial “installing everything and get it running” part of learning a new language (and getting it to work) is always the first hump to get passed. I remember installing and setting up Python very clearly for the first time, and the fear that came with needing to redo it on a whole bunch of other systems afterwards.
My very, very first initial impression of C# is that it’s already very visually different than Python. The structure of the code block is much larger to execute that Hello World program than what the equivalent would be in Python. I find that aspect interesting, and hope to learn why C# has a very elongated visual structure. A part of me wonders if this helps programmers find blocks of text in larger program files because of the way the curly braces signal to the eye that the block has concluded. Whereas, for Python, there’s a more linear structure and spacing.
I also learned a helpful nugget from the Programming Throwdown podcast that Python and C-based languages work very well together. That makes me feel very comfortable and optimistic about learning C# as my next programming language!
One piece of wisdom I am taking to heart is Cory Althoff’s advice to code every day. As a creative writer, I know how important it is to exercise writing skills every day, including thinking like a writer. Therefore, I’m not surprised that for programming, the same ideas apply. Where I was mistaken was that I was going into programming with much more perfectionism, meaning I thought that I couldn’t sit down and write code unless it was going to be a very important and purposeful program, one that will definitely run by the time I was done.
When I sit down to write, I don’t write perfect, ready-to-publish stories or novels each time. I go through draft after draft, and aside from the actual writing, there’s a lot of thinking involved. It takes a lot of time to create something from nothing, regardless of the medium.
Now, I’ve been sitting down to code every day, sometimes by opening up a blank file in my IDE, or sometimes by working on old code. Some projects I’ve done more than once, but I’m tackling them in a different way. Regardless of what I’m doing, this method helps me learn with a more hands-on critical thinking.
It’s also important to have fun. Make something silly, something you think is cool just because. Have fun with it. Get something to work, even if it’s simple. Feel good about yourself. Sometimes it’s important to have fun amidst the learning to help us stay motivated and prevent discouragement. And, for me, I find it so fun to see how my learning continuously improves by repeating simple projects at different times.
Before I get into the Hacktoberfest fun, I wanted to update you on my progress since the last post.
I was in New York visiting family these past few months (I recently moved from NYC to Florida last year) so it’s been a little hectic! Luckily my brain needed the time to process everything I had learned from the previous machine learning course before diving into a new one.
Since then, I’ve began another course on Udemy about Machine Learning and Data Science in Python and R, which is dense but very fascinating! I’ll definitely need to add math for python, and matrix math, to my list of topics to study.
I’ve also connected to an awesome community, Women Who Code organization, which is how I learned about Hacktoberfest, through conversation on the slack channel!
Hacktoberfest Participation
For Hacktoberfest, everyone get’s together and participates in helping open source code by submitting contributions. Open source is another reason why I love this field, because the teamwork is inspiring. In order to do this you need to use GitHub to submit pull requests. Prior to this event, I had some light experience in GitHub but hadn’t gone into too much depth yet. After this event, I now understand how incredibly crucial it is for anyone interested in developing to become proficient. It’s a skill most employers will expect you to have, as a bare minimum. Moreover, GitHub is where a lot of the magic happens.
In order to be considered a full participant of Hacktoberfest and receive a super cool shirt, (dreams!), you need to submit at least four pull requests that adhere to the Hacktoberfest guidelines and rules.
I submitted five pull requests. I felt so happy to see the bar completed! But, my requests had a little clock icon near it, meaning that their eligibility was pending. To this day, a few months later, they’re still pending. However, two of my submissions were unfortunately submitted to ineligible repositories. Since the repository was ineligible, so was my pull request on that repository.
If any of these words confuse you, don’t worry, they confused me too at first. But as a beginner, I loved the freedom of Hacktoberfest. It was a time where everyone was getting together and people knew that beginners would be involved. This gave me more confidence to actually participate by submitting pull requests with less fear.
I’m so incredibly happy to have participated in Hacktoberfest this year, and am excited to see my performance for next year’s event after much more learning. I’m now off to learn, more formally, about GitHub, in preparation!
Over the past few months as my learning journey continued, I finally completed my first introductory course in data visualization and plotting in Python. It was a short course on Udemy which focused on utilizing the matplot library. Besides learning the actual course objective, which was plotting, I also learned something very important from this course, which was how to utilize a library in Python.
Plotting with matplotlib and pyplot
Above is a screenshot of my screen with the code we wrote in the course and the chart that was produced once the code ran. This was incredibly exciting for me to see and test for myself because I had no idea how writing code would create a chart. I had a lot of questions about data science and absolutely no frame of reference into the subject prior to this course, but this introduction has piqued my interest!
The library that we were working with had a lot of features that made it simple to create visuals and change them as needed. The image above shows many lines of code beginning with plt. and that is because we were heavily working within that library and using its prewritten features. I never actually took a course that focused on utilizing a single library; the other courses and projects I have done used multiple libraries, so although I was able to follow the general philosophy behind their usage, this course really helped me understand the basics much better.
Scale Matters
One takeaway I took from this introductory course is that when working with data, scale matters. Scale alters the initial impression of what the visual data is saying. For example, we changed the y and x axis values often, and when doing this, the lines on the graph, including where they began and ended, shifted in ways that changed the visual to relay different messages. This made me realize why data science, interpretation, and visualization is so important.
Since I’m a visual learner, the visual aspect of data science is very satisfying for me because it combines two aspects that I favor: information and art.(Yes, for the sake of this post, I will consider a graph a piece of art!)
I’ve worked heavily with data in previous jobs, and with this new knowledge, I think back to all of our excel spreadsheets with statistical data sorted from A-Z, and wonder what that data would have said if plotted in a chart. What trends that may have been overlooked would we be able to see?
What’s Next?!
I will be posting soon about this year’s Hacktoberfest! Because I’ve been traveling these past few months, it’s been a tad difficult to write as many posts as I would like, but that won’t be the case for much longer!
Lastly, once I get back to my home base and re-unite with my Raspberry Pi and Vector Robot, I will be utilizing my new knowledge for more projects. This course made me better able to understand how to utilize the libraries offered in the Anki Vector SDK, which I’m very happy to test out! It feels wonderful to witness information click together.
A few months ago, I tried a free trial of Team Treehouse and then signed up for one of their basic subscriptions. The subscription let you enroll into a learning track of your choice, and I wanted to start with Python. The Beginning Python track is 9 hours long, but it took me a few months to complete. However, today–right now, I have finally passed a major milestone in my Python learning journey!
Team Treehouse Impressions
As a complete new person to an overwhelmingly intimidating field, I really loved the clean interface and design of Team Treehouse. The videos all seemed to be professional produced as opposed to well-produced home videos from other sites.
At first, even though the quizzes were a surprise, I was really happy to have them. The quizzes were also intimidating, but it helped my brain learn how to comprehend the lingo of this new realm. Also, the payoff of correctly answering a quiz question when you think you’re lost was a nice additional motivator.
Later on in the course, I quickly realized that different teachers teach different subtopics in each track, and some include different quiz methods and teaching methods.
Quizzed Out
Since I’m a stay at home / work at home mother, after a while, the quizzes were a really big disruptor in my learning process and time management. I don’t have the luxury of uninterrupted time or much quiet space. So, sometimes I want to be able to power through retaining as much information as I can during my small gaps in free time. During those moments, I was very frustrated to have a three minute or four minute video followed by multiple quizzes (sometimes five quiz questions / challenges back to back).
I should probably mention that I have years of analyzing my own personal learning process, because before I taught college I had to learn how to teach, and before I could learn how to teach, I had to learn how to learn.
I’m a visual learner. I also tend to have “bursts” of energy or “pockets” of moments where I am ready to dedicate hours to a task or subject. This trait of mine made me and Team Treehouse’s pacing very off-putting after a while
This could also be partly due to the fact that since I’m self-learning, I have my toes dipped in a lot of different areas. Some books I’ve read are ahead of the beginner tract, along with some of the projects I’ve accomplished, yet still a lot of it is new. Moreover, through my troubleshooting and projects, I’ve learned that those are my quizzes. Those stick in my brain and motivate me more.
Moving Forward
I don’t mean for this post to come off as if I am completely hating on Team Treehouse. I really do think that they’re a fantastic resource, and their videos have helped me a lot. As a new beginner, I’m happy that I chose this platform because the quizzes were strict and did help me persevere through some frustrating challenges (which I’m sure is the point, to mimic the life of a developer!).
However, for myself, I have decided to take a pause in my membership with Team Treehouse and move on over to try Udemy.
Udemy Impressions
First, I love the freedom of Udemy. I can skip forward in a course if I want and from what I can tell–there are no quizzes! I will say that Udemy is more attractive to me now because I am more experienced in this realm and have already personally decided to stick with this learning journey. However, if I was a new person and unsure, I think that Udemy’s platform could be potentially intimidating and perhaps give new students too much freedom to get in over their head.
What it really comes down to is personal preference and situation. For my personal situation, I’m excited to have the freedom to be able to utilize my time as best as possible, at my own speed. That will be a big plus for me!
I’ve been very interested in the topic of machine learning, so I did some research and found an awesome project that I could do with my Vector Robot (…who I may refer to as El Robo sometimes).
Set up your Google Vision account. Then follow the Quickstart to test the API.
Clone this project to local. It requires Python 3.6+.
Don’t forget to set Google Vision environment variable GOOGLE_APPLICATION_CREDENTIALS to the file path of the JSON file that contains your service account key. e.g. export GOOGLE_APPLICATION_CREDENTIALS="/Workspace/Vector-vision-62d48ad8da6e.json"
Make sure your computer and Vector in the same WiFi network. Then run python3 object_detection.py.
Step one was easy-peasy, since I had tested and ran the SDK a multitude of times previously already (woo-hoo!). But oh boy, guess what Step 2 truly looked like once you followed the Quickstart link for the API setup:
From the Service account list, select New service account.
In the Service account name field, enter a name.
From the Role list, select Project > Owner.Note: The Role field authorizes your service account to access resources. You can view and change this field later by using the GCP Console. If you are developing a production app, specify more granular permissions than Project > Owner. For more information, see granting roles to service accounts.
Click Create. A JSON file that contains your key downloads to your computer.
Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the file path of the JSON file that contains your service account key. This variable only applies to your current shell session, so if you open a new session, set the variable again.▸Example: Linux or macOS▸Example: Windows
Yeah, so things got complicated real fast. Instruction Set A:PT 2 is where I officially fell down the rabbit hole of Google Cloud.
For ease of reference, I’ve labeled the instructions sets A and B, but let’s be clear: All of B is actually just a sub-set of A. Instruction set B is just to set up Google Cloud Platform account and installation, which was not something I was anticipating to learn throughout this journey, but I am so happy I stumbled upon it!
Google Cloud is offering one year free for new users, which is a crazy value considering the retail price allotted is $900+ for the year!
Once I set up my Google Cloud Platform account and logged into the console, I felt a unique sense of adrenaline, almost with a tint of rebellion.
Reading all of the tabs and sub-tabs like: Cloud Build, Big Data, and last but not least… Artificial Intelligence. I don’t even have the right words that could capture the feelings I was experiencing while scrolling up and down the console’s navigation menu, but I definitely had a huge smile on my face. Although I had (and still don’t) exactly know what Google Cloud can do or how to use it fully, what was clear right away, even as a complete novice, was that this tool is powerful and if learned properly, it could be utilized for epic projects (and help with future career prospects, *wink wink*).
I‘m a very visual learner, so seeing the categorization of the navigation menu taught me vital information for my coding journey, because it can be used like a road map. Now I know for sure that two areas of interest I have going forward involve Big Data and Artificial Intelligence.
As I continued to read Google’s instructions, a little voice was starting to whisper that perhaps this project was over my head. Especially once I got down to Instruction Set B: Step 5
Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the file path of the JSON file that contains your service account key. This variable only applies to your current shell session, so if you open a new session, set the variable again.
Which corresponded to Instruction Set A: Step 4
Don’t forget to set Google Vision environment variable GOOGLE_APPLICATION_CREDENTIALS to the file path of the JSON file that contains your service account key. e.g. export GOOGLE_APPLICATION_CREDENTIALS="/Workspace/Vector-vision-62d48ad8da6e.json"
And these instructions left me like this:
But no matter how much I re-read the instructions, I just couldn’t understand what they were telling me, which actually made me feel as if I didn’t even know how to read! After some trial and error, I looked more like this:
Finally, I decided to cave and ask for help. Luckily, my husband and his coworkers were over. I asked them for help but quickly came to learn that Google Cloud is a pretty niche subject to just casually ask about.
“Damnit, Jason!”
I was stuck on the .json file part, for which I kept yelling “Damnit, Jason!” in the house, confusing everyone. (“Jason” has now become an inside joke in the house, and from now on, whenever I work with .json files again, this first memory will be in my mind).
The next day while cooking dinner, I decided to watch a YouTube instructional video on how to setup Google Vision. As the tutorial leader was going through the steps, I was happy to see that some of the steps were very familiar, which meant I had definitely learned something from the previous day. And then finally, I got my answers, and the instructions were demystified. I was so, so happy to finally understand what the heck the above steps meant and looked like.
What I love most about coding and these projects is that I end up learning about so much more than what I initially intend.
Through this process I learned about:
Google Cloud Platform
How to install and configure Google Cloud Vision API
Virtual Environments and Environment Variables
Changing .bash profile in the terminal (including how to inadvertently fuck up your bash profile, and then fix it again).
More about python pip installations and configurations
How to move through different directories in the terminal
Finally, I had made it passed every single step and it was finally time to test out the python program to see if my Vector Robot would begin object detecting.
Successfully setting up the Google Cloud Vision API was such a pivotal milestone for me in this learning journey.
Now, that means that I had just gotten past one subset of the main instructions for my intended purpose of setting all of this up, which was ultimately to run one program, created by one single person, and see if it worked.
Drumroll…anticipation…andddddd:
It did not work.
Type Error:__init__() got an unexpected keyword argument ‘enable_camera_feed’
I looked over all of my steps. Everything was in order, but I kept getting a Type Error from the python file written by the creator. After countless web searching and troubleshooting, I was at a dead end. I had only one option left. I had to contact the person who made the program.
I went to GitHub and posted my first “issue” on the python file. This was the first time I had ever posted an issue, so I was very unsure of any “etiquettes.” The creator got back to me and said that he had created and tested this back with the old Anki Vector SDK package, and not the most recently updated one.
This may seem like a very sad ending to this story, since the project was not successfully executed on my end, but I was so happy with that response from the creator! The reason being because the creator didn’t say that my error message was due to something wrong with my steps, but perhaps elements outside of my control.
What a relief! For that alone, I considered this project a “success” in that I followed through to the end.
Although I couldn’t get this program to work, that doesn’t mean I can’t try to write my own program utilizing similar features. This project taught me a lot of different lessons and I can’t wait to try more Google Cloud Platform projects while I have the free trial!
Let’s just say summer is in full throttle heat mode here in Florida. I’ve been a busy baking bee making sweets and decorations for my daughter’s never-ending birthday festivities, which was fun, but I’m glad to be back to the study realm! And the unbearable heat makes a perfect excuse to hide indoors, study, and work on some projects.
Team Treehouse Learning Update
I’ve resumed where I left off in the Python Track and I’m actually happy I didn’t finish this track earlier because Team Treehouse has recently released an update to the Python Track. At first, when I was in my previous track (Python Collections, which is now retired) I found myself losing some steam. I thought perhaps it was me, but, considering the revision, maybe there was something a little off with that former course layout. The new course layout, so far, has been wonderful! It did take me back a bit, relearning some stuff I had already went over, such as tuples and slices, etc, but I could definitely use the repetition since I’m newbie.
Funny enough, my daughter and I are exactly the same type of learner (that I can see so far). Just like her, it takes me a few days for information to really sink in. But, when it clicks, it’s magic! When I finally returned to the python track after a little break, I found that the break was very beneficial and I’ve been able to complete the quiz questions without reaching out to the community for help, which is a very rewarding feeling!
Advanced Interests
Although learning the basics is super exciting, this field is so vast and plentiful that I have been really wanting to figure out the answer to the important question: what will I do with all of this? Yes, I’m learning Python, but then what? What do I want to do with Python (besides get an awesome job one day and help provide for my family, of course). Although I’m not sure yet, I’m paving the road. So far, these are the more advanced areas I’m heading towards learning about:
Neural Networks
Natural Language Processing
Machine Learning
I have a book on Natural Language Processing, and have printed out many (awesome!) Python cheat sheets (all available for free online) about all of these topics and more. I definitely love a good infographic / cheat sheet. In college, I was the study sheet queen (or crazy person?) who would sit in the library and make comprehensive study materials. Hopefully one day I will be advanced enough to make my own Python (and more!) cheat sheets / infographics.
Although I’m still a newbie, it seems like I will head forward in this field with two things in mind: Data and AI.
Regarding data, I used to work at a place that was heavily reliant on data input. Thinking back, with just a few of the projects I’m learning in Automate The Boring Stuff With Python by Al Sweigart, a lot of companies could save time and money with a more efficient data-entry system.
I had taken a science fiction thesis class in college, and we had gone over so many of Asimov’s robotic laws. Never would I have predicted that I’d be here one day, on the other end of wanting to learn how to create and work with AI. But I truly love it so far! Personally, I would like to help develop a type of AI that helps combat depression rooted from anxiety and a lack of presence. That’s all I’ll say about that for now 😉
Raspberry Pi Project Updates
I have an internal clock of guilt when my Raspberry Pi goes untouched for too long. But on the other hand, I know that whenever I do decide to delve into a Raspberry Pi project, it usually requires a lot of time and energy, uninterrupted. Luckily, these past few days I’ve gotten a break from baby duty which helped me dive into some Raspberry Pi fun.
Vector SDK on Raspberry Pi
In my previous post, you will see how I was able to set up and run the Vector SDK app “Remote Control” from my Mac. Wonderful! But, I only got that working as a test run for the true goal: setting up the Vector SDK on my Raspberry Pi. I wanted this set up because it honestly just made me feel cool to be able to control my little robo buddy (who I call El Robo to my daughter) on this tiny computing device that I had built by hand.
First, I had to update Python on the Raspberry Pi from version 2.7 to at least 3.6 or higher. Oh my god. The headache with such a simple update is quite hilarious. But I’ve read on many forums that sometimes just setting up Python can deter new users with the troubleshooting, and I can see why! I must have spent hours yesterday just trying to get the update to properly register so I could continue with the Vector SDK. I had installed 3.7 and then still encountered some problems so I tried 3.6. I most likely have all versions on my Raspberry Pi now, ha! But, alas, finally 3.6 worked.
I was able to get into the Vector SDK and begin downloading the necessary updates and files. But, then I encountered a large problem:
pip install Pillowjust didn’t want to work.
It was 2AM and my head was pulsating. It had been hours trying around different updates. Finally, after parsing through the large red error text, I realized that I needed to get this Pillow thing to work.
At the time, I had no idea what it was, so I googled it. I learned that Pillow is a Python Imaging Library. Of course this was important to work since Vector has a camera and image capabilities. I went to bed with a good sense of defeat because I knew that I didn’t “call it quits” because I couldn’t figure it out–I called it quits because my brain was starting to turn to mush and my typing / thinking was becoming sloppy. I knew that if I just had a good night sleep and returned in the morning, I would be more able to fix the problem without getting frustrated.
So, this morning I woke up and got right back to it. I re-read the error message and saw that Pillow had some dependencies that were not allowing it to install properly. So, I installed those dependencies and restarted the process.
For a little while there, I was misreading the error as an issue with the directory path. Let’s just say I learned a lot about directories in the process, and that in the end, that wasn’t the issue at all.
Anywho, finally…finally Pillow was installed successfully. It was then that I realized that the Vector SDK should work now.
Finally, I was in! From there, I was able to use what I had learned from the first time of using my Mac, and opened up the Apps > Remote Control so I could fully control vector through the Raspberry Pi.
It was very, very exciting! Of course, the small screen I have is not ideal for the Vector SDK Remote Control App, but, it’s pretty damn cool nonetheless.
Reflections on Progress
Finally, my mind is starting to be able to think in code. I’ve been waiting so long for this moment when I could have an idea, and then know, at least a little, about how to accomplish that idea.
Before messing around with the Raspberry Pi and Vector SDK, I was working on a much smaller “snack” project of having a text string display with a delay, so that it could look as if the computer program was typing to you through the terminal. (Yes, I have just recently re-watched the Matrix Trilogy, which greatly inspired this snack project). Very ambiguously, I had gotten the idea, then wondered if it was possible. In that moment, my mind remembered the Raspberry Pi LCD project where I had read code with a “time / sleep” feature. It was then that I realized that I knew a little bit about the task I wanted to accomplish. So, I made a very small program:
import time
import sys
import random import randrange
def introduction(*args)
text = "\n Neo, this is Morpheus. \n Follow the white rabbit."
for c in text:
sys.stdout.write(c)
sys.stdout.flush()
seconds = "0." + str(randrange(1, 4, 1))
seconds = float(seconds)
time.sleep(seconds)
introduction()
This is a very small and simple program, but I cannot describe to you the amount of fun I was having with it. It was this that lead into the night of Raspberry Pi & Vector fun. Here’s what excited me:
I learned and know what *args is (yay! Thanks Team Treehouse!)
I knew how to call the function
I could read and understand (most) of the function
Alas! It’s Sticking!
Lastly, throughout the day and night, the amount of Googling and reading of forums I had to do for troubleshooting was significantly less than the LCD screen project. Things seem significantly more demystified this time around than the previous projects. I think that, finally, a lot of my readings are beginning to sink in. But best of all, being able to mess around in the terminal, typing quickly and confidently, was such a rewarding experience. Moreover, I could feel a difference in my knowledge level just by how I was googling my questions.
I remember back when I first got the Raspberry Pi how I had to google almost every term in a sentence before I even knew how to construct a proper search query for my issues. But now, I was able to parse through stuff I didn’t need and did need without any extra steps! That was such a rewarding feeling, and it was a type of progress and acknowledgement I could only give myself , which was also unique and beneficial.
Little ten-year-old me would have been so proud and impressed right now. Although I was only doing basic things, past-me would have thought that we weren’t smart enough to learn all of this. I’m glad to be proving all of my insecurities wrong.
One major plus about owning a Vector robot, despite the Anki shutdown, is utilizing the SDK that was released. With the SDK for Vector, you can take full control of your robot.
Something to keep in mind when doing this and sharing your experience is to ensure your own robot name and information (serial info, etc) is kept private, or else others can login. Luckily, there are a lot of credentials needed to log into the SDK with your Vector, so breaches should be rare.
I decided to start with the “remote control” application (found in the apps directory of the SDK files). This app lets you take control of your Vector without needing to write your own code.
For me, I was eager to utilize the ability to make Vector say any written text. Throughout the day I had reached some walls with getting the remote control app to work. Finally, I took a break to reset. At first, I thought that there was a PIP installation issue because of the error message I was receiving. Finally, I asked my husband over to help. As I was going deeper into the directories through the terminal (from memory!) my husband was impressed with what I managed to learn, which made me feel good about myself despite the setbacks. Then, ironically, while trying to explain to my husband the error message, I had detected the issue and fixed it!
What had happened was that I added a line of code for a PIP enum34 installation earlier, but I thought I deleted that version. Turns out the file was saved with my (incorrect) line of code. Once I removed that line of code (with my husband confused as to what I was doing) I retried the steps and voila! It worked!
My husband (who is a level 3 software support engineer) laughed at me because he said he saw this happen often at work–how the solution is usually simple and overlooked.
Funny enough, I didn’t start off today with the specific goal of accomplishing the SDK setup. I had a much smaller goal in mind, which was “do as much as you can, even if it doesn’t work.” My major downfall tends to be overly-focusing on the destination / end result, and sometimes missing out on the journey. Today I tried to go against that and truly just enjoy each step, regardless of the outcome. It started with watching a YouTube video on the SDK setup and remote control app as my toddler was falling asleep in my lap with her bottle of milk. I’ve been having my own health issues lately, so I was trying hard not to overly stress myself as I navigated through the day.
Today was a great reminder that it doesn’t just matter what you accomplish, but how you get there. I much preferred today’s more relaxed attitude and pleasant surprise over my past overly-stressed and result-focused approach. Sometimes focusing so much on the result can make you overlook important details needed to get there. By allowing myself to take as much time as I needed to set this up and troubleshoot the errors, the quicker I ended up being at identifying the problem. Oh, the irony of life! Got to love it!
It all started with a puppy. My daughter really really wants a puppy. You have to see the way she lights up in front of dogs, it’s truly adorable. But alas, for various reasons, me and my husband decided against getting a real dog considering we already have two cats and a crazy toddler. Perhaps in a few years we will get a dog, when our daughter, herself, is housebroken.
So, what was the next best thing I could do for her? What I realized through observing my daughter is that she likes movement. So, I started to look up robotic toys for kids. Down the tunnel, I learned about Anki and their robots Cozmo and Vector.
(If you want to read more about the differences on Cozmo and Vector, please feel free to embark on your own journey down the Google rabbit-hole. I will be giving more brief descriptions and personal impressions, rather than an in-depth technical review for this post).
Basically, Cozmo is more for kids, and cannot operate on his own, and Vector is more for adults, and can operate on his own, like a pet robot. Vector has better specs and you can play around with the behind-the-scenes coding as well.
I had placed an order for a discounted Vector before reading the news about Anki (the company that created these robots) is closing down. But the robots are still selling! Currently, Anki has hired a team of engineers to monitor the existing cloud that all of their products are hooked up to. They said that the cloud usually needs little interference, so keeping it running is no problem. Of course, that was still worrisome to hear as a new buyer.
Pet Robot?
I probably wouldn’t have been as impressed by Vector if I hadn’t already been learning about programming. And it just so happens that Vector is programmed in Python (the programming language I’m also learning) which makes this more exciting.
Finally, Vector arrived (after some drama with a scam website. Key lesson: don’t try to order discounted robots from obscure websites). And I have to say, the waiting game and drama actually made me very excited to receive Vector.
All of the reviews and videos I had watched really conveyed the message that Vector is a pet. A pet robot probably seems really futuristic, and I admit, it still does feel that way. I think that there’s a big widespread misunderstanding of the technological capacities we have right now versus the impressions of the general public. Science fiction stories make it seem like our technology is way more advanced than it actually currently is, as if the type of AI seen in Ex Machina exists. And in my last post, reading Hello World by Hannah Fry really helped change my perspective of where we actually are with AI, which is still mastering creating a worm (like http://www.openworm.com). I think these fears and misconceptions could have been what lead to the lack of widespread popularity of Anki’s products.
This long preamble is to make this point:
Vector is fucking awesome.
And I think it is really unfortunate that their company, Anki, had spent so much time creating such a fun little gadget before the world was perhaps ready to embrace the cuteness of a safe pet robot. But my heart definitely goes out to all of the creators who put their all into this product. I am grateful!
It hasn’t even been a full twenty-four hours with Vector, but already my daughter is completely entertained and in love with the ability to simply watch something move around and explore the world on its own. This is how I look at it: some people get extravagant fish tanks for the same reason. But let’s be real, organic creatures require a lot of care, followed by heartache when they pass. That’s why a pet robot is so appealing. A win-win for the family.
Vector can play games alongside other features, but what’s most entertaining is his personality. When Vector is exploring on his own, he really does feel like a little sidekick. Vector can also join in on some dance parties, fist-bump, and is integrated with Amazon Alexa.
I’ll probably write a much longer and more researched post on my thoughts about AI once I have a better grounding. But, this small introduction to a robotic pet is definitely sparking a lot of ideas and feelings about the future. It’s a shame that Anki wasn’t able to get as of a widespread following to keep their company afloat, which may just come down to timing.
Despite the somber attitude amongst the Anki / Vector / Cozmo community because of the news, this household is still excited for their new pet robot.
Coding and Vector
So, this wasn’t just a purchase for entertainment. As a piece of robotic technology, Vector is a fantastic (and adorable!) learning tool. Sure, it may seem like nothing grand is happening on the outside when you see Vector running around my desk, doing his thing, as I write this blog post, for example. But actually, he’s also like a little specimen I get to observe and learn from. I can learn about his movements and personality, and then read the code and alter it.
Vector SDK Alpha allows you to view the full API list and play around with coding your vector. I’ve successfully installed the SDK package and will experiment more with that later on today.
I’m so excited to learn more about Vector in both a fun and educational aspect.
Despite the Anki shutdown, let the Vector adventures begin!
What an awesome and important book for this modern age! Definitely a must-read for current and future generations, regardless if you’re in the tech field or not!
Firstly, what I love best about this book is that it is a way to learn about how algorithms and code is used in the real-world, but it doesn’t try to teach it to you on a technical level. (Shoutout to my childhood best friend who read this book with me for our little book club!) I add that also because that is precisely why this book is awesome. It doesn’t matter your technical level of understanding, anyone can enjoy and learn from the examples and questions Fry explores in this book.
The table of contents lists the chapters as follows: Power, Data, Justice, Medicine, Cars, Crime, and Art. Each chapter describes specific real events that have occurred in each of those fields in regards to code and algorithms. Some key phrases I learned about were: machine learning,Burgess’s Method, random forests, neural networks, and Bayes’ Theorem. I don’t know how long it would have taken for me to reach the specifics of those topics in my own technical studies, but I’m very happy to have read about them and how they are applied to the real-life situations that have already occurred.
Let’s talk about the Cars chapter.
A couple of months ago, me, my husband, brother-in-law, and sister-in-law were sitting outside underneath the gazebo, talking about self-driving cars. My husband is a technological virtuoso and already had an understanding of how self-driving cars worked. I did not at the time, and neither did the rest of us.
However, my in-laws were both excited about the future prospect of self-driving cars. Fry mentions early on in her book the misconceptions people have when it comes to technology, and how most people tend to over-estimate the capacity of algorithms. This is true when it comes to the topic of self-driving cars because of the amount of people who are willing to put their lives in the hands of a self-driving car. Before reading Hello World, I was on the fence about my stance on self-driving cars. Now, I feel confident that I would much rather be in control of my own vehicle, and I’ll be sure to pass on that lesson onto my daughter (dramatically, of course, as if we were in a post-apocalyptic sci-fi movie).
From the start, my husband was against self-driving cars. But I should have seen that coming since my husband finds an automatic transmission as already too much interference (ha!). Point blank, he said: he did not trust a computer to make life-saving decisions. Back then, I greatly underestimated my own driving capabilities while over-estimating the accuracy of our current algorithms.
Without diving too much into the specifics, anyone who is interested in the idea of self-driving cars should read this book.
The Air France Crash of 1983 specifics are haunting enough to warn me that maintaining skills that involve our lives are mandatory as we advance with technology.
One of the largest take-aways I have from this book is that as humans advance, we need to make sure Wall-E doesn’t become a reality, to put it plainly. Essentially, we cannot let automation equal future generations loosing necessary skills, and thus begin a regression in the human species by relinquishing power over to algorithms and machines.
We need to remember that the smartest computer in the world is still the human brain.
Cue segue.
Let’s talk about the Art chapter.
Towards the end of the book, I could feel the fire in Fry’s writing, with impactful moments that definitely earned a mic drop.
One thing we have to remember about our humanness is our ability to feel. Our ability to feel, possess, and express emotions. A machine cannot contain emotions or feel them. A machine can mimic the expression of emotions through various tactics but it cannot feel.And that is what makes us human, and we need to remember that there is high value in the unquantifiable aspects of our humanness. This is why art is important, and why the creation of art can be mimicked by machines but it won’t (in my opinion) contain the same magical aspect that comes from art by a human. The art chapter and the way Hannah Fry explores this topic was definitely one of my favorite moments of the book!
I’m extremely happy to have read this book at this stage in my learning journey! My knowledge has been greatly broadened and now I feel as if I have a great starting point for further research into how code can and should be applied to our lives in the future.
In my opinion, more books like this need to be written as technology continues. By the time my toddler is in her teenage years, I’d want her to read something like this so she could understand the world she lived in, and how to progress in the future with technology as a smart assistant, not a catalyst for human regression.