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 class, tech people, family, friends, and whoever else wants to see the presentations.

I found that a person in my class had a similar idea to me, 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.  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 the little chores that you’re unable to do.

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 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.

 

Diving in to JavaScript

JavaScript, Learning

This week begins the deluge of JavaScript.  Looking back on the week, I can see how far I’ve come.  Although this is my first experience coding in JavaScript, I found it to be easier than I was anticipating.  I can thank my wonderful teachers at Ada Developers Academy for that.  They have given me a great foundation to build upon.  Recognizing patterns in languages that I’ve never learned is becoming easier and easier every day.

The week started with some JavaScript syntax.  It progressed into explaining the nuances of ES6 and how it has helped the language by seemingly making it more semantic and object-oriented.  I find that calling ‘this’ in JavaScript is not second nature to me yet, but I hope that It will be soon.  Our class was given the task of doing a project that we had done several months prior with Ruby.  Tasks that previously seemed daunting now looked more than manageable.

Now that we were comfortable coding in Javascript just a bit, they introduced JavaScript in the browser and then the library of jQuery.  Again, here we are standing on the shoulders of giants.  We have these fantastic tools at our fingertips.  I can’t wait until we start learning JavaScript frameworks.

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.

 

Front End Web Development Week

Learning

For the past week, I’ve been having fun with HTML and CSS.  The week started off slowly with lectures on HTML.  HTML is a straightforward, semantic language.  If you remember to close the tags, you will survive.  CSS on the other hand…  well, I was having difficulties at first.  After working with Ruby for a while, I forgot that there are artistic options when it comes to coding.

The developer’s tools app for chrome and using the “inspect” option on webpages gave insight into the mind of developers.  I was able to see in real time how to change my code so that it adhered the aesthetics that I was striving for.

A fun project that we did in class is called “Meowspace.”  We were given a HTML file and had to style it as close as possible to a wireframe.  A wireframe is a schematic diagram.  Although I didn’t know about it at the time, flexbox for CSS would have made my project a whole lot easier.  For our weekend homework, we had to come up with a personal static site.  Because of this project, I learned that many filters can be placed on pictures and that you can change the shape of boxes in CSS.

Although it was fun to learn HTML and CSS, I’m excited to announce that I’ve started learning Rails!  Many people have told me that frameworks such as rails will teach me to be a coding wizard of sorts.  Right now, I’m in over my head, but I trust that my interest in the subject and my awesome teachers will lead me and the class to victory.

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.

 

Starting Computer Science Fundamentals

Learning

It has been a hectic week and a half.  The amount of information that has come my way is astounding.  If I had to give last week a name, it would be “method week.”  I spent all weekend doing homework that wasn’t even required.  Understandably, I was frustrated, but also exhilarated when I came to the correct answers on my homework.

This week is saturated by test driven development.  When working with tests we do something called, red, green, refactor.

1.) Red – Write a test that fails.  You do this to set up the standards which your code has to adhere to.

2.) Green – Make the code pass the test.  Break down what it is that the test requires and make it work.

3.) Refactor – Your code should be as efficient and clearly written as possible.  Ask yourself if this is the case.

Homework for this weekend at Ada Developers Academy isn’t getting any easier, but that’s the beauty of the program.  Get comfortable being uncomfortable.  Shruti Van Wicklen is starting to teach our cohort computer science fundamentals.  The skills that I’m learning will elucidate the parts of computers, their languages, and memory that I haven’t had the joy of meeting.

night sky and trees

Night Sky and Trees

Other than class, I’ve been attending meetups with Chick Tech Seattle and Seattle.rb.  They’re both welcoming communities.  I prefer Seattle.rb for a quiet place to do some homework with the option to speak to experts in the Ruby language.  The Women in Tech SelfCare Series  was held at The Riveter, a bright, airy co-working space for women.  In addition to these, I volunteered to be a representative for Ada Developers Academy at a tournament at the Redmond Ridge golf course benefitting Ada as well as Year Up.  It was a lesson in networking and a source of renewed enthusiasm.