Today was incredible. We were the first to present this morning, and everything went smoothly. I felt confident in our group and what we had to deliver. We kept the time short enough, and there were a few questions about how the app worked, so it was nice that there was interest. I'm ready. Ready to be finished with DBC, ready to return to the real world, ready to graduate and start looking for a job, ready to be finished with this project and start working on another one. I've been feeling this way for the past few days now, but wasn't really sure how to put it into words. I don't think I'm getting burnt out, because the first thought I have when I imagine the day after DBC is getting started on another project. I also don't think it's just this final project, since there's a lot for me to be proud of, and my fingerprints are all over it. I really think it's just my brain telling me it's time to move on to something new. Feature freeze tonight, so there was a lot of hustle to make sure everything we wanted to include in our app was already up in some form on the site. Not really too much trouble for us, though, since we've been working on portions of the site from different computers the entire time. We just had to integrate everything into one app. Our little weather app is really starting to come together. We've built this awesome one page site that uses jQuery to slide in pages from different directions, so each slider will have different graphs that compare the weather of two different cities. I'm sort of working on adding a section that gives other information about the city, including activities, restaurants, pictures, etc. It'll be nice if it comes together, but the core feature of the site is the weather. This weekend was action packed, but now I'm beginning to feel the drain. Our team agreed to core hours to work on the project, which means we're at DBC from 9-6 every day, including weekends. No big deal, but I'm definitely noticing the lack of break time. We managed to get most of the database seeded, and I'm pretty much finished with the routes that will be used to get data to the front-end. There was a unanimous decision made not to use React or Node/Ember on the front-end, so we're now building a Sinatra website that utilizes Rails for the back-end. Nothing changes for me, but it makes it easier for the front-end team to create a more polished product. Well, we've already pivoted on our app idea, but now I'm really beginning to be excited about it. We talked for a bit about the direction we expected the app to go, but realized that the market is flooded with every type of weather app already. What did we want to create that would bring a unique touch? Well, today kind of sucked. Not all of it was terrible, but enough that it's kind of spoiled the rest of the day for me. We delivered our pitches to the entire school today, and man, there were a lot of pitches. There are 28 of us, and there were 28 pitches. Some people didn't pitch at all, but some people pitched two or even three different ideas. I even gave a few of my extra ideas out to people who hadn't planned to pitch. Everything went well, and there were a LOT of good ideas. However, there were quite a few ideas that seemed like jokes or were poorly thought out. No big deal though, since there were plenty of good pitches to choose from. I'm going to graduate DBC. I was pretty confident that I would, but after destroying today's Assessment, I can breathe a long sigh of relief. Not only did I get through all of the test's requirements, I had time to go back and add extra functionality to some of the sections, just for fun. I've still got a lot to learn before I'll feel like a confident web developer, but I've now learned everything that DBC has to teach me. All that's left is to complete a final project and then actually find a job. I am officially a junior developer. We presented our Thunder Talk on Server Initiated Communication first thing this morning. I feel like it went really well, and I'm looking forward to using FireBase on my final project, or on another app in the near future. We talked about how regular server/client communication works, how SIC has improved that, and some of the technologies that utilize it. FireBase is the best known one, and it's especially useful to us at DBC because it's fully supported by several different languages and frameworks, including Rails. I spent the weekend accomplishing almost all of what I set out to, though there wasn't enough time to study for the Assessment. Instead, I finished my portion of the Thunder Talk on Serve Initiated Communication and finished decoupling my Stack OverFlow clone in order to present it today. I'm planning to have a code review on Tuesday night with a few people, so that should be sufficient preparation for the Assessment. Today was all about decoupled architecture. For the uninitiated, decoupled architecture means that your back-end, or database, is a separate app from your front-end, or client. Everything you create on the website gets sent to the back-end, which interacts with the database, sends the message back to the front-end, and displays the information to the user. This is a very common practice, since it allows multiple apps and services to access your database separately from your own app. This morning's lecture was on JavaScript templating. There's plenty to talk about in this realm, and next week we'll actually be diving into some advanced JS challenges. This was just a high level overview of the available frameworks. We've already discussed Handlebars, which is definitely on the low-powered side, but there's also Angular, Backbone, Express, etc. The list goes on, and if you wait six months, there will be a whole new list. Ugh, AJAX. Why must you be so cruel? I started the day excited about the possibility of UJS, but that dream was quickly squashed this morning during our lecture. My teacher walked us through UJS and how to use it, but then explained why it would not be best practice, since it's not heavily used in the industry and it doesn't separate concerns out very well. Rails is awesome!... Is something I would say if I understood everything that Rails is doing at any given moment. I do love how intuitive it is, but being so used to Sinatra, it's still frustrating the way Rails is so rigid, while still providing for every possible need the developer might need. It hit me today that I (potentially) only have three weeks left of Dev BootCamp. In those three weeks, I will learn Rails, which is a very powerful Ruby framework and the whole reason I'm here. I'll also learn more advanced JavaScript and some new AJAX calls inside Rails. After an assessment in the middle of next week, I'll have a final project to work on and present. Then, the real work begins. I'll actually have to find a job that will allow me to continue to develop my skills. Today was action packed, which of course means that not much real work was accomplished. With Friday morning check-in, Phase 3 final project presentations, and Phase 3 graduation, we weren't left with much time to work on our Phase 2 final projects before it was time to present. Luckily, I was already finished with mine before the day's festivities began. I still wanted to add AJAX functionality to it, but that turned out to be a minor step that I was able to figure out with the help of a few people. Today was all about final projects and Assessment reviews. Not really much to report about my final project, except to say that my app is fully functional, and I've added all of the CSS that I'd planned. My Assessment code review came in the afternoon, and it was exactly as I expected. I did poorly on the AJAX, but the code I put in for it was good. I just couldn't get it to work thanks to a few syntax errors. Everything else in the assessment was good. I spent some time explaining to my reviewer the frustration I had with AJAX, mainly around the lack of training we got with it. Precious few people were actually successful with that portion of the Assessment, which was encouraging for my ego, but it showed how much really needed to be changed regarding the structure for teaching it out. Well, that happened. 6 grueling hours later, the Phase 2 Assessment is over. You know it was a complete shit show when we started with 3 hours and the teachers kept extending the time to allow us to finish all of the sections. We even had to stop about 2/3 of the way through it to eat lunch. We came back and worked on it some more, but there was definitely an overall feeling of frustration, failure, and fear coming from the team. Today was much more productive than yesterday. Our morning lecture was on how to consume an API, which pertains directly to our challenge. The idea is that we'll take the API that we created yesterday and figure out how to access its database through a NEW site that we create. Most of us didn't finish the challenge from yesterday, so our teacher took one of the more completed ones and fleshed it out to be useful to today's challenge. This past weekend was extremely productive for me. Not only did I get a large chunk of my Phase 2 final project finished, but I also went to a birthday party where I received some excellent advice (and made several good connections) from professional computer engineers. Some of it conflicted with what I'm learning right now, but it was still valuable to hear different viewpoints. My final project now has a functioning API that connects to Imgur, allowing me to upload a photo anonymously to their database and display it on my app. Not amazing by itself, but still pretty neat that it all works as it should. It is getting harder and harder to find time to write. Constant challenges, new material, watching and re-watching videos while reading and re-reading tutorials, trying to keep up with solo challenges while also putting in some time on my Phase 2 final project. Somewhere in there I need to remember to eat and sleep, which frustrates me because it takes away from coding time. Woke up early, got to DBC, and went right back to work. Sleep is for the weak, I'll sleep when I'm dead, and all those other terrible things people say when they decide to mistreat their bodies. Today and tomorrow are all about team projects. We had a lecture on Git workflow, but it was mostly a reminder of what we should already know. After a brief break due to a fire alarm, one of my teammates and I decided to get started. We had a choice between creating a Survey Monkey clone or a Connect Four game. I thought it was a logical choice to do Survey Monkey, for several reasons: it would be great practice for AJAX, routes, and associations. It would be closer to the real life work we'll be doing. Perhaps selfishly, it would also help me with figuring out my final solo project, which is essentially a quiz creating page, but with a more personal effect. Unfortunately, the other two people on my team decided they wanted to do Connect Four. After some deliberation, we settled on Connect Four as long as we could get some AJAX commands into it. Today we learned about AJAX, but I wouldn't say I actually learned anything. I watched my teacher blaze through it in a few minutes on some sample code, and at the end he said that was all there was to it. Somewhere in the middle I got lost and could not understand how it actually worked. It didn't help that we were only given an example, but not actual code with actual database calls. I spent the rest of the morning focusing on JavaScript Racer, which I actually enjoyed, but came to the answer differently than described. Rather than create JavaScript objects and moving them through a DIV space on HTML, I created some objects and gave them jQuery animations that responded to button presses. Any time I clicked a particular button, one of the horses on my board would move a particular set of pixels across the page. Once one of the horses reached a certain point, they were declared the winner. Took me a little while, but definitely helpful in getting more comfortable with jQuery. Today was a cross between soul-crushing doubt and the high that comes from getting your code to work. I started the morning worrying about how many of my solo challenges I've been able to accomplish. I want to make sure I give each one the attention it deserves, but I also want to make sure I fully understand the pairing challenges as well. I've been worrying about understanding the challenges from day to day, but I've had to realize that by focusing so much on what I don't understand, I'm not allowing myself to stay open to learning the new concepts that are constantly flying at us. I'm grasping it as best I can while there's time, but it's more important to focus on today's work than yesterday's. Today was a relatively easy day, compared to last week. I'm sure we'll be getting into some disgustingly confusing work over the next few days, but today we just focused on JavaScript objects and Prototypical Inheritance. For anyone not learning this stuff, it probably sounds like I made up that phrase. For anyone already in the industry, it won't be very impressive. Essentially, JS doesn't have the ability to explicitly label an object as inheriting abilities and functions from another object, so we have to create Prototype relationships, which means that an object is basically a 'version' of the existing object. it looks a little like this: Today was kind of all over the place. I spent a bit of time with some students from Phase 1, giving them a few tips on how to best approach today's Sudoku challenge. It was really tough trying to remember everything I had learned, but it was nice to go back and think about some core Ruby concepts for a bit. Holy shit I just built Twitter. To be fair, I definitely didn't do it alone, and we still need to flesh out the CSS so it looks more presentable. But we've worked out the functionality to where a user can login, create a post, view their previous posts, make profile changes, view their followers, and view tweets from people they follow. Those last two bits were the features that my pair and I were responsible for, and they took us the entire day to create. Holy shit I just built Bit.ly. Well, not just. I worked on it for most of the day and finished it a while ago. The point is you can now go to https://ed-ly.herokuapp.com, type in whatever URL you want (preferably a really long one), and ed.ly will format your link to something easier to deal with. The 'herokuapp.com' part makes it a little longer than I'd like, but you'll get the idea. My favorite part is that this isn't just a shortener that works only on my site. You can use this 'edified' link and as long as the database persists, you'll be taken to the website that corresponds with the link. Holy shit I just built Craigslist. I hesitate to say this because it invariably comes back to bite me on the ass, but I think I'm really getting the hang of Sinatra. It took most of the day, and it's definitely not a pretty app, but it does just about everything that the real Craigslist can do, and it can interact with a database to become as large as I want. I spent this past weekend going through the 'Singing with Sinatra' tutorial. Not much to it, really. We walked through the steps of building a basic To-Do app using Ruby, PostGres, HTML, and CSS. Getting a bit of insight was really important though, since we'll be working with Sinatra all this week and will come back to it at the end of Phase 2. The only drawback of the tutorial is that it's over four years old, so some of the gems are out of date, and I think some of the functionality was lost due to updates in Ruby. I got the general idea, though. Today was the last day of Phase 1. The whole day was very enjoyable, though I didn't accomplish much learning. We had our Friday check-in session, which went pretty well. Most everyone's thoughts were on the assessment. Some felt like they didn't get enough feedback, and some felt like they got too much. Our guide said to make sure we provide that feedback, since DBC is constantly trying to improve. I'm moving on to Phase 2! Woo! I'm feeling good about the program and my understanding of everything, but we're now going to be venturing into all new territory that I haven't seen before. Prepare for lots of posts where I pine for the days of Phase 1, when I was only a little lost. The morning lecture was a bit of everything regarding Active Record. We looked at migrations again, and talked a bit about building your app to include the four basic commands: create, read, update, destroy, or CRUD. Well, I survived the Phase 1 Assessment. After the great review we had on Tuesday night, I already felt like I was prepared, but once we got into the actual challenges, I realized that the whole thing was going to be a lot easier than any of us had planned for. In case you're reading this and you're coming into Phase 1 in the near future, I won't reveal what was on it, but suffice it to say that if you prepare for everything that you've learned through Phase 1, you'll be more than ready, and can begin with confidence. This morning we took a few minutes to talk about team cohesion as it relates to both the social aspect and our learning. I was under the impression that we had a great team dynamic, since all of us know each other really well and feel comfortable being ourselves around each other. We've been working together for nearly three months now, communicating in some form every single day, so it's no surprise that we all get along so well. However, our teacher made it clear that while the social aspect and emotional support may be there, we're not supporting each other enough with our learning. When someone knows something that others don't, they should be sharing it out to the group. When someone doesn't understand something, they should be finding a fellow student and stepping through it together, rather than suffering alone. It was decided that several opportunities existed for us to share out our learning, and one of my fellow students immediately organized a study group for us to prepare for the Phase 1 assessment that's tomorrow. More on how that went in a bit. Finally, a good day! Well, a good day based on my new definition. I used to rank my days at DBC based on how well I did on the challenges that day. If I was able to complete all of them and feel confident in my work, it was a very good day. If I struggled through every challenge and felt stuck at every corner, it was a decidedly shitty day. Now, I try to think about how much I learned on a particular day. And that makes today a decidedly good day, although there's still a lot to figure out. I can't really decide if today was awesome or devastating. It actually went really well, but at the end of the day I received some feedback by email that pretty much turned everything to shit. More on that later. First, the good stuff. The morning started with our Friday check-in. This was all of DBC divided into little groups, allowing each of us to share what we've been dealing with for the last week. If you've been reading this blog, you pretty much know what I spent my two minutes on. This program is a constant roller coaster of comprehension. Some days I feel like I completely understand something and can't wait to dig in more, other days I wonder if I didn't make some terrible mistake in starting this journey. Another day, another chance for me to fill my head with knowledge and then attempt to make sense of all of it. This week has definitely been about 'embracing the confusion', though it's not where I thought I'd be during any part of DBC. I always sort of hoped I'd get to be the teacher of the group, sitting with folks who don't really get certain concepts and helping them grasp everything a bit better. I'm still doing that to some extent, but I'm also one of the folks asking for help, lost in errors that I can't make sense of. I feel like I'm going to be saying this just about every day from here on out, but today once again had a steep learning curve. The upshot is, if it's difficult, I'm actually learning something worthwhile. When I'm comfortable and not struggling, then I'm not being challenged enough. The downside is that there are some who are barely breaking a sweat on some of these challenges. I know I'm not supposed to compare, but damn it's frustrating to not feel like I'm at the same level of understanding. Today, there were a lot of concepts that went over my head for a good chunk of the day. It wasn't until I got home and could study on my own that I was actually able to digest everything to the point that I could reproduce it. Even now, as I sit here writing, it's a huge help for me to actually create code examples and have to explain them. I'm probably jinxing myself, but today was pretty easy compared to last week. We managed to get through all of the challenges without too much trouble. Sure, there were issues with code not working, and we had to do a bit of research to figure out what was going on, but there was always forward momentum and it didn't take too much logic to figure out what was missing. The morning began with a lecture on rSpec, which I've been looking forward to for a while. I understand how to work with rSpec and make tests pass, but I didn't have much experience with creating my own tests. All in all, I think it's a great tool, but definitely adds more time to building a program, so I don't fully appreciate its value right now. I'm sure once we get into larger code, it will become vastly more useful. We solved Sudoku! It took us all day, we ran into dozens of dead ends, but we actually got it and it felt incredible. Instead of starting today with a lecture or meeting, we were divided into groups and sent to the Friday check-in, which includes students from all four phases (current onsite students and recent graduates). We were each given some time to voice our feelings on how the week has been going, and it didn't have to be specifically related to the program or learning. Since that's all I've been focusing on this week, I pretty much stuck to talking about the emotional roller coaster I've been on this week. The first three days were successful, but Thursday was frustrating because it didn't end with functioning programs, so I was feeling some trepidation about getting through the Sudoku challenge (arguably the hardest challenge at DBC). Today was not an encouraging day for my ego. We only had two challenges to complete, but through the whole course of the day, we never succeeded in making them work to the point that they would reliably run with the rSpec. Here's the day: Wow. Today was intense. I feel like in a week, I'll be pining for the easy days that this week is bringing, but for right now, it's been an incredibly action packed day of coding. Here we go: Today was a heavy day for coding. We checked in with our Accountability Group for a few minutes, sort of gauging how we felt about yesterday's work. There was a lot of stress about finishing the challenges in time, so I was thankful my pair and I had completed everything last night. Today started at 6:30am. I loathe being late, so I always arrive early. Lateness implies a lack of respect, so timeliness has always been something very important to me. A promise: I will write what I learn every day. For you, the reader, who's interested in keeping up with my journey through DBC. For you, the potential student who wants to know exactly what happens in this program and if it would be the right choice for you. For you, my current cohort, who just want to read and solidify your understanding of the day's concepts. For you, my future contemporaries in the tech world. And for me, because when I write what I know, I remember it, and when I teach it, it becomes ingrained in my memory. To the untrained eye, this website almost exactly like it did last week. There's still the same picture of me, my beard, and my baby on the home page. You can click on links to learn more about me, projects I'm working on, and read blogs I've written. The first two pages are still works in progress with nothing to show but a 'Coming Soon' notice. Here is something true: I have never posted a programming question to an online forum. I have also never asked someone in person for an answer. This is not because I'm smart. I'm far from it. It's because I don't give up the search. I know the answer exists somewhere out there, hiding in some deep, dark hole. I know that my question is not a unique little snowflake that has never been asked before. I just have to figure out how to find the answer. This week at DBC, we're learning about conflict. Conflict comes in all sorts of shapes and sizes and colors and flavors, but its most common characteristics are anger and frustration. Whether it be a minor conflict like taking too long in the shower, or a major conflict like spending habits and budget, there are ways to mitigate the emotions that conflict brings about. In practically every major programming language that's in operation today, there is a way to search, match, replace, and edit strings on a massive scale without having to already know what's in the field. Welcome to the world of Regular Expressions, AKA RegExp, AKA RegEx, AKA Rational Expressions. In this week's Cultural blog, we're focusing on Affirmation, which is a direct combatant of Stereotype Threat. This blog will be a bit different than previous ones, since it's most in a Q&A style. Here we go! Here in week seven of Dev BootCamp, we've entered into a completely different language. After scaling the hills of Git, HTML, and CSS, crossing the mountains of Ruby, we've now come to the pit of despair known as JavaScript. I completely understand why we've been introduced to this language later in the game, since the difficulty level of using it so early on in the program would undoubtedly have led to much wailing and gnashing of teeth. Last week, we talked about Classes, which are Ruby's blueprints for creating objects and methods. This week, we're taking a closer look at Classes and their very useful neighbors, Modules. When these guys get together, all kind of magic starts happening. As a young, healthy, middle-class, American white male, I've got a lot going for me. Like, a lot a lot. I don't really have anything to complain about. But I'm going to try anyway. This is the Stereotype Threat(Down). A growing practice among programmers today is the pair programming session. Gone are the days of the lone coder, sitting in the corner, hoody up, headphones and yellow tinted glasses on, closed off to the world. Today's programmer is a collaborator, usually sitting down for friendly sessions with someone who is either more experienced or less experienced than them. This method is almost essential in most tech companies (where the turnover rate is high), since new coders need to be shown the ropes and veteran coders need to make sure that their code isn't destroyed by a bunch of untrained whipper-snappers. This week at DBC, we've delved deep into the world of Ruby Classes. For the uninitiated, Classes in Ruby are like blueprints for creating objects and methods. If you have a Class that contains a set of methods, you can run that class over and over again and get slightly different results based on the rules you provide every time you run an instance of that Class. If none of that makes any sense, don't worry. Today I'm here to show you what a Ruby Class would look like if we created one in the real world. When combing the web in search of a 'tech industry issue' about which to write this blog post I was inundated with one prevailing topic. On Google News if you search the keywords 'tech industry' you're given a dozen or so pages of links to articles about why women are leaving the tech industry the income equality gap between men and women in tech the continued rise of the 'boys club' in the largest tech firms the fact that the problem is actually getting worse not better etc..." So, last week we talked about the Ruby language and its data storage tools, Arrays and Hashes. This week, we're going to discuss one way (out of the thousands available) to interact with those Arrays. Before starting DBC, we were asked to take some basic personality tests in order to better understand our learning styles. The first was the VAK Test, which tells you what you probably already know: whether you learn better by seeing something done, reading about it, or practicing it yourself. I fall into the kinesthetic group, which means that I want to get in and get my hands dirty. I learn best by doing, experimenting, breaking, fixing. Welcome back to another edition of: Learning From Novices! The blog where I learn something new and exciting and then attempt to teach it to you based on my limited experience! Today's topic: Arrays & Hashes in Ruby. If all of those words sounds confusing to you, don't worry, you'll be more confused by the end. Let's get started, shall we? In honor of Valentine's Day, I'd like to talk to you about some of my favorite positions. Before you go thinking that my site has been taken over by a perverted 12 year old, let me clarify! I want to talk to you about some of my favorite CSS positions. You see, when you want to move any object on a website, you can use CSS (Cascading Style Sheets) to position your objects in whatever order or location that you want. However, each positioning command comes with certain caveats. Let's go over them each together, shall we? Hello again! I thought I wouldn't get a chance to write to you for at least another week, but here I am on day 2, challenge 10, already creating my first technical blog! As you can probably tell from the title, today we'll be talking about Git. Please refrain from making any references to Larry the Cable Guy. Deal? Okay, let's get started! Tonight I watched a video of Dev BootCamp cofounder Shereef Bishay talking about the community he wanted to create at DBC and the mentality he wanted all of his students and teachers to come in with and to strive to maintain. Tomorrow is the first day of Dev BootCamp, but to be fair, it's already started. It started for me several months ago when I realized that I needed to do something different with my life. It continued when I decided that I wanted to become a developer, and the goal became more honed when I was accepted into the program. I've spent the last several months preparing, and it's brought me to this point, the actual beginning. I wouldn't necessarily call it joy. Yet. It's more of a feeling of accomplishment when I do the work and actually begin to gain a modicum of understanding. As for the opposite feeling when I'm not coding, I can definitely name the emotion as shame. Shame when I'm not doing the work I should be, shame when I choose to watch a TV show instead of pushing through a particularly tough bit of learning. I guess that's kind of good, right? I feel bad when I'm not coding. I don't feel an obligation to keep working, but I definitely feel the urge to return to it as soon as possible. Balance is the watch word, I think. 2 weeks from today, I begin Phase 0 of DBC. 4 weeks after that, my baby is due to be born. 2 weeks after that, I leave my job.1 week after that, I move my family out of our apartment. 3 days after that, I get on a plane to San Francisco to begin Phase 1 of DBC. I'm not very kind to my future self. Sure, I may set out to make his life much easier so that when present me becomes future him I can just knock down the pins, but usually my inner guide just says 'Man, don't worry about eating poorly! That's a problem for future Edwin to deal with. F*** that guy. You want to spend money on electronics or games or various detritus that you don't need instead of getting ahead on your bills? Awesome, future Edwin's got you covered. As for doing something new with your life, remember that you wanted to learn how to play the banjo, to travel the world, to read a lot more? You're way too busy to do any of that right now, but I promise that future Edwin will be all about that when he gets here. I've struggled a bit this week with what to work on next. Last week I focused so much on amassing the material available to me that when it came time to actually sit down and start pushing through it, I was frozen. Where was the structure? Sure, I had everything I could possibly want, but what to do first? If I came into this without ever reading a single line of code, what would be the most efficient and useful path through the mountains of information? Quite a few visual and functional changes have occurred in the past week. If you remember, this page didn't do much except show my blog post. Going to my homepage was even worse, since all it contained was 'Welcome to my new website' and a few social media links. Also, you couldn't navigate to my blog posts from my homepage. This is not a pretty website. The font hasn't been customized, the layout is all wrong, and there are lots of things going on in the background that I certainly didn't put there. This page you're reading? It doesn't link from my homepage at edwinunger.com. Go ahead, click my name up top. Even that page is lacking most of its functionality except a few social links. update 12/14: I've updated the site a bit, so that sentence no longer makes sense. It's not a pretty site, but it's not ugly any more. Stuff is starting to work!

Read More