What did I get myself into???

Observations / Musings / Occasional Rants

The Future Looks Bright

Got some great news today!

Yesterday I interviewed for the Flatiron School. The school is an intensive, full time, twelve week program meant to turn individuals like myself into “internet swiss army knives”. I’ve had the good fortune to become familiar with the school over the course of its first two sessions. (The second one ends in a couple weeks.) I have visited the school several times, spoken with current students, met with alumni of the first class (all of whom are now working as developers) and they have nothing but great things to say about the school. They give it their full endorsement. All the student presentations I have seen have been very impressive. And I think it’s safe to say that the students have had a good time in the process. Intense but fun.

So after the interview yesterday afternoon I began experiencing the mandatory post-interview, second guessing, anxiety inducing, hope-I-didn’t-sound-stupid phase wondering how long I would have to wait before I heard anything. I was sure it would be the end of the week at the earliest. I was thankfully mistaken.

12:03 PM today I get an email congratulating me on joining the next Flatiron School semester. What a relief! I was and still am super syked. June 3rd can’t get here soon enough. Having said that though, I do have some hefty pre-work to get done. Luckily I’ve already completed a fair number of the items on the pre-work list. Better for me. I’ll have more time to dig in even deeper. I want to be as ready as I can be for this. I want to make sure I squeeze every last drop of knowledge and experience I can out of the school and position myself to knock any prospective employers’ socks clean off.

It’s game time! Gotta go big or go home.

(I know I’m repeating the following quote from my first post but it’s definitely called for here.)

And, when you want something, all the universe conspires in helping you to achieve it.” - Paulo Coelho, The Alchemist

Day 9: The Tax Man Cometh

I made some phone calls I had been putting off, sent out some emails, finished my taxes, filed my taxes, spent some time dejected about my taxes, went out to dinner, attended the Alicia Keys concert at the Barclays Center. That was my day.

The secret of life is honesty and fair dealing. If you can fake that, you’ve got it made.” - Groucho Marx

Day 8: You Gotta Do What You Gotta Do

Today I had to get myself to Stony Brook University for a STEM (Science, Technology, Engineering, and Math) conference my high school wanted me to attend. Not exactly something I was looking forward to doing during my Spring break. They want to start a new program next year and they want me to be one of the teachers. (If you have read my first blog post, you probably picked up on the irony here.) My engineering degree guaranteed that there was no way I wasn’t going to be picked for this.

So off to Stony Brook I headed. I took the LIRR for the first time to get there and back. I’m writing this post on the train on my way back to the city. Off peak hours so didn’t have seating neighbors. Pretty comfy I have to say. It was nice reading some more Learning Rails 3 on the way there. Will probably read some Pragmatic Thinking and Learning after I’m done here.

The conference itself was 90% boredom with a semi-decent lunch. The only high point was talking to some middle schoolers about the projects they demonstrated. They were so enthusiastic and eager to show you things. They’ve 3-D printed stuff! How cool is that? Very impressed with them. Wish all middle/high school students were like them.

Tonight I’ll be going to the Flatiron School Presents meetup. Always a good time combined with great student presentations. Hopefully in the Summer I’ll get to do a few myself. ;]

Don’t be afraid to give up the good to go for the great. - John D. Rockefeller”

Day 7: Can’t Plan for the Unexpected

So it turns out that yesterday I was able to reserve two tickets to the Daily Show with Jon Stewart taping today. Completely unexpected. I checked online and lo and behold there were tickets available. I’ve never seen that before. My girlfriend and I are big fans so I jumped on it. Very exciting. Kind of an early birthday surprise for the girlfriend since I was hoping to do this very thing around her birthday in May.

Problem with all this is that to pick up the tickets you have to go to the studio, stand outside in line for a couple hours (in the cold and wind mind you), get the tickets, then come back a couple hours later for the taping. That represents a very good chunk of the day. To make matters worse, today was also laundry day. I hate doing the laundry. I don’t have a washing machine/dryer in my apartment nor is there a laundry room in my building. I have to pack everything up and lug it and myself a couple blocks to the laundromat. It’s like a two and a half hour process. And I hate every second of it.

Needless to say, between laundry first thing in the morning, trekking up to Hell’s Kitchen to stand in line for two and a half hours to pick up my ticket, lunch, returning to the studio early so that my girlfriend could pick up her ticket, the show taping (a lot of fun), and then dinner afterwards at a delicious hummus place, I didn’t get much done today. Only exception was bit of Learning Rails 3 reading on the subway and while standing/freezing in line.

C’est la vie!

And on a big, exciting, positive note, I received an email inviting me to interview for the Flatiron School’s’ summer session. Skype interview on Sunday. Looking forward to it. Keeping fingers crossed. If you don’t know about the school, check it out.

To accomplish great things, we must not only act, but also dream; not only plan, but also believe.” - Antoie France

Day 6: The Taming of Heroku

Last night I told myself that I was not going to spend more than a half-hour today trying to finish deploying my Help A Cause app on Heroku. That’s what I told myself. I meant it to. I really did.

I started off reading some from the Learning Rails 3 book which I was reading on the subway ride to NYU which is where I was going to be spending the day. (My fiance works at NYU.) I read a couple chapters then started playing an episode of Ruby Rogues and switched back to deploying on Heroku again. That’s when I became a victim of quick success. I resolved the last issue I was having yesterday pretty quickly and that got me excited thinking I just might be close to it working. (Not really.) And I kept telling myself, “But maybe this is the last error message before it works!”.

I discovered (unfortunately not soon enough) that Heroku seems to run through the Rails app migrations sequentially one by one as it tries to build the database in PostgreSQL. Not sure why this is the way it does it but it just does. There has to be a better way. What was causing me problems was that every time Heroku came across a migration that did something that PostgreSQL did not like, it would puke some cryptic error about some DB incompatibility that most likely did not actually exist in my database any more. It existed in that particular migration it was trying to execute at the time but not in the current schema. Heroku was making me pay for offenses my db commited in its youth. So eventually I figured out that if I deleted the offending migration file and re-ran the migration, Heroku would get further before finding the next migration it didn’t care for. Eventually I got it to finish the migration and Walla! the app came online.

Had lunch and afterwards joined my girlfriend in visiting a restaurant we’re considering for our post-wedding dinner. Not happening til August 2014 but you can never start planning too soon.

After getting back, I decided to try to populate the production database with the data I had in my development database so I had something to work with. Shouldn’t be too hard. All it should take is “heroku db:push”, right? I entered the command, hit enter, and then a few seconds later I learned that Heroku wasn’t done with me yet. “Time zone displacement out of range.” Just rolls off the tongue doesn’t it? Whatever was going on it caused the push to fail and the app to crash to boot. So I hit Google and Stack Overflow and tried to figure out what in the world this error might mean.

Long story short, I came across a proposed solution which I found hard to believe. You’re gonna love this. The proposed solution was to switch to Ruby 1.9.2, reinstall the necessary gems, conduct the push, and then switch back to Ruby 1.9.3. Seriously? With great skepticism I tried it and wouldn’t you know it, it worked. Apparently there’s something about the Heroku db that is incompatible with Ruby 1.9.3. So the only way to get the data push to work is to use 1.9.2. Wow. But everything worked after that.

I ended the day looking into Sinatra. I installed the gem and created and ran my first, basic-as-it-gets Sinatra app. Looks pretty interesting. Can’t wait to learn more.

Our greatest glory is not in never failing, but in rising up every time we fail” - Ralph Waldo Emerson

Day 5?

It’s me again. I didn’t really do much over the weekend. Enjoyed the really nice weather on Saturday and then Sunday was a Sunday i.e. I don’t usually get a whole lot done on Sundays despite whatever my intentions may be. Just seems to usually work out that way.

Today on the other hand was a different story. I spent the whole day working on my Rails app which from this point forward I will be referring to as ”Help A Cause”. “fundraise” was always just the name of the Github repository I created for the project when I had no idea what to call it. So Help A Cause it is.

I started off completing the addition of ‘Date’ and ‘Time’ fields in the event creation form. I used ‘date_select’ and ‘time_select’ form helpers which were new to me and took a bit to figure out how the various options worked. A lot of trial and error was involved. And for some God forsaken reason, my app insists on displaying GMT time versus local time. In the Rails console, accessing the same attributes displays local time. ??? A battle to be fought another day.

After a bit of a break followed by lunch in Washington Square I returned determined to add a Date field to my event search. Sounded easy enough but it turned out to be a huge pain in the hiney. Could not get the date_select fields to function the way I wanted to save my life. For a good while there it didn’t matter what the hell I did with the options. The date fields (year, month, day) appeared and functioned exactly the same no matter what I changed. It turned into an elongated, shake your head with an incredulous look on your face while staring at the screen episode. Eventually I figured out that I was missing a second, non-option parameter. So got passed that but then it became “How do I access the data stored by the date_select helper in the Date object and then use it in a search with other parameters?”.

Worked on the search for a bit but frankly my brain was getting a bit mushy by now. (I need to get better at giving my brain and myself more frequent breaks to keep my thinking more crispy. Need to get away for a bit some times. Just fighting through it is not always the best approach.) So I decided to try to deploy what I had to Heroku. I remember it not being that big a deal when I did the Michael Hartl Rails tutorial so I decided “why not?”. Yeah, well, it sounded like a good idea in theory. To make a long story short, I learned that PostgreSQL, the database of choice for Heroku, apparently has an issue with type casting string values to integer values which I happen to do with phone numbers on a form. (Do you hear that sound of grinding metal? That’s a wrench flying into my productivity gears.) Couldn’t complete a migration of the database on Heroku. So my app only kind of, sort of deployed. And that’s where I’m starting tomorrow. But only for bit.

To close the day I read a few more chapters of Eloquent Ruby.

Absorb what is useful, discard what is not, add what is uniquely your own.” - Bruce Lee

Day 2 (Thank God It’s Friday)

Got some Code School done. Read several chapters of Eloquent Ruby interacting with IRB along the way. Then banged my head against the wall for several hours trying to make my Rails app look “prettier” with Twitter bootstrap. Met with as much success as Congress on, well, anything. Bootstrap is easy enough to install, but unfortunately that by iteslf only gets you from the crappy Rails default look to crappy with smoother edges. At least I figured out how to make my buttons look nicer.

Lesson learned: Worry about functionality first, making it look “pretty” later.

On a totally unrelated topic, I saw the documentary The Revolutionary Optimists in the city tonight at Cinema Village. Great documentary, great story. I highly recommend it. Two thumbs it. Go see it.

Gonna take a break tomorrow. Have a great weekend.

I firmly believe that any man’s finest hour, the greatest fulfillment of all that he holds dear, is that moment when he has worked his heart out in a good cause and lies exhausted on the field of battle - victorious.” - Vincent Lombardi

So at the End of Day 1 …

Don’t you hate it when at the end of a long day, whatever that means for you, you ask yourself “So what did I really get done today?” and then the mental math just doesn’t seem to add up? I know I can be really hard on myself and I know that I got more done than I give myself credit for but I just wish I thought “I did too much today.” more often.

So I started the day finishing one Code School course and then starting another. Three videos in all and the accompanying exercises for each. If you’re not familiar with Code School courses, each course consists of about five to seven, five to fifteen minute videos each followed by eight to ten practice problems. I have a habit of pausing the videos often to look up associated material in an effort to understand the topic better. Needless to say, this can really slow things down. But then maybe I get more bang for my time buck. I just need to not get carried away.

Then while eating my tuna melt with chips for lunch, I decided to look up information about the Twitter API. I had no intention of this going beyond the last chip on my plate. So much for intentions. About three hours later I was still experimenting on IRB with the Twitter API via the ‘Twitter’ Ruby gem (after about an hour of troubleshooting) and the Foursquare API via their developer site. What I was most curious about was what data one could access and what form did it take. At the end of it all, I decided that I will not pursue the Twitter API becuase of the limitations they place on the public API. I concluded it would become a problem. Foursquare looks more promising even if I may wind up duplicating some functionality that already exists on their site. But then the end goal is learning new things and practicing coding so whatever.

So I never got to working on the “fundraise” app today as I intended but then I did research the APIs pretty thoroughly which I would have done later. So I guess I can call it a draw.

Tomorrow I will finish that second Code School course, get in some Eloquent Ruby reading, but then the rest of the day is all about “fundraise”. It’s been a good while since I’ve spent so much time in one day working on dev stuff. It felt good but I have to be smarter about it. I will be tomorrow.

Pick your battles big enough to matter, small enough to win.” - Jonathan Kozol

Spring Break => Code, Code, Read, Code

Today is the first day of my school’s Spring break. I’m off until April 7th. Now is when I have to stop thinking and talking about all the great stuff I’m going to get done over the break and start actually doing it. So here’s my Spring break checklist:

  • Get my “fundraise” Rails app into presentable shape and deploy it to Heroku
  • Create a Sinatra app that utilizes either the Twitter or 4Squre API (OR a Rails app that catalogs, retrieves, and displays photo image files based on their embedded EXIF data)
  • Start writing tests using Rspec for everything!
  • Watch one Code School video each day (Rails, Javascript, GIT)
  • Finish reading Eloquent Ruby
  • Finish reading Pragmatic Thinking & Learning
  • Revisit my HTML tutorial book to prep for learning Javascript
  • Finish my income taxes (Always sucks. Times a million when you owe like my sorry ass.)

Yeah. That’s it.

And of course blogging about my progress along the way. (I’ll try to keep the cursing to a minimum.)

Getting good at something means going through various periods of being not-good, during which you tend to feel dumb, clueless, incompetent.” - Erika Andersen, Forbes

So Where Do I Begin?

A long time ago, in a galaxy far, far, away …

I’ve been meaning to start blogging for quite some time. But like most who do, I just hadn’t gotten around to it. My time has come.

What you’re reading now was not my first draft of this post. In what I can only describe as an episode of irrational post writing exuberance, I began writing a rambling post that began with my childhood career preferences. It went downhill from there. Luckily for me and every reader of my blog, my wonderful and beautiful girlfriend (a.k.a my fiance) knocked some blogging sense into me. (She’s a budding food blogger herself. Check hers out.)

So let’s just say that about a year ago I started down a path to change my career from a high school math teacher to a full stack web developer. Being a teacher is not a lifetime occupation for me, it’s not where I’m meant to be. It had it’s moments, there are many things I did that I am very proud of, and in one very significant and wonderful way it lead to very big change in my life for the better. I have no regrets but it’s time to move on.

I have an engineering degree, I used to work for Fortune 100 companies on technology projects, and I have always been the techie, tinkering type. How I wound up teaching is not important. What is important is that I have decided to go back to where I belong. Back to the world of technology, engineering, and problem solving with creative solutions. (In other words, working on really cool stuff, using really cool technologies, with really cool people, and making magic happen.)

So in posts to follow I hope to chronicle my experiences on this “little” endeavor I have embarked on. I am also quite sure there will be a decent peppering of tangential and completely random posts on events, people, and thoughts the universe throws my way. I can’t tell you what to expect should you choose to return and read my future posts because frankly I have no idea what to expect myself. We can find out together. Stay tuned.

It’s gonna be interesting.

And, when you want something, all the universe conspires in helping you to achieve it.” - Paulo Coelho, The Alchemist