2015.03.27 – Shirts!

I had a late start this morning and ended up getting to Mozilla just before lunch. I had more bugs to work on, one that was particularly annoying and one pretty simple CSS fix. The annoying one is https://bugzilla.mozilla.org/show_bug.cgi?id=1148566

Yeah it’s really not great to sign out and not get your stars back from the server! That’s kinda one of the major features of this project. I know for sure it was working properly though so I must have changed something to break it. There has been flurry of activity in these final days so that wouldn’t surprise me.

It’s an entirely different workflow doing quick bug fixes because now I have to remember to switch back to the master branch, rebase and make a new branch. I have gotten kind of lazy working only on the same feature branch for the last 3 months. This has caused me to make some silly mistakes like pushing to the wrong branch. Doh! But all of these mistakes give me opportunity to practice my Git skills. So far I’ve figured everything out and made it all ok. I think Git and I get along pretty well most of the time.

At some point one of the Mozillian’s came into the room where I was working and she had a Mozilla bag of some sort. I assumed someone left it in the common area and she was checking to see if it was mine. I was wrong. She went out of her way to get me some Mozilla and Firefox shirts and a sweet Firefox hoodie! I couldn’t believe it. I thanked her and gave her a big hug.

The reason she even did this is because I was telling a funny story over lunch the other day. Last week at the Q&A I was talking with the chief of staff afterward about being an OPW intern and how there was really no path for us to employment with Mozilla and that there is a pretty clear path for the university interns. He didn’t really seem too interested in talking about it and quickly changed the subject. He said, “Oh! I just have to say that the TSA just loves Firefox. I don’t know why but they do! The next time you fly make sure to wear a Firefox shirt.” I said, “I don’t have any.” and he said, “Well, if you ever get one.” Ouch! Everyone thought this was pretty funny and kinda not funny too. I said something along the lines of, “If I can’t get a job here I, at the very least, want a shirt!” Well, she made it happen. So sweet!

At the end of the day Dietrich was setting up the Oculus Rift. I totally wanted to check it out so I packed up my stuff and waited my turn. It was amazing! I was in a helicopter, on a boat, a cruise ship, on a beach, skiing, para-skiing I guess. Anyway, it was really fun to try.

Today I learned that my friend Christy and her husband are buying a house in Prescott Arizona.

2015.03.25 – Merged Into Master

Today I had an interview at Urban Airship. I was meeting with Peter in the Technical Support department. He was SO nice! We had a really great talk and the position sounds interesting. He said he’d like me to come back and meet the rest of the team next week so we’ll see.

I walked down to Mozilla and decided to work in the common area. i had a comment from Peter saying he liked what I had changed, that he had made a few other changes and once I had his stuff merged in, everything rebased and Travis passing that I would probably be ready to have my stuff merged into master. Wha?? Wow! I got busy and got everything rebased. Peter had made a few changes and had taken care of anonymous user events sorting in the correct order (most recently added at the top). He used a Python lambda function which was super cool! I wouldn’t have figured it out on my own but now I know 🙂

When I rebased I had a merge conflict so I resolved that and got my stuff pushed up. I watched Travis and it was happy! I let Peter know so he merged my feature. Woo hoo! I was so happy! And then I noticed this automated message in #airmozilla-dev “< airmodevpush> something terrible happened. check the logs (master web-ops_cli_script)” Huh. Is it just me or does that sound like something terrible happened? I asked Peter what was going on and sure enough I made a mistake when I fixed the merge conflict. He had added another path for schema migrations and I didn’t enclose it properly. It kinda broke stuff! He said it was no big deal and did a quick fix. I was kind of bummed I missed that though.

Michael and Keeler were out in the commons so I told them my stuff got merged into master but that it broke stuff. Each of them then proceeded to tell me the things they have broken with their merges. Michael took out all of Mozilla’s email for about an hour once and Keeler had a version of Firefox release with a security issue and there was no way the QA person could have caught it upon testing. Ok, in retrospect maybe my mistake wasn’t that awful. Thanks guys!

Everything was rainbows and butterflies. Peter asked me to meet him and Richard in a Vidyo chat. They were very happy and so was I. And then Peter said he wanted me to do a brown bag presentation about this project. Ugh! I told him I was sick that day but he just laughed. I guess I have to do it. He said it will be a good way to show off the new feature, a thing for me to show potential employers and a way to help new interns who may feel unsure of their abilities. Guess I better get busy!

Today I learned about Lambda functions in Python.

2015.03.22 – Church of Waffles!

The plan was for the three of us to go to Jess and Kronda’s house for waffles. Wayne woke up with a cold though so it would just be Andrew and I. I got my sourdough batter mixed up and gathered up the other things we needed. We were a little bit late so people were already well into waffle making/eating. I got ours going, made a plate and began introducing myself to people I didn’t. Wow, there were so many really nice new people to meet and talk to! I particularly liked Jonathan and Dean, and Rachel.

I could have stayed all day just talking with people but I still had work to do so I packed up our stuff and back home we went. Alice was out in the gardens when we pulled up and invited me to go with her to Goodwill. Jayde had been asking to go back so it seemed like a great idea. It was! We found her some great shirts and shorts.

Now it was really time to get back to work. I was having trouble getting my anonymous user JavaScript to sync up properly. The anonymous user stuff has been the most difficult which was another surprising thing to learn. I managed to make a ton of progress though and got it all pushed up for another review. Hopefully it goes ok!

Today I learned that I need to make this.

2015.03.20 – Now I Have a Deadline

I am finally starting to see the light at the end of the tunnel! I feel like I am really close to having this feature finished enough to deploy for live testing and feedback. I was doing a bit of refactoring out in the common area and Jim came over to ask how things were going. I told him how much I don’t love JavaScript and he welcomed me to the club. He sat down and asked what I was working on. We ended up talking until lunchtime! It was fantastic though because it gave me an opportunity to show someone my code who knew nothing about what I was doing. I had to explain how it all worked and fit together and it was a huge test of my knowledge. It also led to some questions about some coding choices. He is ridiculously smart and could quickly see things that just didn’t make sense to him. I was either able to explain the reasoning to him so that he saw what was going on or his questions brought issues to light. I made notes as we went through everything and had some really good points to talk over with Peter after lunch.

I grabbed a quick lunch and then moved to the conference room so that we could Vidyo chat. He looked over my PR and was happy with it. I then asked him about some particular user interactions that might be an issue and we were both a bit perplexed on how to solve them. I’ll have to do more testing. He also pointed out that one of my views doesn’t have any tests. Huh? I’m not sure how that can be but I’ll have to work on it. He wants to deploy it by Wednesday so I need to get extra busy.

After he looked things over he thought I should implement a Django context processor to handle showing and caching of some HTML. The purpose is to then not need to do GET and POST requests when data hasn’t changed. I get this in a general sense but technically implementing it at this point in the project felt huge. He agreed and said he would take on that task and send me a PR to merge in. Great! He mentioned that he had to run soon as he was showing off something during Beer and Tell. He then said I should join so had Mike come and get me to take me to the conference room where it was being held. It was so interesting to see what side projects everyone was working on. Busy people!

Wayne had to take Natale and Jayde to the dentist in the late afternoon so I told him to just come and get me while he was already out. I worked for about 30 minutes and then he was on his way. Before I could even get to the car though Peter sent his PR. What?!?! It only took him about 30 minutes to get all the code done for the context processor AND write tests for everything too. Man…

Today I learned more about JavaScript promises. Jim tried to make them make sense to me. He says I will understand them better when I use them. Hopefully!

2015.03.19 – Portland Commons Q&A Day

Today was interesting and good even though I got very little coding done. I got to the office early and it was still full of additional people so I sat out in the common area again. I struck up a conversation with Selena and got to talking about jobs. She was SO nice and sat with me and gave me a lot of good suggestions about various companies to look at and how to advocate for myself as far as trying to get a job with Mozilla. I’m ready to work somewhere full time now so am exploring every option. It’s daunting for sure.

I had a lunch date with my friend Vicky at Laughing Planet. The walk over there from the office was nice and it included the company of a few of Portland’s mounted patrol. We had delicious food and caught up on the trials and tribulations of life/work. It was really nice to spend time with her one-on-one but time flew and we both had meetings to get to.

I got back to the office in time for the Q&A session to begin. Dave Slater the Chief of Staff and two other people were in town to talk to the Portland people about any complaints or questions they had about Mozilla and/or the Portland office. It was really interesting to participate. For the most part everyone is really happy with the office and environment. A few people did request a new coffee grinder though 🙂

That pretty much took us to the end of the day. I worked a bit while I waited for Andrew to come to my office. We were going to walk up to Tea Chai Te and get some Northwest Earl Grey for me. It’s so good! While I was working Dietrich was at a table flashing a bunch of Firefox Flames. They are the new FirefoxOS Cell Phones. I told him I hadn’t seen one yet so he went in the back and got a new one and gave it to me to hack on. Nice! I’ll also be getting one from Lukas so I hope to help someone else learn how to hack on one as well.

The walk up to 23rd was so nice. People were out everywhere enjoying the early evening. We each got a drink and sat in the tea shop for a while just enjoying the moment before walking back down to the Max. While we walked we talked about the near future and about what we wanted to do/change.

Today I learned that the London office is “why we can’t have nice things!” I guess they’ve had some issues.

2015.03.10 – A Roundabout Way to the Answer

So the issue I’m having with Django is that I have to display some data in a template that is already rendered. I have macros in a template that do some of the processing and then my new template extends from this parent template. The problem is that when a user is not logged in, I need to send a request to the database to get the events and then display them in the page but the way it stands is the entire page would be re-rendered so things like the header and sidebar would be duplicated. Not good. Peter suggested I use Django includes as a last resort and everything I read also said that includes are not the best solution so I was trying to figure out a different way of solving this. I searched and searched and read through a bunch of Django books in Safari Books Online (thank you Mozilla!) but wasn’t getting anywhere.

Finally I asked Peter if he could help me out when he had time. He had time right then so we had a Vidyo conference. Peter decided to just live code through the issue and talk it over as he did so. He began with our assumption that we would try to avoid using includes so he made a helper function and pulled one of the macros out of the template. When he tested it he got various errors so fixed them as they came up. He had to add some attributes, decorators, and some imports. One of the imports was causing a circular import though so he had to put it inside of the helper function and that just didn’t seem right. He then gutted the helper function to it’s most basic needs by just passing the context but that was just an include so it was determined that an include was in fact the best way to go. Whew! The long way around to get there for sure but it was fantastic to watch his problem solving process. I’ll get there someday.

With that solved I had a path ahead so I got back to work on things until I had to head home. Alena was dropping the kids off early so she could teach a class and Dave could go to a job interview. On my way home I stopped in to a new yoga studio to ask if it was good for beginners and ended up signing up for a two week trial. Alice said she would go as well so now I’m committed! For two weeks anyway.

The kids showed up so we played and watched movies while Wayne made spaghetti, asparagus, and carrots. Alice made a salad and brought the first edible flowers of the season from our gardens. I love them.

Tonight for dinner night we had the six of us, Lauren, Sean, Jason, Alice, John, Spencer, Glenn, Dave, Alena, Tiberias, Rialla, and Anya.

Today I learned how to write a helper function even though I don’t need to use one at this point.

2015.03.06 – A Bit Better Day

Jordan came with me to Mozilla since his class is now just open lab while the students work on their final projects. He’s trying to go through a Django tutorial so I told him I could help him out if he needed. I ended up having an early Vidyo meeting with Peter which was nice. He gave me lots of pointers to get me back on track so I didn’t sit and struggle all day. We also had a chance to mull over some functionality issues and I now have some things to test. Speaking of tests, he said I can enable the new Selenium tests and I don’t have to worry about Docker so that’s handy. I’d like to get this star thing done so I can learn a bit about Selenium.

Jordan stuck around until just after lunch and I spent the rest of the day working on getting my anonymous user view of starred events. I left a bit early so I could get home while it was still nice out and ended up just missing a Max going my way. I decided I’d take the bus and ended up just missing that too. I stayed at the bus stop though and saw probably 3 yellow lines pass by before another 35 bus finally showed up. It was beautiful out though so it didn’t matter.

I decided to give my brain a break and just read a novel until dinner. Afterward I hopped back on my computer to try and make some progress. I was working away when someone asked for help in #airmozilla-dev. Everyone was gone for the day and I would have felt bad just ignoring them so I said I was there. I had no idea if I could actually help them but I stopped what I was doing and tried. They kept calling me “sir” which I found amusing. I don’t think I was much help though.

Today I learned about these sweet vintage looking LED bulbs.

2015.03.04 – Need This Fog Lifted

Staying home yesterday made today feel like Monday. I got to Mozilla and worked on some little naggy things like changing how data is serialized. I did it one of the ways I had suggested so the change is only in the JavaScript. Peter might hate it but I think it looks cleaner.

Now I really need to get my brain in gear and figure out how to display starred events for anonymous users. Python can’t talk to the browser but can talk to the database, JavaScript can’t talk to the database but can talk to the browser so can grab the localStorage event IDs. Currently I have starred events only displaying for users that are logged in because my view filters them based on user and event ID. I need to grab the IDs from localStorage and then use those IDs to retrieve the events from the database for display. It sounds really simple and it probably is really simple but I’m having trouble figuring out how to accomplish this.

I had a nice break after lunch and met Dave for coffee. We went to Courier Coffee nearby and since I’m a tea drinker I got the London Fog. Yum!

After lunch I got back into my mental gymnastics but didn’t really come up with any solutions. Barbara came down and worked so I had some company for the remainder of the work day which was nice. Jordan had gotten a ride home with a friend so I took the Max home rather than have Wayne come down just for me. It was a beautiful walk home down our street. I LOVE living here!

Today I learned that my friend’s cousin was finally released from East Timor after six months.

2015.03.03 – So Much Food

It was an early morning as I had to get Lauren to the dentist by 8:00 for a root canal. Fun! I had about 45 minutes to read a book though so that was really nice and she seemed to be a lot better once it was done.

Afterward we stopped at Goodwill so I could grab some pans. I would be cooking dinner for a friend in need and figured I could put the food in pans I didn’t need back. She could keep them or pass them along to someone else down the road. While I looked for what I needed Lauren looked for some clothes. She found a few really cute things! I love shopping at Goodwill.

I got back home and got to work on my bug. I had to refactor some of my JavaScript and add some code to my template to check for user login. With these changes it seems I might be able to bypass an anonymous user GET completely and that would be pretty nice. I do need to figure out how to get anonymous event IDs out of localStorage though and I’m not sure how to do that yet.

I was having an error in my JavaScript that I couldn’t figure out. It was saying something about an undeclared variable. I poked around to see what that meant and came across this article. It was encouraging and intimidating all at the same time. On the one hand it shows that anyone can make a mistake like this no matter how much they know. On the other hand I read the comments and that was discouraging and intimidating. Whyyyyyyy do I read the comments??

14:00 rolled around and it was time to get in the kitchen and start cooking for our friends and dinner night. We’d be having chili and cornbread so it would be easy to make two huge pots of chili and two huge pans of cornbread. Our friends are a family of seven so I made enough for them to have dinner and lunch leftovers. Between theirs and ours it was a LOT of food!!

Once theirs was done, Wayne and I drove it over to their house. They live in SW Portland so it ended up taking about an hour there and back with the traffic. They weren’t home so we left everything on the porch and I let her know it was delivered. I hope it will all be ok!

Once we got back home I made our cornbread and a peach cobbler. Alice and Jason showed up and Alice started on the salad. We had the six of us, Taylor, Delaney, Spencer, John, Lauren, Sean, Alice and Jason. Miri and Dale were trying to make it over but it didn’t work out. We all ate a ton of food and then found room for cobbler. Glenn came over just in time for cobbler.

Today I learned that sometimes the Goodwill people don’t check pockets very well.

2015.03.02 – Learn to Remember to Test….the Hard Way

I pushed up my changes so Peter could look them over. I was pretty happy with how things were progressing but yikes, after all the comments I feel like I was off track for sure. There is just so much to consider and I haven’t learned how to do that very well yet I guess.

I read through the comments and began making some changes. When I went to check them out and make sure everything was happy POST didn’t seem to be working. Ugh! I didn’t even think to check it yesterday when I made other changes. I backed out of any new changes and sure enough POST was still broken. What the heck did I do?? I wasn’t getting any sort of error so that was less than helpful. I guess I knew what I would be spending my time on until I figured it out.

That took a long time! I even had lunch in between. It seems my new flag for is_logged_in is the culprit but only in the JavaScript. Now that I’ve spent half the day tracking down the ‘what’ I will probably spend the remainder tracking down the ‘why’. Good times!

I decided to just leave the offending code commented out for now and work on the jQuery serialization issue. I had commented my fix with several alternative fixes but Peter had yet another way. I tried his suggestion but I got HTTP 500 errors. Well hmm…I just put it back the way I had it until we can look at it together.

I spent the rest of the day just trying to wrap my brain around the suggested changes. It was a loooooong day!

Today I learned that a photon was photographed as a particle and a wave at the same time! That’s pretty fucking cool.