From Zero to Django Hero

Django, education, Learning, Python, software engineering, Teaching, Women in Tech
django girls regalia

Unicorn Colors

In November, I participated in my first Django Girls event.  At the time, I was learning Ruby on Rails.  I remember being astounded by the differences between Rails’ and Django’s design patterns.  Although I didn’t get to write much Python that day, I was hooked.  In four hours I was able to write and deploy my first Django blog.  I decided to write my capstone project for Ada Developers Academy using Django and React.

Since then, I have become more involved in the coding community.  I received the PyLadies scholarship to PyCon.  At the last monthly PuPPy event, I gave my first lightning talk about my experience at PyCon this year.  I have become friends with the fantastic founder of She’s Coding (Nathalie Steinmetz) and have volunteered at the Tech Women Rising and WIT Regatta.

As my five month internship at Tableau winds down, I have been realizing that I’ve been doing and learning a lot this past year.  So far, I have moved across the country, graduated from Ada Developers Academy, learned Python and Ruby, dabbled in AWS, started my career in tech, and run my first marathon.  That isn’t even all of it.

When I heard that there would be another Django Girls event.  I decided that it was time for me to give back.  I promptly told Nathalie from She’s Coding that I was interested in volunteering.

I’m here today and I was able to help a woman named Georgia on her coding journey.  With my assistance, she was able to complete her first blog in Django.  Congratulations, Georgia!  We started with some Python shell calculations and learned about data structures. It’s great that I have been able to come full circle and help someone else learn Django.

Learning and teaching Django

Learning and teaching Django

What is Selenium?

Learning, Python

Selenium is used to test software.  You can write the tests in many languages ( C#GroovyJavaPerlPHPPythonRuby and Scala), although I’m only familiar with writing them with Python.  It also works with Windows, MacOS, and Linux.  The tests are run against common web browsers like Internet Explorer, Chrome, and Mozilla Firefox.

Why am I excited about Selenium?  During my time at Ada Developers Academy, we weren’t given the option to test anything in the front end of our applications.  After a few Selenium tutorials, I am hooked.  You can use the language of your choice to write tests and perform actions in the DOM.  Somehow Python is able to do JavaScript-like things, such as click and add items into my virtual shopping cart.  I can’t wait to learn more about this fantastic tool.

Virtual Environment for Python

Learning, Python, Virtual Environment

In the coming weeks, I will be working on my capstone project for Ada Developers Academy.  I have decided to make a Python application using Django.  Python is a relatively new language to me, so I have spent my break doing a little research.  I know that the standard practice in creating a new project is setting up a virtual environment, but what is a virtual environment and why do I need to use it?

As I understand it, creating a virtual environment for Python will allow you to isolate packages and dependencies for that specific project.  If you have an updated version of Python on your system, it will not interfere with your work when you return to it because you will be using your virtual environment.  While working on my capstone, this will come in handy because I am working in a group.  We can decide which versions we want to use for Python and we will be able to independently work on the same project without fear of breaking it due to an unintentional upgrade.

Now for the difficult task, I have to figure out which way to set up my virtual environment.  For Python 3, I have been counseled that virtual environment wrapper is the tool for the job.  I’ve also seen that anaconda for Python comes with a way to set up virtual environments.  Also, Python 3 comes with pyvenv.  I have successfully created environments with Anaconda and virtual environment wrapper, but pyvenv is giving me some difficulties at the moment.

As with anything in the software engineering world, there are numerous ways to solve problems.  This is an opportunity to learn  how to research the correct tool for the task, which tools I enjoy working with, and which ones I will change next time.  I anticipate that this project will be full of challenges, but I know that I am ready to meet them and learn from the mistakes.

Intro to Data Science with Metis

Data Science, Documentation, Learning, Python

While searching through Meetup.com, I stumbled upon a free “One Day at Bootcamp” sponsored by Metis.   Since I am unfamiliar with data science and love any opportunity to learn something new, I signed up.  Within minutes, I had a welcome email from Metis letting me know of the things I should expect to learn in their class.  A few days later, I received a follow-up email reminding me that I should download Python 3 and Anaconda, if I didn’t already have it.  The correspondences that were sent from Metis were easy to follow and I found myself with the proper tools for the task ahead.

The day of the bootcamp, I wandered into the room and was greeted by a friendly person.  We started a bit late because of technical difficulties, but the teacher Roberto Reif, gave thorough explanations.  This class would have been accessible to a person of any skill level.  Throughout the course, Roberto was receptive to questions and interacted with the students.  We opened the Jupyter notebooks that were provided by Metis and began to work.  From what I understand, Jupyter notebook is a powerful prototyping tool.  It looks like a standard webpage or markdown file intermingled with mini-terminals for executing code.

First, we started with an intro to Python.  I haven’t written in Python code very much so I appreciated the intro.  We went through data types, indexing, loops, and functions.  I find it funny that Python has a data structure called a dictionary which is analogous to a Ruby hash.  Some new things I learned about were tuples and sets.  In Python, white space is extremely important.  I have been used to languages that call for an ‘end’ to a loop or function.  Python uses white space to mark which parts are or are not included in the function.  Apparently, the Python documentation isn’t very helpful due to it being open sourced, but there are some powerful modules available that I’d like to take some more time to research.

After the intro, we made our way to the next notebook on linear regression.  Linear regression is a tool to help us find trends in data.  Roberto showed us how to interact with data and make mock data with gaussian noise.  He said that what we were doing in this segment would be familiar to someone who uses MATLAB.

The Scikit learn api was the next subject that we looked at.  I will summarize Scikit by quoting the notebook.  “Basically, it’s an extraordinarily convenient way to start into machine learning and data mining.”  We use the SkLearn Api with three(ish) steps.

  1. Import and initialize the regression from SkLearn

2. Call the fit function of the module (learn from the data)

3. Predict/transform the data (predict outcome)

As an example of this model, we could see a prediction of which handwritten numbers were which numerical digits.  The results were surprisingly accurate.

Our final segment of the day was case study with Scikit learn and Pandas.  Pandas is a module for Python that helps you handle lots of data.  Our first example had us manipulate data from a CSV of weather and use Pandas to learn about our data.  In addition to data manipulation, we were able to visualize the data in a way that elucidated trends.  For the icing on the cake, we  built regression models in scikit-learn for housing in Ames, IA.  This was an excellent example because anyone could see how this model could be useful for predicting values.

Overall, I would say that my experience with Metis was fantastic and I learned a lot that day.  The staff was extremely helpful and I enjoyed the passion that everyone had for data science.  I would definitely attend another event at Metis.

Learning Frameworks

Learning

The past couple of weeks have been staggeringly busy for me.  I’ve been working on my group project (which is a store selling imaginary magical items.) . It was just in time for halloween.  Spooky.  I’ve gained a Python mentor, become closer with my Ada mentor, and been attending various meetups.  I find that the Puget Sound Python group is extremely fun and often have meetings near where I live.

In school, we’ve been continuing Rails and implementing OAuth.  This week was spent studying APIs and next week we will build one.

Today, I am at the Code Fellows working on my first Python framework, Django.  I’ve been playing with the idea of doing my capstone project in Flask.  The similarities between Rails and Django are astounding.  I appreciate my coursework and how the MVC was explained.  It has definitely helped to understand Django.  I finished my project about fifteen minutes ago.  She’s Coding set up this event and it is accessible to everyone.  The person sitting next to me has no coding experience and several other people are transitioning into different coding languages.  This event is for everyone mostly because of the plethora of helpful staff in every corner of the room.  I appreciate them answering questions and solving problems (even if it’s only that I forgot to save the document in my editor.) We deployed our blogs on Python Anywhere.

On another note, interviews are coming.  I’ve been trying to whiteboard like a mad person.  I have to thank my friend Sarah for inviting me to whiteboard with her.  It helped a lot.  I’m definitely a bit nervous about that.

 

Keeping Busy

Learning

It seems as though all of my hours are spoken for these days.  I’ve been working on pair projects, doing homework, and doing solo projects.  All of this is using the Ruby language.

Monday is when we really get into HTML and CSS.  I’ve had introductory lessons in these languages, but I’m excited to put my knowledge of Practical Object Oriented design to work.  We’ve had weekly reading homework from this book, and I’m slowly coming to understand the important concepts.

I’ve been continually going to the Seattle.rb group.  They had a wonderful monthly social meetup where we attempted to make “Battleship” programs.  I was partnered up with a senior engineer because I am extremely new.  The programmer gave me some valuable lessons in servers.

Another group that I find to be welcoming is the Puget Sound Python group.  I met many people, including the author of Fluent Python, Luciano Ramahalo.

Next week I plan to attend the Google Cloud Summit. I’m grateful to live in a city where I can diversify my knowledge in tech.

 

The Importance of Documentation

Documentation

You need to know yourself. Always. Especially, know what you don’t know.  When getting into the journey of coding, it can feel so cumbersome.  Luckily, anything that may seem confusing can be easily searched for and code libraries are easily found.

There is a phrase, “standing on the shoulders of giants.”  This means that everything you can do on the journey of coding has been built on the work of others.  It’s comforting to know that I can find definitions of modules fairly easily.

For the Udemy Course, Programming Foundations with Python, there is a project where you have to learn to draw a flower using the turtle module. I am comfortable enough in my knowledge that I know that I don’t know how to draw a flower with the turtle module as well as I would like.  Possibly, I could draw something that might resemble a flower abstractly, but that wasn’t good enough for me.

I decided that I needed to learn how to draw flower in Python that could conceivably be considered a flower on paper.  In this pursuit, I utilized Google.  Through the list of lackluster flowers, I stumbled upon something that suited my idea of the visual interpretation.

I could read the Python script, but I didn’t quite understand it.  This is where the Python Standard Library comes in handy.  After figuring out what the code meant, I modified it to fit my idea of a flower.  As it turns out, things get simpler when you break them down.

While I was earning my undergraduate degree in chemistry at Loyola University of Chicago, I came across many great teachers. One in particular was Dr. Daniel Graham. He had the ability to elicit interest in a variety of subjects seemingly unrelated to chemistry. While taking his course, “Physical Chemistry Lab,” I was introduced to an old version of Python. He gave our lab group a fundamental manual of Python code, an ancient computer, and told us to make the computer into a calculator using code. By putting together the ideas contained in the manual and slightly winging it, we managed to create a program that would output correct calculations when numbers were input. This was my first taste of coding. I learned that computers are amazing things and can do what you want when you know how to talk to them.

This was several years ago and I hadn’t thought much about coding since then. Although I was able to complete the small task my teacher had placed before me, I thought of coding as something monumentally difficult. I don’t know why coding had this connotation, but it did. I felt as though it was a wall that was impossible to scale. Things started to change about a year ago. I started looking into learning some type of code; but what type? There are so many languages that it’s a bit daunting to find a place to start. The need to take control of my future impelled me forward, so here I am. I’ve started “Programming Foundations with Python” from Udacity and couldn’t be more excited. I don’t know where this journey may take me, but I’m glad I started.

Learning