My Coding Bootcamp Experience

I’m more than halfway through my coding bootcamp; we have about a month and a half left at this point. I’ve had several people reach out to me and ask me what I think about the bootcamp. My general answer to them is that the bootcamp is good for those who need the motivation and structure. There are certainly other ways to learn how to code, and many of these methods are free or very low cost. However, they do take a degree of personal accountability, perseverance, and self motivation. Learning to code on your own also comes with some challenges, mine was namely figuring out what to learn.

If you’re interested in hearing a short overview of my time thus far at the coding bootcamp, please feel free to watch the following YouTube video.


Building Momentum

There is no rival to creative momentum. On the terms that I have known it, momentum has been created through determined perseverance and regimented adherence to daily goals. The times when I was living creative momentum, I was writing books. From day one, I determined that I would write 2,000 words per day. I adhered best to this when I ran three to four miles beforehand. Running was a good transition activity between getting off work and sitting down at my desk to write. I did my best work at night, as I do now. It’s when I feel most creatively inspired and when I feel closest to building momentum. The momentum has since slowed down and even felt like trailing through a sandy desert. Deep, drawling steps.

Momentum is the god of creativity. It leaves no room for the creative mind to wander enough to self-sabotage. Nor does it allow for much second-guessing. Those are the killers of the creative spirit. Free of self, the artist can work for the art. There is freedom only in giving oneself entirely to the whims of the artist, to the focused mind, and to the flow of creation. Building momentum cannot be taught nor sold nor learned. It is through sitting the critical mind aside that the movement spawns. If there is too much thought, the audience will know, and may mistrust the art. At least if the audience is made of keen observers.

mountains photo

Thoughts of monetizing can critically injure momentum. Monetary gain is set on repetition of what is working, while creative ambition and momentum are born of variety. Lack of momentum convinces the creative mind that it is extinguished and that it has been spend and cannot give more than it has. It can whisper “you’ve done your best work already.” It can tease “you’ve gotten soft, you should have held on longer.” Momentum is the prize of the artist, and though some advertise that it comes through habit and stricter willpower, it is often more elusive than that.

I cannot tell you here how to gain momentum, nor how to chase it. But I will also not talk about writers’ block, maybe because it’s a burden I refuse to acknowledge. I know only that movement seeks no companions, and movement can appear to have left. But of all of the thing that this world cannot house, movement is not one of them. All things, breathing and not, are in movement, in momentum. Our current definition of momentum is fixed on the results. It lives in the artist who cannot touch a paintbrush without recoiling, and the writer would convinces herself daily that she is no longer capable of manipulative words.

Momentum lives in the most quiet of people, who work diligently and quietly. It lives in the loud people who endlessly try to convince the world that they are worthy.

This I know, momentum lives in all things. Solitude and rest are momentum. Our result-oriented teachings are in conflict with the truth of the matter. When we are creating or we are exploring, we do not need to create a result intentionally. Everything already moves in results, whether they are monetary or spiritual or other. When we choose results, we disappoint the fickle entity of creative processing that determines those. When we leave the results to the life of our creations, we come more closely into alignment with restful momentum. This type of momentum does not harm the creator, and does not pressure, and therefore, deform the creative endeavor. Movement is in all things, even if they appear to be unmoving.


Creative Stagnation

When I think of creative stagnation, I think of general stagnation. I think of the load of advice out there about overcoming it. And about how it’s not really relevant. Stagnation seeks rabidly for movement. It judges tip-toed steps and second-guesses every move you make. It listens intently to the words of people you seek out, even if those people don’t have your best interest or seek to pull you further into the muck. Stagnation creates internal rivals and outer diminished confidence. It is quiet and it is loud, rejecting comfort and falling into fragmented bits. By some descriptions, stagnation is movement in itself. In fact, everything is movement. But creative stagnation is a special kind of movement – disorganized, frantic, grasping, resigned.

mountains photo by Jonathan Knepper

Stagnation is a great form of contrast. When I live in creative stagnation, I look for calculated explanations when I find nothing else to hold onto. Creativity is some of the following for me:

Textures


Textures are definitive differences between objects. They are tactical and range in characteristics – smooth, cold, rough, fine. They induce responses – repulsion, pleasure, comfort. We speak of textures, explaining how objects feel, opting to wear clothing that is not abrasive, and making sensory connections between textures and materials.

Movement


Movement is the incredulous swing of life. It happens internally and externally, in collision and in unison and in solitude. Movement transforms the vessel and its surroundings – mentally, physically, and psychologically. It marks our placement, displaces and makes room for us, and lingers in short breaths and racing hearts.

Collections


Humans are a species of collectors. We place value on the objects, experiences, and environments that we surround ourselves with. Collections are accumulations. And while our culture is dead-set on resets, detoxing, and youth, our collections are some of the most remarkable and revered entities and bodies of work that we cherish.

Backgrounds


Backgrounds are templates on which a tremendous amount of data about our lives is built. When we listen to the wrong people, our stagnation increases because we are consumed with the happenstances of our lives engulfing what has not yet happened. Backgrounds are tapestries – framed in our minds, white-washed, wrinkled, distorted down to the stitches.

Differences with sames


Differences are abundant, and we measure them against consistencies. Creativity lies in remarking fluctuations, inconsistencies, and faltering. Consistencies play into the momentum of long-term creativity and creation. Balancing the sides of differences and sames attaches a core to the external.

Granular experiences


Granular experiences are those that hold significant meaning, detail, or emotive theme. When something is captivating, we focus intently on the form that is presented to us, and align its qualities with ways that we can remember them. Our memories shape-shift experiences over time and we cling to the webs that we have reinforced.

Attention to detail and themes


Creativity pays attention. It courts what it seeks to draw out, enlarge, and place at the forefront. Details and themes feed the unification of a creative act. It heightens our watch and changes our field of perception. In exchange, it asks neither rigor of observation nor begs reciprocation.

Cohesive incoherence


Creativity is incoherent, but it is cohesive. It borrows from the canon of all past creations and reconfigures known pieces into a new whole. Incoherence at its best is unmatched clarity. It points to something so familiar or unfamiliar that it crosses our rigidity. Cohesiveness makes it viewable. Attraction felt to incoherence is through cohesion.


Development notes for USUME

The following are my build notes for the application USUME. It’s a full stack React and Express application that was deployed on Heroku.

See the Github repository.

Use it on Heroku.

5/4/2018

  1. Deleted and recreated express and react about 8 times because I really wasn’t sure how to structure the project.
  2. Did not know how to nest the React and Express portions, if they should be in the same folder, or really how to separate them
  3. Watched YouTube tutorial and created a simple non-persistent task manager
  4. Watched another YouTube tutorial about setting up Express and React, and finally got it up
  5. Read several articles about integrating Express, React, and MySQL
  6. Got React to read the information I was passing through Express router
  7. Got Express to print my hard-coded objects
  8. Learned how to reset HEAD to previous commit and adjust the indicator, hard reset my code to match the commit I reverted to
  9. Set up a proxy so that Express runs on 3001 and React runs on 3000, so there would be no conflict
  10. Set up front end header and footer folders inside of my Components folder. Then set up index.js files inside each one and put started code in there. Put proper component names in aggregate index.js file that renders whole page
  11. Created logo and added it to the project

5/5/2018

  1. Implemented React Router
  2. Submitted one page proposal: Proposal_ USUME (Falon Darville)
  3. Found and formatted photos to add to homepage
  4. Outlined design of the homepage
  5. Created home, login, and register pages
  6. Learned and started using React Bootstrap (which uses Bootstrap 3), linked to bootstrap on html file.
  7. Watched YouTube video about making a website with React, React-Router, and React-Bootstrap
  8. Added all tasks to GitHub projects under Phase One
  9. Learned about importing pieces of Bootstrap and other React components that I will need, these are case sensitive and appear at the top of the page with all imports
  10. Got nav links working and created a Jumbotron
  11. Added photos I picked out to the homepage and got them working with the React Bootstrap grid system
  12. Created the log in form
  13. Created part of the registration form
  14. Added don’t have an account? Register Here. to login page

5/6/2018

  1. Watched a YouTube tutorial on linking Express with React and built a very simple app, pushed to repo
  2. Spent many hours trying to find a way to POST the registration information to the API and creating the linked API with MySQL
  3. Read articles and Stack Overflow answers about POST from React to Express
  4. Posted my first question to Stack Overflow about getting information from the React form to the Express server
  5. Got registration form data to console.log and redirect to /users after I submit

5/7/2018

  1. Added Axios package for handling request posts to Express from registration form.
  2. Console.logged data from the registration form, updated state and passed it, data parcel showing up in console
  3. Added Cors package for cross-origin issue since I am working on two different servers
  4. Created users table to test pushing from Express to MySQL, note that in the production form, I will need to take away email(which will be stored in users table) and add foreign key to link to users table. Users table: id, email, password (need to figure out hashing or check and don’t store passwords at all)
  5. Console logging form content but now the data is not showing up and I am having a continuous error with my Express server about a Content Security Policy. I added Cors already so I am stumped as to what the issue is. It says it has something to do with images, but I have gotten this issue before and gotten past it.
  6. Reached out to three different people to help with the img src error I was getting.
  7. Pinterest chrome plug-in was causing the errors!!
  8. Fixed MySQL code so that it would call the function that adds the data from React registeration form to add to database
  9. Got React form to post to MySQL database!!
  10. Answered a Stack Overflow question for the first time.

5/8/2018

  1. Fixed the homepage images from thumbnails to clean side-by-side images
  2. Added Google fonts to homepage
  3. Researched client side validation using React-form-validation
  4. Used bcrypt to encrypt passwords into the database
  5. Changed the users table to include first name, last name, and password. Will create a second table for skills and foreign key.
  6. Added password fields to registration form, user will enter their new password twice and these will be validated to ensure they are the same
  7. Working on form validation for registration, added fields that need to be checked
  8. Second npm package for validation on the react side is not working and I have had to start from scratch twice now. Going to try a third library.
  9. Removed two packages from package json, then removed node modules, then reinstalled rpm packages
  10. Since I have to meet the ORM requirement, I will need to change my MySQL database link to Sequelize. I made a models folder, which will house the users table and the user data table.
  11. Now all of the fields are giving the user feedback. Thanks to many manually created functions
  12. I need to figure out how to disable the register button until all of the errors are gone.
  13. I need to figure out how to validate the checkbox.
  14. Created variable that checks that all fields meet validations. Button is disabled by default now when coming onto the page. The button is enabled once criteria is met. No libraries, all coded within the application on the client side.
  15. Only thing is that it’s weird to be checking email format and I have not been able to get it to work, so now it is just checking that the field is not left blank. I will have to figure out a way to make sure that the formatting is accounted for.
  16. Ended up using React-validation, the third package tried but there was a lot of manual work for client-side validation.

5/9/2018

  1. Changed all MySQL database queries to Sequelize models
  2. Added redirect to log in page once the registration form is submitted successfully
  3. Set up login page with client-side validation for email format and length > 0 for password
  4. Added redirect from login page to logged in page
  5. Add catch-all for all routes other than those explicitly defined using switch.
  6. Added validation to see whether or not an email already exists in the database. If the email exists, prevent registration and add error message below the button.
  7. Added message after successful registration onto the log in page, it’s conditional, so will only appear if following that exact path of logic
  8. Added validation to the login page on the client side

5/10/2018

  1. Added media queries for breakpoints on the login and registration forms.
  2. Installed Passport and Passport-local to authenticate users, set up some of it but unable to test it because of other errors
  3. Tried to implement login authentication and have come across some issues with suggested possible solutions:
    1. Need to serve off of one server to ensure proper deployment?
    2. Need to eject create-react-app, for webpack issue?
  4. Need to fix: sensitive information is appearing in the URL even though I am sending a POST request, also check if this is happening on the registration page (it’s not). This I fixed later by adding a post method to the login form.
  5. Need to figure out private routing to the logged in page, this I fixed later through Passport and checking if the user has correct credentials.
  6. Talked to Francisco, Nelly, and Cliff about the benefits and cons of having my project on two servers. I’m going to keep the project modular and go with the two servers, and then deploy to two different Heroku applications. (Spoiler Alert: I didn’t end up having to deploy to two Heroku applications.)
  7. Login is working after more configuration with Passport. Added serialize.
  8. Trying to figure out how to get the email from the login page and query the database using that email.
  9. Set up a new API route that will grab the email from the login page and use that to get the pertinent data from the database to populate on the logged-in page.

5/11/2018

  1. Took a break, to be honest.

5/12/2018

  1. Fixed the authuser route so that now users can log in and be redirected to /loggedin.
  2. Made it so that if you go to /loggedin without being logged in, you will be redirected to the login page. The /loggedin route is in the router but depends on the token that tracks the user, therefore ensuring that only those logged in will have the authority to see content on that page.
  3. Populated the logged in page with the first and last name of the user who successfully logged in.
  4. I still need to be able to get the skills from the second table in my database. At the moment, I can just get the data that’s in the users table.
  5. Started styling the /loggedin page.
  6. Skills are all printing to the logged in page, so I was able to successfully get data from the second table.

5/13/2018

  1. I added icons to the resume page, as well as changed the styling so that it looked more like masonry tiles. The wells I was using before were breaking and adding gaps when I added more content.
  2. I deployed to Heroku with help from Francisco. We changed the start script, built the React app and took it out of gitignore. Heroku was timing out and not building when it had to build the React app because Heroku by default times out after 60 seconds. I also took out the instance of hard-coding “localhost” on the React side. So I was worried throughout the build that deployment was going to be a huge hassle since I was running off of two servers and using a proxy. However, I came to understand that the React server is so minimal and only used during development to render changes, and so is not going to bog down the production server on Express.
  3. I tested the app to see that it was working after deployment. It’s working.
  4. Added content to the Readme to outline what the app does and rounded out this document.