NEXT Week 8 - CS17 & webPT4 TA / Hello Joymode!

This week the students in my CS TA group were working through the 'Theory of Computation / Hash Tables' Sprint and my webPT 4 group is working through the "Building RESTful web API's with Express and Node.js" Sprint so it's definitely been busy trying to keep all my content straight but appreciate all the review and reps that I'm getting right now. The `Theory of Computation / Hash Table` Sprint is really interesting. Implementing arrays and hash tables in C really helps shine a light into the importance of this data structure and what is going on under the hood in many methods/data structures we see in higher level languages. To close the week out remember that on-site interview I went on last week? Well I was offered the position! I'm happy to announce that I will be joining the Joymode team as a Front-End Engineer starting in July! It's been a long journey but from day one I knew I was making the right decision when I applied to Lambda and couldn't be happier to join Joymode and take this next step in my journey.

Week: TA for CS17 (Theory of Computation / Hash Tables), webPT4 (RESTful Web APIs with Express and Node.js) & Hello Joymode!

Next week will be my last week as a Lambda TA as I prep for my new role at Joymode and I can't put into words how much I appreciate being given this opportunity not only to TA but to be part of Lambda at all. I could not have asked for a better experience. It has been an amazing time of my life. I've never learned so much in such a small amount of time. If you're on the fence about Lambda I can't recommend it enough.

I'm starting as a Front-End Engineer with Joymode in July and am really excited. I can't wait to join this amazing team. During my on-site I was blown away by how friendly everyone was, the collaborative environment and the company vision/mission. I'm excited to not only jump into a new tech stack but be part of a company that I know is doing something special.

I posted this in the #hired channel on Lambda's Slack and could go on and on about how great Lambda is, if you ever have questions about the school or my experience feel free to reach out.

Thanks again Lambda, friends & family. I appreciate all of you and am looking forward to joining the Joymode and seeing what comes next.

NEXT Week 7 - CS17 & webPT4 TA / Career Prep / Discord Hackathon

What an exciting week! Started the month/weekend off by participating in the first ZEIT Hackathon with one of my teammates I worked on Flexlog with. Had a lot of fun making a ZEIT/Discord integration which notified you in your chosen channel of your ZEIT project deployments. Had a lot of fun building this and will go into more detail below. I also TA'd the intro to C portion of CS 17 for one of the groups and had a good time working through this portion of the curriculum through a new lens and getting extra reps with a low level language like C. I had an on-site interview with a company in Los Angeles on Tuesday that I'm excited about. I also went to my brother's high school graduation and capped the week off with a weekend of C, jiu-jitsu practice, and watching UFC 238.

Week: ZEIT Hackathon, TA for CS17 (Intro to C), webPT4 (RESTful Web APIs with Express and Node.js) & Career Work

Participating in the ZEIT Hackathon was such a cool experience. At first I was a bit intimidated when I heard the idea from my teammate - a ZEIT/Discord integration that would alert you to ZEIT events in your chosen channel, all built with TypeScript (a language I hadn't used before) - in 48 hours. Not one to back down for my challenge I dove in. Such an awesome learning experience. My teammate showed me how to work with the new language and we got to work. Lots of practice reading docs and working collaboratively in a hurry. After countless Zoom sessions it was awesome to see the notification come through the channel during our demo video. Checkout the integration if you are interested: ZCORD

On Tuesday I went to an on-site interview with a startup in Los Angeles. I had such a great time learning about the company, meeting the team, and working through coding exercises and a pair-programming session. I can't remember having a more pleasant interview experience. I feel really good about the process and am thankful to my career coaches and everyone at Lambda who has helped me prepare and get my skills to a level where I can confidently apply and be prepared to take on full stack software engineering roles. Excited for what's to come!

On the TA/Lambda side of things I spent most of my time working in C and making sure I was prepped for each guided project of the week. I'm having way more fun working in the language this second go around. Next week we go into the history of computing and hash tables in C. For the part-time cohort I'm going over backend material which I've been absent for this week with the interview & my brother's graduation falling on my guided project days.

My brother's high school graduation was also this week on Thursday. He graduated from the same high school I did so it was so nice to see him walk the stage and give his graduation speech. He's worked really hard to set himself up for the future and I'm really proud of him. Wrapped up the weekend spending some time on the mats doing jiu-jitsu, watching UFC 238 (such a great card) and spent more time practicing C. Feeling good about the upcoming week.

NEXT Week 6 - CS17 & webPT4 TA / Career Prep

This past week was busy both in and out of Lambda School. I spent a lot of time this week studying Ruby, Vue and getting ready for the Zeit hackathon. After this weekend it's intro to C for my CS17 group and build week for my webPT4 group which is nice because I get extra time to focus on guiding the CS students through the introduction to C which can be tricky. It's a challenge but I'm excited to work through it all.

Week: TA for CS17 (Build Week), webPT4 (Redux - Async/Middleware) & Career Work

This was a fun week where I had some time to put into my own projects/studying since most of my students were busy being team leads for build week. I started to explore Ruby and am having fun learning a new language. This upcoming week my CS students are going into C which is a very interesting language that I'm excited to revisit. I also had a technical interview this week which was really fun and I'm looking forward to seeing what's next!

This weekend I'm pairing up with one of my teammates from Labs to work on a Discord Bot for the Zeit hackathon. I'm super excited about this opportunity and it will be great practice for an upcoming on-site interview. Lambda School has opened up so many doors for me and given me the skills to tackle any task. Looking forward to seeing what we build! First Hackathon!

NEXT Weeks 4 & 5 - CS17 & now webPT4 TA & Career Work

It's been a busy past two weeks! So busy in fact that this is actually the first time that I've skipped a weekly blog post since starting at Lambda. One late day turned into another and here we are two weeks later and no update. Well, I'm back! What have I been up to? Career follow-ups, leading and prepping for Guided Projects in Python and this week I transitioned from a PM to a TA for webPT4 and led the intro to Redux. I couldn't ask for a better environment to practice my skills and keep sharp while I continue to look for my first role out of Lambda.

Week: TA for CS17 (Data Structures & Graphs), webPT4 (Intro to Redux) & Career Work

For CS17 the first week was Data Structures and the second week was Graphs. I've been trying to make use of multiplayer as much as possible to get the students engaged and it does a really great job of allowing students to express themselves and get more hands on keyboards practice during the demos. I can't talk enough about how much I appreciate the extra practice I get as a TA. My understanding of the material and my skills as a developer have increased tremendously since starting this role and I appreciate having a look at how the instructors prepare the material and how much effort they put into making this the best learining experience possible and to ensure that every student leaves Lambda Schools with the skills needed to be a world class engineer. I'm learning something new everyday and enjoy seeing students have that aha moment or help them through some tough material.

This upcoming week is Build Week for my group which should free me up to focus on some career items that I've been putting off and there may be a change in my TA role but that's to be announced/determined. Next weekend I'm joining up with a friend from Lambda to do the Zeit hackathon so watch out for updates from that!

NEXT Week 3 - CS17 TA & Career Work

This week I moved to be the TA for CS17's second sprint group which meant that I gave the Algorithms guided projects again which made it a smooth week. I also spent some time this week practicing whiteboarding problems as preparation for coding interviews and assessments.

Week: TA for CS17 & Career Work

Since I had just done these guided projects (for Algorithms) the previous week I was able to focus on making adjustments where things didn't go quite as planned the first time around. The best change I implemented was using multiplayer to engage the students and allow them more "hands on keyboards" time and have them answer my questions by typing some code out themselves. It helped keep my group engaged and I'm happy with how these week's guided projects turned out.

I also had a couple of interviews and finished (as much as I could) getting JiuJitsio ready for the final day of the Lambda/Pioneer contest. It's not functional yet but it's nice having a project I can keep working on and watch it grow as it's in line with my favorite hobby so I doubt it'll ever by truly done =)

NEXT Week 2 - CS17 TA & Build Week Team Lead for WebPT4

2 weeks as a TA has had a huge impact on my programming confidence. Revisiting key concepts in computer science has been really illuminating and I look forward to continuing to learn as much as possible in my new role as a Lambda TA.

Week: TA for CS17, Build Week Team Lead for webPT4 & Jiujitsio (Lambda/Pioneer April Tournament update)

I've started to implement a lot of the feedback that I've received over the past couple of days as TA. I am getting more comfortable coding without a solution in front of me and being ok showing the process of how I debug/program and then providing the solution at the end if we fail to get through the demo. I think this helps show problem solving strategies and also helps keep the class engages as I am asking them to code along with me. I admit that I was a bit nervous at first, I've taught before but never in this format, and it's taken me a few days to find my groove but I feel like I'm starting to find my own style and am getting comfortable with this format. It took me a few days to get back into the swing of Python but once we got going I've surprised myself with how quickly I can whip up a demo or solve problems that once took me hours to complete. Feels like I'm starting to see it all come together now. I'm really thankful for the opportunity to TA and interact with the Lambda instructors & students in this role. I also had a couple of interviews this week where I could see that my time talking through CS topics as a TA has helped me better communicate what I've learned and accomplished during my time at Lambda.

My build week team is doing great with GigaPets and I am struggling to implement features on JiuJitsio =/ Mostly due to time constraints. I'm happy knowing that I have an app I can work on for a long time even if I"m the only user =) The plan is to hack on it tomorrow and try to make it presentable for the final day of the April Lambda/Pioneer tournament which is on Monday. This is also demo day for webPT4 build week, gonna be a fun week!

NEXT Week 1 - CS17 TA & Build Week Team Lead for WebPT4

Wasn't sure if I was going to continue to keep writing after finishing the Lambda curriculum but I think this helps me stay focused and is a good way to keep myself accountable. This week I began my role as TA for CS17 leading guided projects on this weeks topic - Intro to Python. As a TA I hope that I can help students understand the material and/or guide them to the proper resource depending on the question/topic. I'm thankful to be given this opportunity and so far I am learning a lot in the process.

Week: TA for CS17, Build Week Team Lead for webPT4 & Jiujitsio (Lambda/Pioneer April Tournament update)

Most of my time was dedicated to studying Python and the Guided Projects so that I could deliver them to the best of my ability. I'm trying to take in all the feedback and adapt as quickly as possible to make it a worthwhile experience for the students. I will say that I enjoy Python much more this go around. Also I'm a team lead for the Gigapets build week project for webPT4, I have an awesome team that is crushing it. I didn't make as much progress as I would have liked on jiujitsio but I did debug my database and am now making progress on some routes. All in all a very productive week.

Next week I'm leading guided projects on the topic of Algorithms and trying to implement some features on jiujitsio while helping my build week team to the finish line. Wish me luck!

CS15 Week 9 - Web Servers

This was the last week of CS instruction and, as it turns out, was my last week as a Lambda student altogether! It's bittersweet to be at this moment but I couldn't be more thankful to everyone at Lambda and am excited for what's next. First a recap of the final week where we used all of our skills and knowledge from previous Sprints to revisit web servers, this time in C.

Day 1 & 2: Web Servers I - Protocols, Sockets & HTTP

This week really helped paint a picture of how the web servers work and was a great final challenge. We had a week long project where we implemented our own web server in C. On days 1 & 2 we learned about protocols such as TCP & UDP, the sockets API and HTTP. In short, we learned how data is transferred over the internet. I pair programmed most of the week which was helpful. I probably should have done more pair programming sooner in Lambda but I'm glad that I started to do so when I did.

Day 3 & 4: Web Servers II - Mime Types & LRU cache

To wrap up we learned about MIME types, LRU cache & general career advice. In order for your browser to know what to with the data it receives it needs to know what type of data it is. MIME types are used for this reason. I was able to get my server to display different file types with this change to the code. We also learned about the LRU (Least Recently Used) cache which is one way to keep your recently accessed pages in a cache for faster retrieval. We used a hash table with a doubly linked list written in C to do our gets and puts to the cache. It was a tough two days of coding but we got it done and I felt nervous and anxious for a final tough Sprint.

Day 5: Sprint: A Simple cURL-like Client

This sprint challenges us to implement a barebones client that could make requests to servers in C. After reading the instructions and inspecting the code I was off to a good start on the sprint. At some point I had an interview with a PM who asked me questions on the content and I passed that portion of the Sprint. After inspecting the code I started to pseudocode my way to the solution. Then I implemented my actual solution. After mixing up some variables and general debugging I was able to get my code to display web pages. Pretty cool! I then went to test my server from the week and I realized that I didn't like how that output was being shown so I was able to fix some things on that project as well. Overall a very challenging sprint that took me into lunch to finish but I got it done and learned a lot this week.

I didn't even talk about my Pioneer/Lambda tournament entry or the fact that I have been asked to be the lead TA for CS17 starting on Monday! So many things happened this week. I decided on a name for the jiu-jitsu app I'm developing for the tournament. Jiujitsio! There is a landing page up at: right now there isn't anything to do other than sign up but I plan on having some preliminary features done by next week, fully featured by the end of week 4 and a polish for week 5. It's really testing my ability to code in hurry. I can't wait to put more time into it.

While I continue to search for my first role out of Lambda I decided to apply to TA for CS17 which starts on Monday. TA is a bit different from my current PM position for webPT4 in that there are guided project(s) that I will be leading in the form of a live lecture daily for the entire CS curriculum. This is going to absolutely force me to learn the material at a deeper level and will be a great learning experience. I'm going to be spending some time this weekend reviewing Python to prepare for week 1.

Technically I still have a week left as a student which was a build week but I am going to participate in CS17's build week(s) as an instructor so I'll get that last one in when the time comes. Ultimately as the last blog post as a student I want to say thank you to all of the Lambda staff, students and community as well as to everyone in my life who has helped get me this far. I've learned a lot and so many doors and opportunities are open now because of this. I'm working on things I love and couldn't be more excited for the future. I'll keep you posted.

CS15 Week 8 - Computer Architecture

Another mind-blowing week at Lambda School. This week was dedicated to understanding how computers work at a very low level. We practiced converting decimal, binary & hexadecimal numbers, explored the components of a computer, saw how useful a CPU stack was, learned to handle subroutines & implemented our own CPU emulator in C. I also had my first hour-long technical interview this week.

Day 1 & 2: Computer Architecture I - CPU components, decimals/binary/hex & bitwise operations

It's hard to believe that there's only 1 week of CS instruction left before my final week of the full stack web development curriculum. What a ride it's been. We started a 4-day project to program an 8-bit emulator that was Turing complete in C. While a lot of the project was built out for us it took me awhile to wrap my head around the project and all it's files. The lectures were really interesting and it was nice to get a deep dive into computer architecture. I spent most of the afternoon looking through the project spec and familiarizing myself with the documentation. By the end of the 2nd day I felt like I had started to understand all the pieces and was making progress through MVP.

I appreciated this week's lectures, I had never seen the decimal/binary/hex conversions and purposes explained so eloquently. It all started to click this week. I pair programmed with a friend from FSW14 day 1 and it was a great experience to problem solve together and hit MVP.

Day 3 & 4: Computer Architecture II - CPU Stack, Subroutines & 1st Technical Interview

Days 3 and 4 were nice. I had finally begun to know how to work through this week's project and was starting to see how the CPU stack was being used in conjunction with the CPU counter. I saw how a computer moved through memory to call subroutines and began to see all the pieces work together. It was incredible to think that this program could open any file I gave it and as long as I defined the instructions it was capable of anything. A truly powerful feeling.

I had a technical interview Thursday morning which was the first one I'd been a part of. I think I did "OK" but know that I could have had a more elegant/optimal solution. I explained my thought process and was mostly able to implement the additional features I was asked to write. Either way this goes I would not be in this position had I not signed up for Lambda School.

Day 5: Sprint: Binary, Decimal, and Hex Conversion, and Implementation of Conditional Jumps

So today's Sprint took me a little longer to complete than I anticipated. Once I started to use some debugging techniques I learned in class and began to draw out how the program was supposed to work it was manageable to find a path forward. We were tasked with adding conditional jumps to our LS-8 emulator which was a challenging yet fair assessment of ours objectives for the week. We also had to answer some questions from a PM that related to the objectives and that was helpful as it is good practice for real interviews. Went a little bit over the time limit but managed to hit MVP and am looking forward to the weekend and spending some time building out my jiu-jitsu app.

A very busy week but I'm really proud that I met MVP for the project and the Sprint. I also had a good experience with my first technical interview. I learned a lot about my strengths and weaknesses when it comes to these situations and know exactly what I need to review to improve next time. I got a chance to start my Pioneer project which was another nice accomplishment. It's going to be a jiu-jitsu app that will let the user track their sessions/drills/techniques & stats. I have the data model complete and have mapped out what the app and features will be. I've started to code it out and am making progress. This is fun!

CS15 Week 7 - Theory of Computation & Hash Tables

Nice week, starting to get the hang of the C language and am learning something new everyday. This week we learned a bit about the history of computers & programming while at the same time implementing arrays & hash tables in C. While I am looking for my first opportunity as I wrap up my time at Lambda School; I did go ahead and apply to be a PM for CS17 which starts at the same time as my final week in CS. Reviewing CS topics & helping others along the way while I transition to a full-time role is the current plan. I'm excited about all the possibilities in front of me and look forward to what's coming next.

Day 1 & 2: Theory of Computation & Arrays

Very interesting to hear about the history of computers, programming and how computers work at their most basic level. I feel like this was a very eye-opening week and I'm feeling more and more confident with my C skills and the ability to learn any computer language put in front of me. We had a 2-day assignment where we needed to implement arrays & array functionality in C. After going through the training kit & reviewing some videos from previous lectures I was able to complete the assignment.

Day 3 & 4: Hash Tables

The next 2 days had us talking about hash tables and why they are the single most important structure known to mankind. They are powerful because their read, write & insertion time is O(1) due to the nature of having key/value pairs stored in an object where the index of each entry is the hashed function's output of that key. If that sounds like a lot, don't worry, just know that they are awesome and being able to impement one in C has been one of the most satisifying things I've done so far. I felt like these past few weeks have been challenging/busy but it's nice to see things come together, even if it's just a HW assignment =)

Day 5: Sprint: Theory of Computation & Hash Tables

This was the first Sprint where we had to answer questions live as part of an interview with a random PM. It definitely helped me prepare knowing that I had to communicate my knowledge to another human being instead of just completing a coding challenge. It was a nice twist. The project itself had us work on some Boolean Algebra problems and then some exercises where we needed to solve problems with hash tables in C. It feels really great to be able to take what you've done during the week and then solve a completely new problem with those tools at the end of it. I was able to get through the core of the Sprint with a 2 (passing) and am going to go back and try the extra problem for a 3 over the weekend.

Excited to go deep next week and get into computer Architecture after a successful week. I also have a fun project to work on for the next few weeks! I signed up for Lambda School/Pioneer's April tournament where you work on a project for a month and the top 5 students get a $2000/month 9-month living stipend. I have an idea for a jiu-jitsu app I want to work on and it would make a fun portfolio piece if nothing else. See ya next week!

CS15 Week 6 (Flex) - Intro to C

Since I was busy last week working on a project for a potential employer, I started the week in Flex working on 'Intro to C' one more time. This time I was in a smaller group reviewing the material and working on the same projects I was supposed to complete last week. This was really nice! My instructor Luisan is very knowledgable and I get a chance to ask more questions in the smaller group. I'm really thankful that Lambda has this as part of the program and I can pickup right where I left off. I felt a lot more prepared having heard the lectures once before and had fun working through the various C assignments this week. I also had 2 phone screens and 3 short coding challenges this week. Definitely feels like things are moving in the right direction.

Day 1 & 2: Intro to C

Over these two days we covered the basics of C starting with a bit of history and discussion over it's importance in computer science. We then began to cover some usage including how to include header files, basic types, arrays, strings, flow control & functions. We were given a two day assignment and I had some good momentum going into day 2. I was extra excited because I was able to schedule 2 phone screens that morning. The following day we continued our dicussion of C and began to learn about the memory model and how pointers work. We explored structs and dynamic memory. It was a lot to take in over two days but having seen it once helped a lot. I was almost done with the first assignment by the end of day 2 but since I was preparing for phone screens on Tuesday & Wednesday I didn't complete this project until the following day.

Day 3 & 4: Processes and System Calls

For days 3 and 4 we had another 2-day project covering processes and system calls such as pipe() and fork(). Using these system calls lets us take great control over our programs and it felt really powerful to be programming this "close to the metal". It was really interesting to learn what was going on under the hood and I felt a great appreciation for the language and how computers and programs operate in general. I mostly finished the project and felt prepared for the Sprint.

Day 5: Sprint: Intro to C & Processes

This week's Sprint challenged us to write an application in C that printed out a directory listing & size for the directory that the user specifies on the command line. At first this seemed a bit intimidating but after reading the instructions I was able to pull my knowledge of C syntax, a computer's memory model, structs and system calls to finish MVP before the end of the 3 hours. It felt great after not having time to work on these topics last week to successfully complete the assignments and pass the Sprint.

This was a really fun and interesting week. I used to be intimdated about learning Computer Science but I'm confident approaching/learnign new material and have really grown since I started training jiu-jitsu and since I started Lambda School. With each interview/code challenge I get more confident and I'm very excited for what's to come.

CS15 Week 6 - Intro to C

Spent most of the week working on a Coding Assessment as part of a company's interview process so I didn't get a chance to work on as much of this week's C material as I would have liked. Going to be going over this material next week as a Flex student which is there for situations like this where you might need to spend extra time coding for a work opportunity and you can pickup with the material where you left off. I attended every lecture so I feel prepared and I'm happy with the way the project turned out so it was a win-win =)

Day 1, 2, 3, 4 & 5: Setup, Testing, Finishing Touches & Next Steps

I received a Coding Assessment Monday morning to build a UI for an API that delivered an array of reviews with the author's name, publish date, rating & the content of the review. This was the first coding assessment I've received since I started applying and I was really excited to get started. I spent some time sketching out what I wanted to UI to look and act like (design & functionality) was up to me. Once I had a plan in place I started to build out a skeleton of my project and install all of the dependencies I would need. I was feeling good so far.

I took the opportunity to get some more practice using Hooks which was both awesome but very challenging when it came to implementing tests (write-up coming soon!). I spent a lot of time trying to not get my test suite to crash when trying to use state with my useContext hook. I finally managed to superficially run some tests but was ultimately disappointed that I couldn't get the tests that I wanted to try to run. Even though I was happy with the end result - an app which lazy loaded the reviews and then sorted by date, rating & had search functionality - I was still thinking about how I could have done testing or what the solution to my problem was.

The next day (after submitting the project) React 16.8.5 was released, part of the release was a fix for what was crashing my test suite all week (Enzyme wasn't able to preserve the state of Hooks between shallow render calls). I'm excited to do a write-up of the process and I'll post a link to that here when I"m finished.

Even though I wasn't able to successfully complete the assignments this week I'm looking forward to hitting C hard next week now that I'm done with this project. I had a great time building something from scratch and flexing those Hook muscles. 💪 Going to spend some time doing a write-up of what I've learned this week and get back to finish testing my newly created app.

CS15 Week 5 - Build Week

Build week was awesome. I had the chance to work as a team leader for a data science + web hybrid project using a Fifa 19 API. It was a great experience to work with other developers again and to experience a new role. It was a big task to put together a project in one week that was functional and had a data science component but our group had great communication and were commited to having a quality product by the end of the week. Our app is called Fifa Stronger Links and its purpose is to analyze teams in Fifa 19 & make recommendations to upgrade your team based on the "weakest link" theory. By demo day we had finished all the endpoints and were displaying a metric called the `Over Valued Ratio` for every player in Fifa 19. In the following weeks we plan on adding futher functionality for a recommendation engine to optimize your team by removing your most over-valued player(s). I'm excited to keep working with this group and to continue learning more CS in the upcoming weeks. I've also been applying to jobs and looking for that first opportunity out of Lambda School.

Day 1, 2, 3 & 4: Planning & Building the App

I had met this group the previous Friday and from that first meeting I could tell that this was going to be a great week. We had our first stand-up Monday morning and began to plan out our app and develop a gameplan. As team lead I was responsible for setting up all the repos, managing daily stand-ups, creating our Trello board, reviewing and merging pull requests to `master` branches, managing deploys, and overall management of the team. I made it a point to communicate with every team member and ensure that I was available for questions, pair programming or as a resource throughout the process.

The toughest part of making this app was that our project lacked a wireframe and that it had a data science component on top of that. It took us awhile to decide on an minimum viable product (MVP) that our team would be happy with at the end of the week. Once we agreed on a MVP our front-end and back-end had to work with mock/dummy data while the data science students ran their analysis. It was stressful to get it all together once the analysis was complete but after some debugging and some group zooms we were displaying what we wanted and had reached MVP.

Our group still wants to add more functionality to this app now that our initial analysis/endpoints are complete and to improve upon our current iteration so that it could be useful to players of Fifa 19 and make for a nice portfolio piece. You can visit the site in it's current state here:Marketing Pages, React Front End & FC Barcelona Example

Day 5: Demo Day

Our group volunteered to present to the rest of the build week cohort and it was a great point of pride to see how far this group has come from even just a couple of hours ago. We got a great reaction from the instrutors and people who were soccer fans in the audience. After the demo we met for a retrospective where we discusssed what we accomplished, what we learned, what went well, and what our next steps will be. The group had a very positive experience and we are plannning on working together over the next few weeks to polish the app up.

Another great learning experience doing something I've never done before at Lambda School. I really appreciate my team for working well together and contributing to a nice fun app. I've learned some good lessons this week and I can't wait to give the app some polish, apply to more roles as a full stack engineer and start learning some C this upcoming week as we wrap up the CS curriculum. ⚽

CS15 Week 4 - Graphs

This was a tough week but I enjoyed learning and seeing how Graphs were implemented not just as a basic data structure but as a powerful tool to display and search through data and solve real-world problems. I also got to meet the group of students that I'll be leading through Build Week on Friday and we started to brainstorm some ideas of what to do with our app. I chose a data science/web hybrid project with a focus on the FIFA 19 database. Super excited to get started on that but first a recap of the week.

Day 1 & 2: Graphs, Traversals & Randomness

We covered a lot over these first 2 days, the reason being that we actually had a 2 1/2 day sprint challenge we started on Wednesday. This was the first time a Sprint was structured this way for me but I think that working on the fly and making adjustments are part of how Lambda operates and I've learned to be flexible. I learned that a graph is basically like a tree structure except instead of nodes having children up and down they can connect with any other node in the structure.

After we learned the basic structure of a graph we began to explore more details such as weighted graphs and directed vs un-directed graphs, and cyclical graphs. We also incorporated the algorithms we had previously learned to traverse and search our graphs. We were assigned a 2-day project with some challenging stretch goals. It was nice that the assignment was spaced out and I was able to finish MVP on each of the 2 days.

One thing that I'm doing differently during CS that I didn't do as much of during the web-dev portion is pair-programming. It's helped me so much to be able to ask questions and get instant feedback from my peers. We have a good group that hangs out after lecture and works on the assignments together. It's been nice.

Day 3, 4 & 5: Graphs Sprint Challenge

This sprint challenge was new just for our cohort and it was really simple (as far as total length of the solution code is concerned) but incredibly complex at the same time. We had to write code that would allow our player to traverse a 500 room graph. Since we had lecture on 2 days that we had this Sprint, the instructor went over the approach we should take and helped the class pseudo-code one possible approach. Some students finished MVP on day 1 but I needed the entire 2 1/2 days. I had a flaw in my mental model of the problem that I was able to clear up after day 2 of lecture. By that night I was close to a solution and was able to implement it that Friday morning. I'm excited to work more with graphs and go back and explore some of the stretch goals that I didn't get to this week.

Hard to believe but the first month of the CS curriculum has come and gone. On the 5th week we get to participate in build-weeks as team leads. I chose a data science-web hybrid project which means we get 2 data science students in addition to front-end, back-end, and user interface roles. The project I chose involves the FIFA 19 dataset. I'm really excited to work in this role and be part of another amazing project with fellow Lambda students. Should be another fun week! ⚽

CS15 Week 3 - Data Structures

This was a nice week diving deep into data structures that are found across languages. We explored linked lists, queues, binary search trees and heaps. We also learned methods to analyze the complexity of algorithms that make up the methods associated with these data structures. While it was definitely a complex week the fact that we had a 4-day project this time around helped space the concepts out and allowed us to focus on each data structure at a good pace. I also had my first interview since joining Lambda School and was lucky enough to pickup🔥!

Day 1, 2, 3 & 4: Data Structures

Over the course of 4 days we learned about liked lists, queues, binary search trees and heaps among other data structures. We saw how to code each of these from scratch and the CRUD methods associated with each. Towards the end of the week we saw how these data structures can be used and built from each other and that's when everything started to click. Conceptually I feel strong after this week but I'm definitely going to spend some more time practicing these fundamental concepts. I'm also getting more and more comfortable with whiteboarding challenges with each passing week. We also spent a good amount of time optimizing our code and analyzing time and space complexities of different algorithms associated with each structure.

I love how there is a big focus at Lambda School around learning and asking questions. The instructors trust us to explore and become self sufficient by the time we are near graduation. I finished MVP for this project on day 3 and spent most of day 4 reviewing and finishing some more cover letters and applications.

Day 5: Data Structures Sprint Challenge

The Sprint Challenge this week was interesting; it made good use of a Lambda function which deepened my appreciation and understanding of the Python language. We were tasked with writing an algorithm to traverse a binary search tree, optimizing some code, and analyzing the time and space complexities from our first 2 tasks. I used up the entire Sprint time to finish but I was confident with my responses.

After meeting with my PM to discuss my solutions and a post sprint lecture by our instructor I felt good about the week and am excited to start studying and prepping for Graphs next week

I'm excited to have landed🔥! when the `.dev` domains went on sale and am super pumped about all the exciting companies/opportunties that I'm applying to now that I've been endorsed by my career coach at Lambda School. Super excited to see what materializes in the coming weeks. 💪.

CS15 Week 2 - Algorithms

This was a tough week where we began to learn about different types of sorting algorithms and general problem solving techniques. We also started to do twice-a-week whiteboarding sessions, I got around to applying to some more jobs and began prepping for an upcoming interview.

Day 1 & 2: Sorting Algorithms

We had a 2-day assignment to start the week and the focus on was on modeling and implementing various sorting algorithms. It's nice that the assignments are spaced out over more than 1 day. It gives me a good chance at diving deep into the problems and understanding what's going on without moving too fast. The algorithms themselves weren't hard to understand or visualize but implementing them in Python was another story. It took me a bit to get MVP complete but after some trial/error and a bit of research I managed to finish MVP for this assignment. I felt like I was starting to understand Python a bit better after every coding session.

Day 3 & 4: Problem Solving - Iteration, Recursion, Dynamic Programming

These were a fun 2 days. We had another 2 day assignment, this time more general in nature and we had to solve the problems in the assignment using the techniques we learned in class and then analyze their run-time complexity and begin to think about how we can make our programs more efficient. They weren't easy and I finished MVP shortly before our second standup but they were very interesting and I am starting to get more and more confident about being able to tackle any problem put in front of me.

Day 5: Algorithms Sprint Challenge

This Sprint Challenge was super interesting and not what I was expecting at all. We were given code for a robot that only had a few functions and 1-bit of memory (the light on it's head). This robot was supposed to sort a list that was given to it. Seemed simple enough and I thought I could figure it out pretty quickly. I was wrong!

There were lots of rules attached to what methods we could use and were restricted from declaring variables or accessing `self` values directly. I thought I had solved it initially but I had violated one of the rules and had to go back for a re-attempt. My second solution hanged for large lists. After talking to my PM I was given some more time to work on the project (until Sunday night).

This problem was all I could think about! After sleeping on it, I busted out the deck of playing cards again and began to think like the robot again. I came up with a plan, re-did the project and got the list sorted! After re-watching the lecture vids I figured out how to make even this iteration of my solution better using bubble sort but since I had sorted the given list and passed most of the test conditions my project was at MVP and I could move on to prepping for the upcoming week 😅.

Another fun, challenging week at LambdaSchool. While this CS portion is definitely tricky, I'm enjoying learning these topics and am starting to see how everything connects. It's really amazing to be able to go back to previous topics/lectures/podcasts of things that I am into, such as crypto, and be able to understand what is going on at a much deeper level. Similarly when researching algorithms, or problems I encounter while coding, I can navigate technical documentation or forums related to CS and know what most pages are talking about or at least begin to know where to start researching or what questions to ask. it's such a great feeling.

This upcoming week we're learning about data structures, I have my 1st interview since starting LambdaSchool, and am planning on sending out a couple more applications 💪.

CS15 Week 1 - Introduction to Python & OOP

This week went by so quickly. Starting the computer science portion was a little intimidating but I've played with Python before and we did really well in labs so I wasn't too worried. This week we learned some Python fundamentals and explored object oriented programming. We also got our app onto our own domain: and I scored my first interview since I began applying post career coach endorsement. 💪

Day 1 & 2: Introduction to Python I

Over the first two days we explored all sorts of Python features and syntax. We met our instructor, Beej Jorgensen, and our new pm groups. Beej has a pretty cool style where he really focuses his lectures on the questions that are asked and just explores the material and what could be without following a strict pattern. It's nice to know that we are able to learn on our own and make the lectures meet our needs at this point. Although I do wish we had some more examples for certain portions, there's nothing I can't look up or clarify through asking questions. This is a big point of emphasis in lecture and I can see why. I completed most of the assignment on day one and left a bit for myself to do the next day. The following day we got into classes and some file manipulation. Although it felt a bit overwhelming I reminded myself that this was normal when learning any new language and pushed forward.

Day 3 & 4: Introduction to Python II

For the next two days we were given another 2-day project, this one was to create a text based adventure game using OOP and Python. Simple right? 😅 Once I got started on the project what seemed like a long list of tasks started to get cut down one by one and it started to seem more manageable. I would get stuck on some syntax errors or the familiar typos but I felt like I understood what was going on for the most part. I know that the more reps I put in the clearer this will all become. On day 2 we started to dive deeper into OOP, came up with a bunch of examples of how to use OOP and learned how to inherit and override methods between class objects.

Day 5: Introduction to Python Sprint Challenge

Today's Sprint Challenge was pretty straightforward while still implementing some problem solving by throwing in new Python features that we have not used before. I was able to use my notes, some Google-Fu, and the Python docs to reach MVP. I did get stuck for a bit when reading content from a CSV file but I caught my error and everything made sense again. All in all a very fun week of Python.

Beyond just learning Python this was also a fun week because we got our domain for our labs project up. You can check it out at! Also I scheduled my first job interview after getting my career coach's endorsement and have a few other applications out in the wild. Let's see how this goes! Next week the topic in CS is algorithms. 😅

web14 Lambda Labs 9 - Weeks #1-5

Lambda Labs is a 5 week immersive capstone experience where I worked on a team with 4 other developers to create an app that tracks your fitness progress and scheduled workouts.

Weeks #1-5: Labs 9

As part of Labs I kept a development journal which gives an in depth recap of everything that occured in Lambda Labs along with links to the project, code examples & whiteboard videos I recorded each week. Elvis Ibarra's FlexLog Development Journal

I'm writing this on Tuesday of the 5th week and it has been an amazing experience. During this time I was also able to re-do my resume with the help of my career coach. Check it out: Elvis Ibarra's Resume I'm excited to present our project demo on Friday and move on to CS & job applications.

FSW14 Post Full Stack Web / Pre-Labs & CS - Winter Break - Week 3/3

Just a short update this week as we are on break for 3 weeks for the holidays.

This was a really busy week outside of coding so I'll keep it brief. I spent some time practicing Python & doing some coding challenges to stay sharp. I was busy getting the house ready for a couple of friends that are moving in so I had to miss the Hackathon but am definitely planning on doing the summer one! Hyped to start Labs!

FSW14 Post Full Stack Web / Pre-Labs & CS - Winter Break - Week 2/3

Just a short update this week as we are on break for 3 weeks for the holidays.

This week I slowed down the work on my notes project to focus on Python & start putting some job applications out into the world. I was curious where I was "skill-wise" and began to look at some listings. I was pleasantly suprised to see that I met the requirements for many positions almost perfectly. Most of the time the only thing that wasn't a match was the experience. There were some really interesting companies I saw that needed people with the skills that I just picked up over these last few months. It's a great feeling knowing that the hard work is paying off. I figure at worst I'll get some interview practice out if it. There's an exciting week up ahead with the LambdaSchool winter Hackathon happening and hopefully I can finish implementing collaboration on my notes project now that I'm almost done applying to the companies that caught my eye.

FSW14 Post Full Stack Web / Pre-Labs & CS - Winter Break - Week 1/3

Just a short update this week as we are on break for the holidays.

Week 1: Updating Lambda Notes w/Authentication

This week I worked on updating my Lambda Notes project to have working authentication that would show only the notes belonging to the logged-in user. I ran into many roadblocks but was able to power through and get things working after dropping in and out of the code over the week. The last thing I want to add to this project other than a final styling and responsiveness check is the ability for users to share notes with each other. Once I implement that I can move on to studying some Python and maybe dabbling with some Vue.

I also want to start applying to some jobs to see what's out there and start exploring the opportunities I see. See you next week! =) Checkout my project and drop me a friendly note! (Mobile Responsiveness in progress): Lambda Notes

FSW14 Sprint 15 - Project Week: Back End

15 weeks down, 1/2 way thru Lambda School's full stack web development curriculum. What a ride. Today I presented the project that I have been working on all week to my entire cohort during demo hour. I was nervous but I knew that my project worked and that even though I didn't have the fanciest of features, it was functional and I had built it using all the skills I had gained over the past 15 weeks. I deployed my front end (built with React/Redux) to Github Pages and the Back End to Heroku. I am so happy that it went well and that I was able to pull of this project and hit some stretch goals. I'm so glad that I decided to apply and attend Lambda School. As my instructor Luis said "What if I told you that Lambda Notes was only the beginning?"

Day 1: Setting up the Server & Updating the Front End

Got right to work and setup my Trello board with MVP and some stretch goals. I felt confident that I would be able to finish the project but was also slightly nervous because I had been confident in the past only to finish right in the nick of time. I was able to wire up my server and started to adjust some of my routes to point to the new backend instead of Lambda's pre-built server. It was great to make significant progress on day one.

Day 2: Deploying the Backend & Updating Routes on the Front End

I essentially hit MVP on this day. I had my front end and back end working nicely by the end of the day but I knew there was a problem. I had not changed my production to be postgres which would give my database real persistence. Our instructor was going over this in the following lecture so I made sure my project was good to go otherwise. Things were ready.

Day 3: Postgres Update & JWT Authentication

Our instructor showed us how to deploy our backend to Heroku and make modifications necessary to change the database to postgres in production. This brought a few tiny changes I needed to make to keep it all working the same (Sqlite3 to Postgres) but nothing too complicated. After I had this setup I spent most of my time getting an authentication system to work. I was so happy to see a JWT token after a user had logged in after getting it all setup. The app had come a long way in 3 days.

Day 4: Small Tweaks and Presenting to the Cohort

Now that my authentication was working I started to make some modifications to the front-end with the new routes and logic. I commented this out just before the demo because I ran out of time in incorporating this logged in status to a user's personal notes but is definitely something I"ll be revisiting over the break. The demo was the most nerve-wracking part but I quickly got over it once I committed to doing it and prepped my project with a practice run-through. Really though, I was so happy it was all working with about 2 minutes to spare. It went well and it was bitter-sweet to be done with this part of the course. Some of us will be moving onto labs, some to CS and some will be full-time PM's. I'm not sure what I'll be doing yet (Labs or CS) but I'll keep you posted.

It's Friday morning as I write this piece and I just found out that I was selected to be part of a pilot group that is doing Labs before the CS portion of the curriculum 😃. This morning I saw the current Labs group present and was blown away by all the awesome projects. I'm looking forward to the next step in this awesome journey. Over the break I plan on working some more on the playlist app that we began working on over Thanksgiving Break, re-learning some Python and learning some Vue.js. Checkout my project and drop me a friendly note! (Authentication & Mobile Responsiveness in progress): Lambda Notes

FSW14 Sprint 14 - Testing

Another fun week at Lambda School. This week focused on automated testing which is a way to be confident that your code will do what it says it does. Although some of the assignments were a bit tedious this week I appreciated all the practice I got by the time the last lecture came and I saw my peers guide our instructor on a complete end to end test. It was awesome. I was able to finish the sprint where we used Test-Driven-Development (TDD) to create a simple Web API using Node.js and Express.

Day 1: Introduction to Automated Testing

On day one we were given a broad overview as to why testing is important and were shown how to use Jest to automate tests for you. We were then given a 2-day project to write lots of test for. I was able to finish the day 1 assignment but there sure were a lot of tests to write. Automated testing is pretty cool, I liked how I could check for something before I created it and that would guide how it was built. We talked about the benefits and downsides of coding using test-driven development. It was hard to see the connection to a full application since we didn't get to React testing until day 3 but it was an interesting new topic.

Day 2: Automated Testing II

On the second day of our intro to automated testing we talked some more about testing philosophy and explored how to setup our tests to work asynchronously. We got a lot more functions to test for part 2 of our project and I ended up running out of time because I wrote too many tests for the first couple of functions without realizing just how many we had to do.

Day 3: Testing React Applications

This was a very cool lecture. There was a lot of practice creating the React app from scratch which was welcome since it's been a few lessons since we've been required to build with React. We used Enzyme and Jest to snapshot our components and test what they do. I didn't finish the project on time because I was still a bit confused with how to use the Jest documentation in conjunction with Enzyme but luckily I've gotten a lot of practice and I was able to debug by the end of the day.

Day 4: Testing Web API's

We finished our front end curriculum with a 🔥 lecture where our instructor used members of my cohort to pair program a full end-to-end test for a Web API. It was awesome to see my classmates crush it and be able to take our instructor step by step through the process. We learned how to use an npm module called supertest that loads an instance of our server which lets us make requests and test our assertions about the responses. I struggled a bit to get it setup but once I fixed my issue (it was in the setup of my files) I was good to go. I used most of this day's knowledge in the next day's sprint. I didn't quite finish everything I needed to do for this project since I ran out of time with my error but I was confident that I could do the sprint since everything was working.

Day 5: Sprint 14 - Testing

For our last regular sprint of the front-end portion of the curriculum we used Test-Driven-Development (TDD) to create a simple Web API using Node.js and Express. I decided to go for it and implement a stretch goal of using a database to do a full end to end test. I ran into an issue where my routes where in the same file as my `server.listen` which was causing an issue with my tester. It was a rookie mistake which cost me a few hours. Once I cleaned it up I had a nice looking database which will serve me well in next week's Sprint Challenge. Every Sprint Challenge so far has taught me something new in one way or another.

This was an enjoyable week after I got through the tediousness of learning tests for the first time on a bunch of functions. I understood why we were doing it, there's lots of different types of problems we'll see as engineers and we should be able to apply our skills to many different scenarios. I loved how it all came together when we built a React app with snapshot testing and also tested the web API we built. I'm stoked for project week and to play with all the skills I've learned during our 3 week break.

FSW14 Sprint 13 - Authentication

Two weeks have passed since my last post, I will talk about what I worked on over Thanksgiving break and then jump into what week 13 at Lambda School was like. Over the week long break I started to work on a project that a few of my peers in my small group and myself thought of to push ourselves further and keep our skills sharp. This was a great experience as it gave me a taste of what it would be like to work in a team and also gave me practice reading documentation and implementing something that I did not know how to do before. I learned how to use the YouTube API with a JSON web token to make requests on a user's behalf using permissions from their YouTube account. We decided to build an app using React and although we didn't get a finished product we have a solid start and I will definitely post more details as we develop this further.

Day 1: Introduction to Authentication & First Day as a Part-Time Project Manager (PM)

Authentication is definitely a complex topic but the introductory lecture made starting the afternoon project pretty straight forward. We got a big overview as to what authentication was and were given some good guidelines and best practices for things we should be thinking about when we work on authentication projects. One of the things we learned how to do is use a library to hash passwords before saving them to a database. I was able to follow along with the lecture and finish the MVP for day 1 of our first 2- day project of the week.

In the afternoon I started day 1 as a PM for the Full Stack Web Development Part-Time 4 cohort. I'm using it as an opportunity to see the curriculum through a new lens, network with more Lambda peers, and get some real world experience working in tech. I have a great group of students and look forward to helping them get through Lambda and to see their growth as the weeks go by.

Day 2: Using Sessions and Cookies

This was a very enlightening day in terms of the new information I picked up and what I learned about how the internet operates. I had heard of sessions/cookies before and had a rough idea of what they did before Lambda but I had never bothered to really research them or learn how to use them. To describe what they do, they allow you to retain information about your client so that they do not need to log back in if you don't need them to and their information will still be shown to them upon returning to the site. After this lecture I felt everything coming together and could see myself delivering a full website experience using everything I've learned so far. It was a great feeling. The lecture made it so that you could complete your project if you followed along so it wasn't too bad to hit MVP for this day. I definitely feel like I need more practice in general but I for sure am getting that each and every day. 😄

Day 3: Using JSON Web Tokens (JWT)

We started another 2 day project on day 3 of this week where we began to learn how to add authentication to an API using JSON web tokens (JWTs) and creating a React App that would use this authentication. The lectured focused on JWTs, what they are and how to use them. I learned that a JWT has three parts; a header, a payload and a verify signature. We discussed how to use that token to authenticate a user and I was able to finish day 1 MVP by following along with the lecture. This was the same material that I had done on my own when working on my Thanksgiving project the week before so I thought that was kind of cool.

Day 4: Client Side Authentication

This was definitely the meatiest day of the week in my opinion because we had to take all our authentication knowledge and combine it with all our React knowledge to create a functional app that would authenticate a user using a JWT. With JWTs the client is responsible for holding onto the token and sending it on every request. I re-watched the lecture and followed along closely changing items that were unique to my server. I didn't finish on time but I was able to wrap up right as my PT job as PM was about to start. I felt ready for the Sprint and did not do a review for this one (mistake!)

Day 5: Sprint 13 - Authentication (RDBMS)

This sprint challenged us to implement a User Authentication System that used the bcrypt libary and a JWT. Had I written my review beforehand I would not have gotten tripped up by some of the "easier" parts of this challenge. For me the most challenging part was actually being able to import/export all the pre-built files correctly. I appreciated the setup once I figured it out and finished MVP because I was able to identify ways to improve my own practice. Once I figured that out it all fell into place. I plan on spending some time making a React front-end for this app over the weekend to improve my score from 2 stars (finished MVP) to 3 stars.

Another busy week at Lambda School but busy in the best way. I picked up a lot of material and met a lot of cool people in the part-time program. I now know that I'm able to pickup a new technology and be able to learn them in a relatively short amount of time. I look forward to our last full week of instruction next week when we get into testing before starting our back-end project and wrapping up the front-end portion of the curriculum. It's gone by really fast and we've come really far in a short amount of time, amazing.

FSW14 Sprint 12 - Adding Data Persistence to Web APIs

This week has been packed with information. This week focused on databases and how to use them with our Web APIs (Application Programming Interface(s)) It feel's so nice to make a database from scratch and really get to see what all these words in your code finally mean. It's really magical. I appreciate databases like I never have in the past. This was also the first time our cohort was asked to apply to become project managers for an upcoming part-time cohort. I applied for the position on Sunday, the day the application opened, read on to day 3 to see how my interview went and onto day 4 to see if I got in or not!

Day 1: Introduction to Relational Databases and SQL

Day 1 focused on the concept of a Relational Database and how to write Structured Query Language (SQL) to communicate with said database. This was definitely the "easiest" day of the week. The language is really straight forward and easy to use. Our project was to write some queries which I was able to do after looking at the documentation examples and to create a table using SQLite with some constraints on the entries. I finished MVP and was feeling pretty good about the day. I should note that this was a day off from live-lecture due to a holiday but we were still expected to do the project after watching a pre-recorded lecture.

Day 2: Inserting and Modifying Data

After this week I'm starting to think that writing a review Thursday night isn't good enought and I should be doing this every night... too much information and this has been so helpful to my understanding. For example, I wasn't even completely clear what knex was doing until the morning of day 4 even though I successfully used it on day 2. Before we get to that we learned how to manipulate data using basic CRUD commands in SQL and then learned how to use knex to write these same commands but to our web API. This is where I got a little lost and didn't realize that the knex docs were meant to be used very literally. This was completely my fault in that I didn't read the training kit closely enough, it was even in bold letters! 🤦 I don't know, I think that I was on autopilot and wasn't even aware that I was using knex and not SQL somehow. This wouldn't clear up until the morning of day 4.

Day 3: Querying Data, Migrations, and Seeding

This day focused on using Knex to create migrations which made our tables and our seeds to send data to those tables. I also had my interview for the PM position on this day. Tip to future PM applicants, make sure your webcam is on and in front of you (was one of the things I was commended on). The interview went well and I was told that I would find out either way the following day. Back to the databases... migrations are any changes to our database. The way knex does this is really cool. I had some issues which my peers helped me fix by doing a rollback and then remigrating my tables in the right order. It was a stretch goal to use a join for two tables which would allow me to display records from each that were related and that was what got me thinking about what knex truly was. I got stuck on this problem trying pure SQL methods and went to sleep frustrated.

Day 4: Introduction to Data Modeling

This day was all about the big picture of how to model a database and what sorts of relationships and tests you should be thinking about. We covered the types of relationships data can have "one to one", "one to many" and "many to many", including how to implement these with primary keys/foreign keys. I definitely need to see some more examples but this was great for a an intro to the topic with a real demo and project. Speaking of the project it was really detailed today. Before I started working on it however I asked a peer and a got help from my PM to fix my stretch problem from the night before. The problem was that I was not using the knex documentation correctly. Once I saw my error the week became very clear.

I got back to the project of the day. We had to build the back-end for a recipe book with all kinds of constraints. I spent most of my time thinking of my data structure and having my aha moment with knex playing with migrations and seeding. I was confused on how to reference a separate table but this was mainly due to being tired from a long day. This might be my only 1 star project in my Github repo. Didn't finish MVP because I ran out of time.

Also, I got the part time PM position! It's official. I will be a PM for FSWPT4 starting after Thanksgiving break. Let's me see the curriculum from a fresh perspective and lets me be more involved with Lambda and help some people who are going to be in a position I was in just a few short weeks ago. Looking forward to it! So glad I wrote this, I feel ready for tomorrow's sprint.

Day 5: Sprint 12 - Relational Database Management Systems (RDBMS)

For this sprint we used Node.js, Express.js and Knex to build a RESTful API for a project tracker application that persisted data to a SQLite database. There were definitely a lot of moving parts to this project and I needed ~45 minutes extra to finish MVP but I as super proud of myself for troubleshooting and getting it setup the way that I wanted to. After lunch we met with our instructor and he went over some of the nuances of the project and showed us even more material before sending us off to break.

To wrap the day up I had my orientation for my lambda PM internship and the orientation with the cohort that I'll be a PM for. It was fascinating to hear the orientation again through a new lens. Looking forward to my new role and am thankful to Lambda for the opportunity.

Glad to get to a break in the program but not a break from coding! Currently in talks with my small group in my cohort to work on a project over break, we have a lot of ideas we just need to decide on one and go =) Some of the things we are talking about I would have had no clue how to implement a few weeks ago but am super confident we could come up with something decent in a week's time. I might let you know how it goes!

FSW14 Sprint 11 - Building RESTful Web APIs with Express and Node.js

Writing this blog is has been a great way for me to either prepare for a sprint (I'll start writing Wednesday or Thursday) or review what I've just learned (I'll start writing Thursday or Friday). This week was the latter, and I definitely needed it. We started the back-end portion of the curriculum which means we started to learn about what happens on the server side of the client-server relationship. It was a bit like learning how a magician does his tricks. For our sprint this week we built an API (Application Programming Interface) that performs CRUD (CREATE, READ, UPDATE, DELETE) operations on a pre-built data access layer.

Day 1: Introduction to Node.js and Express

Monday was another fresh start as we started to dive into the back-end portion of the curriculum. It's never a dull day at LambdaSchool. We met our third instructor and started to get into new material right away. We began to learn how to use Node.js as a platform to write server code that can communicate with clients (other computers) using JavaScript. On top of that we brought in Express which is a web application framework atop Node.js that lets us add routing and middleware. A lot to digest for one day but our instructor was really patient and gave us great code-along demos. We started a 2-day project whose day 1 objective was to successfully implement a GET request. I was feeling tired but solid on the instruction and the project by the end of the day.

Day 2: Server-side Routing

In day 2 we delved deeper into Express and saw how it gave our application a way to handle different URL+HTTP method combinations. We used it to send requests that manipulated the data on our server in different ways. We used Postman as a tool to manually test our requests which was valuable when it came time to do our projects this week. We also saw how to read data from the query string, request body and route parameters. It always seems like a mountain of content at first but the instruction and the projects help bring it all together in a digestible way. I'm lucky to be able to put in the time to do the work. That is one thing that is necessary to be successful. You have to be fully committed. That being said I was able to finish this 2 day project and whip up a quick React app to view the posts that my server was spinning up. We're moving fast.

Day 3: Express Middleware

This day focused on using middleware to extend the features that were provided by the Express framework. I enjoyed that our instructor demoed how to write custom middleware which made it easy to understand what Express was doing under the hood. We started another 2 day project which had us practicing more endpoint routing and writing our first custom middleware.

Day 4: Deployment and Good Practices

As I write this I'm impressed at how much we've covered in one week. On the fourth day of instruction we saw how to use error handling middleware, learned how to use Express Router to organize our code (which made my server file a lot cleaner and shorter) and deployed to Heroku. All in a day's work. Once again I was able to finish this 2-day project on time and wrapped it in a presentational React app to display a portion of our data. I thought the next day's Sprint would be straight forward... I probably should've studied or written this recap earlier.

Day 5: Sprint 11 - Node-Express

For the sprint this week we were tasked with creating an API that performed CRUD operations on two data sets that were pre-built for us. (Sprints are only 3 hours long). I struggled getting a 404 request to return when I wanted it to, had I learned anything at all? I was stumped. And hungry. I reached out to my project manager and let her know that I wouldn't be finishing my Sprint on time but would debug and submit after lunch. As I was eating I had my lightbulb moment! I was expecting something of my method that it couldn't do and had actually solved a similar problem earlier in the week. I got home, debugged my code and submitted my project. Mission accomplished.

After my one-on-one with my project manager I felt relieved to hear that I wasn't the only one in my cohort to have had that issue with the Sprint. I'm amazed every week at the new skills we learn. Next up, we add data persistence to our web APIs.

FSW14 Sprint 10 - Project Week: Front-End

It is Friday morning the day after we (FSW14) completed Project Week for the Front End portion of the Full Stack Web Development Curriculum at LambdaSchool. We were tasked with building a minimum viable product (MVP) for a note taking app in React called "Lambda Notes" for our "client", which was our instructor. This project was really challenging but so much fun. I completed MVP early Thursday morning but didn't put the finishing touches on the project until about half an hour to demo time. Probably the most thrilling week so far in my time at LambdaSchool.

Day 1: Project Setup & Getting the Data

Having been through a project week already while attending LambdaSchool I was much better prepared this go around because I kind of knew what to expect going in. The project was a to-do notes app that we had to create using React given some design files which were just visuals for what the app should look like. We worked on the project from Monday to Thursday at 2pm at which point some of our cohort presented to the group and that was followed by a smaller group presentation with your project manager. I had setup my Trello board the previous night and had an idea for what MVP looked like. The app needed to fetch notes from a server, display them, display a single note, edit a note, and delete a post. Using Redux was a "stretch goal" and thus not required but I felt comfortable with it from the previous week and it seemed like a logical choice for this app, I cleared that with my Project Manager and got underway.

Github Elvis Ibarra Day 1 Progress

The above image is from my Github account and shows the "commits" or saves that I did throughout the day. Day 1 was pretty smooth. I wanted to start easy and not overwhelm myself by trying to implement all the MVP features at once so I focused on getting my notes to appear using a POST and doing the styling for the main portions. I was feeling good about my progress after day 1 and was at 2/6 on the MVP list.

Day 2: Posting a Note & Reload Issues Emerge

I started to run into issues that would last up until Thursday morning when it all came together. I focused on getting a POST request to work and was having trouble getting my page to render all the notes after using a POST request without doing a hard reload of the site. I tried lots of different things and at the end of the day I decided that at least it was working and that maybe if I focused on implementing some of the other MVP features I would fix this on time. This is when I started to get a working Route implemented which got me to look into WithRouter which solved my reload issue. Well, that and calling another GET request after my POST request in the POST action. I started to wrap my connect with a WithRouter function from my middleware and that moved my Router methods from the Context area of my React tools to my Props. If that made no sense to you don't worry, I basically fixed my reload issue which gave me confidence going into day 3. If I had a working POST method, then PUT and DELETE weren't far behind.

Github Elvis Ibarra Day 2 Progress

I was at 3/6 MVP and feeling okay about the project and the week so far. For some reason I thought we had until Friday for this project and something clicked on this night that the project was actually due Thursday! I still thought I could wrap MVP up by Wednesday night so I wasn't too worried.

Day 3: WithRouter Saves the Day MVP a Day Away

Wednesday was Halloween and also the the day I spent the most time with this project. It was quite spooky. I spent most of the day coding away and by the end of the night I had gotten MVP with some quirks and styling that didn't feel quite right. I definitely was not happy with my product that night but I had the following day to change my simple inputs that were placeholders for a full form and get my delete modal finished which is what I needed to feel satisfied with my project. I was feeling awesome about being able to problem solve and make progress every single day.

Github Elvis Ibarra Day 3 Progress

Even though I was at 6/6 on the MVP list I was not complete in my head until I had a working modal and a form with multi-line text and not just 2 inputs on a screen. 1 day to go.

Day 4: Demo Day - Lambda Notes - FSW14

The delete modal was a little tricker than I thought but since I had most of the morning to focus on it I got that and my form conversion done right at around 1:30pm. It was so cool to see something that you created come to life and work as expected. Sure there are things I could improve but this was mine and it worked =) At 2pm we all met to watch some of our classmates present. Awesome stuff. We have some very talented individuals in my cohort who did some really cool things with their projects. One of the major differences from this go around to last project week was that this time my reaction was "That's awesome, I can see how they did that and can't wait to implement that on my next project." instead of "Wow, that's so awesome, I have no idea how they did and I'll never be that good".

Github Elvis Ibarra Day 4 Progress

At the end of the day I presented a 6/6 MVP project to my group which used Redux (1 stretch goal) and I am hosting on Github Pages here: Front End Project - Lambda Notes

Such a fun week. I learned so much and am so lucky to have such an awesome group of people around me. I could not have pulled off this project without the awesome instructors, project managers and my fellow FSW14 cohort at LambdaSchool. Even though we've only known each other for 10 weeks it truly feels like a family. Which reminds me that this was also our last week with Dustin Myers who was a great instructor and am thankful for the time he spent with our cohort. As a final note my project was initially built out of 2000px x 2000px design files which is why the app seems huge and I didn't have time to optimize it for smaller screens or anything like that since I spent so much time getting it to work and display correctly at this size in the first place. There's plenty more I would improve but I'm happy what what I got.

FSW14 Sprint 9 - Redux

As a wrap up (content-wise) topic to the front-end portion of the Lambda School Full Stack Web Development Curriculum we explored Redux in week 9. Redux is a state management system that can be used in conjunction with React to develop large scale applications. Its uses are to provide your application with a single source of truth without having to worry about passing state around from component to component like we were last week. As I write this week's post I am working on fixing my Sprint project (my Smurfs needed a reload to show) but overall it was another week full of new content and fun breakthroughs.

Day 1: Redux Fundamentals I

Ok, now that my Sprint project is fixed I can finish my weekly blog post. On Monday we were introduced to Redux and it was definitely a lot of information but the project was manageable and after asking a cohort member for some help with one part of my code I was done with the first project and had begun to setup the next day's project. At this point I had an idea of what Redux was and how to use it but was still iffy on some of the basics such as the difference between the Redux state tree and the React component states. These concepts cleared up with some more practice on days 2-5.

Day 2: Redux Fundamentals II

On day 2 we explored how Redux is based on the immutability (don't mess with data) principle and the methods/techniques we can use to take advantage of Redux's state tree. Our project was to re-create a project we had completed before but using Redux, this was a to-do list app. I didn't finish on time but this project was the one that started to clear things up. I didn't finish because I was mixing up component state and my redux state. After some research I came across a GitHup post where Redux's creator is addressing this exact topic and explaining the differences and when to use which. It was great to see the main developer involved in his project and helping others out who are trying to use his technology. I started to see the possibilities with Redux and how smooth it could be.

Day 3: Async Redux - Redux Thunk I

This was a powerful day. We learned about middleware in Redux that lets you do things to actions before they hit the reducer, which, in turn, let you do asynchronous calls in your applications. We rebuilt another previous application today which interacted with a Star Wars server and returned some characters. I got this project done on time which was a great relief from the day before and gave me a confidence boost in learning Redux.

Day 4: Async Redux - Redux Thunk II

The last day of instruction for the week and we explored asynchronous calls in more detail. We rebuilt yet another application we had worked on before but this time there was no pre-provided code so we had to whip up the whole thing from scratch. This was a pretty cool experience and it definitely prepared me for the next day's Sprint challenge. I didn't finish what I wanted to on time but I got the bulk of the project done.

Day 5: Sprint 9 - Redux Smurfs

After a week of re-working projects it was only appropriate to re-work a prior Sprint as well. We were tasked with building a React/Redux application that interfaced with a Smurfs API asynchronously. I finished on time but didn't have the functionality I wanted. I hit some stretch goals with deletion but still haven't mastered an edit feature. After spending some time today looking at my code I fixed my mistake which involved not passing a dispatch correctly when adding a Smurf which caused me to have to reload the page to se my new list. Fixing this cleared up many things and it's always a good idea to check out the solution to the Sprint after you pass to see what you could've improved.

The major difference I noticed in how I worked this week compared to last was that I was less flustered when I didn't get something right way. I remembered a theme during the after hours lecture which is that the code is doing precisely what I told it to do and that each error has a meaning and a purpose. Sometimes it may be tough to find out just what that is but that is our job as programmers. This made redux issues more enjoyable and the learning process a lot smoother this week. Next week is project week which means our last week with our 2nd instructor and another week-long project where we get to display all we've learned so far.

FSW14 Sprint 8 - Single Page Applications

This week we focused on learning two packages with React: Axios and React Router. Now that I've had 3 weeks working with React I'm starting to get comfortable building with it. Being able to start a local server and interact with the data was fascinating to use, and simple too now that I have more reps under my belt. I'm finally starting to appreciate how useful React can truly be.

Day 1: React Router I

We started the week learning the difference between client-side routing and server-side routing. The pros and cons of having all your data brought in at the beginning vs pinging a server and having your page reload with each request. We then started to learn and implement the Client Side Routing Library (React Router). This gave us the ability to create dynamic routes using URL parameters to display our components with whatever user interaction we needed. Being able to match items to URL paths and seeing how easy it was gave e a great sigh of relief after a tough two weeks. We had two projects to complete over the next two days relating to this topic. I finished the first pretty quickly that day and left about half the second project for the next day. A smooth start to the week.

Day 2: React Router II - Sub-routes and Link/NavLink

This day we dove deeper into React Router and although it was a bit more intense (content-wise) I was still able to follow along. Looking back I didn't appreciate how the render prop or the history object was used until it came time for the sprint. With React Router you can pass data to components via the render prop, I didn't really understand what this meant until Friday. I was also confused with the history object that React Router has but it all cleared up on Friday. I truly appreciate React Router and its intricacies until I had used it for a few days in a row. I finished my project but didn't hit stretch goals. I felt at the time like I understood the basics but still needed practice to be able to implement any of the stretch goals we were given. Link and NavLink are used in React Router to link as the names imply but NavLink can add an active-class to a selection which is awesome for styling purposes.


On day 3 of this week we learned what AJAX meant (asynchronous JavaScript and XML) and learned how to perform requests to an external server in order to retrieve, create, modify, or remove information. We were also introduced to Axios which is a library for performing promise based HTTP requests. These promises are what allow you to make multiple asynchronous requests and continue with your apps operation until those requests are fulfilled or rejected. It was pretty straightforward but the project we were using to explain the concept was pretty complex and interesting. We learned our request via a web store applications whose items we could add, edit, or remove. Cool to see the concepts we were learning in an actual application. Although some if it wasn't clear in real time seeing the videos again and being able to pause and follow along was key for me. I realize through this journey that I'm not great during live lectures. I try my best to keep up but if I mess up a keystroke or for whatever reason don't follow along for a few minutes I'll be lost and just watching along instead of coding for myself. I much prefer watching a prerecorded lecture where I could go at my own pace. That's just a personal preference. I appreciate the live lectures 100% but I know that moving forward I will appreciate them way more knowing that I don't always have to keep up and can and should be instead going back and watching at my own pace at a future time. Or, even better, a cool thing about Lambda School is that the previous cohort's videos are available for us to watch. So instead of going through the training kit and trying to read and do the exercises this week, instead I watched all the videos from prior cohort's lectures and followed through those. When it came time for our live lecture I got lost (coding along) as expected but I had already seen and understood the material so I wasn't stressing. I was still able to do the projects because I had put in the time to watch and code along to the exercises the night before, same instructor and everything! I love the ability to play a video at 2x or pause for 20+ minutes if needed. Especially with all the new content we are consistently learning.

Day 4: HTTP / AJAX II - Axios

We finished our online store demo using Axios to add, modify and delete items. I completed my project for the day but I wasn't able to hit stretch or delete/modify my entry. It wasn't required for our sprint the following day but it is something that I'm working on learning. I also am at 90% on Code Academy's second React course which helped clear a few things up again this week, have to mention it as a fun learning tool that I'm using along with Lambda School.

Day 5: Sprint 8 - React (SPA) Smurfs

This project was fun. We built out a CRUD (create, read, update, delete) application that consumes an API to update Smurfs being shown on screen. I hit MVP way before time was up and I was surprised at how well I had done compared to the two previous weeks. I even hit a stretch goal of implementing a delete feature. POST is still tricky for me to implement on a solo project but it is something I"ll have down by project week with lots more practice to come.

2 months later and I have no doubts that I made the right decision with Lambda School. I'm learning more than ever before and couldn't of asked for a better experience. Next week we are learning Redux which is a state management system and then we have our week long project week for this front end section of the curriculum. This is going by so fast!

FSW14 Sprint 7 - Intermediate React

This week we learned some more advanced React techniques and worked on a week long project to create the User Interface for an Instagram Clone. It was definitely the toughest week by far but at the same time I feel like my preparation and truly trusting the process helped me successfully finish this week's Sprint challenge which seemed daunting just a few days ago. I also pair programmed for the first time this week which was a fun learning experience and something that I need to go out of my way to do more of.

Day 1: React Tooling

We had this day off for Indigenous People's Day but we were expected to complete Day 1 & Day 2 parts of the week-long project by end of day Tuesday so we were still expected to have Day 1 work done by Tuesday morning. We were free to do this anytime starting Friday afternoon. I spent the weekend working on Code Academy's React part 1 course because I still felt a bit shaky and I'm glad I did. It was a confidence boost #1 because I was amazed at how much I already knew and but #2 I was able to appreciated some things that I missed or just saw in a different light going through these exercises. I got through the course over the weekend and while it definitely holds your hand a bit too much and is not as deep as the Lambda projects I appreciated going over the basics one more time. Learn from wherever you can. Anyway, on Monday I started and mostly finished the project for the day. The content was all about setting up a React project on your local machine. It seemed a bit redundant since many of the tutorials when we started React were on this topic but I can see why it was necessary to go over this since we had been in a code sandbox for the previous week (at least for instruction). We also went over how to use PropTypes to 'type check' data being passed to our components. Basically putting a check into our code for ourselves and future developers to know the type of data that a component expects. I didn't appreciate how useful this would be until later in the week.

Day 2: The React Lifecycle

Whooo... this was a topic that felt like we could've spent a week on to get good at or maybe that's just me. The React Lifecycle refers to every component in React having a lifecycle. It's not a complicated concept, a piece of UI is created, used, and terminated/deathed when it has served its function. There's a lot however going on under the hood and some new methods were introduced that React components can use to manipulate data and share it amongst other components. We were expected to use these newly taught skills to make our Instagram Clone come alive and be able to add comments to posts and increase the like count by clicking on the hearts. This seemed pretty straight forward before React but now we needed to set a state and pass it down? I understood during lecture but in practice I was struggling. Luckily I picked the perfect day to pair program. I had a good conversation the previous week with one of my peers in the cohort during our code review and we were both struggling then so I suggested we tag team this project in the afternoon after lecture. Luckily he agreed and we struggled through it together. We didn't successfully implement the add comment functionality but we got close! Luckily I have some awesome people in my smaller group that I meet with daily during stand-up and they were able to explain how they solved the problem which showed me where my mistake was. I felt shaky but ready for day 3 after reviewing the solution code for the day and looking at the following day's material.

Day 3: React Composition Patterns

This was another topic which felt like I could've spent way more time on (...and I plan to!). A Higher Ordered Component (HOC) is pattern seen in React that gives reusability to component logic. It is a function that receives a component as an argument and returns a component. The name is a bit misleading in that respect. Our Day 3 project with this concept was to implement an authorization page on our Instagram Clone using a Higher Order Component. Once again the lecture felt smooth and I felt ready to implement but it was definitely tricky and I didn't finish on time. I did get a chance to review the previous day's solution and started to get a better sense for how React works. I can't say how thankful I am to have great peers in my group who do a great job of explaining their work and my project manager as well who is encouraging and helfpul in answering our questions or finding somebody who will. I was starting to feel a little bit nervous about the upcoming Sprint Challenge on Friday after having failed to finish my project in time for two days in a row but I took solace in being able to read the solution and be able to follow along during lecture.

Day 4: CSS in JS - Styled Components

Day 4 brought a well-received 'easy' topic with Styled Components. Having the ability to style your components from within your React file looked really cool when it was demonstrated and it was super simple to implement. It's really fascinating to see the different ways there are to do the same thing and having the ability to pick and choose based on the situation or your personal preference. This day's project was pretty easy - refactor the previous day's page to use styled components. I spent most of the day reviewing HOC material from the day before. I didn't feel 'ready' for the Sprint but I was confident that either way I had learned a lot this week and was reminded by a peer that two weeks ago I didn't even know what React was.

Day 5: Sprint 7 - React Lambda Times

This project brought back a previous project we had worked on when we were learning about Functional Components - The Lambda Times. Our task was to refactor our prior project using React. Most of the code was built out for us but there was definitely a lot for us to do! I hacked away at it and was mostly done by the time 11am hit. If I haven't mentioned it before you are expected to work on your sprint from 8-11am PST. I was stuck getting my articles to update based on my selected tab. I was growing frustrated but I knew I was close. I told my project manager that I would wrap up shortly after lunch. After getting some food in me I got back to it and after plenty of console logging and React debugging I got it to work! I guess I knew some React after all.

This was definitely one of the most fulfilling weeks in my time at Lambda School. I struggled but I knew that the concepts would come with practice and time. Plus if you are struggling then it definitely means that you are learning. I was super happy to pull this week's project off and am off to prep for next week's material on... let's see... Single Page Applications using React Router and HTTP/AJAX... umm time to go read up!

FSW14 Sprint 6 - Introduction to React

This week was all about React. React is a UI library that was developed by Facebook that allows you to create small, reusable pieces of UI that can be put together to make larger applications. There wasn't anything tough conceptually but it was a lot at once this week and I struggled with some of the syntax and how to apply state across my components. A tough week but I got through it and after putting in sometime this weekend to review I feel better heading into week 7.

Day 1: Functional Components I

We started the week with the basics, what is React and what potential problems does it address? I touched on this in the intro but the answer is data. React is a way to interact will all the potential ways a user can use the application and interact or provide data and have that application re-render in an efficient way. React allows us to do this using Components. I finished the day 1 project on time which was to use JSX to create a social card which was a copy of a Twitter Tweet. Fun to see on a day 1 project.

Day 2: Functional Components II Shape

Day 2's focus was on the use of props in React and how tio implement the map function to loop through an array and display multiple elements at once or just loop through data that would be given or needed to be used in an application. We created a calculator application without the functionality (that was stretch) as our project and I finished MVP on time. Tuesday was the day that I attended my first Lambda School after-hours from 6-8pm PST. After-hours are on Tuesday and Thursdays and they are an extra Q&A session with an instructor who goes over questions or just gives more examples. I was feeling a little bit overwhelmed with the new info and decided to attend and I'm glad I did. I cleared up a lot of misconceptions I had and reinforced some of the material from the morning lecture.

Day 3: Class Components I

We talked about Class Components which are unique to React and are how we manage our data and user interaction. Introducing state and passing that down to the components. I should mention that we got a new instructor this week (every 5 weeks at Lambda School for each new unit) and the lectures have been good. I follow along content-wise but when it came to implementing this day's project I got a bit tripped up. The task was to create functional to-do list. This involved having to take user input and interaction. I realized that a majority of my problems were simple spelling errors "do" vs. "Do" or a misuse of syntax. I was ok knowing that I could understand my peers work during standup.

Day 4: Class Components II

Our project for the day was to finish our calculator project from the previous day. The lecture got into nested components and further instructions on how to use setState to control how your components are rendered on screen. I stayed for a 2nd after hours because I was still struggling with getting my events to work and my app to do what I wanted it to do. After reviewing the solution code I realized that I needed to brush up on my basic Javascript if I wanted to be successful with React.

Day 5: Sprint 6 - React Wars

This project was easier than our calculator App but something about it was still giving me issues. We had to take data and render it to our screen in React. The data was from a Star Wars API which was awesome to use a real API in a project that I was creating. Seemed easy enough, I had done this multiple times throughout the course of the week. One thing slowed me down. I didn't pass down my props in my render function to my components! After carefully reviewing some similar projects I was able to finish on time and submit a product. I didn't hit stretch but I knew I had to spend some time over this 3 day weekend to brush up and really figure out where I went wrong. This blog goes a long way in clearing out those thoughts and figuring it out.

I spent some time this weekend on Code Academy in their React section. There were definitely some gaps in my understanding on the fundamentals and I feel way better about this upcoming week. I know we have another week-long project and I am ready to jump in knowing what to do and ready to execute. I'm going to look into peer programming for a bit this week so that I don't get stuck doing this by myself. I feel like I can solve my problems faster by just talking things through with somebody else. Next week we are building an Instagram clone in React learning new material such as prop checking and component styling.

FSW14 Sprint 5 - Project Week: User Interface

This was my first Project Week as a Lambda School student. Project Week is a 4 day Sprint where you are working on your own to complete a project by a Thursday afternoon deadline. You are expected to use all of the skills and lessons given during the first 4 weeks to successfully complete the project. There were many pieces to the project and plenty of additional tasks to complete if you finished ahead of schedule. We were tasked with creating a full website with multiple pages and responsiveness for different devices. It needed multiple user interface functionalities that needed to work in order for the project to be considered successful. It was an intimidating task but I knew it was possible because there wasn't anything new other than doing everything we've done all in one project instead of one a small part where pieces are provided. This was all us from scratch other than some design files and styles. The project theme was an architectural design firm - S&J Associates - website, we were tasked with a mobile and desktop design of the home page and a desktop design for the services page plus the header navigation and the tab navigator in the services page. The above link will take you to my completed project.

Day 1: Project Setup and High Hopes

This was the day I started to outline my project and decided to go with a mobile first approach to challenge myself as every project we had done in the past was desktop first. I' m talking about whether you design your mobile or desktop first which affects how the view adjusts across devices. I printed and marked up my designs with HTML tags, organized my files, forked and cloned the Github project repository, built a Trello board with MVP (the essential items needed to get accomplished, 5 total) and stretch goals and started coding my mobile desktop page right after lunch. I finished the day with the mobile page about halfway finished. I felt confident that I could get most of the project done the following day but was a bit nervous that others (a small amount, but still) in my group had finished all of the main tasks in this one day.

Day 2: The Main Page Mobile and Desktop Versions Take Shape

On this second day I struggled to finish the mobile and desktop pages by the end of the day. I truly appreciated the complexity of the design files we were given and also my own lack of practice in creating websites and using the tools at my disposal. I loved re-learning some things I had just done a few weeks ago and solidifying some of that knowledge that I had only recently gained. Even though I was done with 2/5 tasks I now felt like I was falling behind but was pretty sure that I could finish the project with the 2 days I had left but wasn't so sure that I could get it done by the following day anymore.

Day 3: Services Desktop is Finished and I Get Stuck Trying to Get My Navigation Overlay to Close

A breakthrough day for me. I finished most of my HTML and LESS for all the sites at all the breakpoints necessary for MVP and I started to focus on building the two functional Javascript components. I mostly finished one where the user clicks on the navigation and an overlay menu opens and then it closes when the user clicks the X. Sounds simple but I got stuck not getting the overlay to close and went to sleep dreaming about solutions. I found one as I was drifting to bed but was reminded of it the following day. I knew I had the whole day to implement a functional component that I had succesfully done in the past and to debug my almost done main navigator. I was 80% confident I would finish the project at all by the deadline.

Day 4: Pulling it All Together and Demo Day

I woke up and got right to coding knowing that at 2pm was Demo Time. I reached out to my Project Manager and told her of my progress and said that I might have to have a video conference to talk through my issue if I couldn't debug it myself. She gave me a nice tip on how she solved it and it sparked an aha moment of my thought the previous night. Once I got that fixed the remaining navigation component went quick and I finished the MVP tasks with a few hours to spare. I got it reviewed and after a quick modification I was good to go on trying some stretch tasks before final submittal. I was relieved and proud of myself for sticking with it and finishing on time.

Now that project week is over and we have a 3-day weekend to reflect and look ahead I'm thankful and grateful for this experience. In 5 weeks I have a project on my own domain which I created with the skills that I picked up in a very short amount of time. Some of my classmates have some really incredible work which I'm super proud of and inspired by. Demo day was a good time to learn and see what's possible with more time and patience. Next week we begin to learn React and I am still planning on fixing some things on my S&J Architects page as well as getting around to implementing the tab navigator on this page and adding a Projects page to display S&J Associates. I also need to fix the mobile view of this page. See you next week if not sooner.

FSW14 - Sprint 4 - Applied Javascript

It's hard to believe that it has been a month already of Lambda School. We've come a long way. I am excited and slightly nervous about tomorrow's sprint challenge. I've struggled a bit this week to complete all of the projects. It's mostly been silly mistakes that send me down a path that leads to a new mistake and before long I've lost myself and am not sure where the problem is. I felt good Monday and Tuesday but Functional Programming has been a bit of a challenge. After doing some review I've noticed that most of my errors have been simple spelling mistakes or forgetting to closely check how to call the CSS on a query selector. I'll be on the lookout for that during tomrrow's sprint.

Day 1: DOM I - Intro

I felt really good about this day and probably overconfident as we moved into Tuesday. I had done a fair amount of work over the weekend watching the previous cohort's lecture and starting the project. I didn't appreciate the subtle difference between query and element selectors which cost me heading into Wednesday but I learned a lot on this day. We learned that the DOM stands for the Document Object Model which is an object representation of the HTML of a website that is a tree structure that can be traversed and used to give functionality to websites. The things you can do once you learn this are amazing and I couldn't wait to try the stretch project (a timer that I want to convert into my own jiu-jitsu round timer). A great start to the week.

Day 2: DOM II - Events & Propagation

This was great, we learned how websites listen for events (such as a mouseclick) and respond to that event in some way. We place what are called event listeners on our DOM elements. There were tons to play with. The project entailed adding some to a project we had worked on previously, the Fun Bus Website. I had a good time changing things and learning how to make websites interactive. I did not get to the stretch task on this day and I started to get a bit lost using query selectors to work with some of the event listeners that I was trying to implement.

Day 3: Components I - Intro

We began to learn about components and functional programming as an overall theme. I found the material to be really cool because it allows you to do so much on a website with the skills we have learned so far. Components use HTML, CSS, and Javascript as a chunk of code that can be used to give a website functionality. This was the day we brought it all home and learned how to use objects as classes to target various parts of a website using any methods we wanted. I loved how our project solved a question I was grappling with on this very blog which was, how do I organize all these posts in a way that a user can quickly read what he wants and hide the rest? Components. I failed at completing the project on time due mainly to silly mistakes and typos but I'm starting to see it come together.

Day 4: Components II- Class Syntax and Data Attributes

Learning how to make classes interact and dance with class syntax and data attributes. So here we are now able to pass data from our HTML to our CSS/Javascript using data attributes. One application of this could be linking different components on a website that share behavior. I, again, failed to complete the project on time. Again, silly mistakes. I didn't catch a capitalization error which was giving me a headache and I added a period to a class selector that didn't need it. I'm hoping I don't make the same mistakes tomorrow.

Day 5: Sprint Challenge 4 - Applied Javascript

In this sprint we are completing challenges similar to what we've been working on all week. We'll see how this goes.

Sprint was good this week. I finished the basics with about 20 minutes to spare. There were definitely some moments of uncertainty but I had a huge breakthrough in this challenge. I was able to successfully debug my program using the debugger tools we had been shown this week. They were so clutch in getting the logic to work as I wanted. It felt amazing to figure something out that I had struggled with all week. I spent the next few days tinkering with the stretch goal of getting the an image carousel to work and got that done today. The project itself was to create functionality to a website that behaved like the LA Times page. Naturally it was called the Lambda Times. What I really loved is that this week gave an an answer to a question I had which was how to display the contents of this blog in a more organized way. Use components! Going to restyle the site over the next week using all we've learned. This upcoming week is a 4-day long Sprint challenge where we take all our training for the past month and put it all to use. We got a preview on Friday and it all looks very do-able. Looking forward to next week and beyond.

FSW14 - Sprint 3 - JavaScript Fundamentals

This week we started to learn JavaScript. It was great to see how JavaScript connects with HTML and CSS to produce content we see on web pages and applications across the internet. My favorite activity of the week was adding content to the start of a text-based RPG using the JavaScript skills I had been learning throughout the week.

Day 1: JavaScript I - Fundamentals

We got into it right away on day 1. We covered some of the basics in the first hour of the lecture: variables and arrays and then moved onto objects and functions in the 2nd hour. Presently to be accepted to Lambda School you have to complete the pre-course work which included a lot of this JavaScript material or pass the Lambda Challenge which is an on-line JavaScript test essentially. Luckily I had already completed Khan Academy's Javascript section which was extremely helpful in getting me to pass the Lamba Challenge but was also a great foundation for this week's content, especially once we got to object methods and classes. We wrapped this day up talking about the differences between 'function scope' and 'block scope' and completed a project where we created objects and used array methods to retrieve specific information from a large data array.

Day 2: JavaScript II - Closure, Callbacks & Advanced Array Methods

On day 2 we covered the concept of closure, callback and introduced advanced array methods to simplify our work from the previous day. This was a bit confusing at first but once I started to practice and fix my mistakes it was easier than I thought. Closure simply refers to a function within a function, this function will have access to its own variables and methods and those of its parent function but the parent will not have access to the child's attributes or methods. A callback refers to a function that references another function which it needs in order to run. Advanced array methods such as .filter, .map & .reduce are ways to go through an array and pull meaningful data in various ways. The part of the project which was a bit tough for me today was creating a counter function that increments each time it is called. Once I saw my mistake in implementation the concept of closure became a lot clearer.

Day 3: JavaScript III - 'this' Keyword

Here we learned how to use the 'this' keyword to interact with the objects we create in JavaScript. The four types of binding for 'this' are: Implicit, Explicit, New & Window. Implicit binds 'this' to whatever is to the left of the dot when 'this' is used. Explicit binding is when 'this' is bound to a function method (using call(), apply() or bind()). You can use a functions 'this' scope as the context when you call or apply (to array) it. Bind is used to store a 'this' for later use. New is used to bind 'this' to new objects created by Constructor Functions. Binds 'this' to the constructor function object. Finally, Window binds the 'this' keyword to a global or window-scope.

Day 4: JavaScript IV - Refactoring and the Class Keyword

Major 'aha' moment for me on this day. Seeing our objects we've been working with this week transform using the Class keyword made closure and inheritance seem way easier than they looked at the beginning of the week. The structure is nicer and made my coding go at a much faster rate. Our project involved refactoring (converting) our constructors into ES6 classes from the previous day's project and using our new skills to create a "school" in Javascript using different classes and methods (for Instructors, Students and Project Managers). I feel ready for today's Sprint Challenge now.

Day 5: Sprint Challenge 3 - Assessing Your JavaScript Fundamentals

In this sprint we are completing challenges similar to what we've been working on all week. Should be pretty straightforward. There hasn't been anything tricky or different from what we've been covering each week in these Sprint Challenges which makes them challenging yet allows you to demonstrate that you understand the knowledge from the week. Time to get started!

Sprint 3 is finished. I completed all tasks with a few minutes to spare and completed the stretch goal 8 minutes past the hour. There were some tricky portions but it was more of myself overthinking what I had just learned rather than the problems themselves being tough. JavaScript fundamentals was tough but I learned a lot this week as I have every week of this Lambda experience.

FSW14 - Sprint 2 - Responsive Design and Preprocessors

This week we learned how to use media queries to build websites that look good on devices of all sizes. We also learned how to use a preprocessor (LESS) to take our CSS skills to another level. Preprocessors are used to increase productivity and reduce errors in that it allows us to re-use codes by using variables and nesting. My favorite project this week was the personal resume page because I was able to throw it right on this website and it was fun to create.

Day 1: Responsive Design I - Layouts and Media Queries

Although this was technically a holiday we were still assigned a lecture the previous Friday and had up until the end of day 2 to finish the project. We learned what it means for a site to be fixed, fluid, adaptive or responsive and how to use media queries to make sites that we design behave and look as intended.

Day 2: Responsive Design II - Fully Responsive

This was the official start of the week and we started at the beginning, going over many of the concepts from the intro video, but by the end we had learned how to make sites fully repsonsive using percent based values. It was very interesting to hear not only the technical side of coding but also the real world application of when to use a desktop first approach vs. a mobile first design. Great start to the week.

Day 3: Preprocessors I - LESS

We were introduced to the LESS syntax and learned how this is turned into CSS by a Javascript compiler. Once I saw LESS in action there was a real lightbulb moment and a lot of web development was demystified all at once. It became clear how you could organize all kinds of data and pages using this powerful tool. This was the day we created our digital resumes for daily project.

Day 4: Preprocessors II - LESS Variables, Mixins, Namespaces & Project Organization

We dived deeper into LESS and learned how large projects can be organized using a master LESS file.

Day 5: Sprint Challenge 2 - Responsive Web Design and Preprocessing

In this sprint we updated a website using the responsive web design skills that we learned throughout the week. Portions of the website were provided and we were expected to match a desktop and mobile design using the LESS preprocessor and then submit a pull request using Github.

Feeling really good about these first two weeks. I feel like I have learned an incredible amount in a really short amount of time and am having a lot of fun doing it. Time to study up on some Javascript, looking at the material before the lecture has been really helpful in not getting lost during lecture.

FSW14 - Sprint 1 - Introduction to User Interface

The goal of this sprint is to build user interfaces and introduce responsive web design concepts. Concepts covered: Advanced CSS techniques, user interface development practices, and responsive web design patterns. -

Day 1: User Interface I - Semantic HTML and CSS

Learned about semantic HTML tags, how to markup a website and integrate CSS styles.

Day 2: User Interface II - Box Model and CSS Reset

Learned how to setup a website using the Box Model and why a CSS reset is important for cross-browser functionality.

Day 3: User Interface III - Flexbox

Learned how to use the flexbox module with the box model to refactor the previous day's assignment and style a new page. It all started to make sense on this day! I realized that I had not made use of an overall "container" in the prior day's assignment. Reviewing the solution and the flexbox lecture cleared it all up.

Day 4: Git for Web Development

Learned how to use the command line interface (CLI) to fork and clone a repo using Git and Github. Created and worked on a branch locally. Learned how to submit a pull request to share code that I have worked on.

Day 5: User Interface and Responsive Web Sprint Challenge

Created a fully responsive website from several design files.

I made this website you are on now with the skills I learned this week! How cool is that!?