NavBar

Showing posts with label learning. Show all posts
Showing posts with label learning. Show all posts

Monday, November 7, 2016

CS50x & a Raspberry Pi Art Project

Since my last blog post, I decided to finally try Harvard's Intro to Computer Science course (CS50) that is available to take for free through EdX. The course consists of 12 weeks of lectures, 9 problem sets and a final independent project.  Watching the lectures and working through the problem sets is a definite time commitment, especially as the coursework progresses it gets much more challenging.

During the past month I've been going through a very stressful period so I've found this course to be a great escape for me. I have thrown myself into the coursework and have been working intensely on getting through all 9 problem sets. I've learned C by solving problems using different sorting algorithms, different types of data structures, allocating memory, recovering 'lost' jpeg images from a data file, implementing a spellchecker and a web server ...all in C. I even wrote PHP for the first time to complete the last few assignments. It was nice to see that the things I'd learned as a Ruby on Rails dev were transferable when I was working in a unfamiliar language like PHP. To me, it made me feel like a real programmer. Though the language's syntax is different, the underlining principles and problem solving strategies are pretty universal. It's just really an adjustment to the syntax of the language. So I was able to jump into a PHP project, without any background in the language and get through the tasks relatively simply.

Last week, I finished all the problem sets, I just started on my final project. For this project, you have complete freedom to choose to write any kind of software that you want. I knew I wanted to do something artistic, interactive and with language(s) outside my comfort zone. I drew inspiration from a few places-- the current exhibit of Jean Tinguely's art at the Stedelijk Museum, an interest in learning about Raspberry Pis (and maker culture), and recent attendance at a React Native meetup.

My original idea was a Tinguely-inspired wall installation with EL wire, leds, motors that were connected to a raspberry pi that could be controlled/interacted remotely by a user with a mobile app. As I researched more about hardware and RPis, I soon felt overwhelmed by the hardware side of it - wiring, circuitry, power supply, soldering.

Since my focus is mainly on the software, I didn't want to get discouraged during my project by the hardware side of things. I want to setup myself for as much success as possible. So, I opted to go simpler for now and purchased a preassembled LED board with a square grid of 64 LEDS. This way, I can focus on the writing the software and getting my feet wet with hardware/RPi. Then, if it is a blast to work with, I can dive deeper into building my own hardware on future projects.

I will be using 2 pieces of hardware for this project, a Raspberry Pi 3 and UnicornHAT:
Raspberry Pi 3 w/ an AMAZING rainbow case
UnicornHAT 64-LED board

I still haven't received the hardware I ordered yet, but I've already started on the software infrastructure that is necessary to get the Raspberry Pi communicating with a remote native app or web browser. I've already gotten the RPi's software communicating with a server and receiving data from a React Native app using websockets. I am going to post much more frequently to detail how the build process is going and document what I'm up to.

This is one of the most intensive projects I've taken on by myself, since I will be writing code in multiple languages that I am not familiar with. It'll be the first time I'll work with hardware, write a native app, work with websockets, code in Python, etc etc. I can't wait to see how it all turns out.

Saturday, June 13, 2015

June 13: Dabbling in Elixir, more jQuery, more Ruby.

I didn't do much coding outside of work during the week.  Work has been fine, I feel like I'm progressing at a good rate, but outside of work, it was a rough week, so I couldn't put in much effort to coding during my free time.

But, I did spend late night friday/early saturday morning working through a Elixir tutorial that I had been wanting to tackle for a few weeks.  I successful went through it pretty quickly and got a fairly simple CRUD quotes app working perfectly locally.  However, I spent more time than that trying to get the deployment to Heroku (not in the tutorial) to work and failed.

To make sure it wasn't me or a dev environment issue (didn't figure it was, since it was running perfectly locally, but did it for a sanity check...), I cloned another sample elixir app and quickly set it up and deployed it easily, so I think based on the heroku error logs that there's some maybe dependencies issue going on.  It's kinda weird working with such a new framework like Phoenix, where it is so new that you git clone the framework directly onto your machine to use it.  For this specific tutorial, I was git checking out a specific branch with an older version of the framework to use... and maybe in deployment that's getting jacked.  I think maybe this is where my issue lies, but I'm not sure.  I gave up on trying to fix this project's deployment, I'd rather spend time learning something else or doing my own independent project to practice that waste more time on this one.  I'm glad there was this tutorial to do, but I wish it would have spent a lot less time on making the CSS snazzy and instead go through the deployment process.  I'd like some reassurance that this app was successfully deployed with its specific config settings even if it visually looks ugly! :-/

Today, I also finished up another segment in the Treehouse jQuery course.  I'm 1/2 through that course.  It's hard jumping back into studying something like jQuery with several days of break in between.  Takes a while to get my head back in it.

I'm still slowing reading POODR, probably 3/4 through it.  It's getting more difficult to keep up at the end.  But, I'm just trying not to get hung up on every little thing that's over my head and power through for now, since I plan to re-read it again in a few months.

I constantly feel like I need to keep pushing to learn and try out other languages like JS or elixir and not be solely vested in Ruby, since who knows if/when Ruby on Rails is going fade into the background.  But after experimenting with Elixir, it's clear that I really do love coding in Ruby.  It's just such a readable and pretty language, I'm not sure how you couldn't like it.  I'm really glad that I started out my coding adventure with Ruby and Rails.  And I'm happy it's what I work with, at least for now.

Saturday, May 9, 2015

Slow going progress.

I'm slowly still working on Ruby/Rails mastery and trying to add some AngularJS and jQuery to that as well.  I've only been working on Ruby/Rails at my job during the week and trying to do some online coursework on AngularJS during the weekends.  My study pace has slowed down the past few weeks because I'm also making time for running and freeletics and trying to find a flat so we can finally move to Amsterdam permanently.

I've been super encouraged over the past few weeks by other aspiring devs out there in the world!  I've gotten messages and tweets from folks that are also working their butts off to become software developers.  It's very humbling to get messages from others that say I'm an inspiration and motivator for them on their own journeys.  I appreciate the fact that others are taking time to contact me, and I love the community of coders worldwide.

I'm glad to give inspiration or advice to others out there!  I love chatting with others in similar situations.  But, I feel it's necessary to clarify my current skills levels.  I'm very much a Junior Ruby developer.  I can figure some stuff out and generally understand tasks set before me, but struggle with how exactly to write code to build out some features.  I need guidance often from my boss, an expert Rails developer.  I hunt google & stackoverflow A LOT.  I know it sounds awesome that after studying & interning for the past 5 months that a got a job as a dev (which it is), but please realize that it wasn't some magical turning point in my coding abilities when I got a job or that I'm some coding rockstar.  I am not.  I struggle everyday, just on new things than the day before.  I am painfully aware of my inadequacies.   I've been working from home for the past 2 weeks with minimal support from senior devs and that has been a struggle...No one around to talk through things I don't really understand or get guidance on problems.  That's definitely added to my frustation with my jr skill level lately.  I sometimes wonder what the hell I'm doing, but I'm hopeful that in a few months, that my skills and confidence will grow a lot more.

I really like learning another new language (jQuery & AngularJS) so far.  It's challenging to think in a new language and learn its context.  I think it is helping me solidify RoR concepts as I push my brain to think in a different language.

Thursday, April 16, 2015

I made it! Job contract signed!

Very excited to announce... I signed a job contract!  I was able to go from a code nobody to signing a job contract for a full-on developer position in 5 months.  No $30,000 dev bootcamp necessary.  Just self-teaching with online tutorials and scoring a jr. dev internship.  Seriously, that's crazy, right?

As of May 1, my title will officially be Software Developer. :-)  I am staying on at the company where I am doing my jr. developer internship.

If I can make it, I don't see why anyone else out there can.  I started flirting with the idea of trying to become a web developer in November.  I started reading some blogs from others that found jobs as jr. devs after self-studying for 6-8 months and got motivated.

There were 2 big obstacles to getting a job I saw when I started out learning to code... 
  • Living in another country and not speaking much of the native language. (How am I supposed to find a job or internship then?)
  • No dev bootcamps nearby. (I almost considered doing an online bootcamp....)
I didn't let these worries deter me.  Here's my milestones on my journey to get a developer job:
  • On November 13, I successfully battled homebrew and xcode error messages and installed Ruby and Rails and a text editor.
  • On November 26, I created a github account.  I didn't really understand the git process at all.
  • On December 16, I finished my first Rails app - One Month Rails' Pinterest clone.  I kept working through every free online rails tutorial I could find online.  I started the precouse work for 2 different online bootcamps - Tea leaf & Firehose project.  I was considering doing one of those.  
  • On January 13,  I applied for a couple jr developer internships.  I almost didn't.  Some of them were posted in Dutch.  I didn't think I qualified after only doing some online tutorials for ruby and rails for the past month.  And, I definitely didn't think I was qualified when I don't speak Dutch well.  My husband convinced me to just apply and the worse they could say is 'No' or flat out ignore me.  So I did.  Caveat:   There were no positions in my current city.  So I applied in other cities within commuting distance.  I was willing to commute ~3 hrs roundtrip from Den Haag to Amsterdam every single day.  I still commute.  It's freakin' tough but I've gotten used to it.  If I get a decent seat on the train, I pull out the MacBook and work on code stuff for work or work on Hartl's RailsTutorial. 
  • On February 9, I started a jr. developer internship (lots of struggling with tasks at work and reading Hartl's Rails Tutorial during my personal time happening for the next few months).
  • On April 14, I signed a contract as a full-time software developer!
So that's 5 months from the time I installed Ruby and Rails to I signed my job contract!

I still have a lot to learn.  I am learning something new everyday.  Some days I feel like I'm drowning and some days I feel like a coding champion.  I truly enjoy coding.  I'm kinda shocked sometimes that I do as much as I do.  I think about coding and the coding community all the time.  I never felt that way in my previous career.

I am so excited for the future.  I can't wait to see where I'm at in 3-6 months from now.

Monday, March 30, 2015

Week 7 and RailsGirls Coaching!

I finished week 7 of my dev internship.  What a busy week... LOTS of coding, a little dutch practice and a RailsGirls event!

At my internship, I worked on some new features for one of the projects.  One of the main things I worked on last week was adding a form that was tied to other model inside the view of another.  I have had to do this once before and it was definitely tricky for me to wrap my head around how to do this.  In the beginner tutorials, it's easy... You never add a form for another model inside some other view, you put a form in the view of that model and use a simple form_for tag with your instance variable correctly defined and it's easy.  I figured out most of the solution on my own and was proud of that.  I found this blog post helpful in figuring it out and also helping me understand using form_for and form_tag better.

On Friday evening and all day Saturday, I coached at my first RailsGirls event in Utrecht.  I was definitely nervous about coaching since I feel like a huge beginner myself most of the time.  I was worried I would be useless to my students.  Luckily that was not the case.  Coaching helped me realize that I have learned a lot about coding and rails in a few short months.  I was able to help students get their dev environments setup on their machine... even a windows machine (eek!).

What I wasn't expecting was how emotional the event would be.  There was several other coaches that shared their stories of getting into coding, many taking their first steps at a RailsGirls workshop just like this one.  It was also humbling to hear the story of some of my students who are eager to learn coding so that they can change their careers and better their lives despite difficult situations.  It was pretty inspiring.  What caught me off-guard was hearing that I am an inspiration to them.  I guess I never thought of my journey as being able to inspire someone else or being that impressive.  I know since November I have studied and coded nearly every day.  And I struggle to improve my dutch language.  But I am very lucky to have a partner that supports me and allows me to take risks like changing my career.  I am impossibly hard on myself and think that I should know more than I do at this point in my learning.  I do recognize how hard I have worked and continue to work towards my goal of being a Rails developer and, even though, I work as a jr dev intern right now, I don't consider myself successful in my goal until I am a full-fledged developer with a real salary and leave interning behind.  Hopefully in a few weeks that will be the case.

Tuesday, March 24, 2015

Halfway through my jr dev internship.

I finished up my 6th week at my internship last week.   I'm halfway through my 3-month program.  For me, it was another busy week of working on different tasks for real project code.  I follow a similar formula for everything I build: think about what needs to be built, write a suitable feature test in Cucumber, go through each step in the feature by letting the test steps guide my coding.

I have started working through Hartl's Rails tutorial during my morning and evening train commutes (as long as I find a place to sit).  I felt that only working on it during the weekend was counter-productive since I spent a good bit of time trying to figure out what I was working on from the last time.  I was able to work through 3 chapters last week by simply doing it during my commute!  The book is great and is helping me go back over basics that I might not have fully understood when I started learning Rails.  Plus, reviewing these things while I am doing project work is really helping me think through concepts a lot better.

On Saturday, I finished the third and final week of the free online MOOC Dutch course from futurelearn & University of Groningen.  I really liked the course!  I think it was a good supplement to the in-person course I am taking.  I only wish this course had lasted longer than 3 weeks!

I went to a RailsGirls workshop on Sunday and learned about MeteorJS.  I built a simple to-do list app.  It's easy to follow and I recommend checking it out on their website.  I was super impressed with the ease to setup Meteor (1 command in terminal and it was ready to go.  No error messages - whew!)  It was also really cool how easy/quick it was to deploy it and even make the android APK for my deployed app.  Super easy.  Once I finish Hartl's Rails tutorial, I want to start learning JS and I might try building more in Meteor to get more comfortable with JS since I liked the framework.  I don't think Meteor is at the point that it is production ready since it is so new and they are still adding features.  But it is still really cool to try out

I am still taking an in-person dutch course 1x/week.  I have kinda put dutch on the back burner during the week, since I'm so focused on coding right now.  What I need most for my dutch to improve is to have a patient speaking partner.  I have asked a dutch friend to start meeting with me on the weekend to practice.  Hopefully I can make that a regular, weekly occurrence and get some noticeable improvement with my dutch.

Sunday, March 15, 2015

Week 5 of my internship: Update

Week 5 of my internship is done.  Working on Bitbucket on 2 different projects.  It's definitely a lot different to work on existing code and not writing a simple app from scratch like in the tutorials.  I have to spend time reading and figuring out what is going on in the code.  But I figure out things or I ask for help to figure them out.  One of the applications is in Dutch including the cucumber feature tests.   I think I'm doing ok with it.

This is pretty much sums up how I feel all the time and will for a long time:  "Programming is awesome if you like feeling dumb and then eventually feeling less dumb but then feeling dumb about something else pretty soon."  I hope I'm learning enough and learning it fast enough.

On Saturday morning, I worked through all of the second week's coursework of the online dutch MOOC course I'm taking through futurelearn and the university of groningen.   I didn't work on any code on Saturday.

On Sunday, I finished Chapter 5 of Hartl's Rails tutorial.  It's frustrating to only work on the tutorial during the weekend.  It's hard to pick it up after not touching it for a week and know where I was, where to go.  I need to try to maybe work a little during my train commute on it during the week.  I want to finish this book!  It was a goal of mine since I first started coding a couple months ago.

Here goes week 6....