Cover letters whyyyyyyyyyy

If I hate cover letters as much as I do (and oh god, I do) and I once made a living writing, how do other people feel?Particularly programmers, who may not have had any training in writing? Why are these archaic things still required to get a job? Someday I’m going to make good on my oft-promised threat and send a letter that simply says: “Hi, my name’s Jessa, and I am awesome. You should hire me. Here’s my resume and portfolio website! Sincerely, Jessa.”

Unfortunately today is not that day. I am not yet that courageous. Maybe someday when I don’t actually need the job I’m applying for. It’s good to have goals, right?

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

Ok! Friday I identified a couple places that I want to work and started at my computer for a little while being frustrated that I have to write cover letters. Then I read some more of Eloquent Ruby and called it a day. Motivation! I also decided that I’m just going to forgive myself for not finishing the bookstore project, merge the branch I was working on forever and come back to it in a little bit. I’m so tired and frustrated with it. I will come back! Just…maybe in a few weeks.

Today I am going to apply for three jobs: one with a company where a couple of my friends from code school work, one for a  New Media Software Developer with a news station in Raleigh and one for an ecommerce site in Canada. I’ve never been to Canada! Depending on how next year’s elections turn out, that may be a valuable contact to have in my pocket. It’s actually interesting, the Canadian company emailed me…so what’s the process for that? Do I just write him back and say I’m interested? Do I fill out an application through the site and then let him know? Hrm. The one advantage to being so new to all this is that I can successfully cry ignorance and ask for help. So maybe I’ll do that!

After I apply for the three jobs I’m going to reward myself by going to the gym, and then this afternoon I’m going to work on code. I’ve been thinking that maybe going back through my TIY projects might be helpful; hopefully in two ways: both to remind me how to do the various tasks and boosting my self-confidence because they’ll (hopefully) be easier than they were the first time. People keep telling me I need to work on my own projects, but I don’t really have any ideas for actual things. I’ve never been super imaginative.

Today I expect to learn how to apply for a job in Canada for which the first contact was made by them! It’s an exciting life I lead.

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.

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 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.

SB Apprenticeship: Day 43

Torturing my coworkers...bwa ha ha!

Torturing my coworkers…bwa ha ha!

So this is totally irrelevant to my apprenticeship, but earlier this week I read an article from a mobile design and development studio in LA about how they made a bot for the messaging app Slack that forced them to work out. It has five exercises that are easily done at your desk: pushups, planks, wall sit, chair dips and calf raises, and every 20 minutes or so it randomly chooses three people and an exercise. I thought it was fun, and posted the article in SB’s health_fitness Slack channel, kind of hoping that someone would take the initiative and add the bot, but, while people thought it was interesting, no one stepped up. Last night some friends had a hack night, and when I was debating what to work on, I thought — well, why not? It’d be a fun, somewhat easy project to get it running, and if they didn’t like it I could just turn it off. The instructions, posted on Brandon Shin’s github, are pretty clear, but this was my first foray into Python, so there were some extra steps that I had to go through. Kevin helped me make a shell script to make it easy to run it, and we were off! So far this morning the exercise bot has been into calf raises — it’s picked it three times, but, as a coworker said, true random will do that sometimes.

Everyone in the fitness channel seems enthusiastic about the bot; one person left the channel, saying he might be back when he’s less buried and grouchy. I think everyone has done the exercises so far. I read so much about how terrible sitting is for you, and I basically sit for like 22 hours a day, so I thought taking a minute or so every now and then to do some exercises could only help. In his blog post, Brandon Shin said that they’ve seen a lot of benefits from it:

Our productivity has been through the roof. It gives a great little breather when your focus is getting a little too narrow, a little extra circulation, and keeps you just a little more energized throughout the day.

We currently have 13 people in the channel — I’m hoping this motivates more people to join!

It was a weird process to decide to do it, there was definitely an aspect of both could and should I do it — I’m only an apprentice, I don’t want to annoy people, oh god this is Python, can I even get auth tokens from Slack since I’m not an admin user? Smashing Boxes encourages a kind of entrepreneurial spirit, though, that’s basically the entire point of Labs Day on Friday, and, well, as Adm. Hopper said, “It is better to beg forgiveness, than ask permission.” I’m not sure what I thought would go wrong, like maybe worst case would be I somehow screwed up Slack. That would be bad; we rely on Slack for everything from notifying people about code reviews to gathering groups to go to lunch. But I felt confident that, even if I did royally screw up Slack, the level of talent at SB would probably make it trivial to fix.

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

I did actually do work yesterday, despite the 500 words I just wrote about an exercise slackbot up there. 🙂 I figured out why my book index page was refusing to create books — I was using a gem that wasn’t on that branch since my admin branch hasn’t been merged into master yet. Ta daa! Usually my pull requests are taken care of pretty quickly, so I decided to work on the blog kata while I was waiting. There were a ton of pull requests yesterday, so I ended up finishing it. I had to go back and use a tutorial for a little bit since my database just refused to save posts and I couldn’t figure out why, but I did get it done. Still haven’t worked on the bowling kata, my head just refuses to grasp the scoring system, which makes it kind of impossible to program a thing to keep score.

Today I am going to hopefully merge my admin branch into master and work on the book index page. A friend suggested a gem that apparently makes pagination super easy, so I’m happy about that. It seemed to take David a long time to get that right, so hopefully Kaminari makes that a little less stressful for me.

I expect to learn how to set up my database to index, paginate and sort books! I think I may also get someone who knows Python to help me fiddle with the exercise bot a little; the last exercise it told us to do was a 55 second plank, which is kind of a long time for the first time it’s telling us to do it. I also need to remember to bring my old yoga mat in, we have cold concrete floors that are not good for exercising!

SB Apprenticeship: Day 37

Cucumber tests!

Cucumber tests!

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

Yesterday I worked through a bunch of Cucumber tests. They’re kind of weird, sometimes the answer is dead simple, but other times it’s super complicated. It still takes me some time to figure out which is called for in each individual test, I spent like half an hour on the click one yesterday.

Simple, not so simple

Simple, not so simple

I’m also still not sure how complete the Cucumber tests are supposed to be. Is this like when we did Battleship at TIY, once all the tests are passing I’ll have a finished app? Brandon mentioned that I’ll need to have some Rspec tests in there too (that I’ll write myself), but I’m not sure what they’ll cover? I haven’t actually written any real code for this app yet, it’s all been installing gems and making tests pass. I guess it’ll all get clearer as I go, though.

Today I’m going to read more of the Cucumber book and then work on the bookstore app. I keep meaning to ask Kevin to explain scoring in bowling to me so I can work on the kata, but I always forget by the time I get home. I feel like I’m not accomplishing anything during my days, and that’s stressing me out. I think sometimes I have a hard time actually beginning projects — like, I have this feeling that if I just read this one more thing, or do that one more tutorial all of a sudden everything will fall into place and I’ll be the brilliant coder that everyone seems to think I can be. Unfortunately I don’t think that’s how it works, though. I don’t know. It’s really hard for me to get started, I never really feel like I have any idea what’s going on. Sometimes I ask too many questions about things that are actually easy and other times I feel like something’s got to be simple and waste hours trying to figure out a solution before asking someone. Yesterday I spent way too long trying to figure out how David knew to use ActionMailer in something, and when I finally asked it turned out that he had just installed a gem. Although honestly, I wouldn’t have even known that I needed ActionMailer if I hadn’t peeked at his code in the first place. Do you just learn this stuff as you go? Is there some intuition that I’m missing? I really like this job, and Brandon told me that I’m progressing at a good pace, but I feel like I’m behind and my stupid brain immediately goes to “you’re going to fail and they’ll never hire you and you’ll never get a job and you’re a miserable failure why do you even try anything new.” Which isn’t exactly useful in any sense. I’ve gotten better at shutting that off, but it’s hard when I’m sitting in front of my computer feeling stupid.

Sigh. I kind of feel like Rumsfeld’s 2002 beat poem:

“There are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns – the ones we don’t know we don’t know.”

I know there are things I don’t know, but what about all the things I don’t know that I don’t know yet?

I have no idea what I expect to learn today.

SB Apprenticeship: Day 36

I have blue hair, a red panda skirt and a job that doesn't care at all about either. I'm definitely adulting right.

I have blue hair, a red panda skirt and a job that doesn’t care at all about either. I’m definitely adulting right.

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

Why am I still having problems with Github? I’m ok with creating a new repo on the site, and I’m ok once I get it linked up to my laptop, but the process of connecting the two is fraught with indecision for me. I have to either look it up or ask every time. Sigh. It’s like everything involving me and coding: once I get started I’m generally ok, but getting started is always a big pain. I wonder how long it takes for that to go away?

Yesterday Brandon and I set up my project, got Devise installed and passed a whole bunch of the Cucumber tests. I didn’t realize that this was going to be similar to the Battleship project at TIY; they wrote all the tests and I have to make them pass. It’s still a lot of work, but there’s some guidance, and that makes me feel better. I still can’t really imagine *working* as a coder, like coming in in the morning and sitting down to program. Just knowing what to do. I guess that’s where Agile and meetings and stuff come in, but it’s all still a bit foreign to me. Devise is pretty cool, there’s a lot going on under the hood there and I think it’s going to make my life a lot easier. It was also easier to set up than I thought; there were a lot of steps, but the readme was clear and there was never a part where I felt lost or confused.

Today I’m going to read up on Capybara and work more on the bookstore, at least in between meetings. I signed up for the blogging task force, and there’s the initial meeting for that at 11, then at noon there’s a lunch and learn about the new HR policies. I’ll at least have the whole afternoon to work, though. I’m looking forward to being on the blogging task force, I’ve been enjoying writing here every day. I’m still not sure if I should be putting all that behind me and focusing solely on coding, but I guess I’ll figure all that out.

I expect to learn more about how Capybara works with Cucumber. The test suite I’m working on now is all the account creation stuff, so I think it will be fairly familiar.

SB Apprenticeship: Day 34

I finished it!

I finished it!

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

Yaay, I finished the Agile Web Dev with Rails 4 book tutorial! I skipped the last two chapters, because I didn’t want to bother with internationalization and deploying to a server. I was right yesterday, they wanted me to actually pay for instances on something like AWS, and I just don’t care that much about that tutorial. It was pretty rewarding to finish it, though. The rest of the book is a big deep dive into the various part of rails, which isn’t really something that you can read straight through, but it is super informative.

Today Brandon and I are going to pair and get started on the bookstore app. I was talking to Patrick about how I was actually pretty nervous about it because it’s such a huge project, and he had some good advice: instead of thinking about the whole intimidating project, break it up into small sections and think about those. I have a general tendency to miss the trees for the forest, so this is valuable advice. Today we’re going to set up the rails project and getting the authentication working. I guess it’s finally time for me to learn Devise! Yesterday we did a little bit of mapping on paper, I’m going to spend the morning filling that out.

Today I expect to learn Devise! We sort of covered Devise at TIY, but it was at the very end, taught by the TA and irrelevant to my final project, so I didn’t pay the attention that I should have. Time to make up for that!