This past week was incredibly busy, which is why my week seven post was so late. (I meant to post it last Sunday, then Monday, then Wednesday, then, oh-forget-it-I’ll-just-post-it-this-Sunday). It truly was a code-eat-sleep week. Much more so than other weeks. I think I did manage to get dressed every day but it took some serious self-discipline.
We started the week with an overview of using ASP .NET Identity. Now, to be clear, we didn’t have time to really dig into the underlying code, but we did implement logins, got familiar with Identity claims (so cool) and even learned how to use a neat plug in called SendGrid to send those nifty “confirm your email” communications that you always get when you first sign up for a website. All useful things to add to my project!
Speaking of which, we spent two solid days on our projects which I certainly needed. I had run into problems getting my database to update after changes I’d made (this apparently does happen with CodeFirst database creation, for reasons I’m not yet clear about). So I did the logical thing – blew away my database so I could start over with a “as-if-it-never-existed” initial migration, followed by a database update. This was something I’d done before in class a couple of times, and even on my project previously, but Tuesday morning it simply sat there and refused to create the database.
After a couple of hours of blind panic where I envisioned having to transfer my entire project into a brand new project, I finally found a nice post on Stackoverflow that suggested just creating the database file manually, and proceeding from there. Fortunately it worked, although everytime I make changes requiring me to either add a migration and update, or simply update the database, my “seed” data replicates. Ah well, a small price to pay for just getting it back up and running, although things like that do bug me because I don’t understand why it’s happening. When I have a little more free time, I will dig into that (it’s on my “unsolved mysteries” list for post-class investigation).
Otherwise, beyond a couple of bugs, things went pretty well. I fixed my filepicker code, got all my CRUD operations working well, although I did initially have an issue trying to grab the log-in user through the Profile table (one) from the Items table (many). Had to give that one some thought but eventually got it figured out. I implemented a “soft delete” for the profile table rows, but a hard delete for the items. No real business reason other than to demonstrate that I could do both (the soft delete of course just runs off a boolean flag and is actually an update method rather than a delete). In real life, however, I think it makes more sense to do a hard delete for a profile (a profile is attached to an individual using the account log-in – much like you might share your Netflix account with someone, I have the “Where’s my Stuff” account as one that can be shared by multiple individuals). And I think a soft delete for items makes more sense (if your roommate moves out and leaves their stuff, it might be nice to delete them from your account, but still have their items listed out).
Something to maybe change before the final presentation.
The projects did need to meet all basic requirements by the end of this week, so there was some pressure to get it all done. Adding to the pressure was a closed book exam to be taken also at the end of the week. I am not a fan of exams, certainly not closed book ones, and memorization has never been a strong point of mine. So once I got my project to the point where it was meeting all the basic requirements (plus a bit more), I spent a lot of time studying. As in, a LOT of time. I typed up all the key points of creating a full-stack application, summarized them, then distilled them down to a mere 5 pages which I then did my best to memorize. Not easy, but rewritten to make it clear what I was referring to (e.g. ModelClassName ClassInstance instead of just “Product product”) really helped.
Even so, I approached Friday’s exam with some trepidation. I am not good at failure (which of course I define as anything less than perfection), but after all my sleepless nights this week I found that the exam was really quite simple and my project met with approval.
After such a long week, it was great to have the weekend off, for a change, although next week we will be back at it and knee deep in Agile!