SoCal Code Camp

This past weekend was the Orange County edition of SoCal Code Camp. This is the first Code Camp, and in fact, the first programming related function I have been to. I had no idea what to expect and came close to letting my nerves get the better of me several times. Thankfully, I mastered my anxiety and attended, because I had an amazing time. I met a lot of really awesome people and listened to a dozen or so incredible talks. The atmosphere was friendly and inviting and it was actually pretty easy to just start up conversations with fellow programmers.

Hattan Shobokshi is one of the organizers and probably the second most prolific speaker at the camp. I attended several of his talks, and every one of them gave me more pieces of knowledge to fit into my puzzle. On day 1, I listened to his JavaScript Simplified talk, where he explained closures, prototypes and promises in a very approachable manner. On day 2, he gave the talk I was most anticipating, Angular JS with ASP.NET MVC and WebAPI. My friend Chris and I are working on a project with those exact technologies, so I was excited to see how it all worked together. The session immediately following Hattan’s talk was cancelled and so we were lucky enough to convince him to stay and make it a two part session. It was very informative and helpful, and as soon as I have a chance to decompress and go over my notes, I am going to start applying the lessons I learned directly to my code.

Troy Miles was the first presenter I saw at the Code Camp and he set a high bar for everyone to follow. This guy is the real deal and his enthusiastic style drew me right into his talks, even when I was way over my head. He was also the most prolific speaker at the Camp (I think). I was at 4 of his 5 presentations ranging from intermediate JavaScript tips to Angular to testing with Jasmine and finally a long session on the Ionic framework (a mobile apps framework that sits on top of Angular & Cordova/Phone Gap). Troy was also kind enough to hang out after his sessions and answer questions and just chat about all kinds of programming topics.

The Ionic sessions were co-presented by Justin James, who made the drive from Arizona. He talked about the details of Ionic and his experience as a professional programmer. He also spoke a little bit about working on open projects (like the one Troy was presenting to show off Ionic) remotely with GitHub and the collaborative nature of modern indie programming.

Jason Weimann gave an awesome introduction to Unity. He covered both the 2D and 3D aspects of design and had a moment or two to showcase some VR. He highlighted how easy it can be to design with Unity and more importantly, how dead simple it is to package your games to different platforms. I enjoyed his easy command of the domain and friednly attitude to answering questions.

I wish I had more time to see Rob Richardson’s talks. I only managed to see his JavaScript and Node patterns and idioms talk. I’d love to hear his presentations on MVC, WebAPI, ASP.NET, web requests and, really, anything. I also only got to watch one of Daniel Lewis’s presentations, but I did get to interact with him several times outside of the talks. Like everyone else, he was genuinely friendly and willing to answer all kinds of questions.

More important than the presentations was the time I spent getting to know new people and talking about a wide range of programming topics. Josiah and I were at several sessions together and struck up a conversation about being new to the programming world. For the rest of the Camp, we would hang out between sessions and talk about the different things we were learning or what technologies we were using “at home.” Josiah has been much better about getting out into the world of programmers and already knew a lot of the people at the Camp. He has inspired me to find a way to start going to meetups and other gatherings.

I also met Jeff Neet, an indie game developer. Jeff has competed in several Ludum Dare events, and it was fun to talk about game ideas and the different tools on the market for game creation. Jeff, as soon as your domain name resolves, I’m going to check out your games!

All-in-all, it was an uplifting and encouraging event. it felt good to see so many people at so many different levels participating equally. I am almost constantly afraid that my ignorance is glaringly obvious, but, even if it was, no one seemed to care in the slightest. I had a few moments of almost zen-like peace where I would anticipate answers, even in the more advanced topics like Angular’s controllers and directives. It is empowering to see how wonderful the community is, and I look forward to being at many more of these events. I’m even toying with the idea of getting a presentation ready for the San Diego SoCal Code Camp in mid-late summer…

Thanks SoCalCodeCamp!

Advertisements

Learning Progress

First post in March… how is it already March!?

I noticed that I tend to drift between the aspects of my learning, devoting most of my attention to one branch at a time. Sometimes I blog a lot, sometimes I code a lot, and other times I “hit the books” a lot. Usually the increased focus on one branch leads to less time spent on the others. I am trying to find a good balance, because all three of those activities help me learn.

I enjoy talking about programming and about learning programming. The social aspects keep me motivated. Exchanging stories and ideas with others who are at various stages of learning to program helps me through the rough patches. Also, getting my ideas out, “on paper,” or in a screencast or video, helps me understand those topics better. Figuring out how to explain something forces me to look at it from another perspective, and almost always it affords me a much better grasp on the subject.

Actually sitting down and writing code seems like the best way to learn, on the surface. I can get too caught up in it though and instead of learning anything about the language or the design, I just fall back on the three or four simple concepts I know and plug away. It’s not a totally bad thing, but I need to keep pushing myself forward. I have been learning a lot of advanced techniques, I just have to force myself to start using them. Lambdas and closures and currying and all of the beautiful things about first class functions, all that stuff is rolling around in my head. The sooner I put it in my codebase, the sooner I can really understand it.

For me, “hitting the books” covers actually reading books, as well as perusing documentation and other people’s code, and especially, it means things like freeCodeCamp, Codecademy and Code School. In the last week or so, I revisited the level 1 Angular course at Code School (give it a shot, that class and several others are free) and then used the momentum to finish their just-released level 2 Angular course. I also jumped back into their JavaScript courses. I had stalled out midway through level 3. It is some pretty heady stuff, but I realized that I shouldn’t back off every time something gets tough. So, last night at about 10:30 PM, I finished the last exercise with some fun prototyping tricks.

My friend Chris Gomez pointed me at an article by Eric Elliot that shines some light on a few ways JavaScript really gets it right. It’s an interesting article that everyone learning to program, for web especially, should probably read. I realized that I own his book, “Programming JavaScript Applications,” and so, after reading the article, I cracked the book open and dove in. It is definitely not beginner level reading, but it isn’t so advanced as to be unreachable. I’ve only been doing this for a few months, and although some of the concepts are still not totally transparent, he does a great job of explaining everything. It also dispenses with the (boring) beginner stuff that you’ve probably read in the first three chapters of every other JavaScript text you’ve looked at. He is concise and knowledgeable, and his style is approachable and very readable. I have a feeling this is going to be a great reference book for me while I incorporate “real” programming methods into my repertoire.

Next up, I want to try the Best Practices course at Code School and jump back into the challenges at freeCodeCamp. I also want to continue my series on Test-Driven Development and finish up my blackjack game. I hope everyone has a productive and happy March!

Projects, projects and more projects

I had decided to take my mostly finished project, the backgammon game, and use the One Game a Month challenge to keep me moving forward. Things haven’t exactly worked out that way. Time has been at a premium lately and, while the game is mostly finished, in a lot of ways it is holding me back. I have been spinning my wheels trying to accomplish the final tasks in the scraps of time I have had. Progress is slow and it is sapping my motivation.

While all of that has been going on, I have been given a few leads that could, in the long run, lead to actual, paying work. A friend of mine who works at a small start-up told me that he might be able to hire me in the future if I can get a handle on all the basics (HTML, CSS JavaScript) AND if I know Angular. To that end, I have started hitting the AngularJS tutorials and online class type stuff, mostly the great series at code school.

Seizing on that, my mentor has decided that we are going to work on a project together. He will handle the back end and give me an api, and I will do everything else (with guidance where needed). We started Sunday evening with a long discussion about the functionality he’s looking for. Yesterday I worked on getting some bare bones of HTML and CSS going, along with a little itsy bitsy piece of JS/jQuery that performs some useless DOM manipulation. This morning I plopped together the Angular, dummied up some data (in JSON format, of course) and got it to appear on the page via an expression. Yay!

Even though it is at the earliest of stages and none of the code I have written does anything useful at all, it feels good to be putting all this learning into practice. I am still slow and have to reference my notes and the tutorials and the docs and bug my friends for help, but I’m getting there. I am learning the tools (I have maybe temporarily switched to VS Community, don’t worry JetBrains, I’ll be back, I promise!)