Coding Blog

Recounting of the week's events during bootcamp

#1 - Week ending 3/3/2019

The first week went really well! The work was not overwhelming and I think everyone got to be relativelycomfortable around one another. I feel that is really important to the learning process, and I believe it will make the process smoother.

The coolest thing I learned this week was the concept of RWD (responsive web development). It's amazing how a website smoothly changes across different viewing platforms when the proper techniques are put into place. I would like to get better at JavaScript. It is the biggest sticking point for me right now. I feel that it held me back, because I am not used to the entirely logical thought process that seems to be required to code well in JS. I feel confident that syntax memorization won't be an issue with some time, but I do worry a little about getting better at compartmentalizing problems and being capable to transfer that into code.

The nagging question I had, which came on Sunday as I was completely revamping my blog site, was how can I get text to responsively center and resize over an image. With the help of some Google-fu and em's, positioning and transform properties, I was able to find my answer. During that process I had a bit of an aha! moment; I feel like I much better understand the CSS grid system and the role it plays in RWD. I also found CSS media queries to be really useful. In solving my problem, I came upon a pretty cool blog/help site in the css-tricks site.

#2 - Week ending 3/10/2019

Week two was definitely a step up in difficulty from the first week. It brought about some discomfort and doubt, but these feelings can be useful as long as they are channeled in the right direction. Instruction was great and I especially appreciated the one on one discussion with Justin and Ian, which brought about some needed perspective and induced a realization... that mistakes have to be made in order to get better at this. I've worked for a long time in an industry that punishes your ego and your pocket book if you make mistakes; while mistakes are understandable and happen, you never want to make them and don't want to get comfortable with making them. I found out I have to move away from that mentality in order to grow as a developer. That will be one of the hardest parts of the next twelve weeks.

The coolest thing I learned this week about coding is the ability to use JavaScript to inject code into your HTML file(s). This really helps keep things clean, and cuts down on the amount of work that has to be done. In learning about JavaScript this week I figured out that one thing programmers hate to do is unecessarily repeat anything. I'm getting the feeling that some of the best programmers out there are probably also some of the laziest people out there, but this comes in handy when trying to discover new ways to make the workflow more efficient.

The trio of HTML, CSS and JS form a symbiotic relationship with one another. The best websites and applications utilize all three in a very efficient manner. While HTML serves as the frame for a site or application, and CSS adds the flair, JavaScript is the real workhorse that provides higher level functioning. Learning about injecting content into an HTML file using JavaScript helped make the relationship between the 3 more clear, and the purpose of things like loops became more apparent when applied in a real-world manner. I have yet to incorporate any JS objects into my personal site or blog, but I'm sure that will change.

In closing I'd like to suggest checking out Wes Bos' JavaScript 30. It's a good way to get a bit more acquainted with vanilla JS for anybody from a struggling beginner to a seasoned programmer who might want to brush up on some things, or just make some fun little projects.

#3 - Week ending 3/17/2019

My aha! moments this week weren't earth shattering per se, just reinforcements of previously touched upon subjects. Especially in the realm of pseudo code. I was really close to solving a couple morning Hacker rank warmups and actually felt the planning beforehand helped make it easier. I believed in the power of planning the code before, but I had yet to experience that personally. This planning process helped me in the to-do list exercise, which was my favorite of the week. This exercise is the first one where I feel a lot of the progress I made came from myself, and not utilizing code from around the web.

The coolest thing about coding I experienced this week was a pretty personal reveleation. I'm sure others have had the same feeling at some point as well. I realized that I keep coming back for more despite the frustrations that development presents every day. I think when I'm able to combine other areas of interest/passion this persistence will only grow. I've thought about some final project ideas such as creating a tool for people to find a tradesman (called F.A.T.), a tool for finding local charity/non-profit organizations (called F.A.C.T.), and a tool for discovering what establishments are using products from local/regional producers. Creating anything that helps others succeed and connect with their community is appealing. For the most recent bootamp subjects of JavaScript and Vue.JS I found a couple of such online communities in JavaScript Kicks and Vue.JS Developers.

#4 - week ending 3/24/2019

I spent a couple days this week feeling fairly discouraged. It wasn't until our one on one meetings that I began to feel better about the path my learning seems to be taking - one that is more of a slow burn. I don't seem to pick things up quickly, but I don't seem to struggle too much either. I guess the thoughts have to marinate a while before I can piece everything together. I suppose my aha! moment this week revolves around realizing that the process of learning software development is different for everyone. The vastness of development is cool in that it speaks to those differences and means even beginners may have something useful to share, making the learning process is more dynamic and inclusive.

We've been learning and using Vue.js for a couple of weeks now. While no specific ideas come immediately to mind, it's apparent that the utility Vue.js provides developers is found in it's ability to organize and compartmentalize even the most robust of projects. Vue is yet another one of those things that I've only just scratched the surface of understanding, and one I hope to have the opportunity to continue to use. Something else that has crossed my mind recently is the need for developers to be defensive-minded in their coding practices. That being said, I think it is worth checking out a security analyzer to help mitigate risks. One of the more well known security platforms comes from Snyk, a name known to the likes of Google, Salesforce, Microsoft and other tech giants.

#5 - week ending 3/31/2019

Exiting week 5 I feel significantly more knowledgebale on development and the full stack. I'm beginning to see more and more how everything comes together, end-to-end, to make a web application. It's a relief, because at times it felt like I'd be reeling forever and not really come to any meaningful understanding, at least enough to be an effective developer. I know the learning process doesn't end, but now I also know it is possible to get to a place where my skill set is good enough to be a useful part of a development team.

Working in a group over the past week or so, working towards a common goal, was a great learning experience. While I think it is common knowledge that communication is one of the bigger, if not the biggest determinants of the caliber of success that a group achieves, it was great to experience that importance first hand in an environment reminiscent of one I will eventually find myself in. The group I was in did a great job of getting our project functioning, but I think some of the pain points could have been more easily overcome with more communication/collaboration, such as utilizing pair programming. Especially since our individual stories were so intertwined with one another, and to an extent reliant on the completion of another's story.

#6 - week ending 4/7/2019

My aha! moment this week came as I solved a Hackerrank using a method I didn't previously know of. It helped reinforce the knowledge that a lot of problems are solved when you take time to think about what it is you are trying to achieve, then researching the methods to achieve them using relevant phrases/words. I feel infinitely more confident in my problem solving capabilities now in week six than I did during the first week; for the last several weeks I've asked myself what the purpose of the morning Hackerrank problems are other than to get into a relevant headspace for the day ahead. Now I understand the repetition of thinking these problems through then attempting to solve them has increased my logical capabilities.

I found another regex website that I hope will help clarify the craziness that they are. Many times when I have seen an elegant and succinct solution to a Hackerrank it has utilized regex. RexEgg seems to have a plethora of useful information, so I hope to be able to siphon some of that info and put it to use in the near future.

Learning PHP has been pleasant. I feel like PHP has more succint ways of solving problems. In the morning Hackerrank exercises I've noticed that PHP seems to have a lot more built in functions and methods. We are redoing the same Hackerranks from before, but in PHP, and some of my solutions have been noticeably shorter. I also noticed there are a lot of $ signs everywhere. I don't know that starting with PHP over JS would have made much of a difference in my progress. I think there are fundamental changes in the thought process as you move from one language to another that help you learn successive languages quicker while improving understanding of prior ones, at least that has been my experience thus far.

#7 - week ending 4/14/2019

We worked on refactoring the exercises and projects from previous weeks with Vue and Laravel. Although I didn't make as much progress as I would have liked, I did start gaining a better understanding of how powerful a JS framework can be once you learn to utilize it to full potential. I used to not like Vue very much before I got a better understanding of how components communicate with one another. Now that I have a deeper understanding of how parent and children components talk with one another, incorporating Vue into future projects doesn't seem as daunting.

My biggest win this week was getting my Tic-Tac-Toe game working. I would like to revisit it at a future point and style it more, as well as account for some fringe scenarios to make it more secure. Not a win per se, but I can feel my knowledge base growing, and can feel myself getting closer to a bigger aha moment. While looking through the numerous libraries available to developers using JS, I came across a library called three.js. This is the type of technology that really gets me excited when I think about creating applications and sites. I would like to incorporate some of the graphics that can be created with three.js or other graphical/visualization libraries into future projects.