Showing posts with label BlackBerry. Show all posts
Showing posts with label BlackBerry. Show all posts

Sunday, 7 February 2016

Co-op Reflections 2.1: (Overdue) End of Term Thoughts

How has a month into the new year already passed? Between a flurry of holiday celebrations and the start of a new school term, I haven't had the opportunity to sit back and reflect on all the things that I learned throughout my second co-op term. 

Companies Big vs. Small
After spending my first co-op term at a very small company with around ten employees, working at BlackBerry was a huge change. Not only was the culture very different, but there were suddenly so many processes to get used to; from online seminars on protecting IP, to meetings on the results of user studies for our apps, it was clear that everyone was a lot more careful regarding all aspects of their work. This was an interesting new perspective, as all of a sudden there were many more people, other than engineers, invested in a single product. I got to spend a lot of time in meetings that ranged from "what does this have to do with me" to fresh insights into things that I never would have considered about the software that I was working on. This was really valuable to me, and I really enjoyed hearing what people in different roles had to say about both the development and business sides of the company.

Doubting Myself
Things were actually really overwhelming during the first couple of weeks. During my previous term, our codebase was tiny and, having started a major portion of it from scratch, I was very familiar with the majority of the code. After being used to such a comfortable advantage, the much larger and confusing codebase at BlackBerry took some time to get used to. Furthermore, the extent to which I was familiar with Android consisted of single-activity lab applications from ECE 155, or what should more accurately be known as "not-really-Android-applications-at-all". This meant that in the beginning, I was really confused by the general structure of things and how different pieces fit together. Unfortunately, this caused me to lose quite a bit of confidence in myself; I questioned my own perspective on things, afraid that if I spoke up, my opinion would be wrong. Looking back, I really regret doing this because I realize that I likely would have gained more from speaking my thoughts, regardless of how they were taken. However, on a positive note, I definitely improved upon adapting to unfamiliar code and understanding how certain processes worked without knowing all the pieces. 

Making an Impact
Things definitely picked up in the second half of the term, where I got to head up a performance improvement for the Tasks app. This was an awesome project for me because I got to see it through start to finish, from the design process all the way to implementation. The highlight of the process was getting to lead a design meeting, complete with thoroughly written design documents. This was really fun and allowed the whole team to get involved with suggestions and discussion; everyone on my team was really supportive, and their feedback was duly noted. In the end, my feature led to drastic improvements in performance times, reducing UI lag during screen loading, scrolling, and rotation, from over five seconds to under a second. I was really proud of this feature as it definitely made a noticeable impact on user experience in the Tasks application.

Self-Motivation is Hard
Switching pages to life outside of work, at the start of the term, I had a list of things that I planned on learning on my own time. As weeks turned to months, that list started to shrink, partly because I'd completed them, but mostly because time was running out. I think part of the reason it was so hard to convince myself to keep learning was because after a long day at work, especially after looking at a lot of code, all I wanted to do was enjoy my free time. While there was a lot that I wanted to get done, and things I was really interested in knowing more about, it was at times difficult to find the momentum to propel myself into the start of a new project. This term taught me a lot about my own work ethic, and how I shouldn't always aim to get too much done; looking at such a large list, it's hard to know where to start. In the end, focusing on smaller, manageable goals helped me to be the most productive.

Despite the many ups and downs, I really enjoyed this term. To an extent, I miss the interesting challenges that I encountered every day and the different it took to solve them; I definitely miss the people on my team, who were helpful and supportive along each step of the way. Overall, I had a fantastic experience working at BlackBerry, continued to improve my skills, and now whenever I walk by a Priv in a mall, I can take pride in knowing that I contributed to a small part of the phone!

Wednesday, 11 November 2015

Midterm Updates: BlackBerry Priv + YHack 2015!

Hello, blog. I feel like each time I come back, I'm stunned at how much time has passed by. It's been a busy two months since beginning co-op, but I've been having a blast and taking everything in stride.

BlackBerry Priv

BlackBerry recently released the product that I've been working on over the last few months: the Priv, a brand new Android phone! I've actually been doing development on two of the apps for the phone, Tasks and Notes. Since I am an avid user of similar apps in my own day-to-day life (yes you, Google Keep!), I've enjoyed the experience of contributing to user experience as well as learning a lot in the process. In fact, this term has only further reinforced the notion that what we learn in school is far from actual development projects; although we did some Android development last term, it was so basic that I practically felt like I didn't know anything about Android while at work. Overall, this term has definitely been a steeper learning curve than the last, but my team has been ever so helpful and every day is a whole new learning opportunity. And of course, I can't lie, it's cool to know that features I worked on have now been shipped to customers worldwide!

I might be a bit biased, but after having used the phone for a few weeks, I must say that it's a very decent phone. I especially like the customizations that BlackBerry made to the Android launcher, which allows you to launch three different apps instead of just Google Now, as well as the addition of really handy widgets and shortcuts. Furthermore, in addition to the physical keyboard, even the virtual keyboard is a step up from the stock Android one; it offers really smart word suggestions on the letters themselves, which you can swipe up to select while you're typing. And last but not least, the Tasks and Notes apps of course! It's been really nice to see all the positive reviews of the phone so far; although it hasn't been out for too long, I think there's potential that only time will fully divulge. 

YHack 2015: I Know That Feel
This past weekend, I had the opportunity to go back to Yale University for another year, for YHack 2015! Since it wasn't my first hackathon, I more or less knew what to expect, but the set-up this year was a bit different; instead of having individual rooms to ourselves, everyone was spread out around tables in a massive sports complex. It got a bit distracting at times, but it also meant getting to talk with the people around us.


I've always wanted to work on a social impact hack, so it was really nice to make a plausible idea come together at YHack. Our project aims to be an educational tool to benefit children with autism spectrum disorders. This actually tied in with my (as well as one of my teammate's similar) experience working with young children with autism to teach them social interactions. One of the difficulties that these children face is recognizing and differentiating between different emotions. And so, we created an application made up of two interactive games.


The first one is more simple of the two, and it involves the child matching images to different emotions.


The second game prompts them to take pictures using a webcam, in order to mimic different emotions. Together, the two games teach children to be able to both recognize and demonstrate emotions.

The web application was created using the Flask framework for Python to handle the backend work. Flask was interesting to work with as none of us had any experience with it - although, Flask is based on the jinja2 template, which I'd worked with previously during Google CSSI, so a lot of the code looked very similar and it was fairly easy to pick up.


We also tied in a SQLite database that we used to store account info as well as player results; this allowed us to create a stats page for each user, so that parents or educators could track the children's progress over time.

For the front end, we leveraged Bootstrap to scale our site, as well as jQuery to make and handle POST requests during the game so that we could display feedback and results without having to refresh the page. For the first game, we utilized the Flickr API to search for and display random images of people displaying different emotions. As for the other, we used a machine learning API from Indico that does facial emotion recognition to determine what emotions the pictures we took were displaying. Unfortunately, one of the caveats of relying on the Indico API was the for certain emotions, it wasn't as accurate as we'd hoped. We ended up trying to process the results we received back from it, but overall the accuracy still wasn't ideal. Still, we worked with the limited time and resources that we had in order to complete the project.

Feel free to check out our app on GitHub or DevPost! We were originally planning on deploying the site through the Microsoft Azure platform, but we ran into some issues with GitHub and Azure integration (later confirmed to be a known issue by people that we spoke to from Microsoft). Regardless, I am really happy that we were able to take an idea with the potential to make a difference in the lives of children, and turn it into reality. Part of the beauty of hackathons is being able to try something new and pour your efforts into making something interesting, and I am grateful that we came up with a unique idea that, if we have the opportunity to polish and improve accuracy on, could be an accessible and useful tool to support children and allow them to develop these necessary skills from an early age.

Saturday, 12 September 2015

Co-op Reflections 2.0: Week One at BlackBerry!

It's been quite the extended break over on this blog while school took over most of my summer, after which I was able to enjoy three weeks of break before this term started. After getting some decent rest and being able to catch up with friends back home, it was soon time to jet back to Waterloo for my second co-op internship at BlackBerry!

Day 1
The morning of my very first day at the office was spent in a group orientation, where we got to learn a lot about BlackBerry's history, culture, and where they were as a company today. It was a really insightful session; as I got to know more about the company, quite a few of my preconceived notions changed. It was really inspiring to hear from employees who had worked at the company for many years, weathered its many changes, and were clearly still very enthusiastic and dedicated to their roles. Furthermore, we got to meet (albeit quite briefly) the fellow co-op students that would be working on roles throughout the company.  

After lunch, I set off with my (very lovely and welcoming!) team and began to set-up my work environment. I'm really glad that I get to work on a Linux system! It's definitely a bit out of my comfort zone, as I'm still a dedicated Windows user so even much of the command line syntax is different, but it's funny because I was actually brushing up on Linux terminal commands a few weeks ago while on vacation. I've actually been hoping to become more comfortable with Linux operating systems, so this is the perfect opportunity to do it.

As for what I am working on, there isn't that much that I can say. And so for the rest of my co-op reflections this term I'm going to focus more on what I'm learning and goals that I have for improvement. I'm already very excited for what's to come!

Day 2
Today was exciting as my team attended a talk held by a Senior Manager of Software Product Management; it got me thinking more about some of the other aspects of software development. While it is easy to determine the technical requirements for a piece of software, there are many other perspectives that the software must be considered from in order for it to become a successful product. He discussed many products and their approach to tackling these additional perspectives, and it was interesting to consider things that I'd previously never given much thought to.

Day 3
I got to begin working on my first task for my team's project today! What started off as something that was supposed to be fairly straightforward ended up being more complicated than we'd originally thought, but I made quite some progress today and my mentor, as well as the entire team, has been so helpful in helping me out. Compared to last term, the process to push code is much more complex, for good reason as the code base is so much larger and there are many more people working within it. The learning continues everyday and I am really excited to move on into more in-depth tasks in the coming weeks. Our team uses Scrum, and so it's been really cool to see the various processes and methods that we'd learned about last term propagate into real-life applications at work. It's nice to be able to hear about what everyone is working on at our daily stand-up meetings, so that the entire team stays up to date on not only our own but everyone else's progress.

Day 4
I finished my first task today and also spent some time refactoring my code to clean it up as much as I could. Time continues to fly by so fast when I'm working, so I'm glad that I was able to finish my work in time for the weekend! I just need to test my implementation a bit more before it can be sent off for in-depth testing; since there are some issues with the test data, we plan on actually testing it with real data on Monday.

I also received my work phone today, a BlackBerry Passport! It's crazy because I remember writing about it from when I saw it pre-release at a BlackBerry information session during my very first term. I can't believe that it's already been a year since then and that I now get to use one for work. Like I mentioned in my other post, I really enjoy using the touch-sensitive keyboard, which is really convenient for typing fast because you can delete words and select word suggestions without taking your hands off the keyboard. As I only previewed it briefly last year, I look forward to playing around with it some more and discovering its full capabilities.

Throughout the week, there have been moments where I feel lost just looking at the codebase and times when I've felt frustrated that one problem leads to another. However, at the same time, there have been occasions when all of a sudden things become clear, or when seeing my feature come to life on a phone for the first time. I can truly say that I'm enjoying every moment, both the ups and the downs, as well as everyone who I've met along the way. Overall, it's been a really exciting first week and I am most definitely anticipating what's to come.