The first week of Module-2 at Turing is pretty stressful. You’re bombarded with information the whole week. One student said it best, “I feel like the instructor just took a dump in my brain.” The first module at Turing emphasizes logic and problem solving. The second is geared more toward understanding the web and the applications that live on the web. The first Ruby framework you begin learning is Sinatra and then transition into the mother of all Ruby frameworks, Rails! Over the course of intermission week we were given a simple tutorial that taught us how to build our first Sinatra app called Task Manager.
Day-1 we were doing a bunch of HTML and CSS work, getting comfortable with styling our Task Manager before we move on to more back-end type stuff. Our homework was to style our Task Manager using bootstrap or foundation. I chose a free bootstrap template and really enjoyed doing some front-end work for a change. Below is a screen-shot of my homepage.
Day-2 introduced CRUD (Create, Read, Update, Destroy). If you think about it, from the users perspective most applications have CRUD functionality. We also discussed ‘How The Internet Works.’ In a nutshell, the internet is just a shit load of servers passing around information to other servers. When I say ‘servers,’ I mean computers just like the one you’re using. Our personal computers might run OSX or Windows, some of these servers run Ubuntu or Fedora. The software we might run is Safari, Microsoft Word and iTunes. Examples of software a server might run is Apache, Thin and Rack. Everyone who uses the internet essentially relies on remote servers that are dispersed all over the world! You can even turn your personal computer into a server if you like.
Day-3 we learned about model testing, which is really no different than regular Ruby unit testing. We also briefly covered Nokogiri. Nokogiri is some cool shit. It gives you the ability to extract and parse raw HTML from any web-page. This can be very powerful if a particular app you like doesn’t offer an API because you can extract their data and deliver that data on your platform. You can also use Nokogiri to target specific data by using that data’s CSS selector. So if you would like to extract all <li> elements from a page, you would just: page.css(‘li’). Capybara is used for feature testing. Feature testing allows you to test how a user interacts with your web-app. You can write a test that says: visit “homepage”, fill out a form, hit submit, redirect to “index page” and expect the index page to have the submitted content. After you’ve written the test, the code implementation becomes much easier because you know exactly what features you want your app to have. Now you’re just left with writing the code to get that test to pass. This is called test driven development and anyone who calls themself a developer uses this method. Our homework was to work through an SQL tutorial.
Day-4 was by far the toughest. Databases are the foundation of all web applications and being a back-end developer entails working with them extensively. Databases allow us to store, sort, calculate, and retrieve data. First we learned SQL (Structured Query Language). SQL is a programming language that allows us to interact with a database like PostgreSQL, MySQL, Oracle, MS SQL Server, and SQLite. If you’re interested, here’s a very basic hand holding tutorial. Next on the list was Sequel. Sequel is an ORM (Object Relational Mapper). In plain english, Sequel converts rows in your database into objects. Since Ruby is an Object Orientated Language, a Rubyist can quickly take these objects and manipulate them using basic ruby methods. Our Task Manager was initially set-up to use YAML:: Store in place of a database. YAML::Store allows you to store and access data in a text file. We converted Task Manager to use Sequel as our database language and SQlite3 as our database. This was super challenging because all of our controller methods and tests had to be configured. The class was super chaotic as everyone scrambled to bring their app back to life.
Day-5 well that’s today! Fridays are chill days filled with student hosted lightning talks, guest speakers, personal project work, blogging, electives, and student led study groups. Here’s a list of the lightning talk topics for today:
- Code like it’s 1999
- Animation with Snap.js!
- China’s Great Firewall
- Imposter Syndrome
- Stuff, Things & the Internet of Things
- The Illusion of Free Will
- Ruby Warrior (Debugging and Refactoring)
- Learning how to Learn!
- Wine 101
All of them were entertaining and informative as usual. At Turing we not only learn how to code and collaborate but we also strive to improve our public speaking skills.