Saturday, April 26, 2014

“Whether you think you can, or you think you can't--you're right.”

Time for another update from Coder Camps!

To recap, this week we've been focused on server side programing, using C# to create MVP apps. For the first few days we could only send information to the browser. Then we learned (all over again) how to get information back from the user, but we had nowhere to store it. Refresh the screen; or just navigate to a different page on the same website and the info was gone. Yesterday we learned about Singletons - which can sort of serve as a way to preserve state, and therefore retain the user's info. But even that is still a temporary measure. Next week, with SQL I get full functionality back!

Aside from the frustration that came from not having all the cool frontend tools I'd learned about available to me, it was a great week. I learned about the differences between how frontend and backend programing work, more about the MVC concept, and so much more. I hit some personal limits in terms of my endurance (aka my ability to go without proper sleep) and adjusted accordingly. Despite all the learning I've done, this is just a drop in the ocean of what's out there to know and understand.

You can look at a fact like that in two ways - you could be daunted by the vast size of the unknown, or you could be excited by it. More than anything else, I think it's which of these attitudes a person adopts that determines their success in becoming a developer. Coder Camps has reinforced my belief in my own ability to learn and grow. And with that ability, theres no problem I can't solve in time.

There was a quote on a door in the old Coder Camps office:

“Whether you think you can, or you think you can't--you're right.” 
― Henry Ford


This is a very true thing.

Wednesday, April 23, 2014

The Halfway Point

I'm now officially past the halfway point at Coder Camps! At least for the main 9 week segment. After that I may be staying for the optional 3 week Masters program to work on a personal project.

The first three weeks was front end focused, learning Javascript, Angular and how to use AJAX calls and API's to perform CRUD operations (Create, Read, Update, and Delete) to a remote Nosql database.

This week and the next two we're back-end focused, using C# and a SQL database. We're working with Visual Studios and MVC 5, we'll also be incorporating Entity Framework.

After this phase is over my troop will spend three weeks working on a real-world App. At that point I decide whether to stay an additional three weeks to work on a personal project. I've got several ideas for projects, but honestly, it will come down to where I'm at in my job search.

I've already acquired a huge amount of knowledge; with even more still to come. Every day I create multiple apps and I spend at least ten hours either coding, learning to code, or learning best practices. In the last ten days I've entered into a constant state of semi-exhaustion.

Eat. Sleep. Code. That's the Coder Camps credo. What they don't tell you is that you may also dream about coding - which I've been doing lately. So it's really been Eat. Code. Code.

There is nothing more frustrating than dreaming about solving a coding problem. You feel like you are working hard, but its a dream so it really makes no sense and you never get anywhere. Still, it means my brain is working hard to incorporate all this new information, so I'll take it.

At the end of this experience I'll have spent 700+ hours dedicated to programing.  Will I be an expert? By no means. Will I have acquired many in-demand and job-applicable skills? Absolutely. Will I still have a lot to learn? Oh my, yes. Will I know how to learn what I don't know? You had better believe it!

Monday, April 21, 2014

Thank you Coder Camps!

The blog is back! We had a long weekend at Coder Camps and the timing could not have been better. I didn't take the entire three days off from coding and studying but setting asidethe blog, and Visual Studios (for the most part) really helped me to recharge and get ready for phase 2.

Speaking of which, today was the first day of backend development. We dove into C#, Razor, and .Net MVC. Talking about the differences between Javascript and C#  also led us into a discussion about interpreters, compilers, and CLR.

Today was another great example of why a place like Coder Camps is worth the money. Last year I was teaching myself some C# and I learned quite a bit from youtube tutorials and hacking away at my own projects.  But there are so many concepts that you can't fully grasp, or can't understand the importance of without the benefit of an experienced teacher giving you context and direction.

A quick and very simple example - I had seen the term namespace before, but I didn't really understand what I'd do with it. I was able to put together apps that worked just using classes, so what's a namespace good for?  Well I wasn't building web apps back then, and I certainly was not using MVC. Today, when we put a simple MVC app together the benefit (or at least one of them) was obvious from the start.

I doubt there's anything I'll learn at camp that I couldn't have learned on my own from the web and a few good books - but the time saved is tremendous! What I learned in the last three weeks would probably have taken me three months or more of self directed study.  Probably longer as I would have been doing so many things the hard way without knowing there were better methods available.

So thank you, Coder Camps! Without your program my dream of becoming a developer would still be just that, a dream. With you, its fast becoming reality.

Wednesday, April 16, 2014

Obstacles - opportunities in disguise

Tomorrow is the last day of phase 1 at Coder Camps. Here's a very quick video shows (most) everything we covered in the last twelve days:
Today included more Angularjs including factories and customer filters. In the last hour of the day I built up an app that yesterday would have taken me two hours, the day before that three, and last week I probably couldn't have made at all.

On day one, Coder Camps founder David Graham warned us our stress level at camp should be around an 8 (of 10) on a constant basis. The last five to seven days, mine sure has been.  Long nights, lots of coding, lots of learning, frustrating problems, gratifying breakthroughs, copious amounts of caffeine, and not enough sleep.

 And if I had to do it all over again, I wouldn't change a thing.

 Last night I breezed through most of the app I was building, only to get stuck on the last bit of functionality - building a feature where the user can select multiple items from a list and view them side by side in a comparison view.

I spent far more time working on that problem than I had on the entire rest of the build. In the end I had to surrender to the need for sleep, but not before I gained a much better understanding of how MVC controllers work than I had going into the project. I fell asleep thinking of different solutions I could implement the next morning. A couple of them were workable too; even though we learned a more elegant solution using an Angular factory today.

My point is, all that frustration and lost sleep was totally worth it - I learned more about Angular from trying to solve that obstacle than I had from creating two or three successful builds earlier. I can't wait to see what I don't know how to do tomorrow.

Tuesday, April 15, 2014

Just a little bit of Bytes.

Quick update today. We dove deeper into Angular, using filters, modules, and multiple views. This afternoon I wrote an app similar to ones we've created over the last few days - it took about an hour from start to finish which is a third of the time (or less) that it would have taken me without Angular. And the code we so short! 60 lines in my scripts.js file and only that long to enhance readability. Suffice it to say - Angular? I approve.

Last night I started my homework late, which wasn't good but did leave me awake at 2:00 am in order to see the awesome lunar eclipse.

Tonight I'll have my homework done early; still, staying up to get it finished last night was totally worth it - even without good sleep I was prepared for today's material and Angular is really clicking for me. Put in the work and your efforts will be rewarded.

Monday, April 14, 2014

Angular, MVC, and Game of Thrones

In the app - add a character and they are automatically added the to proper House, hovering over a character's name reveals their portrait.
Time for another update from Coder Camps! Last week we learned about communicating with a database and updating a web page without having to refresh the browser window using AJAX. Friday we learned how to using polling (and touched on websockets) so that a web app can check for database updates automatically without the user having to do anything.

To practice we made an instant messenger app that connects to any number of friends and checks for new messages every second. I sorted the messages by date, including my own, to form a message feed.

The homework over the weekend was to build out a Twitter clone with the following functionality:
Post tweets, maintain a profile, maintain a friends list, display a feed of friend's tweets that updates automatically, and display a list of your friend's friends that you can click to make them your friends as well.

I got all the major features up and running but late Sunday night I bogged down trying to get my app to upload a user's picture file (.jpg/.png/etc) to Firebase - the NoSQL database we were using. It was a good reminder that, whenever I'm spending a long time on a problem without making progress, I'm probably going about it the wrong way.  This morning I mentioned it to my housemates who then suggested the (in hindsight) very obvious 5-minute solution. And yes, storing your images in your database is usually the wrong way.

Today we got introduced to Angularjs and the MVC framework (although Angular is technically MV*). We built out a Game of Thrones page that lists characters by House - very similar to projects we did last week but with Angular the app was written in a fraction of the time and with a fraction of the lines of code.

Also for the first time we used AJAX calls from a library (Angular, of course) rather than using vanilla Javascript. Tonight for homework I'll be writing another similar app, including edit, delete, and search capability, using Angular.

Time is really playing tricks on me right now; because we've covered so much ground it feels in one sense like I've been here much longer than two weeks; simultaneously, because everything is constantly new and interesting, the time seems to fly right by.

That's all for today from Houston, talk to tomorrow!

Thursday, April 10, 2014

From proud, to humble, to excited for more

Yesterday I mentioned I was proud of myself for completing all the stretch goals from Tuesday. Of course, the next thing that happened was, I hit a wall. Last night's stretch goal included writing an anonymous call back function, amongst other tasks, with no more direction than what I just described. We've talked about callbacks before, and used one once or twice but its not a subject we'd really studied yet.

I did not complete the stretch goals. I did learn several ways in which you cannot write anonymous call back functions (or rather several ways you can write them if you don't mind them not functioning as expected).

Today we covered the subject in depth and I learned how to make use of them (and when not to make use of them) to make code more readable, flexible, and to help with separation of concerns. I also got to see some new approaches to DOM manipulation I had not thought of previously. We also learned how to write some helper functions that reduced our need to query the database for as much information, and as frequently was we were doing earlier in the week.

Finally, we started working on a 4 day project making a Twitter clone.  Each student in my class will create their own App including individual databases and UI's that will include our own profile, our tweets, a friends list, our friend's tweets, and the ability to see friends of friends and add them to our own friends list.

Our App should also allow us to edit our own profile, as well as edit and delete our own tweets. This one's going to go in my portfolio for sure. I can't believe how much ground we have covered in under two weeks!  Next week we dive into Angular.JS and the week after its time for backend and C#, which I can hardly wait for!