Robots, React, and Remembering

Days of Make
  • Finish tutorial section of FCC’s Front End Cert. 
  • Finish Random Quote Machine using React
  • Read 5 chapters of Robot Building for Beginners
  • Practice makes perfect
  • Do one new thing at a time
  • 1 hour of making or coding a day
  • Finish two front end projects using React/Redux and a CSS library

After over a month of Javascript and front-end libraries, I reached the final projects for the Front End Certification which means remembering basic HTML and CSS. How do I center this div?? How do I make a button? And then you add a new technology like React which makes it much more complicated. Luckily, in a freeCodeCamp podcast I heard the great advice to only use one new technology at a time, so I ditched my initial design which unsuccessfully included Redux. It was just a little too complicated so I started again.

While building this, I remembered a lot of HTML and solidified some more React. I got a better feel for how to structure my components, learned how to change style and content randomly. 

Slowly, I am adding to it. For example, I added a call to my geNewQuote event handler when the page loads. A few next steps: transition from one color to another, spice up my CSS so that the buttons don’t look so awful, and add more quotes. I’m currently using an array for the colors and an array of objects for the quotes that include the quote and the author. 

Check it out on my codepen! I’d love any feedback.

LED Indicates Power On
Photoresistors (Center)

In addition to my work on learning React, I invested time into reading Robot Building for Beginners mentioned in my post last week. Again, it was refreshing to revisit some basics of robot building. For anyone interested in robotics or circuitry, I’d highly recommend it. This week, I setup my breadboard to start prototyping the line-following robot and implemented a few circuits.

So far, I have a power indicator and the photoresistor circuit. The robot uses a LM393 comparator chip to compare the voltage at two points. Four photoresistor aimed at the ground change resistance depending on the color they are looking at. If there is a high contrast (black on white for example) and all four sensors are on the same color (i.e. on the black surface with a white line in the middle), the comparator chip will provide equal power to the motors so it will continue straight. If one side of photoresistors goes over another color (i.e. the white line), the comparator chip will provide more power to the opposite motor, straightening the robot out. Thus, with a simple circuit to robot will follow lines. This simplicity really attracted me to building this project. 

Little by Little

Days of Make
  • 1 hour of making or coding a day (Yes!)
  • Create Random Quote Machine (Not quite)
  • Learn GPIO with Raspberry Pi (Spent this time on new robotics project)
  • Mon – Thur: Spent a lot of time learning about React and Redux
  • Fri – Sun: A little React, but mostly reading about robotics.
  • Even ‘beginner’ resources offer a wealth of knowledge. 
  • You have to start somewhere
  • Life gets crazy. Adapt and remember your priorities. 
  • Reach project section of Front End Certification and start Random Quote Machine.
  • Finish my Data Structures project (school work)
  • Read 5 chapters of Robot Building for Beginners

This week turned a little chaotic. The week began well with some React and Redux. I finished my project a bit early and got extra credit (A slightly tricky refresher on C++ and classes before starting data structures). On Thursday, my wife and I headed home to visit family which has been amazing. Running into some car problems, we ended up stranded a long 500 miles from home. I didn’t realize how much I relied on the environment I’d set up at our apartment to be more productive. Now, with a lot more distractions, I’ve struggled to sit down and code. Or in other words, I’d rather play games with my wife’s goofy younger siblings than code… I guess breaks from school are a good thing. 

Without my raspberri pi, I couldn’t do much with that. Luckily, I brought one of my first robotics books: Robot Building for Beginners by David Cook, which I would highly recommend. It was refreshing to go back and solidify some basic concepts, remember my first failed attempts at robotics, and see the change in technology the last 10 or so years. 

With the stress of getting a car fixed and managing classes from afar, I sadly didn’t make the progress I wanted this week, but I’m proud of the time I put in. There will be plenty of weeks like this one where I don’t accomplish all my goals, but also many where I will. I guess the most important is trusting in the process, continuing to go day by day. And that’s what I’ll be doing! Until next week!


To Another Week of Awesome!

Days of Make
  • Finish CodeAcademy’s command line tutorial
  • Finish JavaScript algorithms and data structures certification (FCC)
  • Wake up at 5:30am every day to code
  • Mon: Finished command line lessons
  • Tue: Some JS and front end libraries (Bootstrap, jQuery, Sass)
  • Wed: More JS, tiny bit of React, Microsoft event
  • Thur: Started JS projects. Completed ROT13 Cipher and Palindrome checker
  • Fri: Finished Roman Numeral Converter
  • Sat: Earned JS Certification
  • Sun: Some more React work on FCC
  • I can do this! (Microsoft story)
  • Using a variety of resources and practicing each concept solidifies it in my mind. 
  • Continue work on Front End certification
  • Create random quote machine (FCC project)
  • Learn basics of gpio with raspberry pi with python or JS
  • 1 hour of making or coding a day

Sometimes necessity is a great motivator. I’ve tried to learn the command line many times before and would figure out the basics before promptly forgetting it all because I never used it! Now, I need to for my data structures class (C++) because we’re using an online IDE with an integrated bash shell. It’s awesome and it is so satisfying to work with it. It’s motivated me to use it whenever I can! Also, it’s incredibly useful with my raspberry pi projects. Note to self: use what you learn in a variety of situations and you’ll really grasp the new skill/concept. 

CodeAcademy is a cool resource, but not my favorite. There were definite gaps in the activities and explanations. With some googling and trying things out, I figured it out. Like freeCodeCamp, the tutorials are to get you started. You have to put in that extra work to apply the new concepts (i.e. FCC projects).

Throughout the week, I worked a lot on this certification. It starts off with basic JavaScript, introduces important aspects of ES6, and dives into arrays and objects. There is also a section on RegEx and common debugging techniques. After that, there are a lot of easy/medium algorithmic challenges like you’d find on HackerRank. It took a lot of work to get through it, but was rewarding. By the end, I felt more confident in my thought process and learned some useful techniques. 

There were a few common roadblocks as I solved these challenges, especially the projects. The most difficult was a lack of knowledge on a topic. For example, on the Pig Latin challenge, it took forever to handle words without vowels because I didn’t know how you’d translate a word like nth follows a slightly different rule. I was also able to come up with a solution, but never a very elegant one. I relied heavily on for loops as I’m not too comfortable with some aspects of functional programming. My biggest complaint would be that FCC’s editor doesn’t allow for any output on most challenges. It is very frustrating not being able to use console.log to check my work. Luckily, I could copy and paste my code into another editor which saved me a ton of headaches. 

freeCodeCamp has done an amazing job on this certification. It taught a ton of JavaScript and really pushed. As someone with experience in other languages and some experience completing coding challenges, these were still very difficult and I learned a lot. I feel very indebted to FCC and all that they’re doing in the community! 

Wednesday I attended a Microsoft resume workshop at my school. A project manager and two software engineers came. The resume aspect was pretty generic, but one of the engineers gave some great insights while talking about his interviewing experience. The biggest takeaway for me was ‘I could do that’. He talked about a few of the problems they had to solve and they were pretty similar to those on FCC which I had be solving this week. Although I have a long ways to go, I was instilled with a greater confidence in my coding abilities and felt invigorated, wanting to go and code right then. I can do hard things. So can you. Everyone has incredible potential. I’ll hold onto that moment as things get tough and know, ‘I can do this’ whatever it is. 

I can’t wait to share my progress next week working on react and bringing back to life my LED cube with Raspberry Pi instead of Arduino! Until next week!

FCC Certificate

The Start of Something Good

Days of Make
  • Wake up at 5:30am to code for an hour every day.
  • Earn my first freeCodeCamp (FCC) certification
  • Survive the first week of the semester.
  • Actually post this blog post even if it isn’t perfect.
  • I didn’t actually keep track of everything. I’ll be better about that next week. 
  • Monday I earned the Responsive Web Design certification!!
  • Worked a lot on the JavaScript Algorithms and Data Structures section.
  • Did about half of CodeAcademy’s command line tutorial.
  • Wrote this blog post.
  • 5:30 is early.
  • I really like programming.
  • I can figure out challenging things.
  • Nothing will be perfect (code, this blog, homework, etc.), but there’s value in doing it and putting it out there.
  • Finish CodeAcademy’s command line tutorial.
  • Finish Javascript algorithms and data structures certification.
  • Wake up at 5:30am every day to code.

Waking up at 5:30am sounds like a good idea. And becomes the exact opposite when you actually do it. But that is what I’m doing to improve my technical skills. Waking up an hour early to code, make, and tinker. Here I’ll document all of my day to day activities. 

I have about ten billion ideas of projects to work on, so hopefully I can calm down, focus on something, and show you all a cool project (or a few). For the moment, I am falling in love with code. As a mechanical engineering student, I like building things. Software is a whole other world where I can do that. To start off my journey, I’m working on freeCodeCamp’s (FCC) amazing curriculum. Something about it truly clicks with my learning style, so I’m focusing on that. In the future, I hope to add web apps to my robots. 

I love being at college, but so far, I’ve found more value in my extra-curriculars, than my ‘curriculars’. By being proactive and being an avid learner, I’ve been able to explore many fields of engineering that I feel passionate about. I’ve learned that you have to put in the time and concentrated effort to make something worth making. 

Although I’m an awful programmer right now, I’m going out there and making something. I’m not a great writer, nor would I have ever thought I would start a blog, but here I am. Even though I’m no good right now, this week I committed to give more of myself to get better. And I feel like I’ve learned more this week than any other week. 

I finished the first section of FCC. I competed in a University CodeSprint on HackerRank. I easily did the ‘easy’ challenge and couldn’t even understand the rest, but hey, I saw what it was like and feel more prepared for next time. 

Thank you for joining along in this journey. Hopefully I can share something that you’ll find valuable. For the moment, this is highly valuable to me because it commits me to learn something every day. 

With that, until next week!

Skip to toolbar