I’m a Celebrity… Get me out of here! (Project 1 recap)

For me, looking back at a difficult project after it’s all over usually results in a light-hearted: ah, it wasn’t so bad! And then I start reminiscing – remember when we were all drinking wine on Tuesday night and thought we could never finish our apps in time? Haha… how funny!

Well, to be perfectly honest – Monday and Tuesday were pretty bad days for me. I had done a ton of planning over the weekend and had consequently built up my expectations of what my wonderful Tic Tac Toe game app would be capable off (without really understanding how to create the actual game logic). Upload and play back your favourite song on your profile! Hahaha! Leave messages for other users on their profile. Baaahaha! What wonderful dreams.

On Monday we were told that we should have written enough code to play the game in the Rails console by Tuesday morning. On Tuesday (I think) we were told that we should start working on the front end… None of this was happening for me. And it made me feel really, really bad.

Talking to the others during our Tuesday night impromptu red wine group therapy session, I realised that I wasn’t the only one feeling down. Others were struggling too. It was like we had accidentally ended up in one of those shows like “I’m a Celebrity… Get me out of here”, where people have to overcome insurmountable obstacles and the audience watches to see who breaks down next. The audience in this case were the instructors.

They seemed to give people conflicting advice. They put pressure on us by suggesting deadlines “by Wednesday you should…”. They told us to take a lot of time planning and did not tell us that our expectations were completely unrealistic. They made us do a test run of creating an app from scratch so we could get an idea of how much we could achieve in four hours – a lot if you scaffold a couple of standard models in Rails! (see this post). But if you have to create logic for a game? That’s a whole different story.

When would they release the tarantulas?

Ultimately I think my own expectations of what I would be able to deliver in five days were what crushed me. In hindsight, I should have relaxed about it and just taken it step by step. So what if you can’t play my game in the Rails console on Tuesday? (Turned out that they didn’t actually mean playing the game but just creating instances of models and calling some methods. It lead to a few misunderstandings and one of us even created a perfectly playable game in the Ruby console, which wasn’t necessary… )

So was this all part of the GA schedule? To teach us how it feels when we were failing badly? Michael said that we should be happy to fail. Great. I just couldn’t feel happy about it. I failed at that too.

By Wednesday it got better. Jarkyn, one of our lovely TAs, had helped me a lot with the associations between models and Active Record validations and I really enjoyed working with her and learning from her.

On Thursday lunch time we had a really good speaker, the CTO of Tribesports. He compared learning how to code with learning how to speak a foreign language. When you learn it in school and then go to the foreign country for the first time, you feel like you know nothing and have to start learning all over again. Apparently becoming a web developer is very similar. Weirdly it made me feel a bit better.

And on Thursday I was finally working on the front end of my app and I could see the progress that I was making. Creating a leaderboard of all players and their wins, having a dashboard for each player with current and historical matches – those were the things I felt a lot more comfortable with. And it was more satisfying to create something that the user would actually see rather than a whole lot of backend logic.

Friday was presentation day. We had five minutes to present what we had created and five minutes to answer questions from the audience or from the instructors. The instructors were sitting at desks facing the presenter – again I felt like in a TV show, except this time in a talent show rather than a jungle camp. (I don’t actually watch these shows. Honest!!!)

The presentations were actually good fun. A lot of us have a very entertaining style of presenting and most of us students were careful when asking questions so as not to trip someone up.

We were done in the early afternoon and General Assembly had prepared a few bottles of bubbly for us to toast the end of project week. There was a massive sense of relief amongst all of us. Finally the presentations were over. Time for the pub and our two week Christmas break.

Merry Christmas!

 

PS: I’m at my parents’ house in Germany now and have been working a little bit on my app. After all the pain I went through, I have come to really like my Tic Tac Toe project now. I created an automated computer player and am now trying to implement a few other things from my optimistic Trello board. And it’s fun!

Advertisements

Tic Tac Toe – update

Turns out this project is bloody difficult.

But:

I will not admit defeat.

Yet…

Maybe tomorrow.

In the meantime here’s a song by the German band “Tic Tac Toe” which was popular in the 90s and of which I may or may not have owned the single (or ‘Maxi-CD’ as it was called in Germany back then).

In fact I think it was my brother who owned it.

Translation of the title: “I really rather dislike you.”

In your face project 1!

Project 1 – Tic Tac Toe!

We’ll be doing three projects in total over the course of the twelve weeks and this weekend marks the start of our first project week.

We were given the choice of three projects:

  1. an app that helps scheduling resources, e.g. room bookings
  2. an app for DJs to promote and upload songs with a user commenting functionality (hello Myspace!)
  3. an app where users can log in and play Tic Tac Toe (i.e. noughts and crosses) against the computer or against each other.

I found it really hard to decide on a project and nearly went for the Myspace type one as it seemed most fun. But then I thought that I’d probably learn more if I chose a project that I can’t really imagine how to do at the moment and that is creating a Tic Tac Toe game.

I spent some time today creating wireframes for my website and a diagram to map the objects and their relationships.

We are supposed to use the project management app Trello, so I started creating a Trello board with all my to dos for the project, ordered by ‘must have’, ‘should have’ and ‘could have’. I feel like I am probably missing a lot of to dos that will only come up along the way but then I’ll just add them to the Trello board as and when I think of them.

So, no coding today! I am still a bit hungover from the previous WDI cohort’s graduation party last night, so will leave the heavy brain work for tomorrow.

Before starting our project prep on Friday afternoon, we had a lesson on pagination in the morning. Pagination is used for example when displaying search results. Usually websites don’t display all of the results on one page but maybe 10 or 20 per page. And guess what: there is a Ruby Gem for it!

On Fridays we usually have some time where we can ask to repeat certain things that we did during the week. This Friday we asked to have the has_many :through relationship explained again. You know the one that scared me on Tuesday. It turns out, if you actually implement this relationship in your app from the beginning, it’s perfectly fine! This time it seemed really easy to understand. Phew!

Anyway, I’m looking forward to next week: we’ll have lessons in the mornings and will be free in the afternoons and evenings to work on our projects. Presentations are on Friday and then we’re breaking up for Christmas.

One more week to go until I fly to Germany to drink lots of Glühwein and eat lots of Lebkuchen!

A sense of accomplishment…

…is what I’m feeling on this fine Wednesday night while I’m sitting on my sofa with a glass of wine. I just created a Rails app in four hours. It’s connected to a SQLite3 database, has two different associated objects with the corresponding CRUD actions, a user login feature, different permissions for admins and users, input validation, my first attempt at using Bootstrap and then my own CSS after I didn’t have the patience for Bootstrap.

Wow! Who would have thought at the beginning of last week when we were introduced to Rails that today I would be able to create something like this all by myself? And who would have thought last weekend when I was faffing around with a select box of associated ingredients for five hours that I could create something like this app in less time? Pretty cool.

We learnt a few new features this week for Rails including user authentication and authorisation, search function and image upload for users. It always followed the same process: the instructors showed us how to create the particular feature using Ruby and database queries. We all go “oohh… this looks difficult/confusing/time intensive”. The instructors say: “Hahaaa! But there’s a gem for this!” and then show us how to use the gem instead. We then implement that functionality in our recipes app from the weekend.

So, not too bad this week so far.

Except…

has

many

through

My god. The Monday night homework task was to turn the has_and_belongs_to_many association between our ingredients and recipes into a has_many :through association to include quantities of ingredients. Not fun. I wasn’t feeling too great either as I had caught the WDI cold (yeah, yeah, excuses…), so I was struggling on several levels.

Michael did tell us that he only expected about 10% of us to figure it out (turns out it was actually less than that) but still, even when he explained it the next day, there were blank faces all around. My face must have been so blank, that Tony (who is featured in Good Things magazine this week!!) sent me this wonderful image on HipChat.

has-many-through

Oh yes, it did. Thanks, Tony.

PS: Just before I published this post, I added a new WordPress category “Week 4”. When I saved the category, it suddenly duplicated the existing categories. The same bug I had in my recipes app!!! Amazing.

Rails magic

My most important take-aways from this week full of Rails magic:

  • Do not touch the link tags in application.html.erb.
  • Do not compile your code locally.
  • Do not mess with the sprockets. Ever.

Phew! OK. I will follow these warnings.

Furthermore I can report that Michael’s much used term of something being “borked” (usually a database) has now entered my active vocabulary and used it this morning in the context of our boiler. (Luckily we managed to un-bork it and I didn’t have to go to the gym to shower after all.)

So far, I have to say that Rails is being kind to me. Things are working and if they’re not, I understand how to fix them. But maybe this also has to do with the instructors being kind to us – I feel like we’re not moving at lightning speed anymore like in the first couple of weeks. We seem to be taking a bit more time to repeat important things. The homework projects on Wednesday and Thursday were fine too. In contrast to previous weeks where I sometimes felt like I was trying to build a spaceship, I now feel more like I am applying something that we learnt during the day. Which is probably the actual purpose of the homework. I’m not sure if this is the instructors’ intention or just my personal perception. Maybe I’m just more used to learning now? Maybe I know how and when to ask for help better than in the beginning? Comments are welcome.

Continuing with our Rails basics lessons, we learnt some tips and tricks for debugging our apps, how to create partials and what the deal with the Rails models and the asset pipeline is.

On Thursday we were introduced to associations in Rails which initially went so far over my head that I thought I would need to get one of these butterfly catching nets to collect it again. But we are practising the different associations one by one now and it is kind of making sense.

We started with the ‘one-to-many’ association (using our very basic cookbook app as an example: a recipe can only be in one category but a category can have many recipes).

On Friday afternoon Jarkyn and Alex (our teaching assistants) demonstrated a ‘many-to-many’ association using the example of a student and beer app: one student can drink several different types of beers and each type of beer can be drunk but several different students. Many-to-many. It was a bit hard to follow when all that everybody could think about was finally going to the pub and people had been putting images of beers into our HipChat group since about 11am in the morning. But I tried to cut through the thirst and really pay attention as we needed this for our weekend homework (another recipe app!).

I have to say, so far it paid off and I managed to create the ingredients object (a recipe can have many ingredients and one ingredient can be used in many recipes) and run the database migrations. So far, so good!

I hope I haven’t jinxed my luck now and will need to turn into a crying wreck over my laptop when I try to actually display the ingredients on a page and create the functionality to add new ingredients to recipes.

Ah, one more thing: on Friday we also learnt how to push our apps to Heroku, a free cloud hosting service. So finally I can put stuff that I create on the internet! Very exciting.

Fingers crossed for my homework – hopefully the internet will get to see those ingredients in my app of German recipes…