Merge and Purge!

This was one of those days where you think you know what’s going on…and then someone speaks up and all of a sudden you’re COMPLETELY at sea.

After my triumphant completion of my user story, I pushed the code to GitHub and submitted a pull request to my coworker, who is doing my code review. Life was GOOD, until he explained at our daily checkpoint that he couldn’t merge my code due to “conflicts.”  

Heh?  The last I’d checked, everything was fine with my code, and I was able to do a pull request.  Silly me—I’d confused doing a pull request with someone actually being able to merge my code with the release branch.  After the meeting, and after having given blood this morning (the vampires were merciful…I’m only a little bit dizzy and woozy this time) I checked my pull request in GitHub again.  And yes…this is another instance of “Pam needs to learn to read.”  Underneath that nice green “Requested” checkmark I’d been so excited to see, there was a big ugly message informing me that there were conflicts.  I delved into this and realized that when I’d pushed my request, I hadn’t done a refresh from the release branch.  In the meantime, between when I’d checked out the code and done my push, my other coworker had pushed HIS changes to two of the same jobs I’d modified.  Thankfully, I’d saved out my changes, so I refreshed my branch with the release branch, bringing in his changes.  I modified the code with my changes, retested the JUnit tests again, and then pushed the two modified files out to my branch on GitHub.  I’m not sure if I’m supposed to do another pull request or what, so I’m meeting with my coworker tomorrow morning at the crack of down (yes, he’s the one in India) to get some assistance in the matter.

I hope to SOMEDAY understand GitHub…

On a more positive note, I am working on another user story.  I’m very proud of myself, as initially this looked like a completely impossible change that I’d never figure out.  Upon delving into the code, though, I quickly figured out that I only needed to change two classes.  One change uses a series of “else if” statements, which I wasn’t quite sure of how to code—I know how to do this in JavaScript and Java, but I wasn’t sure of Gosu, and I certainly wasn’t going to ask anyone.  Asking how to code an “If-Then” statement or its bastard cousin the “If-Then-Else” or the “Else-Ifs” is probably grounds for someone taking away your company-issued computer, and possibly your lunch money.  All kidding aside, I was too embarrassed to ask, so I ended up scouring the code until I found a similar example and copied that format.  The rest of it I relied on the Guidewire Studio hints to push me in the right direction. It really is amazing how well the application helps you out.  My next task is to try to set up my GUnit tests for this.

But first I must go take some iron and go to bed…

Going Forward…

I’ve been pondering how to move forward with my blog. I know daily spleening about my ups and downs attempting to learn Java and JUnit testing are rather redundant and tedious. I may start blogging two or three times a week. If nothing else, I need extra time to finally make it through my Udemy course!

I’ve also been thinking about how to keep my JavaScript, HTML, Node.js, and CSS skills fresh. I ran into one of my fellow Code Academy classmates, and he mentioned needing to “use it or lose it.” It’s almost like a higher power was speaking directly to me. It’s interesting…our instructor has stressed the importance of having a side project, along with one’s coding at work. In fact, he explained that if you’re looking for a new job, the first thing employers want to see is what you have out on GitHub that you’re working on. I’ve asked around, though, and many developers at work have told me that there is no way in hell they ever have the spare time to do this–especially mothers with small children.

However, I think I have an idea, for something that might encompass keeping up my skills AND having fun with yarn. I’ve been googling. There are TONS of websites devoted to knitting pattern generators (knittingfool.com being one I’ve used), there don’t seem to be any crocheting pattern generators, other than for “graphgans,” which are afghans with a design or a picture on them. There are literally generators out there where you can scan in a picture of your dog and they will spit out a pattern (filet crochet, knitted, afghan crochet, single crochet, etc.) for you to make an afghan with Fido emblazoned on it. I’m thinking I could try a knitting generator, to get my feet wet; but I think I’d ultimately like to make a crochet sweater pattern generator. I’ve tried using ones for knitting, plugging in a crochet gauge instead, but the increases and decreases for crocheting are quite different, AND they’re different for different types of crochet stitches. I DO still have a domain name out there that I bought back when I did my first HTML/CSS project for class…

This could work…

Work Day 49: Training and more training…

…or, am I EVER going to figure out all this stuff?

This morning we had another CodeAcademy continuing training session — this time for client-side JavaScript testing. We worked through Mocha and Jasmine examples, with our takeaway being to modify the code to add to the constructor, and experiment with different tests. While I can understand this kind of testing, I’m still struggling with my Java JUnit testing for my user story. I cannot get my JUnit test to work in Eclipse. In looking at it, and comparing to other JUnit tests in our code, I think I’m missing a few things, and oddly, my test isn’t “tracking”—I’m getting an error saying the class isn’t “found.” As it is, though, none of the JUnit tests are working for my setup, so my issues may run a bit deeper than just a few misplaced @Test indicators.

I decided to eat crow and work through a Pluralsight video on JUnit testing. I’m also going to try to make a push to work through more of the Udemy course, as they do cover JUnit testing further along in the course. I even bought a book on JUnit testing (Pragmatic Unit Testing in Java 8 with JUnit by Jeff Langr—God Bless Amazon…). Hopefully with all this and having my mentor help me out (I’m going to need help setting up Spring anyway), I’ll muddle through.

All this setup and testing for a few lines of code change…it’s just unbelievable!

Work Day 32: Git-in’ Trouble…

Our Continuing Ed session was awesome today! Working from home enabled me to see the presentation much better on my large monitor. We covered Java and our instructor compared Java object-oriented code with JavaScript object-oriented code. Our takeaway exercise is to add fields to both sets where the fields are missing. It’s always good to have practical exercises to work on. I took copious amounts of notes to share with a fellow student who couldn’t attend today.

In other news, I lost my mind with #%*$^*# GitHub again. They opened up the February Release branch, so yours truly followed instructions for bringing in the branch…not entirely successful. I got some ghastly error in Git Bash saying there was “no such directory.” I think it said “no such directory anywhere” as if to imply nowhere on THIS PLANET. Following the Alum’s advice, I checked out the branch from Guidewire Studio instead, which worked. I applied the patch for my first user story. Oddly, one of the gs files added for my second user story was STILL out there, even though I’d switched branches and done a pull request. I checked, and the rest of the second user story code wasn’t there—just the new gs file. As I have the patch for that one, I deleted that gs out before committing my changes to GitHub. All seemed to work out well…UNTIL…

I checked the pull request and realized that somehow the gs WAS IN THE DAMNED BRANCH. Despite deleting it, the file had managed to hitch a ride on my first story commit! I was pondering possibly wiping out everything and doing a git clone to bring in a completely fresh copy of the branch to apply the patch again, when one of my coworkers made a suggestion.

“Delete it out of GitHub.”

Heh? After having it drilled into us in training that we’re NOT supposed to do that???

“Delete it out!” He insisted. He even sent me a screenshot showing the tiny garbage can icon on the GitHub screen.

As it turns out, the system prompts you to enter a reason for your actions, and notifications go out, so there’s a trail at least.

It still felt sort of…naughty… 😈

Work Day 31: That thing from WAY back there…

Today was one of those days where I spend AGES trying to figure out where I went wrong with a GUnit test—this was the infamous “All Items” test. For some oddball reason, although the specific GUnit test I’m fixing was fine, the entire shebang had errors up the ying-yang. Basically, out of over 1000+ tests, only about 30 tests passed! I tried backing out my tech debt story code and reran the entire thing, and AGAIN, I had multiple errors.

Then I remembered. Back when we were setting up Guidewire, the Alum had me comment out some code in the build.gradle file after I’d brought in the November branch, before I fired up Guidewire (the code is apply plugin: ‘com.guidewire.cust-dist-deprecated-tasks’). Once I’d done that, I had to uncomment the code before firing up the server.

I realized that I had checked out a new branch (December) for this story. On a whim, I closed out of everything, commented out the plugin code, fired up Guidewire, and then uncommented it again before running the “All Items” test. Sure enough, that seems to have done the trick! The test without my code ran fine, albeit with 50 errors this time around (people have added tests since November). I need to now bring my code back in and run everything again, but I think I’m going to shut everything down and start anew like last time, to make sure.

As it is, I think I may need to adjust the code. For one of the jobs there have been many updates since June, and I think at least one block of the fix is a repeat of something that was added in later. I may try to run it first and then if I get errors, I’ll attempt to fix what I think is off.

Tomorrow is another Continuing Ed session with our Instructor. I’m attempting to cram in the reading from last week, review what we did, and review the info for tomorrow. Miraculously, he’s going to be going over some Java code. I’m not sure what little elf whispered in his ear to arrange this, but I’ll take it.

Work Day 27: Continuing Ed…

…or, attempting to remember my JavaScript.

Today we had our first in-depth continuing ed session with our Code Academy instructor. He’s going forward with more JavaScript instruction, but he’s introducing us to Object-Oriented programming concepts which we can hopefully apply to our respective language quagmires. I was skeptical at first, but JavaScript OOP does seem to be similar to Java and Gosu OOP. My only beef is that, doing this via Skype, I couldn’t see our instructor’s double-display very well on my work monitors. He was demonstrating running different jobs, which I couldn’t see, while I was frantically trying to remember HOW (I finally remembered to “NPM Install”—DUH). It looks like I’m going to have a lot of W3 School reviewing to do to fully understand everything. I may just work from home on class days from now on—I have a large monitor that SMOKES my work ones. Also, there will be less background noise to contend with. Today, near my cube there was some sort of meet-and-greet going on that was getting rather loud.

Fun fact: There IS a difference between a code inspection and a code review! The code inspection is actually a function in Guidewire (Menu—Analyze—>Inspect Code…). I did this and managed to uncover some issues that had nothing to do with my changes. One issue had to do with PCF methods that really should be classes—this is more of a tech debt issue. We won’t mention the fact that <code> in a PCF should be separate, anyway. It’s the same blasphemy as having inline code in HTML. As my elderly Uncle Jim used to say, “It just isn’t DONE!” I asked about the errors, and our Tech Lead explained that I should just include screenshots with some notes explaining my findings, and let the code reviewer determine what is and isn’t an issue. I think this is the Tech Lead equivalent of “Don’t worry your pretty little head about a thing!” Although our Tech Lead is a woman and very nice, so I’m sure she didn’t mean it like that…I think…

The good news is that my boss, who was on copy for the code review request, is ecstatic that I’ve actually done some real work, as opposed to peering at documentation, doing exercises, and falling asleep in front of Pluralsight videos.

Work Day 17: Back to School!

…but all the other kids are WAY ahead of me.

Our first continuing ed session with our instructor was abbreviated. He’s having computer issues, so we mainly walked high-level through the object-oriented JavaScript code he’s got out in GitHub. We’re supposed to review this, and try to run it on our machines before our next session—later on, we’ll be doing more involved work, I’m sure. It looks like I’m going to have to get Node.js loaded onto my work laptop, as we’ll be using that. I’m not sure how well that’s going to interact with the rest of the apps on my computer. I think I’m going to ask my mentor and The Alum for their thoughts. I could possibly just do all the continuing ed work on my home laptop to be on the safe side…I’m going to load a copy of his GitHub code there anyway.

We also spent a good deal of time going over how we all are doing in our new jobs. Some people are doing very well, as either a) they don’t need Java, and/or b) they have people they can shadow. I’m at a standstill, as I’m still learning Java and Gosu, which is going GLACIALLY slowly. Honestly, I’m getting the most bang for my buck from the Udemy course at home, but it’s not very fast-paced. Some people in class have had good success using the online CodeAcademy site. I’m tempted to check it out, but realistically, between Udemy, Tutorialspoint, Pluralsight (zzzz…), studying our current code, and trying to learn Gosu (and somewhere in here I have to learn Spring Batch), I think I have enough going on. If I try to add one more learning tool, I’m pretty sure my head is going to explode.

This afternoon, a good friend pointed out that I should give myself a break. If nothing else, I’ve only had a decent work laptop on which to do ANYTHING for a short time now.

I hate feeling useless, though.

Work Day 4: What I did on my summer vacation…

Let’s be honest. I had the BEST summer EVER. I spent three months tackling challenging problems, creating websites, coding in different languages—all while indulging my love of knitting and crocheting by using that as the topic for for three major class projects. Oh, and I got to defer dreary, boring crap in my everyday life I didn’t want to do anyway.

Now it was time to show someone the results…today was my big presentation for my boss, my mentor, and The Alum. Before anyone arrived for the meeting, I fired up my home laptop, got the two servers up and running on their ports, brought up my final project, got PostgreSQL going, etc. All was right with the world…until I tried to project my laptop onto the conference room big screen. I watched that lousy little dongle flash white over and over and over again. When everyone arrived, they informed me that a non-company device won’t work with the conference room multimedia equipment. That makes no sense to me—what if you have a guest presenter?

Despite the fact that I find this insane, the fact remained that my laptop was NOT playing nice with the big flatscreen. As luck would have it, my mentor had already downloaded my capstone project to his laptop. He also had my GitHub code. I was able to do the whole presentation from his machine. Everyone loved the site! I was able to intelligently answer questions about the application and the process. I also walked them through my code for the final project, too. Overall, it went very well!

Now, I just need a functioning work machine. Last I checked on the tech site, my laptop is 20.59% done. I’m really dying to know what comprises the .59%…

Day 64: When one door closes…

…we hope my ID badge still works in the revolving door back at the office.

It’s the last day of class. I’m feeling an immense sense of gratitude. I’m sad our three months of training are over, as I’m going to miss everyone. We are all going to meet weekly for additional follow-up training for a few months, but that’s going to be over Skype, so it’s not going to quite be the same. It’s also been nice to put a lot of everyday “busy-ness” on the back burner while I focused on classwork—I got to see what was really important. There are a few things in my life that I think I’m going to let go by the wayside, as they didn’t turn out to be as important as I once thought…not the knitting group, though! Never!

I want to thank everyone for making this possible (at this point, they’re all reading my blog). I wasn’t sure, in the beginning, if I could pull this off at an age where many of my friends are retiring. The last time I coded anything was over 10 years ago, and that was mainframe reporting. Now I’m able to create functional sites with HTML, CSS, JavaScript, Bootstrap, Node.js, Angular/TypeScript, MySQL, Handlebars, etc. Going forward, I’m going to learn Java. I couldn’t have done it without the Code Academy, our great instructors, and the managers that pulled it all together.

I’ve been asked if I’m going to keep up the blog. The answer to that is a resounding YES! Think about it…transitioning back to the department I left as a business analyst, and am now returning to as a developer–it’s material that’s just going to write itself.

I do hope my new laptop shows up soon…

Day 63: Transition…or, do I still remember all my passwords???

We watched more online training videos today (Zzzzz…), and had more guest speakers come in. I have to say, the DevOps speaker was very interesting, as I’m still learning about that. The other speakers were great, too. During the presentation by the Release Management speaker, however, I saw a lot of stunned deer-in-the-headlights expressions from fellow students who haven’t had any experience with the IT release process. I was thisclose to blurting out, “You poor souls—you have NO idea what you’re in for!” I also wanted to add that, even if everything in the release process is carefully followed anal-retentively to the letter, the resultant release can be a complete fiasco. I still remember the time years ago when a department did a demo to the masses (a “lunch-and-learn”, or as I call it, a “ruin-your-free-lunch-time-and-learn”) for a major release for a years-long project. They had to STOP the demo and end the meeting. Why? Because they couldn’t get past the first page of the site. Angry red error messages in big capital letters were blazing across the screen like a really bad scene in a Star Trek movie where the Klingons are about to blow up the ship.

The only good thing you could say about this is that at least I got to eat the rest of my lunch in peace…

As far as my transition plan goes, the good news is that my coworker emailed me the complete list of what I need on my new laptop, and what network accesses I’ll need. In fact, tech support has already granted me some of the accesses.

The bad news? My new laptop is going to take possibly 23 DAYS to come in. I desperately need a new one, as my regular work laptop is an ancient 2014 model that takes 10 minutes just to fire up when you turn it on, never mind anything else. We were provided lovely, sleek little laptops for our training that were just a dream to work with, but that was only for training. I can’t tell you how horrible it was to give back my wonderful laptop yesterday and revert back to my giant, crappy laptop that has all the speed, agility, and nimbleness of an aircraft carrier. My biggest nightmare is that my new laptop will take ages to arrive, and that the department will make me do BA stuff again, and I’ll be forever stuck again in the same rut. I’m probably being hysterical over nothing. My coworker assured me that, at worst, they’ll probably just have me study documentation and do Pluralsight Java videos until my laptop shows up.

More training videos…my favorite…