NavBar

Showing posts with label learning a language. Show all posts
Showing posts with label learning a language. 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.

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.

Monday, January 19, 2015

Progress update.


  • Read as much as I could this weekend...   On the train, in bed, on the couch, at the cafe, where ever. I made it into Chapter 8 of Beginning Ruby (page 184).
  • Also working through Tealeaf Academy's precourse work (Ruby review, etc) when I get bored in the Beginning Ruby book.
  • Realizing I need to make a separate page to list all the tutorials and books I've complete and still have to check off to help me keep on task.  So many resources out there to get distracted by!
  • Unrelated: Slowly absorbing more dutch language.  Had my second class tonight.  Need to desperately practice pronunciation.
  • Still undecided on the online bootcamps - deciding on this is on the backburner until next week...  I like Tealeaf's lower price but dislike not having a mentor and the lack of connection I felt when I emailed them questions about the program and if they had any participants from the EU.  I love thefirehoseproject's mentorship opp and fast personal response to my email questions.

Tuesday, January 13, 2015

Not coding related, but useful for my future in the Netherlands...

I started a dutch language course last night!  It's a course for expats, once a week 3hrs in class + 1hr outside class, for 20 weeks (~5months).  I'm excited.  I've been waiting for this course to begin for a few months now.

There are some really cheap, good state sponsored programs, but our visas prevent us from taking that one. The private languages schools are expensive.  But this course is still costly but cheaper than a private school.  Unfortunately, I guess they assume with highly skilled migrant visa that you'll be making really high salaries and can afford a private course (or you don't care about learning dutch and get by with English), but with only my husband working at the moment, that is not the case.

I should be up to a A2 level afterwards and then can continue to learn and prep for the Inburgerings exam - what we will eventually need to do for pursuing permanent residency in the Netherlands.  I want to get to at least a B2 level, although near fluency would be amazing.  Learning dutch should definitely help when I look for jobs here, at least I will be able to communicate somewhat.