From Python to C#

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!

Time to get back to that introductory course!

The Podcast – Programming Throwdown

Once, I had tried to listen to an audiobook about Python. Shortly into the audiobook when the narrator began to vocalize long strands of code, I realized that I couldn’t listen to programming audiobooks. I needed to read it with my own eyes.

But what if I wanted to just…hear stuff…about programming and learn anyway? Sometimes, that’s fun. And that’s exactly when podcasts come in handy.

I was nervous to search on for a programming podcast because of my previous audiobook experience, but the I stumbled upon a show called Programming Throwdown.

I love this podcast for so many reasons, but specifically, as a self-learner, it is so valuable and enormously helpful to simply listen to highly experienced people in this field speak. I missed out on what students who study this in school gain from the community of school–people to talk to about programming.

Patrick Wheeler and Jason Gauci are so intelligent and fun. There’s plenty to learn in each episode. Just this week alone, I’ve been able to have my mind exposed to a lot of theories and concepts in programming that I hadn’t learned about before. For example, whereas I’ve taken a course in how to build a chat bot with AI, I hadn’t really had a formal, programming-based theory class on AI. But there was an episode on Artificial Intelligence (AI) and the conversation was very helpful in explaining the theory behind neural networks. It was nice to compare this to the experience I had building a neural network for a chatbot.

Another valuable aspect about this podcast is that it is not language specific. Meaning, I can listen to episodes about a specific language, or about concepts that are not language specific. Hearing the conversations about different languages in a casual yet informative way helps me to approach the subject matter differently. I’m able to gather little nuggets of information that I can then use to springboard into research and projects of my own.

This week alone, I learned that I will need to look into matrix math, C#, and read up some more documentation on some python libraries. The freeform nature of the podcast allows me to learn little bits of information that would be hard to find in a course, like that “Python is slower than C based languages.” A comparison like that would have been hard to learn from the more rigid learning tracks.

If you’re looking for a programming podcast and want to learn more about concepts, I definitely recommend Programming Throwdown! I’ve definitely come to appreciate podcasts even more after finding this one!

drumroll…

There’s been a month’s gap since my last post, and that’s not because I’ve fallen off track, or have forgotten about all of this.

On the contrary, I have accepted a full-time position! And I absolutely love my new team. I will not be discussing the details of my job for privacy reasons, however, I will say that this is definitely a wonderful beginning to a new career path!

Code Every Day

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.

There you have it! Code (and write!) every day!

“The Self-Taught Programmer” by Cory Althoff

THE DEFINITIVE GUIDE TO PROGRAMMING PROFESSIONALLY

Reading is very important to me because it’s one of the best ways I am able to learn and retain information. I’ve been approaching this topic, programming and python, on a very granular level. I’ve been stuck very up-close to python and a couple of other topics very specifically, but haven’t had a book that zoomed out as a good overview.

Until… I found this book! Althoff’s book The Self-Taught Programmer, is a fantastic overview by someone who has already accomplish exactly what I desire to accomplish.

Alhoff speaks about something called “The Self-Taught Advantage.” He writes, “You are not reading this book because a teacher assigned it to you, you are reading it because you have a desire to learn, and wanting to learn is the biggest advantage you can have.”

Alhoff writes, “You are not reading this book because a teacher assigned it to you, you are reading it because you have a desire to learn, and wanting to learn is the biggest advantage you can have.”

He goes on to say how important founders of companies such as Apple, Twitter, and Instagram were all self-taught programmers.

Finding and reading this book was a great re-motivator to continue with the self-learning route. It’s easy to fall into moments of doubt, but I find that fueling those moments into proactive steps is a helpful strategy.

Moreover, Althoff supplies the reader with a quote from Doug Linder, “A good programmer is someone who always looks both ways before crossing a one-way street.” I laughed at this moment because I remember doing that since I was a child! But what this quote highlights is that in programming, you can’t have any blind spots. Even if something should work some way, you still need to test and analyze it from multiple perspectives. It can also mean that you should know how to make and take something apart. The person who looks both ways before crossing a one-way crosswalk is keen enough to realize that there is still a small percentage that another car could have not seen the sign and gone the wrong way down the one way street. Therefore. the person is being extra sure (which in programming would be akin to catching an exception) to ensure their likelihood of safely crossing the street.

What makes this field a little difficult to get into is that technology is very intertwined. It’s not just enough to know one programming language. There are a lot of other skills you will need to acquire. If you want to know what I mean, go into your browser and search for terms like “software engineer” or “data scientist” job descriptions. In the “preferred skills” section, you’ll often see a long list of acronyms and names of things you should know. It can feel a little foreign if you don’t know how to parse through the terminology.

What this book provides that others don’t is a brief introduction into major aspects needed to get a job in programming, and a blueprint map of what to do to accomplish that. This book wont teach you all the specifics about Python or programming, but it will point you in the right direction of what you should be studying.

(Yes, that’s a gif I made of my notes on Python. I’m taking a three hour overview course on Python on Udemy that helps as a good overview of the basics I’ve already reviewed before in-depth).

I’ll be taking Althoff’s advice of: program every day. That’s the new challenge and goal. I definitely recommend this book to any fellow dedicated self-learners!

Git and GitHub

When I first learned about GitHub, I thought it was just a website. It was very confusing and intimidating. However, I was told by peers the importance of GitHub for programming, and especially because I had found myself at a dead end during an early programming project.

I have a (somewhat embarrassing) first project up on GitHub (which is a perfect example of code that needs to be cleaned up–a fun idea for a future project). However, that first project from years ago was a great introduction to GitHub.

First, Git and GitHub are not the same thing. When I looked up “what does Git stand for?” I stumbled upon an interesting story. Git is actually not a meaningful acronym, instead it was chosen because it was most likely to never be used and mess up someone’s code. The story goes as so:  Torvalds created the software and named it after the British slang word, “Git,” which translates to “a rotten person.” 

GitHub is a website, a service, where people can collaborate and track the history of code. It’s a wonderful space for people to learn and grow. However, it is possible to be proficient in using just the GitHub website without actually working with Git through the terminal, and vice versa.

The goal is to balance usage of both Git and GitHub through the terminal and website. Prior to this post and day of studying, I had mostly just worked on the GitHub website and not the terminal. Having gone through multiple videos so far from the “Git and GitHub for Poets” video series by The Coding Train on Youtube, I’m more familiarized with working in the terminal with Git and GitHub. It’s been an interesting ride, and this is just the beginning!

Link to series playlist: https://www.youtube.com/playlist?list=PLRqwX-V7Uu6ZF9C0YMKuns9sLDzK6zoiV

Glossary of Important Terms

Here are some notes I took while watching the above tutorials. Hope you find them as helpful as I do!

Git: version control software

GitHub: web service where people can collaborate on open source code and track project history

Repository (or, “repo”): a project; a repository of files. Repository names can’t have spaces so they will include a dash as in: repository-title-example

Commit: a change to a file that is saved in the repository

Commit Hash: a unique identifier for each particular commit

Master Branch: original origin of a repository

Branch: a copy of files for experimentation before a commit is merged to the master branch

Pull Request: a way to ask the collaborators of a repository to approve your changes and merge them into the master branch

Merge: the action of a pull request successfully combining changes into the master branch of a repository

Fork: copying the repository to have under your own account for experimentation without effecting the original core version

Issues: a place to leave a comment about a problem, or to ask a question. Raising an issue means to file a potential bug

Fixes: if you use the word “fixes” in a commit changes title, the issue will be automatically closed

Remote: duplicate instance of a repository that exists on a server. When you say “git push” you need to say “git push __where__”

*Tip on Commit Hash Codes: place the commit hash code in a comment to help link to the issue

Terminal Instructions (via GitHub):

to create a new repository on the command line:

echo "# terminal-practice" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/KIBautista/terminal-practice.git
git push -u origin master

 to push an existing repository from the command line:

git remote add origin https://github.com/KIBautista/terminal-practice.git 
git push -u origin master

Practice Progress

After some trial and error, I was successfully able to push a new file into my GitHub repository through the terminal. It was very cool to see it work! I ran into some trouble shooting errors with getting into the proper place on my desktop for the repository, and for getting the remote to work, but finally, it has worked!

I found trying to change my login information through the terminal to be a little convoluted, and I was worried that an incorrect password was the cause of my push updates not going through. However, seeing my text file successfully added on GitHub through the Terminal confirms that the password and login is correct.

I feel more confident now to look around on GitHub for open source projects and contribute to them, which is the goal!

For anyone wishing to learn more, the video series I have found to be incredibly helpful is available for free on YouTube, and it is called “Git and GitHub for Poets” by The Coding Train. I very much appreciate the depth and visual interface used in this videos; they’re very user friendly and great for beginners!

Hacktoberfest 2019!

Image source – https://hacktoberfest.digitalocean.com

Project and Learning Update

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!

Happy Coding!

Intro to Data Visualization with Python

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.

Project – Creating a Python ChatBot with Deep Learning

I’ve been fascinated by chatbots ever since the AIM chatbot “Smarter Child” hit the internet back in the technological stone age. Since then, I’ve thought a lot about the types of chatbots that I would like to create in the future, and I’ve also done my fair share of “personal research” using the bots available on the iPhone App store, like Replika (which is pretty impressive, but I’ll save that for another post).

During my extremely-novice Python days, I tried making a simple chatbot the ancient way by using a vast amount of “if / then” statements to navigate the conversation by trying to predict every possible input value by the user. I quickly learned after reading Hello World by Hannah Fry that the method I was using was completely archaic, and now, technology has improved beyond that method. Today, we can actually train a program to learn a task, and in this case, it would be to train the chatbot to learn how to speak.

Introduction to Deep Learning, Natural Language Processing (NLP) and TensorFlow

If you’ve read my old posts (thank you!!) you may have noticed that I’ve referenced these topics before as areas of interests. Imagine meeting your favorite celebrity–the excitement and shock! Well, that’s me with learning these topics. They are the Star to my Struck.

There’s a 12-hour, 95-lecture course on Udemy that I’ve been taken, called: “Deep Learning and NLP A-Z: How to create a ChatBot.” I spent this past weekend getting through around 9 hours of the course. I personally loved learning and taking this course on Udemy.

Course Overview

  • Deep NLP Intuition lecture (concepts)
  • Data Pre-Processing
  • Building the SEQ2SEQ Model
  • Training the SEQ2SEQ Model
  • Testing the SEQ2SEQ Model

I also learned about / used:

  • Anaconda and Spyder
  • TensorFlow
  • Creating a virtual environment with Anaconda to utilize TensorFlow inside of the environment

Although the course was 12 hours long, it does not take just twelve hours to truly learn all of the material covered. I will be doing a lot of additional reading, re-watching, and re-absorbing of all of the information that was introduced. Not only was this my first introduction to the above topics, but it was actually my first introduction to seeing a real, complex program be built, from beginning to end, narrated by an experienced developer. I learned so much despite having questions, and I’m excited to go back and have those questions answered.

Anaconda and Spyder

I had heard of Anaconda from other videos and research, but this was the first time I had actually used the Anaconda and Spyder IDE. I’m extremely happy to have used it because I very much enjoyed the layout, seen below.

What’s going on there? Well, you write your code on the left, you see your variables on the upper right, and then you have your console to run and test on the bottom right.

As a visual learner, it was extremely elucidating to see the “variable explorer,” where you can click into each variable, such as lists and dictionaries, and see the functions work in real-time. Moreover, this layout and course really helped me to better-understand the concepts of dimensionality and matrices within programming.

Data Science & Analysis, I’ve got my eye on you!

The instructor on Udemy for this course (mister Kirill Eremenko, who did an awesome job at teaching!) was making some jokes about getting through the “Data Preprocessing” part because it’s not exactly the most fun. But, for a former data-entry manager like myself, I had a wonderful time with data preprocessing part!

I was so amazed to watch the data preprocessing steps clean up our data and variables. Using the layout in this way really helped me understand more the dimensionality of programming. Moreover, this was a really good visual which helped me further-understand how and why Python is an object-oriented program.

One unexpected take-away from this course was the idea to gear some future learning towards the requirements of a data analyst and data scientist. Of course, Python developing is the ultimate overarching goal, but with my experience and personality-type, I think I may have a good fit for Data Analysis.

Deep NLP with SEQ2SEQ model in TensorFlow

As a creative writer, it was amazing to learn how to turn words and sentences into vectors and integers. We had to add tokens, make inverse dictionaries, cross-reference lists and dictionaries (and even make dictionaries inside of lists!), and more. More experienced coders may be laughing at my paraphrasing of all of this, and I’m sure future-me will laugh as well.

Finally, after all of the data preprocessing, we were able to build our SEQ2SEQ model which utilizes deep learning and recurrent neural networks (RNN). We used LSTM, which develops the context of words and sentences by using an encoder and a decoder. Probability is used during the training of the SEQ2SEQ model, which is how deep learning is utilized to teach the program how to understand and respond to inputted language.

Training the SEQ2SEQ Model

The “brain” of our chatbot was created (how exciting!) and it began its training last night on my laptop. For experienced programmers, you may have read that and had a moment of “what?” when you read laptop. Yeah, I learned that the hard way. After hours of watching the training go through each batch, I realized that my laptop was moving very slowly for this task. In the Udemy course, it was recommended to have the SEQ2SEQ model training done on a more powerful computer.

Finally, this morning I re-did all of the beginning steps, like installing Anaconda on my desktop and creating the virtual environment. Then, I re-preprocessed my data (somuchfun), began a new SEQ2SEQ training and voila, here we are!

As I was writing this blog post and keeping an eye on the training going on in my console, I saw the familiar print statement appear on the screen that validates that this chatbot is, indeed, LEARNING!

Validation! “I speak better now!!”

Now, we have full evidence that the chatbot is properly utilizing and learning through this RNN because we have…weights!! Those files up top with “weights” are not files I have created, but files that the program, our chatbot, has created through learning over the past few hours. Once the training is complete and we reach batch 4120 (currently on 2500), I will then resume the last and final part of the Udemy course to fully complete this chatbot.

In that last part, we will utilize the deep learning that the program has accomplished and finally interact with our chatbot!

Final Reflections on Part 1

This project has opened my eyes to the true complexities and capabilities of Python and computer programming in general. Although I chose a very difficult project / chatbot to start off with, I’m happy to have done so because it was also the most efficient way to create a chatbot.

I rather learn the most efficient version over easier versions, because it is the most efficient options that are used in real-world applications.

From this course and project, I’ve learned that going forward, my next points of study will include:

  • Data Science and Data Analysis with Python
  • Math for computer programming and Python
  • Jupyter Notebook
  • Web Scraping
  • Machine Learning, Deep Learning, and NLP
  • R (programming language)

Overall, this was an amazingly beneficial project to delve into! Definitely a pivotal moment in my learning journey because I now have a better mental reference for the future. I’ll be back later for Part 2 for the exciting completion of this project, where we get to finally speak to our bot!

Update – 48hrs Into Training

While watching the program learn, I realized some errors I made above when referencing the amount of time remaining.

I was referring to the batches as an indicator, but that wasn’t accurate. I’ve realized that what matters is the Epoch count, and we are only up to Epoch 5/100. One run-through of all 4,000+ baches equals 1 Epoch. My computer is going through around roughly 3-4 Epochs per day, which should hopefully increase in speed as the learning improves… (I think).

I’m going to let this run until tomorrow to see how far we get, test it out, then let it continue to learn and test it out again afterwards.

I gotta day, feeling like a scientist feels really fun. It’s been really cool to keep an eye on this and observe!

Beginning Python – Course Completed!

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!

Onto the next goal!