Day 59: Fried Brains Redux…

Today was a tad uglier than yesterday. Thankfully, I didn’t feel like such an idiot, as some of our issues were communal. Everyone was having issues with their Nav Bar changing back to a “logged out” status when one clicked onto another page link. The trick was, believe it or not, to NOT do that. We ended up putting in click events for the links rather than hrefs, so that the components switched out, rather than the entire page reloading every time (which was wiping out the user authentication).

Right now, I’m struggling with the edit user page. Whenever I have issues with a page, it’s usually with any type of PUT request. I know it’s not the server, as I’ve tested that ad nauseum with Postman. If this were JavaScript and not Angular/Typescript, I’d be done by now! Not that I’m resentful…One of the other idiot things I’m struggling with is how to hide or show a DIV. With jQuery, it would be a no-brainer. One might say…I’D BE DONE BY NOW!!!

As I’m completely fried this evening, I took a break and have been knitting. I’m so brain-dead that I’ve been constantly checking the pattern, as I’m afraid of doing the wrong thing…AND several rows into this, I discovered that I did do something wrong. I forgot to put in a buttonhole! Guess who’s going to need to learn how to make an Elizabeth Zimmermann “afterthought buttonhole”?

This will have to wait until I figure out make the damned edit user page edit a damned user…preferably the correct user…

Day 55: Angular-ing for a clue…

When you google or bing the word “Angular” in a browser, you return:

“Angular is a TypeScript-based open-source web application framework…”

OR

“Angular Cheilitis is a condition that causes red, swollen patches in the corners of your mouth…” I’ll spare you the details, except to say that, yes, this can be caused by a fungus, or as I like to call it, a “fungus amungus.”

The second definition, pertaining to festering sores, is a MUCH better descripton of my entire day attempting to understand Angular. For our final project we are going to have to convert our Handlebar pages into this format, along with our code. I’m hoping to have some sort of clue in the next few days, because right now, I have NO idea how I’m going to do this for my Capstone pages.

Speaking of my pages, I took leave of my senses this evening and attempted to have the server render yet another Capstone page–the Edit Team Details page. I’m over and above where I need to be for activating pages, but I just HAD to try one more…I’ve spent the last 3 hours of my life (that I’m never getting back again) attempting to do a PUT request that hitherto worked just FINE with the old server. I screwed everything up so badly I had to wipe out the entire folder, clone the code from my GitHub Repo again, and reinstall the npm packages.

I think I need to quit for the evening, before I break anything else…

Day 54: Reprieve…

I’m not sure what divine intervention occurred today, but our instructor pushed out the due date. Instead of having to have our entire server done by 5:00 Friday, he extended the deadline to Saturday at 5:00 p.m…THEN he left the room, came back in, and declared that he didn’t care when it was done, as long as it was done so that it would work with our final Angular project.

I spent most of the day working on router/controller/services again, but with our instructor’s help, I finally managed to understand how to apply it to my existing connections. Anything else wrong was idiotic typos or case-sensitive issues. My personal favorite catastrophe was the “looping” server. All of a sudden, my console started spewing out “get JSON 404 over and over and OVER again. I tried commenting out code and taking out scripts, thinking they were the culprit. Come to find out, it was due to having the Node server debugger still open.

As of Friday afternoon, I STILL wasn’t done. Even though the due date has been pushed out, I’m going to work on the rest this weekend, so that I’m ready for learning Angular on Monday. I need to clean up the code, make sure pages validate, add comments, copy over the Postman tests, and pull out any unnecessary console.log troubleshooting code.

ALSO, I was so proud of myself for finishing the edit user profile page, but at the end of the day I realized that I had completely forgot to enact the delete function. Oops…

If I have time, I may try to render more pages. We only have to go as far as the landing page, but my site makes no sense without at least having the crocheting and knitting patterns page, too!

Day 48: Deer in the Headlights

This was one of those days where I almost stormed out of the classroom. I had to remind myself that we only have a few more weeks before we’re going to be REALLY confused in our new jobs, and that this is probably a picnic in comparison…

There is something dreadful about learning things piecemeal, and then having to cobble it all together for an assignment—I know…just like real life. Today we combined login/registration screen logic, get and post logic, Node express, listing out file data, etc. into one site. The truly mind-bending thing was that we used Node Express Generator to spit out the scaffolding, and then we had to take all the bits and pieces we’ve learned this week and somehow apply them to this new format.

Among the disasters:

1. My site got completely hosed by the ****ing layout.hbs file. What was a normal-looking index page all of a sudden resembled some mutant atrocity. The only way I can describe it is that it looked like our cat Jack jumped on the keyboard in the middle of coding and then used his ass to press “save.” This particular issue turned out to be due to some random css code I’d somehow copied in by mistake for my login page formatting.

2. Partial hbs files are now unnecessary due to the aforementioned layout.hbs file. This has COMPLETELY wiped out the careful work I’d done previously dividing page contents into the partials. NOT THAT I’M RESENTFUL.

3. I also struggled over trying to figure out if I needed one script file or one per page, seeing as there was overlapping logic.

4. I compared notes with others, and think we all suffered from tiny gremlins scurrying away with what’s left of our brain cells, because many of us could not, for the life of us, remember how the hell we listed out fields into an unordered list, let alone how we previously did gets and posts in AJAX calls.

5. I personally kept getting confused over what went in server code and what went in regular front-end script code—especially since we’ve been introduced to routes, or as I like to call them, the bastard cousins of server script.

I’m hoping to gain more clarity tomorrow, as we have to combine everything into a Friday project that we aren’t starting until 1:00 p.m. The idea is to have NO actual html pages, except for bare-bones, as we have to use Postman (which I barely understand) to test the server code instead.

I have the ugly feeling that I’m not going to have a weekend…

Day 42: It was an ugly business…

…but clean living prevailed!

Yes, I’m quoting Dudley Do-Right. For you young people out there googling “Dudley Do-Right”—no, I have no clue why Snidely Whiplash tied women to train tracks, and yes, we can safely assume this was “pre” Me-Too…

Today was indeed an ugly business. I went from:

  • “I’m just going to do some testing and validating, and checking to make sure I don’t have references to a previous project site in the code”

to:

  • “Oh, My Freakin’ GOD!!!”

I validated what I thought was my most straightforward, stable page only to have all sorts of bells and whistles go off over on https://validator.w3.org/nu/. Then I remembered…in order to make my team details page less “tabular-like” I had grouped some fields together for a nicer-looking interface. Fun fact: if you indeed have a “table” layout, HTML takes a dim view of grouping two <id> elements for two different data elements together in one <td> cell. It gives the expression “strange bedfellows” a whole new meaning. Indeed, I actually had a ménage à trois going on in one cell…

So, with hours to go until the 3:00 deadline, I embarked on changing the layout from a table to a Bootstrap grid. As this was all dynamically produced in JavaScript I had to figure out how to do this for my new format. I remembered what our other instructor said about “scraping out the HTML,” so that’s exactly what I did. I STILL had some validation issues (two fields are apparently frowned upon in more than just table cells), but our long-suffering instructor helped me out with this (can you say <span>?). I ended up with a similar, pleasing interface, but without all the ugliness under the hood. I even dynamically reformatted the ménage à trois into an unordered list in the Bootstrap grid!

I swear to God, when this thing FINALLY validated around 2:30, I got up and cheered. I may have even done a happy dance—it’s all a blur. After the rest of my checks, I was done with about 15 minutes to spare. I was by no means alone…many of us had the **** fairy rain down upon us today.

THEN, we had to take the final JavaScript assessment. After all the Sturm und Drang over studying for this…

drumroll…

drumroll…

96!!!! 96, baby! I got a 96 on the final assessment! I couldn’t believe it!

I still got it.

Day 40: Frenemies…

More work on the capstone project today. I’ve just about got everything done except for all the validations. I got burned by my old friend “Is it a value? Is is a number? Is it a string???” (I really need to work this out before the final assessment…) I also was paid a visit by my best friend “Scope”. This is not the same thing as a waterfall project “scope-creep,” but rather the “I have no bloody idea where to put the damned variable” scope. Oh, I also met up with my new bestie “we need to use the CORRECT API” as opposed to the one that returns the entire damned data file.

With friends like these, One really doesn’t need enemies…

On a more cheerful note, I came home a restful evening with a woolier scope…I’m happy to report I’m at the shoulders and hope to get the neck done this weekend.

Day 39: I think I can…I think I can…

The big project is coming along! I’ve managed to figure out most of the pages, except for the team edit page, which I should be able to finish tomorrow. I figured out the AJAX command to delete a member, which means I should be able to delete a team. I actually got functionality up and running where, when I create a new team, the server code grabs the new team data and stringifies it. In my page code, the data is then parsed to isolate the team ID. From there, I attach it to the URL to bring over to the team details page. This means you can create a new team, and then are immediately directed to your new team’s details page, where you can start adding members. I sent what I did to the rest of the class so that they could do this, too.

I then spent a good half hour in GitHub Hell, as I made the fatal mistake of switching branches (I was in the wrong one) without pushing what I had done first—which of course was what I just described above. Luckily, I had documented it all in my notes, so I was able to do everything over again. However, I somehow ended up with GitHub conflicts which I didn’t resolve correctly. The only way around it was to do a Git Pull—which, of course was going to hose EVERYTHING I’d just done with my team ID URLSearchParams. Thinking quickly, I copied my entire project to another directory on my C: drive, did the Git Pull, and then copied everything back into my project and pushed it again. This time, it FINALLY pushed to my repo successfully. PHEW!

Day 38: Testing Anxiety…

…or, whatever happened to the overly-confident nerd of 1982???

So far, I’m doing well with the capstone. I’ve managed to produce the first few pages for my site. I’m pondering possibly dynamically creating the team add page as a static html page, as I already am creating the team edit page dynamically. I found some nice pictures to use, and I managed to get the carousel working. I also managed to use ES6 for my dynamic dropdown on the index page, and it worked! There is a whole laundry list of things we have to do, check, and double-check. I’ve been validating code like mad to make sure there are no issues with that, at least.

I’m more concerned with the upcoming final assessment. Once upon a time, I was one of those nerdy kids who relished taking tests, and beating out the rival nerds in the class. Decades later, I find that I have a tougher time with tests than I used to. For some reason, I’ll know something, but when I’m faced with a timed test, I mentally choke up and can’t think of the answer—even doing the practice tests is making me nervous.

Ironically, getting the arrow function question wrong on the practice test was what prompted me to figure out how to use ES6 for my index page…go figure.

Day 32: Up, up, and array!

Today we continued to modify our projects to add new courses, and do put requests to modify a table. I swear I felt like EINSTEIN when I dynamically created a pre-filled input form to modify data and IT WORKED. I even managed more validations.

For some reason, the wheels fell off the wagon for me when we proceeded onto multistring queries. I’ve gotten so used to doing long concatenations to create dynamic HTML that, oddly, something that’s supposed to be much simpler just threw me. Also, we’ve started using functions like find(), findIndex(), etc. which are simpler, but seemed ALIEN after what we’ve coded before.

It’s sort of like that expression, “why go through the door when there is a perfectly good wall right there?”

I muddled through but it was both frustrating and infuriating.

I did get out this evening with the knitting peeps, though!

Day 26: For the love of God, PROOFREAD!!!

This has been entire day of Pam needs to learn to read…

Today we had a day of learning Ajax calls and event handlers. I also had a weird day of things not working due to:

1. typos (“it’s readyState, NOT readState”) I was desperately searching for half an hour for this issue, until my desk neighbor happened to glance at my code.

2. ghastly errors in reading a file, until the instructor pointed out that I was attempting to read an array file that was in fact NOT an array file. I’d copied the wrong url link! AND…

3. My personal favorite—the misplaced semicolon. It took coming home, eating dinner, then going back to the code to see that I hadn’t ended the onreadystatechange correctly. Once I moved the semicolon, my job ran without a hitch.

As much as these brain-farts are always hysterical, it makes me nuts to miss things so easily avoided. I suppose it does beat completely missing the entire concept of how to write the function!