Work Day 30: Patching things up…

Okay, what was that I said last week about my tech debt story being a “learning opportunity”? Something to that effect? The good news: the story was completed by our former coworker, and the only reason that it never went to production was that no one had the capacity to test it, as it requires extensive regression testing. The bad news? The story was completed MONTHS ago, and some of the code has changed since then. I created a branch off our December branch, followed all my notes in applying the patch…and came up with “conflicts” in one of the jobs I was trying to update. After peering at the code, comparing, and figuring out which code was new since the story completion in July, I managed to narrow it down to a few lines that needed to be added to the “completed” story. I tried again…and again (I hit the wrong button and ended up reverting things back, so had to try again).

Fun fact! In Guidewire, if you try to reapply a patch, it doesn’t overlay. It REPEATS! Imagine my surprise when I then tried to fire up the GUnit test for the job the story is meant to fix, and got big honking compiling errors. The error came up as some mumbo-jumbo I couldn’t quite understand, until I looked at error line numbers and realized the code was some of the new code, and it was the SAME code, three times over. I checked everything else and every line of code added to the jobs was repeating three times.

After resetting everything and trying again, I finally managed to apply the patch and the newer code correctly. Before you ask, I did create a new patch with all the story updates and post-July updates. Everything appears to check out, but I still have to run ALL the GUnit tests to test everything, with and without the changes. Luckily, I’ve had some practice at this…

Work Day 12: There really is an app for that!

Today I actually fired up Guidewire Studio. It was an elusive app, buried somewhere down in the bowels of my applications—oddly, it’s an application with no desktop icon. With my mentor and The Alum’s help I finally figured out how to set up everything correctly. It involved Environment Variable manipulation and server setting adjustments (fun fact: always best to denote the port you want), but I finally typed “gwb studio” in the command prompt and THE APP LAUNCHED! At last! The server was a bit more of a problem, due to errors in compiling—I was missing some more settings. Once that was fixed, the server fired up.

The Alum kindly spend a good chunk of time with me this afternoon, showing me all the settings within the application and how to launch the local front end (and how to connect a database so I had some data). The really cool thing was when she showed me how to click CTRL-ALT-E from the front end to bring up the code and wireframes. I’m still fuzzy on what the code all does (still wading through the tutorials), but at least I can find it in relation to the front end location affected.

I asked if there was any documentation for how all the code is connected and what relates to what, but there really isn’t any. The Alum said they mainly know which jobs to change for enhancements by tracing back the code, determining which jobs and data feed the job they’re looking at. We have wads of requirements documents (as a former BA, I know this only too well), production support documentation, data mapping documents, etc. However, nothing that shows how the many, many, many (I can’t stress “many” too many times) jobs relate and work together. It seems odd. Even my rinky-dink one-department Easytrieve Plus operation back in 1992 had documentation on which jobs called which jobs and what data fed each. There has to be something SOMEWHERE explaining all this.

On a more cheery note, I finally have all my vacation time back!

Now I just need a damned docking station…

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 62: Achoo!

I have a cold.

It was only a matter of time. We’ve all been cooped up in a classroom in the basement of our building for three months now. Several people have been sick over the course of our bootcamp. I’m just happy I never caught whatever that one guy had that caused him to stay home due to vomiting. I’m currently chugalugging Theraflu, hoping to stave off the worst of this. I’d just as soon NOT show up at my old department/new job next Monday morning with the Bubonic Plague. It could bring down the mood…

We spent most of today doing self-study “new hire” online trainings. We’re allowed to skip over some topics we might already be familiar with…things like “How to Fill Out a Timesheet.” Other topics are a bit more relevant. This, in turn, was punctuated with guest speakers. I have to say I was especially appreciative of the IT educational resources speaker. We now have a license through the company for Pluralsight. I’ve joked before about how I don’t get much out of just watching coding videos, but I think the combination of this and W3 Schools should help. My goal, going forward, is to learn Java.

I’m also trying to figure out how to keep my JavaScript/Node.js knowledge fresh, as I’m not going to be using it for my everyday work. One thing I thought of was to perhaps finish the server we started for the final project. We only built it out far enough for our required site pages. Over the years, I’ve seen too many developer friends let their skills go stale because they got complacent in their jobs—I don’t want that to happen to me.

On a cheerier note, I’ve been in touch with my manager. He’s got someone preparing a transition plan for me—It’s my coworker who has also been through Code Academy! That should be a plus. She should have an idea of where the gaps are, and what accesses and additional training I’ll need.

I just hope I remember where I sit…

Day 60: I think I can, I think I can, I think I can…

We’re nearing the finish line for our final project, and for Code Academy as a whole. I’m pretty set on the project, except to test one more time and make sure I’ve done a run-through for the presentation tomorrow. I’m somewhat nervous about the presentation, but we’ve done these before, so it shouldn’t be too much different.

I’m feeling sad…I’ve spent the last three months with a great group of fellow students. I’m going to miss everyone! I know…I’m insane. Some of them will be working in my same office, so it won’t completely be goodbye. Speaking of offices, I’m also going to miss being in the downtown office. Granted, I know from past experience that the long commute is the seventh circle of hell in the winter, but I’m going to miss being in the middle of everything.

On a more entertaining note, I attempted to install ProsgreSQL on my home laptop (to see if I could run my site from home) and it was a fiasco. It asked for the port number, but I think I was supposed to change it to 3000. As a result, despite REINSTALLING it and specifically indicating Port 3000, the app, when opened, is still expecting the default port, and now gives big, ugly errors. I’m going to have to figure this out tomorrow.

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 58: We have liftoff!

Today was the official beginning of our final project, using our Capstone pages, our server from the last project, and Angular. Despite my misgivings, things are going well so far! I tested my server changes, after getting rid of the page renderings, and everything checked out. I’ve been doing what our instructor suggested and approaching things one step at a time. I created the client and I did the easy stuff. I copied in each component that used to be a “handlebar,” set up routing, and fired up the pages, one by one–just to make sure they appeared. They didn’t have functionality yet, of course, but they did show up! I was DYING to bring in the patterns page, too, but that’s going to be a nice-to-have, if I can get the other pages working in time. I also have a Team Details page that would be fantastic to get working by the Tuesday Noon deadline, but that one is really on the “I want a pony” wishlist…

This evening, I managed to get the code done for the Leagues and Users data. I even managed to add code to do a loop to dynamically create the Leagues list on the home page! I may have to do some googling to figure out how to bring in the Teams data, seeing as that has member data as a subset of the teams data. I’m happy with what I’ve accomplished so far, though.

Day 57: Serving It Up

This was one of those days where everything went wrong. I dropped my smoothie getting out the door, I faced horrendous traffic getting into class, and I spilled what was left of my smoothie all over myself.

And then there was Angular.

We’ve had only three days of Angular instruction, and now we’re being let loose to modify our sites to use this for our final project. We also found out today that since we are no longer using Handlebars or JavaScript for our site, we need to jettison all client-side JavaScript and handlebar pages to make way for Typescript and components. We have to get rid of any routers or controllers for former Handlebar pages in the server code. This poses a bit of an issue for me. Everything in my server was set up by—you guessed it—pages! I set up routes by pages, and under the route and controller scripts I had code for each page, with the different CRUD operations for the page under this, which in turn had service code script files. I know it sounds odd, but it worked. This afternoon, I had to reorganize it all by the files we’re using and their CRUD (pun intended). I have to admit that this is a cleaner way of doing it, but it took ages to set up. I had a few false starts, but the server finally fired up at 4:45. I still need to employ the dreaded Postman to test it tomorrow.

On a humorous note, this evening I met with my fellow IIBA members. I’m technically no longer a BA but I’m still a member of IIBA, as I’m an officer and my term isn’t up for a year and a half. I recently swapped duties with another officer, so I needed to meet with her and other people to show them all how to send out notices for chapter events and how to update the website. Overall, it went well, and I think they understood things.

When we got all done, I realized they were all staring at me.

“What?” I asked. (Was it my breath?)

“You…you…you’re beginning to…”

“Yes?”

“It’s…uncanny!”

“What?”

I couldn’t figure what they were driving at.

Finally, someone blurted it out.

“You sound like a…DEVELOPER!” They all nodded in unison.

“Yeah, it’s really weird.”

Someone else piped up, “And you actually SWORE!”

Honestly, I’m sort of proud.

Day 56: Breaking it down…

After my little adventure last night where I almost permanently hosed my server, I decided to leave well enough alone for now and just go with the pages I’ve rendered so far. If we’re going to have to rewrite pages in Angular, I’d just as soon not have too much to convert. I do want to work on eventually converting them all, so that I can practice different types of server routing…Oh my God…I really AM turning into a nerd…

Today’s deeper dive into Angular was a bit better than yesterday, although I’m still not sure HOW we’re going to pull off rewriting our pages. I’ve been reading ahead and it STILL looks confusing. I’m hoping that as we go along it will become clearer. I get the concept of breaking things (the partials and views we have now) into components, but we’re launching into another round of divding things up further into routes, components, and providers (services). We did a few of these today and I STILL have no idea how to determine what goes into which type of file.

In other more exciting news, I believe I’ve figured out how to vary my nav bar using Handlebar conditions, depending on whether a user is logged in or not. My next step is to figure out how to pull this off for users who are admins, so that other users (a.k.a. the unwashed public) aren’t privy to the admin link.

Actually, after last night’s adventure, my next step is to go to bed!