Drinking from the Fire Hose at CPP Con

Learning

What I’ve been up to

Roxanne with a sign that says "datalicious"

Being a Tabloid

For the past month and a half, I’ve been ramping up on my new team.  Although it’s only a team of eight, everyone on the team is a subject matter expert of something.  It’s a bit intimidating to be in the position where I feel that I know nothing… again, but it’s also invigorating because I know that I can learn all the new things and have a team of people that I can ask when I have questions.  I’m lucky that everyone is supportive.

What I’m planning to do

I’ve made up my mind that I’m going to learn everything that I can and I’m starting with C++.  Why?  C++ is a statically typed language and I know that my data structures and algorithm studies can be put to use while I’m learning.  I’ve just gotten my Arduino in the mail and am planning on working on a personal project.  I haven’t worked with hardware before so this should be an adventure.

What I’m doing now

Roxanne with Bjarne Stroustrup

Right now I’m sitting in the audience at the CPP Conference waiting to imbibe C++ knowledge.  Luckily, I didn’t have to travel too far from Seattle.  It’s a 30 minute drive to Bellevue.  So far, I’ve been a little starstruck.  My Pluralsight teacher, Kate Gregory, has given many talks.  I appreciate the way that she thoroughly explains each topic.  Bjarne Stroustrup, the creator of C++, took a photo with me.  I’m going through his book, A Tour of C++, with my reading group.  I love learning, but there is SO MUCH INFORMATION.  The history of C++ is long and full of twists and turns.  I have had the chance to talk to such amazing software engineers and I’ve only been here for two days.  I’m not sure if anyone from my work is here.  At first, I was a little overwhelmed and felt like I didn’t belong here, but Simon Brand from the #includecpp group recognized my name and introduced me to some friendly people.  Tonight I’ll be attending the Women in C++ Dinner and Panel.

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

Nerding During Tutorials at PyCon

Learning, PyCon, Python, software engineering, Virtual Environment, Women in Tech

I arrived in Cleveland early in the morning… much earlier than I’m used to being awake.  After a coffee, I walked around downtown and enjoyed the scenery of Terminal Tower and the sculptures that adorn the city.

Fountain of Eternal Life in Cleveland, OH

Fountain of Eternal life in Cleveland, OH

This is my first PyCon, so I didn’t know what to expect.  When I arrived at the conference center, the booths were organized and I was easily able to find my badge at the registration desk.  As I continued down the escalator, I noticed that the conference center was deceptively large. It turns out that much of the building is located underground.  The pamphlet that I received from the information desk, the Guide app, as well as the many people on staff at PyCon made it easy to get around and find the locations of the tutorials.  

Roxanne being NerdyMy first tutorial was from Buck Woody of Microsoft and was entitled “The Team Data Science Process with Python”.  Data science is one field that I’m interested in pursuing. The Team Data Science Process (TDSP)  is broken down into its parts and we performed the tutorial with Jupyter notebook in Azure notebook. You can find the full tutorial here.

Another useful tutorial taught me a different way to make a slack app with using Python SlackClient and Python Events API Adapter.  The Slack API is http-rpc. We start by getting our virtual environment set up with all of the dependencies. Slack requires event requests be delivered over SSL.  We use NGROK to run a tunnel in order to get a https url.

Another phenomenal tutorial was “The Five Kinds of Python Functions” by Steven Lott.  This talk reminded me of some of the reasons that I love Python. Python makes writing functions simple and readable.  You can make generators that do work for you. Type hints exist! Functions are objects (you can pass them into functions).  I’d recommend watching this talk. I found an older version here.

 

Terminal Tower in Cleveland, OH

Terminal Tower, Cleveland, OH

I had a great first day at PyCon and will definitely attend the tutorials again the next time that I go.

 

Continuing Education in Software Engineering

Data Science, education, Learning, PyCon, Python, software engineering, Women in Tech

You’ve finished the classroom portion of your bootcamp.  Maybe you have a luxurious internship.  You’ve worked your butt off.  Time to sit back and relax… just kidding!

If you’re like me, the reason you got interested in software engineering is that the education on the subject is never ending.  There is always something new to learn, some path to go down, or maybe a mountain to climb.  The more I learn, the more I know of my Socratic ignorance.  In laymen’s terms, I am aware of the lack of my own knowledge.  Because of this, I strive to know everything I can about software engineering.

There are many ways to learn.  You can learn by listening, doing, seeing, and many more ways.  To learn by listening, you can listen to podcasts on your commute.  Find something that interests you so that you pay attention.  Software Engineering Daily, Code Newbie, and  Talk Python to Me are just a few that I listen to on my jog to work.  To learn by doing, you can use Coursera, EdX, Udacity, Udemy or even youtube.  Coursera and EdX are free, but you can find Udacity and Udemy courses for drastically discounted rates.  If you are more accountable when you put money into a course, they are great options.  If you’re a visual learner, join some local meetup groups.  They often have lightning talks to get you started on a subject, tutorials, and social gatherings.  In Seattle, I enjoy the PUPPY(Puget Sound Python Programming group, SeattleRb, She’s Coding Seattle, and Women in Data Science groups.  In addition to this, you can decide to go to and speak at conferences.  You can usually find a discount for local conferences through meetups or applying for a scholarship.  Being a speaker provides some perks (accommodation admission and sometimes more).  Another way to garner a free ticket is to volunteer at the conference.  The Tech Women Rising conference was extremely fulfilling.  I was able to meet astounding women and learn a lot.  Because of that I am volunteering at the Women in Tech Regatta.  I’m sure It’s going to be just as fantastic.  In May,  I’ll be attending PyCon in Cleveland.

There are always ways to learn and people that will help.  Good luck in your educational journey.

Happy Birthday Docker!

Learning

I’m sitting in the Google campus in Seattle attending a birthday for Docker.  As my internship progresses, I realize how important containerization is for the future of software engineering.  This week is Docker’s 5th birthday.  In that time they’ve grown exponentially.

*********

It’s the next day.  The tutorials that Docker had were simple to follow and well-written.  The first tutorial was in their sandbox.  If you don’t know what that is, its a place to run code that’s on a webpage.  The benefit of this for a tutorial is that you don’t have to set up the environment on your machine.  The tutorial was called “Deploying Multi OS Applications with Docker EE.”  According to Docker, “Docker Enterprise Edition (EE) is a Containers-as-a-Service platform for IT that manages and secures diverse applications across disparate infrastructure, both on-premises and in the cloud.”  Although this seems as though it would be an arduous process, it was relatively straightforward and the Docker EE has an extremely user friendly interface.

The second tutorial that I completed was “Kubernetes for Docker on Mac.”  This was my favorite of the two.  Initially, I had some trouble because I was under the impression that this was in a sandbox as well.  After I realized that the tutorial was for my local environment I figured out that the version of Docker I had wouldn’t work with this tutorial.  Docker Edge had the Kubernetes option that I needed.  In no time, I was spinning up a single node Kubernetes cluster.  One of my favorite things is using the Kubectl command line.  Seeing the data about the Kubernetes cluster is satisfying.

Both of these tutorials were filled with things that I’d love to work with in the near future.  It’s essential that I read through the tutorials again so I can delve into the steps and understand what is happening and why.

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.

Django React Capstone Project

Learning

As my capstone for Ada Developers Academy, I have to come up with a project, work on it for three weeks, and then present it in front of real people.  People not just in our classroom… tech people, family, friends, and whoever else wants to see the presentations.

I found that a person in my class and I had a similar idea, so we decided to team up on this project.  There are difficulties to working on a team as well as positive aspects.  The difficulties include taking someone else’s feedback on your code, listening to their opinions, and trying to collaborate and communicate.  If you feel that you can make all of this work smoothly with your teammate, I would recommend working together.  Working on a team or with another person, you can get a lot more work done and get a better final outcome for your project.

Our idea for this project is very close to my heart.  This past year, my grandmother died.  It got me thinking about the elderly.  My grandmother lived at home with my parents but was a relatively independent person except for one thing.  She couldn’t drive.  With a large aging population such as what we have in the United States, what happens when you don’t have relatives who can drive you around, shovel the driveway, or do daily chores.

We decided to make an app to solve this problem for the elderly and their families.  Our app is tentatively named “Mon Ami.”  This is French for my friend.  The idea is for the elderly (or their relatives) to find assistants in the area and make appointments for the services they require.

As a user, you can sign up, log in, and log out.  If you would like to become an assistant, you can set up your assistant profile so that people can find and book appointments with you.

My role on the team was working on the backend API as well as the database.  I had to think a lot about the relationships between my models.  Django-Rest-Framework is an excellent tool.  Their tutorials make it a cinch to set up an API.  It was one of the most enjoyable parts of my project.  After working for a week, I realized that I needed to use PostgreSQL in order to deploy instead of using SQLite3 (the database that is default in Django). One thing that I had a bit of difficulty with was token authentication.  I couldn’t wrap my mind around how the API knows that I am me through a token.  Frankly, it’s amazing.  With authentication, the API knows that I am who I say I am.  I set up my permissions so that I know which person is authorized to do each action.

Deployment was another area that I was having difficulty with.  I was playing around with Docker, but there is a steep learning curve.  After a week, I was finally able to deploy my API with AWS Elastic Beanstalk.

My teammate made a beautiful front-end with React-JS.

I’m in my Ada classroom at this moment, enjoying the final minutes of being a student here.  In three hours, I’ll be presenting my capstone project.  After that, I’m off to Europe for a week and then on to Tableau for my internship.

I can’t thank Ada Developers Academy and my teachers enough.  In August when I arrived, I hardly knew a thing about coding.  Now I’m presenting a fantastic project.  My skills have grown exponentially.

If you ‘d like to see the code for my project, you can find it here.

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.

JavaScript Frameworks Everywhere

JavaScript, Learning

I can’t believe I have been at Ada Developers Academy for over four months.  Time is really flying by and I’m astounded daily by how much I have learned.  Today is the day that I’ll find out which companies I’ll be interviewing with for possible internships.  The past two months, everyone at Ada has been working their mental muscles by practicing whiteboarding and interview questions.  I’m so proud of these hard-working people and I know our efforts will be rewarded in the near-ish future.  The opportunity for interviewing with Ada’s phenomenal sponsors is an opportunity that I’ve been waiting for since I stepped my timid foot in the door.

This week at Ada, we have been getting into Backbone, the JavaScript framework.   I’ve been told that Backbone is used by Trello and Hulu.  We’ve learned about underscore templates, collection events, structuring data, and models.  Like with other frameworks, the abstraction is a bit confusing at first.  Our larger project is working with APIs, making calls, and viewing data in the browser.

In my limited spare time, I have been taking a JavaScript and React course for developers from Udemy.   The impetus to take this Udemy course happened through Twitter when Cassidy Williams was offering a deal on the course she had just written.  This course takes a different approach to teaching JavaScript from my classroom experience.  The Udemy course, so far, has been concentrating on JavaScript in the browser which makes it more interesting.  Since I’ve only had three weeks of JavaScript courses, I know that I could benefit from all the help that is offered.

Later this afternoon, I’ll attend an event from She Codes Now (Seattle).  Here I’ll get an intro to React (which will help with the Udemy course) and eat some pizza.  Pizza is key.

Last week was the Thanksgiving holiday and I spent a lot of time with my mentors.  I have two of them.  There is an industry mentor from the Puget Sound Python Programming group and a previous graduate from Ada Developers Academy.  Both of them have been instrumental in shaping my future as a software engineer.