Saturday morning, our teacher Matt delivered an awesomely helpful talk to the class about creating “personas and user stories” as a way to plan out an app. It’s important to think about not just who will use your app, but also just what each might do with it and how they’ll feel about it while they use it.

After spending an hour talking about this, creating a handful of personas and stories for each of them as they navigated through our app, it became apparent that 1, the scope of our MVP was too wide, and 2, we were pointed in the wrong direction anyway. By pivoting our plan, we were able to get started on something that will be far more useful to the users we’d most like to get and retain.

All that said, between planning all that UI/UX stuff, pivoting, and having to rework the ways our models would associate based on that pivot, I think it was probably around 4pm before we got a single line of code written. This was incredibly frustrating for all of us, but I kept reminding myself (and sometimes the guys) that with the amount of planning we put in, things would move very quickly after these first few steps. Personally, I’m glad we did that “extra” planning; I would have been far more aggravated had we worked on writing code for those first six hours and then realized that we had to change the plan up. Refactoring is not my favorite part of coding, particularly while I’m still sorting out what I’m doing in the first place. So, planning, hooray! (I know we’ll still have to refactor code on this project, but I’m also sure it will be less annoying because we made a plan first.)

And there were still victories on Saturday. The final count of database created and in use for our project right now is nine. Even counting the join tables, that’s still a pretty intense amount of data compared to anything we’ve done before in class. (Join tables exist to associate other tables to each other and allow things to have more than one of each other–for example, bananas can have many desserts they are used in, and desserts can have many ingredients besides bananas; join tables make this work when you need to keep track of all of that, without having to create and log a separate instance of bananas every time.)

I didn’t count the authentication-related tables there, by the way, because I’m still working on all of that. Last night when we presented the current state of our project to our classmates, I was grumbly because I had to take a break from learning about using OAuth to allow our users to log in to our app with their Facebook accounts.

In any case, after the presentations, I was pretty much done. “Nope, sorry, can’t brain anymore, I’m all out for the day.” So, it was time to party at the DevHouse for a bit. I got tired early and was about to head home, but Nick ended up convincing me to stay out for a little bit longer and we spent the next couple of hours at pretty much my favorite bar in Austin.

Which brings us to today. My only day off this week, and my first in over two weeks (Justin and I spent all of last weekend coding too, trying to make sure we were up to speed on ActiveRecord::Associations… if only we knew then what these last couple of days would hold). This will be the last thing I do on my computer all day. Tomorrow, I’m back to work, but the only things I plan on looking at on a glowing screen today are cartoons.

If you’re interested in following our progress as Justin and Nick and I work on this final project over the next few weeks, feel free to watch our GitHub repo.

That’s been the theme of the last couple of weeks. Truly non-stop. Now that my fourth week of MakerSquare is over with (holy crap, almost halfway!), and I have a minute to get some thoughts down again… I can barely remember the third week. I do remember that we learned about Sinatra, and did Javascript “exercises” for hours and hours, and had our first introduction to APIs.

And then there was the Hackathon. Instead of a weekend off, we had two days to work on projects of our own choosing. My team made this Lorem Ipsum generator. It’s pretty satisfying to be in class and notice people using it when they need filler text. I personally am having way too much fun plugging songs in from bands like Mindless Self Indulgence, Ke$ha, or even Insane Clown Posse, and just doing dramatic readings of the results.

The process to make Lyric Ipsum would not have been terribly intense if not for the APIs we had to/tried to use. Primarily, it runs with a Ruby gem called Lyricfy that has two APIs for lyrics databases wrapped up neatly inside. This was a pretty cool find by my teammate Jesse, but we wanted more from it by Monday than it was willing to give. Specifically, we wanted people to be able to search for, say, “Wu Tang,” and have our app understand that the user means “Wu Tang Clan.”

I learned quite a lot about a lot of music-related APIs this week in the name of bringing that idea to life. In the end, I have unfortunately learned that there are a lot of APIs (and gems) out there that are a pain to work with, and more than a couple that don’t do what they claim to (and in one case, that doesn’t even connect to its own database using its own methods, but anyway…). The idea isn’t dead yet, but it is definitely on hold until we learn more about AJAX calls in jQuery. I heard a rumor that this might solve the problem.

Also within the last week, after my class built our first functioning web apps, the team at MakerSquare (finally) introduced us to Rails, which I am a little in love with already. The first few days were rough, but then the lesson on Thursday made everything make sense. I had a few moments (and all of Friday morning) of frustration while trying to complete my lessons using individual concepts without connecting them to each other, but for the final lessons, making everything in Rails work together the way its supposed to was easy. I suppose this is why the term “Rails magic” gets tossed around a lot.

I finished Friday’s assignment in a short amount of time, and took a look at the extra credit “extensions.” I didn’t like the look of the extensions (i.e., I was in no mood to deal with another API-wrangling session late on Friday afternoon), so I made my own “extension,” based on a small feature that I thought the project should obviously have. In doing so, I discovered why this seemingly simple little thing had not been included in our lesson, but I did still make it work; I want to shout out some love for my classmate Lynda here, because she took a look at what I was trying to accomplish, said one thing to me, and that was The Thing I needed to get my idea working in under 10 minutes. Suffice to say, I’m incredibly excited that Lynda will be my pair-programming buddy for this coming week.