Brightball

Ruby on Rails and PostgreSQL - Intro to Advanced

Classes | Ruby | Rails | PostgreSQL | PostGIS | - July 15, 2014 // Barry @ OpenWorks

Beginning August 18th I will be offering a three week evening class aimed at professional programmers who want to learn Ruby on Rails and PostgreSQL, with the goal of becoming proficient with both in a very short time.

Overview

In this class aimed at professional programmers we will dive deep into Ruby on Rails, "the Rails way". You'll learn the development processes, workflow and tools that make Rails such a powerful development platform and how it differentiates from what you may be using now. Additionally, we will be learning to leverage PostgreSQL and its wealth of powerful features including full text search, custom data types, geospatial data with PostGIS as well as how Rails makes it easy to take full advantage of your database. Finally, we will dive into performance turning, architectural patterns, production infrastructure and tips to help your system avoid common pitfalls. By the end of this class, you should have a level of proficiency with Ruby, Rails and PostgreSQL that rivals your current platform of choice.

This class is perfect for you if...

You have experience developing web applications with another language and want to understand Ruby, Rails and PostgreSQL as well or better than your current platform.

Are there any prerequisites?

Yes. Students should already have experience building a database driven web site with another language like PHP, Java, C#, Python, Groovy or Node.js. Students should also have at least a basic understanding of SQL (meaning how to write a SELECT with an INNER JOIN, INSERT, UPDATE, and DELETE). You do NOT need to be an expert.

Additionally, students will need to bring a laptop in order to participate. The classes will be interactive during each session.

When and Where?

The class is setup as a 3 week crash course for working professionals to proficiently add Ruby, Rails and PostgreSQL to their tool belt. 

We will meet for 3 hours (6:30pm - 9:30pm), 3 nights a week (M, Tu, W), for 3 weeks (Aug 18th - Sep 3rd) at OpenWorks in the basement of 2 North Main St in downtown Greenville, SC. Deadline for signup is August 13th.

The format blends the fast results approach of week long, full time training with the non-conflicting approach of evening hours courses.

How much does it cost?

The cost of the course is $600.

Curriculum

Day 1  - Intro to Ruby

Monday, August 18th - 6:30pm - 9:30pm

After getting everybody setup, we will learn about Ruby itself and how it differentiates from other languages. We will examine package management with Gems and Bundler, Debugging with Pry, Unit Testing with RSpec and why Ruby is so popular for Domain Specific Languages. 

Day 2  - Intro to Ruby on Rails

Tuesday, August 19th - 6:30pm - 9:30pm

In this session we'll get into the core of Ruby on Rails.

  • Data Models with ActiveRecord
  • Views with different templating engines
  • CSS and Javascript compression with the asset pipeline
  • Controllers and Routing for application logic and different response types using REST
  • Rack, the middleware layer that wraps all requests
  • Shell scripts with Rake
  • Queued/Background processes
  • Database version control with migrations
  • Development workflow with Git, Foreman, the Rails console, and deployment to Heroku

Day 3 - Intro to PostgreSQL

Wednesday, August 20th - 6:30pm - 9:30pm

Next we'll dive straight into PostgreSQL in a class that will not use any Ruby at all. We'll be fully focused on learning about PostgreSQL, its bevy of excellent features and experimenting with it in a query analyzer. We'll specifically emphasize multi-index queries, full text search, and basic triggers and functions.

1st Assignment (due Monday)

Putting together your own Rails application with PostgreSQL deployed to Heroku implementing full text search.

Day 4 - A Deeper Look at Models

Monday, August 25th - 6:30pm - 9:30pm

We'll take an in depth look at models including callbacks, scopes, validation, associations, database transactions, serializers and PostgreSQL custom datatypes.

Day 5 - Diving into Controllers

Tuesday, August 26th - 6:30pm - 9:30pm

Controllers are the access points of the application, so we'll look at how to utilize them during this session. We'll explore callbacks, responding to different types of requests as well as robust authentication packages.

Day 6 - Introducing PostGIS

Wednesday, August 27th - 6:30pm - 9:30pm

For our next database intensive session, we will be learning about PostGIS and the capabilities that it adds to PostgreSQL for working with geospatial data - including queries, spatial indexes, and intersections.

2nd Assignment (due Monday)

Expand your initial application by creating an admin area, refine your models with what we've learned and add some basic geolocation functionality to your application.

Day 7 - Make it Fast and Secure

Monday, September 1st - 6:30pm - 9:30pm

This entire session will focus on polishing your application through performance tuning and security. We will experiment with multilayer caching, accelerating concurrency in queued background processes, threading, different web server options, query performance enhancements, lazy loading, and eager loading. A further look at Rack middleware will also be included to examine security improvements that can help sustain your application in the event of an attack.

Day 8 - jRuby: Java and Ruby Living Together

Tuesday, September 2nd - 6:30pm - 9:30pm

What is jRuby? When is it useful? Is it enterprisey? How do I use Ruby in a Java environment? What's so great about the JVM? How do I convert my code to use jRuby? How can I use Java libraries in my Ruby code? What are the deployment options? JBoss? Tomcat?

Day 9 - PostgreSQL and Application Architecture

Wednesday, September 3rd - 6:30pm - 9:30pm

This final session will examine capabilities of PostgreSQL that affect application design decisions, including special considerations for service oriented architectures as well as multi-tenant systems. Additionally we will examine PostgreSQL ability to initiate connections with outside systems via other databases or processes listening for events.

Final Assignment (allowed 2 weeks)

Select something that you wish to explore in more detail and do so in the context of your application. Consider this your thesis. 

Who am I?

My name is Barry Jones. I've been developing web applications since 1998 at both the small business and enterprise level using PHP, Java, Groovy, Python, Perl and Ruby using MySQL, SQL Server, Oracle, PostgreSQL and MongoDB as databases. I hold a BS in Computer Information Systems and a Masters in eCommerce from Clemson University. For 3.5 years I owned and operated Brightball, Inc in Greenville and I'm currently a Software Architect for ACS Technologies.

Why am I teaching this class?

Job Board from RailsConf 2014

Rails is in extremely high demand. Pictured above is the job board from RailsConf 2014 in Chicago this past April. Since the day I added 1.5 years of experience with Rails to my resume I've been receiving constant inquiries from recruiters for job opportunities. Many of these included full relocation packages to New York, San Francisco, Los Angeles, and Austin, Texas. In my career I've never experienced anything like that outside of Ruby on Rails. 

Rails empowers small development teams to create incredibly complex applications quickly while allowing them to work together effectively. That's why so many well funded start ups use it. 

In an enterprise environment, jRuby allows for faster development timelines while still utilizing existing Java libraries and deploying on JVM app servers. 

As a sysadmin, Ruby is an extremely efficient language for developing concise and readable logic while infrastructure management tools such as Puppet and Chef have been written in Ruby because of it's flexibility. Ruby is a versatile and powerful language that helps you accomplish more in less time.

From the PostgreSQL side it's a similar issue. PostgreSQL makes complicated database operations easy provides a flexible solution to ensuring the integrity of your data while quickly accessing it in a variety of ways. It's full text search capabilities rival long standing dedicated search tools without the hassle of managing and syncing with one. It provides data compression, custom data types, powerful geocoding tools, multi-indexes queries, asynchronous writes and...it scales. The database is the backbone of almost every web application and I want developers to understand how to use it as more than a glorified file system.

So, why am I teaching this class? Because I want to teach people to solve the most complicated business cases that they can dream up...but I also want to make sure they know how to avoid stumbling blocks on the way to those solutions.

Is there a list of technologies that we will learn about?

Yes there is. You'll be using Ruby on Rails, PostgreSQL, jRuby, Foreman, DelayedJob, Queue Classic, Sidekiq, Bundler, PostGIS, Geospatial data, PostgreSQL custom data types for JSON, hstore, XML, ranges, full text search, Redis, Heroku, git, Rack, Rake, SQL, GIN Indexes, Functions, Triggers, Haml, ERB, Slim, Thin, Unicorn, Torquebox, Pry, Rspec, SASS, ActiveRecord, and Devise.

Did you write all that out just for SEO?

Yes

What if I have questions?

Please direct any questions into the comments below. If you have a question that you do not wish to post publicly you may either fill out the Contact Us form or you can reach me directly at (864) 343-1715 ext 421, but plan to leave a message.