A personal “Hello, World”
It’s been about a month, perhaps six weeks of reading books, watching tutorial videos and watching RailsConf talks. I’ve added “The Rails Way” to my library, and that’s been a wonderful addition. It approaches things more like an encyclopedia than a cookbook. It’s very information dense, but I find that it works well for me.
I’ve also tested the MVC and rapid-deployment of CommandBox and ColdBox. Unfortunately, that solution was too rife with problems and errors. It’s a very bad sign if Ruby on Rails is easier to install than your solution. While both CommandBox and Coldbox seemed to install easily, using the provided commands to create an app didn’t work. When I attempted the same with ContentBox, a pre-packaged CMS solution, it also would not run. I’d love to say more than “didn’t run” but unfortunately I can’t. When attempting to start the server for ColdBox or ContentBox, it simply wouldn’t. The only error that appeared was two minutes later saying that the server had timed out after 120 seconds. No reference to a log file, just a rather cryptic Lucee/Java error. Sadly, it’s probably an issue with the Java Runtime Environment on my machine, but none of the installation guides gave any warnings about it.
I don’t want to have to be a Java developer to be a web developer, and Ruby on Rails installed with informative errors that I was able to immediately fix. It’s a shame because the ContentBox project looked very promising (in the videos that didn’t have 20 minutes of unlistenable audio issues), but Ruby on Rails was installed and waiting. So instead of “box install coldbox” and “coldbox create app MyApp” making me wait 2 minutes for an error, I did a “rails new demo” and “cd demo; rails s -b 0.0.0.0” and everything was 200 OK.
I was also lucky enough to visit Udemy.com during a sale. After reviewing some of the more recent RoR lessons, the one that caught my eye was “Professional Rails Code-Along” by Jordan Hudgens. Jordan promised that the videos would show him developing a real project in real time without editing. 19 hours of looking over the shoulder of a real developer for $19. Sold. I’m 20% complete, and it’s very rudimentary at this point. But it’s been really rather helpful. I’m not sold on TDD yet (my codebases are too small to gain much), but I understand its strengths now. I see why common gems are so common – they save hours of work. Jordan answers even philosophical questions about the merits of single-table inheritance vs boolean columns within a few hours. He always does a good job of thinking out loud, which is crucial for a course like this. He usually does a good job of explaining why he’s using the method he chose, and why he didn’t do it another way. The course could use more of that, but that’s a nit that can be picked later.
Incidentally, this reminds me of the way I taught myself to swim. After a few bad experiences at swimming lessons, I refused to go to any more and got myself a book. I read it twice and did a lot of thought experiments. Thanks to books and a refusal to be a novice, I was able to jump in and flail with focus. I mean, I was definitely terrible, but by the time I had completed most of the test, I was actually comfortable.
So I’ve read my books, and it’s time to jump in. So I need a project. A real project with an imaginary client (which means imaginary deadlines and specification documents). I’d dig a chance to rewrite a timeclock application I wrote for a friend. There’s also a theater management application I’ve been kicking around. The timeclock is probably too specific – it would have several needs that aren’t universal. The theater application is probably too complex to start out. It would have a way to track producers, venues, shows, actors, cast and crew, ticket sales, production costs, and more. Those are all relationships I can perfectly imagine as a set of MySQL tables, but the Rails abstraction actually clouds things at this point in my journey.
So I’m going to build an appointment request application. It will allow folks like hair stylists, massage therapists, doctor’s offices and the like to accept appointment requests with automation and simple management. It’s a project that’s different enough from all the recipes I’ve seen that I’ll be forced to learn things not covered by any material I’ve yet seen.
So like any great application or web site, a really cool name comes first (there is no font for sarcasm). Ideally it will be something that’s so very hip, but easy to type and read and understand its purpose. App Ointment? SeeMeNow? ICanHazMeet? ApptPlz?
This is gonna be tough.