Code Haven

My Big Nerd Ranch Diary

I took vacation to attend the Big Nerd Ranch iOS Bootcamp last year. It was my favorite vacation ever. That’s when I knew I was on to something.

Today, I start Hacker School. I’m taking this moment to look back and share my Big Nerd Ranch diary. Every night in rural Georgia, I came back to my cabin in the woods and wrote my impressions of the day. Here’s what happened during that week:

Friday

I’m in my cabin after Arrival Day at Big Nerd Ranch — I’ve been anticipating this trip for about a year but wasn’t sure what to expect. I’m impressed so far.

First, the staff at Historic Banning Mills are heroic. Although I grew up camping as a Girl Scout and once could survive on Mountain Dew and Skittles, I am a city girl at this point in my life and had a health crisis that scared the Skittles right out of me. The thought of spending a week in the woods eating hush puppies from the lodge kitchen didn’t thrill me.

When I asked about food, Big Nerd Ranch staff said they would ask the kitchen at Banning Mills what they could do. The kitchen said if I could ship food direct from a provider to them, they would cook it for me. That scored about 1,000 points right there. I used Boxed Greens, which ships organic food nationwide overnight. The food arrived a few hours before I did.

THEN the kitchen staff kind of got into the idea. They said they wanted to buy more food to complement the contents of the box. They’ve considered offering an organic option for students, so I think they viewed this as an experiment. In return for their awesomeness, I gave them carte blanche to create whatever seemed interesting to them. My first meal, this evening, was delicious: a kale/peach/cucumber salad, followed by salmon over lentils with kale, tricolor peppers, and onions. (The regular food also looked tasty — salad and then herbed chicken over mashed potatoes with asparagus.)

Now I’m in the cabin, relaxing. Speaking of the cabin, it is huge and gorgeous.  More good things about today — the wonderful shuttle driver at the airport who did not leave anyone behind, and my fellow classmates, who are friendly. I’m looking forward to spending a week getting to know them better while my brain gets a workout in the class. It’s a challenging (grueling?) schedule, but I’m ready and plan to make the most of this opportunity.

Which means I’m going to sleep soon. More tomorrow.

Saturday

Class today was surprisingly easy and doable — but I am so glad I worked my way through the BNR Guide to Objective-C Programming last year! Struggling with this book over four months helped me rush through half of it today. We cover the other half tomorrow. If I’d walked into this class with no programming experience at all, I’d be in trouble on Monday, when we dive into iOS apps.

I still may be in trouble on Monday. The reviews I’ve read say the pace picks up fast then, so the fact that I’m finishing challenges quickly puts me somewhat at ease, since I may be able to keep my head above water on Monday and Tuesday. After that it’s anyone’s guess, because at some point we will start covering material beyond the point I’ve reached in my BNR iOS Programming Guide self-study. Then I’ll be learning entirely new stuff. And that takes longer, but we’ll still be flying through the material. I’m hoping that by getting the basics down well in this weekend intro, I’ll be able to survive through the week with some understanding and real ability to get the most from the class.

Also, I learned that there is an advanced book for the advanced class! It is, sadly, not available on Amazon or in any bookstores. Another reason to possibly take the advanced class later this year or next. I’m hoping that between now and then, I can dive in and create some real apps for free on the app store, just to test the waters and see what happens.

Anyway, more tomorrow. I was surprised not to find myself tired or burned out by 9:30pm, when I came back to my cabin. Maybe it’s a good sign, but I’ll wait and see how tomorrow goes. Food was delicious, as it was yesterday, but I am afraid my statement that, “I eat fish,” was received as, “I eat fish at every lunch and dinner.” In truth, I eat fish a couple of times a week. If fish continues to appear at every meal, I may have to say something — but what can I really say, anyway? They are preparing custom organic meals for me! Today some little potatoes and wax beans appeared — I think they are shopping for me, to supplement the stuff I sent in the box. Amazing kitchen, amazing place so far.

More tomorrow.

Sunday

My brain is starting to get tired. We rushed through many topics today, and while I understood most things, they are starting to jumble together in my mind. I’m hoping my mind can sort it out by the end of the week, and that I don’t end up dreaming all night about coding, because that would be about 20 hours of coding per day, which is a lot more than 12, which is what we are essentially already doing.

Today we finished the Objective-C book and I reviewed the documentation for NSArray, NSMutableArray, and NSDictionary. Tomorrow we dive into iOS Cocoa Touch programming.

I am loving the class, despite my brain-whir, and found myself wishing I could attend for two weeks or a month and really delve into more and more advanced topics. We’ll see how I feel on Thursday and Friday; if I still feel the same, this may be amazing for me.

The classroom is light, bright, and free of awful bugs. There were some small winged creatures on my desk this morning, but I let them be and they flew away (or my neighbor squashed them while I was in the bathroom).

More good conversations with other people who are here to learn; I love being in a room full of people who are mostly there by choice, since the attitude is amazingly good and therefore so is the experience overall.

Organic food from the kitchen continues to be good, although also salty; today I learned that this is not limited to my dishes. All of the food is very salty/spiced. I keep drinking water; can’t bring myself to complain about it. Lunch was shrimp escabeche — over red cabbage with a tomatillo sauce (I’m not sure what was in the tomatillo sauce, but it was awesome). Some delicious cauliflower with dinner, and nicely cooked yams, plus more fish. I don’t know if I will eat fish for a while after I get back.

It rained today so there was no nature walk. I did see zip-liners breezing past through the pouring rain.

More tomorrow.

Monday

Day 4 of my adventure, Day 3 of class. This is where the blogs I’ve read have dropped off, and now I see why. We covered a prodigious amount of stuff — nearly 200 pages of the iOS Programming Guide. I am getting a better understanding of some things that confused me the first time around, but I still wish I had an extra day to put it all together — the basics, the new techniques — but we just keep steamrolling forward. I don’t have time to do all of the Challenges in the book, and I really wish I did, because I’m learning a lot and I’d learn even more then!

I think I’m keeping pace reasonably well. A few people are behind me, some people are ahead of me who have a lot of coding experience, and some are about on pace with me. I think this is a marathon and not a sprint so I’m okay with it.

I do feel gratified doing something for my own self-improvement that is also productive and useful, potentially, for others who might use my apps someday. I hope I can build a lot of productive and useful apps upon returning home. I certainly feel like I’ll have a running start.

This is a good environment for learning. I have almost no time to myself, which is weird, but I’m getting a lot done and reminding myself that this is temporary and necessary. What I am getting is time to concentrate, even among others, which almost never happens. I forgot how much I enjoy super-focused days.

The food remains delicious — and today it was not salty, since when they asked me what I wanted to eat, I said I would eat anything they made for me but please to go light on the salt. It was a great food day.

It was a great learning day. I wasn’t tired at 10:15 and only left because I knew I had to get some sleep to keep up the pace for the remaining days here. I found a centipede in my bed when I came back, so I called to ask the front desk if it was poisonous. They said no and also sent a nice staff guy to pick it up and remove it from the cabin. It was a nice little creature, I guess, if I were used to creatures.

More tomorrow. Bedtime if I want to get a full 7 hours of sleep. (First night: 9. Second night: 8.5. Third night: 8. I see the pattern. It stops now.)

Tuesday

Unbelievable amount of learning happening today. I’m starting to connect the dots, and know why I need to make a change. Even when I make a mistake I understand what the mistake was after it’s pointed out to me. I still make mistakes nearly all the time; but I also do some really cool things, like find a method the instructor didn’t know about, and try to figure out how to make it work; or set up new functionality to make things more efficient — and it works!

I’m a little bit on overdrive and finding it hard to sleep, but it’s good — it reminds me that it’s still possible for me to feel alive when contemplating work tasks, and to concentrate hard on something for several days at a time. I spend most of my regular workdays so interrupted by multiple tasks that I feel like I never get anything done. This is a refreshing change. At 10pm tonight when I still wasn’t physically or mentally tired, I realized that this is something that’s been missing from my life for a while.

I’m going to sleep now so that I can function tomorrow morning. I want to hit the ground running — again.

I am in nerd heaven. I think I may have tapped into something really important for me — other nerds.

Wednesday

Today was the first day I felt tired, and I struggled to keep up. We were on a rushed pace to try to make up some time, since we’d fallen behind by about one lecture. By day’s end, we were caught up — but that meant about an extra 2 hours of time. Lectures ended at 8:15 and I wasn’t caught up until 10:30. Lots of other people were there too, and we were kicked out of the learning room around 10:40 (after a few well-deserved games of Typeracer).

There was one point in the afternoon when we were implementing an involved piece of code that only worked on a single image thumbnail and only on the iPad, and I just realized that if I spent time to understand what I was doing I would never get to the *really* cool stuff — Core Data and touch gestures — so I just started typing. Type type type. I implemented the thing, realized I might need to look back at this someday, and moved on.

At points during the day I could hear the instructor talking but couldn’t focus. Maybe it was just an off day for me; but I think my head is so chock full of new iPhone programming knowledge that it needed a bit of time to process it all.

I’m going to bed now to give myself the best chance of recovering and hitting the ground strong tomorrow. I’m still keeping up with the class, but I don’t feel the sense of mastery that I felt yesterday (and yes, I realize that mastery is a good way away — but I was putting all the pieces together yesterday).

Thursday

Back on track today. We went at a slower pace, I absorbed nearly everything we covered, and I was able to implement some pretty cool apps, especially one that allows drawing. I now have the skeleton of something I actually want to implement when I get home. Exciting!

Class was fun but I can feel the pace winding down. I’ll miss my fellow classmates but have enjoyed the opportunity to spend a week with other nerds doing one of my favorite things on Earth — learning.

I’d love to be back for the advanced course in November, but we’ll see how the year goes. Will I use these skills in the next six months to build apps? Will I push through the frustration when I can’t make something work, and figure out how to persevere, work through the syntax and search the documentation (and Stack Overflow) to find solutions?

We’ll see. More tomorrow — and the next day, I hope.

I’m ready to go home but also not ready. I did better in this class than I expected when I walked in the door. I want to put my new skills to good use and produce apps that are productive for users and for me.

I’m a Big Nerd.

Friday

Back home. We had class until 12:30, then lunch and then quickly piled into the shuttle back to the airport. I spent a few hours waiting for my flight there and then got home around 9:30.

I expected to feel mentally drained and tired, but I feel mentally turned on instead. This is awesome. It says to me that I did the right thing, and I love feeling this way. I’m going to keep working on the programming at home, and see what I can struggle through and make in terms of apps. I feel like the BNR class gave me the tools I need to keep learning on my own, and to work out problems when I run into them, because I’m starting to understand the underlying patterns and logic of programming.

Starting to understand. That’s key. There’s a lot more work to do — but I think I’ve got a running start. Now I just need to keep going.

FacebookTwitterGoogle+Share

DefCon Notes from a Patio

I found a note I wrote at DefCon in 2006. It’s on Mandalay Bay stationery (yes, because I had no idea where the Riviera was, I stayed at the Mandalay Bay. The upside was that I got to explore the entire Las Vegas Strip).

With HOPE X this weekend, it seems time-out-of-time timely, so I’m sharing some of what I wrote on that paper:

I’m sitting outside on a sun-heated patio, hoping I wore enough sunscreen. I’m at a self-imposed break in the conference action and exhausted, but not ready to give in and go back to the hotel. I’m loving every minute of this. Here there are people who are questioners, who rarely take anything at face value and aren’t here just because work requires them to be here. They all have spent considerable time and effort to be here and learn.

Las Vegas is a facade. I knew this, but it’s different to be here. I’m seeing one Las Vegas — the fake one — but there are four or five different other ones, I think. I want to see the Vegas where people really live, the one where, I’m told, fewer people than anywhere else go to college. If I were 18 and could make reasonable money as a dealer in a casino or unreasonable money as a dancer, I wouldn’t want to go to college either. When I was 28, I might feel differently, but it would be difficult to start over. That’s what I imagine, though I don’t know.

Vegas is lights and lights and fake shoes and gambling and trams and great bathrooms. Vegas is limbo. Vegas is hope. Vegas is faith, Vegas is a soul, in black on neon.

Now I’m late for HOPE X. Back to Manhattan to see what talks I can catch. And stay far away from nerf darts.

Hope X and Hacker School

Yesterday I went to Hope X, a conference I’ve meant to attend for years. The strange thing is that I lived maybe 10 blocks away from Hope for years. Now that I no longer live there, I made it.

I got hit just above the eye with a nerf dart. True story.

The conference is for makers but also has a journalism focus that appeals to me.

I was not the intended target of the nerf dart.

The week was incredibly productive, but not the way I intended. I was at the beach but never went to the ocean. Instead I did some low-level C work with Zed Shaw’s Learn C the Hard Way and worked through some of the Coursera Hardware-Software Interface course, which is amazing. There’s something about getting down with the bits and the bytes and the bauds that evokes the scrolling text of my very first BASIC program in third grade, and the endless efforts to draw colorful graphs on the screen. VLIN. HLIN. My brain actually enjoys this memory.

I didn’t focus on the flashcard app, due to a weird experience with expected help not materializing. I’ll need to tackle the remaining snags by myself, on my own time, to finish the app. The good thing is, I believe I’m creating a solid infrastructure for flashcard-based learning that can be repurposed for many types of content.

What I did instead is prototype a how-to-program video series for true beginners. As an advanced beginner myself, I can still remember what I didn’t understand — and how I wish it had been explained. I wrote a script last week, so when I saw a call on Monday for Lightning Talk topics at HopeX, I signed up. I had no video series ready. So I got to work, recorded three episodes and published two, and gave my Lightning Talk yesterday.

I’m surprised how nerve-wracking the talk was. I’m used to presenting to high-level executives and managers or to industry groups, but presenting to the community feels different, more raw and exposed. I got good feedback afterward, so I think it went reasonably well, but it was much scarier than expected. I also loved it. I’ll look for more opportunities to get more comfortable with this mode of sharing, since I normally love presenting.

I went to the eye doctor this morning and he said I’m fine. I hope I believe him.

Now I’ve just moved into my Brooklyn apartment. Me and my suitcases are settling in. I love having no stuff, because I don’t have a lot of unpacking to do.

Next step is dinner. With other Hacker Schoolers, because I start Hacker School on Monday. I am so psyched and excited to have gotten into this program. It’s going to be intense, productive, and hopefully unforgettable.

Day 12: Carousels and (Alt)Conferences

I’m sitting near the Leroy King Carousel in San Francisco, typing this blog post in the sun while drinking coconut water.

It beats working under fluorescent lights in my cube.

I spent the past three days going back and forth between the Children’s Creativity Theater and Jillian’s restaurant, which are hosting AltConf near Apple’s Worldwide Developer Conference. WWDC has grown so popular that Apple moved to a lottery system this year, so many shut-out developers have chosen to spend the week meeting new friends and learning new things at AltConf instead, which is free.

I love the conference. I’m not such a party person, so I’m more comfortable meeting people during the day, one on one over tea, coffee or sunshine, rather than drinking and forgetting names over the roar of a band.

The great thing is that AltConf and WWDC provide both types of venues for meeting people and having fun.

The coolest part of AltConf for me, besides meeting new friends, has been the AltLabs at Jillian’s. So far at the AltLabs, I’ve:

  • Gotten advice on a problem with how UICollectionView scrolls horizontally in my flashcard app (solved Monday night by working with my awesome Thinkful mentor, hurrah!).
  • Added accessibility features to my flashcard app. This took about 15 minutes, compared with the hours it would have taken me to investigate these features on my own.
  • Downloaded the Philips Hue SDK (software development kit) and understood how it works in 40 minutes, compared with the days or never it would have taken me to explore this on my own. Began customizing a basic app and learned where to find help in the guidelines for developers.

I’m also enjoying San Francisco itself, a city I love visiting. I’m staying in a quiet neighborhood away from the conference, which is less convenient but also a lot cheaper. It’s been relatively easy to get downtown in the morning, even with the MUNI workers’ pseudo-strike-sickout Monday and Tuesday. Less easy to get back home, but I expect the situation will improve with more buses on the road now.

It’s still cold here when the wind blows, consistent with my experience of San Francisco in summer. At least the haze has cleared and the temperature is higher now. A few dozen miles away, in Cupertino, it’s 83 today. Here? 64.

Jacket. Sweater. T-shirt.

Coconut water. Sunshine.

Day 10: AltConf Adventures as Swift Launches

I woke up in Pacific Heights around 5am, jet-lagged in my favor for once. Into a cab at 5:50, quiet streets all around, and arrived near the Moscone Center just after 6am.

Crowds queued outside Moscone West, waiting for the WWDC keynote. I was attending AltConf, a free event for developers without WWDC tickets to network, learn and have fun.

The mood at AltConf was exuberant throughout most of the two-hour keynote, turning to anticipatory dread when the crowd  realized the end of Objective-C was nigh, then overcome by relief and curiosity when Swift appeared to be a useful replacement.

I say “appeared to be” because I’m still reading the Swift iBook released by Apple today. Still absorbing, learning, and seeing a lot of work in my future to master this new language. But looking forward to understanding and then mastering it.

Food-wise, today was half disaster, half dream. I started the day with a nutrition bar and a tasty burrito, followed it with burrata mozzarella on toast, then had an organic egg crepe, organic vegetable juice, a muffin, fried polenta sticks, kale salad, almonds, a pack of organic raspberries, and half of an organic chocolate tart.

Come to think of it, I ate a lot.

Tomorrow: Less food, more code.

Day 5: Racing Ahead, To What?

Yesterday was excellent. I finished reading Effective Objective-C, a book that improved my coding instincts despite my newcomer status. To wit:

  1. I find myself more open to the idea of using blocks;
  2. I consider how to move as many properties as possible to the .m file’s class-continuation category, instead of leaving them in the public .h file;
  3. I name my objects and variables more clearly;
  4. I have a good conceptual understanding of memory management;
  5. Probably several other things I don’t consciously remember.

This book is also so excellently produced that I even enjoyed turning the pages and noticed the quality of the ink.

I also finished reading Apple’s Mobile Human Interface Guidelines, which helped steer me away from implementing a horizontal picker control — an inelegant solution for helping users navigate in my app. Instead, my awesome Thinkful mentor let me know about Collection Views, and I’m looking into those now via Apple documentation, the Collection View programming guide, and WWDC slides.

This highlighted an important principle for me — I knew I was doing something not-good in implementing the horizontal picker. I felt like pieces weren’t fitting together, like I had a toolbox with half the tools missing. I want to remember this feeling, because it probably means “wrong track” most of the time. The sooner I  recognize it in the future, the less time I’ll waste.

Caveat: I know there are times when I might not have all the information but am actually on the right track. In my experience, the right track feels different, because the new pieces of information I stumble across tend to make sense across the fragments and illuminate the spaces in between.