By Jason Land
Well hot damn, that was a hell of a first week at Origin Code Academy. As one of the students with some previous experience, I became the unofficial teaching assistant. I finally know what my old CTO felt like whenever I pestered him on Glip. My classmates made my brain sweat and commuting 6.5 miles round trip by bike made the rest of me sweat.
So here’s my first week in review:
Most everyone is worrying their ass off about how out of their depth they feel. Some students got very emotional about that issue and felt like they wouldn’t be able to keep up. Another cohort is in progress with us, though they’re eight weeks ahead. One of those students let us know that he had quit a well paying job to enroll in Origin and he had a family and kids. We also saw a video of previous graduates self evaluations of their first week and they all sounded like us (I don’t understand this, the first assignment was hard, how will I be able to cope?, etc), which was reassuring.
The biggest thing that helped us through is that the class is very supportive of each other. There’s 20 of us, which is kind of big for a coding bootcamp. But that also means there’s someone to go to at almost any time. I’ve asked for help from classmates fresh to coding and received great solutions that probably would’ve taken me hours. My takeaway:
CODING IS COLLABORATIVE
I did come across some curveballs myself. I’m used to grabbing data and displaying it on a page with little manipulation on the client-side. Even assignments such as a change calculator (telling the user how many quarters, dimes, nickels, pennies to give in exact change) stumped me. So there’s always something new for us to learn. Next week will put me squarely into newbie territory as we’re covering Angular.js, and that is a big scary monolith to me. Check in next week to see how full of stars it is.
By Jason Land
I remember from grade school that first days are usually an intoxicating mix of excitement and anxiety. I’d have thought that being 30 would put me past that, but my lack of sleep last night proved me wrong.
I’m known to lag in the morning so I wanted to start a routine early on (this becomes a recurring theme with advice from teachers and students in the other cohort). I woke up, checked my bicycle’s tires, showered, cooked a filling breakfast and pedaled off.
After parting with the largest check I’ve ever written (though still a bargain in my opinion), I met all of my classmates. There’s 25 of us so it’s bigger than a cohort normally is. What’s cool is how diverse everyone’s backgrounds are, though most share a lack of a technical background. As we went around introducing ourselves, I heard car salesman, aerospace engineer, chemist, interior designer, casino floor worker, electrical engineer, and a few retail/servers come up. We played two truths and a lie to break the ice, which is a favorite one of mine. Here are the three things I mentioned:
- I’ve been able to grow a mustache since I was 12.
- I guessed on my SATs and got a 1300 out of 1600
- It took me 30 hours to be born.
I’ll probably talk more about my class mates as the course goes on.
The other trait everyone shared was hope and faith that Origin Code Academy will help them change their lives. Since our instructor Cameron Willby mentioned that changing lives is his favorite part of working at Origin, I’d say our faith should be well founded.
Cameron focused today’s instruction on getting us to be in a frictionless work environment: teaching us Scrum, setting up time tracking to do burn-down charts, helping us get Sublime Text, Node, Git, and Slack in place. I’ve lucked out a bit and had all of those installed, so I helped some students get theirs setup too. I’ve been enjoying that for the same reason I started this blog: teaching is the best way to learn something.
Speaking of which, I got picked to deliver the first lightning talk. My topic: Scrum methodology.
By Ryan Wilson
It is 1:28 P.M. and I am more than half way through my first day of Software Development bootcamp. I have a great feeling about how things are going. I will admit I have a lot of anxiety about getting through the bootcamp and showing my best work. I feel as though there is so much that I need to learn and this is simply the first day. Two students from another cohort came in this morning to share some of their experiences with us. I found their words very encouraging. They told us that they had very little experience with software development, but they are now in week 10 of their training and feeling like they have come so far. They mentioned that if they could do this, they felt anyone could. It was so nice to hear such encouraging words on such an uncertain day. I just completed the majority of the work assignments for today and I am feeling good about that. Tomorrow a leaderboard will populate which will rank all of the students in the class based on a number of different variables. I can not wait to see where I stand!
As the title of this blog indicates, this is about my life, challenges, wins and goals as a coder, which I’m thinking about changing to “Developer”. I wish I could write in here everyday but one challenge any new developer in a bootcamp like Origin Code Academy will learn, is that time is one of those challenges.
It’s just ending the near of week two and we’ve already covered so much ground. I mean we have really jumped into the deep end and I’m treading water as hard as I can to grow the muscles I need to swim.
I went to my 1st meet-up last night after having a really hard day with AngularJS and I have to say it was really a great experience. I spoke with a lot of people from all levels of experience and told them about my struggles and listened to their stories and words of advice.
One guy I talked to that went to bootcamp in Seattle and was astonished when I told him we were learning Angular on day 7, his school didn’t even touch it till week 12 (their last week). And another student from a local school that was on his last week (week 12) had never even heard of it. This made me realize that by getting in deep now, I will have just that much longer to learn how to swim before I jump into the ocean of looking for work.
I’m proud that I shopped around and found the school that matched my learning style and needs.
To anyone out there thinking about going to a code bootcamp, I can’t emphasize enough to find one that fits. It’s going to be long nights no matter where you choose, so make it worth it!
By: Dangermin Field
Today I embarked on a path that I’ve been seen in my horizon for years. I started computer coding. I’ve worked for over 18 years as an electronic technician and have always been curious about learning how to program the devices that used & repaired.
Today was challenging, I had to create a site that calculated a entered value (weight) by a selected value (planet gravity) and output to the user. It was simple enough but I learned the hard way that one simple letter/type-o can drive you batty. If you like to see what I built here is the Github Link.
Time to rest for the day and get ready for tomorrows challenges.
By: Karen Snyder
December 7 was the start of the twelfth week in coding bootcamp! It was actually not our last week; we still have class next week through Wednesday, which allows me more time to complete my Blog Aggregator capstone project.
I had some problems with Angular Material, but with Cameron’s help I was able to complete the front end. I also completed the basic functionality, so now I can add blogs to Blog Aggregator and approve the blogs for display, and then Blog Aggregator extracts the posts and displays them! I can also reject blogs for display, and delete them. A large part of the functionality is done, but there are still two parts to add: authentication, and periodic updating of the blog posts.
OAuth has reared its ugly head again… It would not be a good idea if just anybody could approve/reject/delete blogs, so I need to have authentication in Blog Aggregator. It was going to be the same type of user/password authentication that I had implemented in a previous project, although there might be some complications due to the repository layer. However, Cameron said that he would like to be able to log in with Google+, and potentiallyFacebook. This was a great real-world example of the product owner changing the requirements! So I had to research logging in with external providers, with the help of Zak, who is also adding external login providers to his Quack project. I’m focusing on getting the Google+ login working before I work on the Facebook login.
It took over two days to try to understand how external login authentication works, and add the necessary code. Then I had to learn how to use Azure, a cloud platform that can host Web applications, to host Blog Aggregator. The reason for needing Azure is that when an external provider receives a login/authentication request from a localhost address rather than a secured https: type address, it does not allow the request. I got to the point where Blog Aggregator sends a request to Google+ and receives an access token, but then there was a problem in the Blog Aggregator API when processing the token… still working on it!
The other part that I need to add to Blog Aggregator is that after a blog is added to Blog Aggregator, any new posts to that blog need to be added to the database. This functionality can be handled by an Azure WebJob, which provides a way to schedule a periodic task. After studying a lot of Azure WebJob documentation, I started on the WebJob part of my project. I did complete the service methods to update the table, but I’m having trouble with the interaction between Simple Injector and the WebJob.
This week I did take a small break from coding to teach at Franklin Elementary School for the Hour of Code. This is an event that aims to introduce students to coding concepts, with the aid of a Star Wars tutorial that uses drag and drop blocks. I taught a sixth-grade class, with the help of the teacher and other volunteers, and the kids loved it; they didn’t want to stop for recess!
By: Karen Snyder
On November 2, I began the seventh week at Origin Coding Academy. Hard to believe the first half of coding bootcamp was over, and I was starting the second half! In the beginning of the week, I learned more about passing information to the different states of a single-page application, and also learned how to use the AngularJS $resource factory to simplify access to the PropertyManager API, resulting in much less code than I had needed in KnockoutJS to access an API. The $resource factory can be used only with RESTful APIs, and luckily the APIs that I write in this course are RESTful. After that I was able to complete the front end of the PropertyManager Web application, including showing all properties, tenants, and leases, along with the functionality to add and update each.
Then I started earning about authentication and authorization, which is a huge topic that can’t be completely learned in one week, but it is possible to get some understanding of the subject. I was assigned the tutorials here, written by Taiseer Joudeh, which illustrate how to authenticate users in a Web API and AngularJS front end with a token-based approach. The token-based approach means that the server assigns a token to a validated user. The client saves the token and sends it with each request that the user makes to read or write data. This approach helps the client to share the server load in authentication, and the token is more simple to store than cookies.
After going through the tutorials, the next project was to use the knowledge gained by adding authentication to the PropertyManager Web application. I had to modify the Web API to add authentication, based on what was taught in the tutorials, by using ASP.NET Identity and Owin middleware packages in order to register new users and validate user credentials to generate tokens.
I learned how to use the Chrome Postman extension to verify after making the changes that it was not possible to access the API without first registering as a user and then obtaining a token to send with the GET or PUT to the API.
Then after verifying the the back end authentication was working, I added authentication to the front end. I added a login and registration screen to the front end of the PropertyManager Web application, along with a logout button and a display of the logged-in user. When trying to log in with the front end, I initially ran into some problems with Cross-Origin Resource Sharing (CORS), as the default is that the API does not allow requests originating from a different domain. These problems did not occur when testing with Postman, as requests sent by Postman are not interpreted by the API as originating from a different domain, however requests from the front end are interpreted as being in a different domain. I made some changes in the API to allow CORS and was able to proceed with the front end changes.
I also learned more about how to validate in AngularJS by using components of theinput directive. Cameron explained to me that rather than disabling the submit button if a field is invalid, it is a better user experience to allow the user to complete their typing and click the button to submit, and only then to display any problems with the input data. I added validation logic to the login, register, and add property/tenant/lease screens, such that when the user submits the form, any required fields that have not been filled in are highlighted in red with a message underneath stating that they are required.
The guest speaker this week was Jim Milton from Portfolium, which is a site that allows you to build an online portfolio of projects. He explained the best ways to leverage our portfolios to make us more attractive to recruiters and prospective employers. Now I need to improve my portfolio according to his suggestions!
By: Zak Dietzen
I ended up getting a slight cold and it really drained all of my energy this past weekend. Despite the small setback, this week has been awesome! I felt like I was completely lost last week working with Knockout, but now Zak is back! We learned about an alternative to KnockoutJS this week, and that alternative is AngularJS. Angular has been so awesome to work with and is very powerful. I found it much more structured and less chaotic than Knockout. I would love to never work with knockout again but I know that won’t make me a very good developer. So, I really would like to go back and study it more.
I am really glad we went back and created another API using Entity Framework this week and introduced AutoMapper. AutoMapper was really awesome to work with and made creating databases a lot easier. I felt like making the API this time was a lot easier than the first time we made one. All the extra tools we have learned since then have been game changers.
It really does amaze me how far we have all come in 6 weeks. We are learning so many tools and they are getting sharper and sharper each time we use them. It is also unbelievable my time at Origin Code Academy is already halfway over. They say time flies when you are having fun, I can say with confidence that is true! I can not wait to see what the next 6 weeks brings.
By: Karen Snyder
Cameron explained that Knockout JS uses the MVVM (Model-View-ViewModel) pattern, which consists of the Model (application data such as back-end SQL tables), the View (HTML/CSS files for the web page structure), and the ViewModel (interface between the Model and the View, implemented by Knockout JS functions in this case).
Then it was time for the first project of the week, the Change Calculator that I had already done in C# as a Console and WPF application, but this time implemented as a Web application. It was a good way to become familiar with how to set up the necessary folders and files, and what tools can be used to make the process more efficient.
I learned how to use the Bower tool to automatically download files and place them in the appropriate folders, so I don’t have to manually download the files for each package that I want to use in my application. However after the files are downloaded, I still have to edit the index.html file to include them. There’s probably a way of automating that, I just have to find it!
I became more familiar with using Bootstrap, which provides ready-made components that can be used on a Web page. This enables you to set up a Web page in a lot less time than if you had to write all the HTML/CSS for each element yourself. I was also pointed toBootswatch, which provides themes to enable changing the look of a Bootstrap-built Web page quickly and easily. I think it makes sense to use time-saving tools like these, as they help to get Web pages set up quickly and efficiently with standard components.
Armed with this knowledge, the next project was to build a Movie finder Web application, using the Open Movie Database API. The database includes TV shows in addition to movies, so I built an application that enables searching for only movies, only TV shows, or both. I was starting to get more comfortable working with front-end design, and using Bootstrap and Bootswatch, as well as my own custom CSS file, to improve the look of the Web page.
Then it was finally time to work on the front end for the LargeBank API that I wrote last week, meaning that I would be completing a full-stack Web application and I would be a full-stack Web developer! I learned that it was necessary to make a change to the LargeBank API involving CORS (Cross Origin Request Security), in order to enable the Web application to use the LargeBank API to get access to the LargeBank database.
Our guest speaker this week was Nicholas Head, the Director of Software Development atHireaHelper, a company that helps you to compare prices for moving companies, and book a truck or moving company. He is a self-professed computer nerd/geek, who started programming at a very young age, and has had a rewarding software development career without a college degree, although he was told in high school that was not possible. He gave us an overview of the software system at HireaHelper, explained the daily routine of a software developer, and advised us on how to become awesome software developers!
Then Cameron assigned us the weekend project, a full-stack Web project to implement a Guestbook that displays messages and allows new messages to be added. The project requirements including setting up the SQL database, writing the API for the database, including a unit test for each method, and building the front end with Knockout JS. I decided that my application would be for visitors to Iron Gym to leave comments about their awesome workouts!
I got the SQL database and the API including the unit tests done on Friday, and yesterday I started building the front end. This was the first project where I used images on the Web page, so that was a learning experience too, finding Websites with images that were either not copyrighted, or were licensed in a way that I could legally use them (e.g. Creative Commons licenses). I completed the basic functionality, along with adding some animation with the help of animate.css, but I still need to do some tweaks!
Subscribe to Origin Code Academy News
Where to find us
350 10th Avenue
San Diego CA 92101