SB Apprenticeship: Day 55

I got the form! Now I just need to make it work...

I got the form! Now I just need to make it work…

  • What did you learn yesterday?
  • What are you going to do today?
  • What do you expect to learn?

I found an old Railscast that helped me walk through setting up Stripe, which mostly worked, but I keep getting this weird error that google is not particularly helpful with. Anyone have an idea of what Unknown Format means?

ActionController::UnknownFormat

ActionController::UnknownFormat

Google (and by Google, I mean Stack Overflow) seems to think that I need to my respond_to needs to have a format associated with it, but I have format.html { redirect_to books_url }  in the method already. Sigh. This method is kind of a mess, though, so I need to refactor it. Maybe I’ll see if I can get some help with that, since nothing I’ve tried seems to help the situation. I haven’t been sleeping well this week, so I think I’m getting frustrated more easily than usual.

Today I’m going to figure out this method and fix that error, and then finish working through the Stripe tutorial.

I feel like I answer the “what do you expect to learn” part of this prompt with some variation of “…that I’m doing <whatever thing I am working on> wrong” way too often. I’m not always sure how I should be answering this question other than the fairly generic way that I do. Anyway, I expect to learn what that error means and how to fix it. I should probably also figure out how to tell whether or not my emails are sending, and if Stripe is actually charging the fake credit card I’m giving it. Lots to do today!

SB Apprenticeship: Day 54

Now you can check out!

Now you can check out! (Ignore the styling)

  • What did you learn yesterday?
  • What are you going to do today?
  • What do you expect to learn?

I have a checkout page now! I followed the tutorial in the Agile Web Development book, so now there’s a purchase button, a separate page to enter purchasing details, and it sends you an email both when you place an order and when it ships. Well, I think it sends an email, I haven’t actually figured out how to test that yet, but the book seemed confident that it would work.

It just occurred to me that one of my “if I win the lottery and don’t ever have to think about money again” daydreams has always been to own a bookstore, and I’ve always wanted to name it “Speak Friend And Enter,” because I’m a gigantic Tolkien nerd, and I’m missing my chance! Why am I naming my bookstore “Jessa’s Bookstore”?! That’s so boring! So anyway, I think I’m going to change that and look forward to the look on Brandon’s face when he sees it. Hee hee.

Today is Stripe day! Much like Rex Manning Day, I’ve been looking forward to this since I started this project. I can’t exactly explain why this has been the detail that I’ve been focusing on, maybe because it actually feels real? I use Stripe, I used it last night to pay for my hot chocolate at Cocoa Cinnamon, and even though this is a fictional bookstore, the ability to add Stripe and make if functional is a precursor to working on real projects at Smashing Boxes. Also, it’s the last major feature to add! So that’s pretty exciting.

I expect to learn that Stripe is incredibly complicated to implement, despite its clear documentation, because that’s just how my life works.

SB Apprenticeship: Day 53

Lookit my index page!

Lookit my index page!

  • What did you learn yesterday?
  • What are you going to do today?
  • What do you expect to learn?

I ended up getting more done Friday morning than I expected! Now my book index page has a logout link, and all the book titles are links. I added more Faker data (this is rapidly becoming my favorite gem), so when you click on the link, it goes to a book show page that includes a description.

Lorem ipsum is a description, right?

Lorem ipsum is a description, right?

Maybe someday I’ll be less impressed by accomplishing things like this, but for right now I was pretty darn thrilled. Brandon tells me all the time that I need to try random things more often, things that I’m not sure are going to work, which is not a thing I’m particularly good at. He was in a meeting Friday morning, though, and no one was around to answer my question, so I decided to just go for it with the line to make all the book titles links, and it worked! So, you know, positive reinforcement is a thing. 🙂

This week’s ToDo list:

  • Learn hashes (Brandon brought me a copy of Eloquent Ruby to read through)
  • Add a ‘Purchase’ button
  • Add Stripe (making sure that I know about PCI compliance and how it works)
  • Cucumber tests
  • Add the Carrierwave gem? Brandon said it would be super impressive if I could get it working.

I’m pretty excited that the end of the bookstore seems to be in sight. I think I’ve been annoying Brandon by frequently talking about how much I want them to hire me, so I’m going to try to be a little less vocal about it. I think at this point everyone knows I want to work here. Jinxing myself by annoying my mentor would just be tragic.

I had this grand plan of working on all the various courses about hashes this weekend, but then my boyfriend got a nasty bite from our cat, so instead it was taken up with Urgent Care, gauze and alarms to make sure he took his antibiotics. I think I may work on the purchase button and then read Eloquent Ruby in the afternoon. I really need to make sure I have a firm grasp on these basics. Also, I’m way behind in the reading I’ve been supposed to do for this apprenticeship, so I should maybe focus more on that.

SB Apprenticeship: Day 52

It’s Smashing Boxes’ 5th birthday! We’re having a field day this afternoon! I’m mostly hoping there will be cake. 🙂

  • What did you learn yesterday?
  • What are you going to do today?
  • What do you expect to learn?

Yesterday I got a lot done: I finally got the cart to show up on the homepage and populate with the number of items that were in it, Brandon and I fixed a wonky thing that was allowing me to save negative books as long as I had copies of that book already in my cart, I figured out how to make case insensitive search work (add a freaking I in front of LIKE in postgreSQL, sigh) and we determined that the acceptance criteria for the bookstore doesn’t currently require me to be able to increment books in the cart, so I’m just not going to do that. Apparently after I finish Brandon’s going to challenge me to add one more feature, which might be the incrementing thing, but I’m going to worry about that when it happens.

We also determined that I have somehow not managed to retain any of the things I learned about hashes. I know the basics about them, but when it comes time to manipulate them I just never can remember how. Brandon is going to loan me his copy of Eloquent Ruby and wants me to read at least the first half. He mentioned that my pairing tour is at least partly a judgement of my skills; the pairings with iOS, Front End and Android people won’t be, obviously, but when I pair with Brandon, Patrick, Joe or the other back end folks, they’ll be watching and have the ability to give me a thumbs down when it comes time to decide whether or not they’re going to hire me. Treehouse has a course on hashes that I’m going to work on this weekend too, I think. This is really basic stuff that I need to understand. I got Kevin to explain it to me yesterday, and it made sense, so either there’s some sort of disconnect between having it explained and actually doing it, or the third time’s the charm and it finally just actually clicked.

So, realistically speaking, I’m not going to get a lot done today: we have our backend standup at 9:30, the company-wide standup at noon and then field day, but I’m going to add the list of things I need to do in order to have it in one place that isn’t a raggedy index card.

  • Learn hashes
  • Add a page to show book details
  • Cucumber tests
  • Add logout
  • Remove the number box for quantity
  • Add the Carrierwave gem? Brandon said it would be super impressive if I could get it working.
  • Make sure and learn about PCI compliance when I add Stripe to my bookstore. Apparently the documentation is so good that it’s easy to just install it with no actual understanding of what’s happening. I guess good documentation is a double-edged sword.

Today I expect to remember how to add a logout button and change a number field to a text so I don’t have to worry about the incrementing stuff yet. I feel like those are two things I can definitely get done this morning.

SP Apprenticeship: Day 51

This is what my cart looks like now!

This is what my cart looks like now!

  • What did you learn yesterday?
  • What are you going to do today?
  • What do you expect to learn?

It was a challenge to get back in the flow of things yesterday after two days at a conference! I did finally manage to get my params in place so that I can change the total on a book when I add it to my cart. I still can’t edit the cart once I get it in there, but Brandon told me that would be more challenging than I thought, and he was right. I also did some styling so now it’s much clearer to read. I had a complete brain fart when it came to naming my headers and I couldn’t find a website that broke it down like that. ‘Cumulative price’ is terrible, I know, but it’s all I could think of. Anyone have any other suggestions? Maybe ‘line item total’? Meh. All my programmer friends have told me at one point or another that naming things is the most difficult part of programming, and it’s really true. Naming models and methods so that it’s clear and makes sense later when you’re refactoring or fixing something — it’s hard!

Today I am meeting a student in the current cohort of TIY for coffee; she wants to talk about my experience since I finished. I find it kind of interesting that Mason keeps sending these people to me, I certainly don’t mind, but I haven’t really hidden my complaints about the way TIY does things. I figured that I would be the last person that anyone sent students to. Although now that I think about it, I haven’t been asked to talk to any prospective students. Heh. Anyway, that’s at noon, then at 1 we’re having a retrospective about All Things Open, and then after that I’m pairing with Brandon. I have three things I want to get done this week:

  • Add a link to my cart in the corner of the homepage so you can access it without adding more books
  • Get the quantity incrementing to work and save
  • Complete at least one feature file in my cucumber tests

I’m going to ask Brandon to help with the incrementing, it really is proving super challenging. Once I get this cart stuff done, I think next week I can focus on adding Stripe and making it work, which will hopefully be easier than it was for David, since the first thing Brandon did was get rid of Turbolinks, and then I’ll be done and ready to start my pairing tour!

I expect to learn that the incrementing problem is probably going to be only a few steps, but they’re going to be non-intuitive. I’m not even entirely sure where to start with the cart, there are like four problems I have to solve there: getting it to show on the home page, positioning it where I want it, getting it to show the current number of items, and getting it to update when I add or remove something new. Should be interesting!

SB Apprenticeship: Day 50

  • What did you learn yesterday?
  • What are you going to do today?
  • What do you expect to learn?

So, as you might have guessed by the picture, I spent the last two days at the All Things Open conference in Raleigh. Most of the office ended up going and we sponsored a Front End track, so we were really visible and it was a lot of fun. It’s always a tough choice at conferences — do you go to the talks that sound super interesting, or do you focus on the ones that are actually relevant to your job? I tried to strike a balance, so I went to a talk on Computational Linguistics and natural language learning, and then I went to a talk on using Ember. Most of the talks were really good, but I think this conference has a wee problem with the descriptions of the talks not actually matching the content. There were also several that ended up just being advertisements for the company of the person speaking. Also, in the vein of my general t-shirt disgruntlement, the conference not only didn’t offer any women’s t-shirts, they didn’t even have any small men’s shirts on offer. I spoke to the organizer after the final keynote and emailed him the awesome Geek Feminism wiki article about t-shirts, so hopefully next year I’ll actually be able to show off that I attended.

Today it’s back to the Bookstore grind. I caught a cold from my boyfriend last week and ended up going home early on Friday and living on the couch all weekend, which means that I have, sadly, broken my streak of Github commits. 😦 I’m feeling much better now, though I’ve entered the non-stop coughing phase, so I sound way worse. Anyway, today I want to focus on the quantity field of my form and figure out why it’s not saving when I change the quantity and how to make it update price and total after I do.

SB Apprenticeship: Day 49

Shopping cart: new and improved!

Shopping cart: new and improved!

  • What did you learn yesterday?
  • What are you going to do today?
  • What do you expect to learn?

Yesterday was a good day! I got everything on my list done except for working on the feature tests, and I did the majority of it by myself! So now my cart shows multiples of a book on the same line, with a unit and total price and it sums all the books in the cart. You can delete the cart, and go into edit and delete a single item.

Editing the cart

Editing the cart

I got all of this done mostly by following the Agile book, which according to Brandon did some weird things, but mostly got the job done. It was weird, I had it working except the editing part, then Patrick was trying to help me with that part and something broke that screwed up the entire thing. I kept getting a undefined local variable or method `params' error, which was really frustrating and led to me literally pointing at the screen and going “THERE THEY ARE!!!” which of course didn’t work. Brandon and I paired in the afternoon and it took him some time to figure out what was going on, which made me feel better. I’m not sure if it’s a function of being a programmer, or just another sign of how cool this office is, but to my infinite amusement no one even looked twice at me yelling at my screen.

Today I’m going to make the Quantity box work. I want it to populate automatically with the quantity of a book that is in the cart (so, like, if there are two of the same book, I want it to say 2), and I want to be able to change it and have it save. I’m also going to add a link to the cart in the corner of the homepage so you can see what’s going on. If I manage to get all that done then I’ll start working on the feature suite.

Brandon said the incrementing of quantity is going to be harder than I think, so I expect to learn what that whole process is. I guess I won’t finish the bookstore this week, which is kind of a bummer, but next week is a definite go. I have a conference that I’m attending on Monday and Tuesday, but the next three days will be productive and awesome.