Sunday, 4 January 2015

AirDroid: Your Android Phone On Your Computer


I discovered AirDroid while searching for a way to relocate photos from my phone to my laptop, in order to free up some memory. I was having trouble with my laptop not recognizing my phone via USB, and Bluetooth wasn’t a viable option as only one photo can be transferred at a time. Browsing the web for alternatives, I came upon AirDroid, a pretty useful service that syncs your phone to your computer via the internet.

AirDroid offers to Android users the convenience of being able to control certain key features of your phone from your computer straight from the web. After downloading the app and signing up for an account, just log in online and the service will connect to your phone. Initially, I was only going to use AirDroid to back up my photos so I could delete them from my phone. The one downside to this feature is that it can take a while to download large files or many at once, especially if your internet connection isn't great. However, it still proved to be a good backup plan.

After finishing up, and subsequently solving my USB connection problem a few weeks later, I didn't think I'd need to use AirDroid again. But after revisiting AirDroid today out of the blue, I soon found that there are a few other useful features to take advantage of. 

Convenience
This can definitely be considered a first-world problem, but if you're busy at work on your computer and want to quickly check your phone for any calls or texts, yet your phone isn't beside you, just log on to AirDroid. You'll receive live notifications when you receive calls/messages, and you can even call/text straight from your computer. It can come in handy when you just want a quick glance at important phone notifications (or, let's be honest, you're a bit lazy).

Ringtones/Alarms  
This feature allows you to access the ringtones and alarms folder on your phone easily, to add or delete new sounds. For me, this comes in handy because the alarms on my Nexus 4 are the most non-intrusive, serene sounds that I've ever heard. Since I started using my phone as an alarm clock, I prefer to customize my morning alarm so that I can actually hear it blare in the morning.

Find Phone
Mac + iPhone users know that Find Your iPhone is a useful feature that comes from being able to sync up Apple products. Android users don't have a native phone-finding service, so this would be very helpful for those of us who misplace things easily. I haven't actually tried the feature yet (which is good news!), but from what I've read it allows you to locate your device on a map, call it, erase personal data, and also lock your phone. Now I'm sure that there are many similar services out there, but AirDroid conveniently bundles this together with other nice features.


AirDroid is an unexpectedly useful service that I'll definitely be reaching for from time to time and further exploring what it has to offer. I'm not sure if there are other similar services out there but I found it interesting so I thought I'd share my initial thoughts on it. If you're interested, be sure to check it out and let me know what you think!

Sunday, 21 December 2014

Mining for Jobs Part 3: JobMine Rankings + Where Am I Working?

It's been quite a while since I've updated this blog, but finals caught up to me and before I knew it, 1A was over! Our first university term was filled with lots of both fun and hard work, but most of all it honestly flew by so quickly that, coming home, I almost can't believe I just spent four months away. As I look forward to the next four months of co-op, I thought it'd be a great time to end off this series about JobMine and talk about perhaps what is the most relaxed yet also nerve-wracking part, ranking jobs. 

JobMine works on a dual-ranking system; employers rank students that they interviewed based on preference, and the students who are ranked get to rank the employer. Then, the system will match students with employers based on the cumulative rank; after adding the two rankings together, the student with the smallest sum gets the job, and in the case of ties, JobMine works to ensure that as many students are matched with jobs as possible. Students who are ranked #1 receive an Offer; if they rank the company #1, the job is guaranteed to be theirs. Otherwise, you don't get to see what rank you are placed at by a company - the ranking status simply indicates Ranked. This is where it gets tricky; because we don't get to know our ranks, it comes down to a game of risk versus reward. Do you rank all your jobs #1 but risk not getting the one you most wanted, or do you rank them according to preference and risk not getting a job at all?

My own experience with the ranking system was entirely different from the risk/reward scenario I'd originally imagined. Out of thirteen interviews, I received eight Offers, three Ranked, and two Not Ranked (essentially a rejection). The large amount of job offers was so beyond my expectations that I was very overwhelmed; although this was clearly a fantastic situation to get caught in because I was guaranteed a job, it meant that where I ended up working was up to my own choice. If you know me, you'll know that I have a hard time making the smallest decisions, so having to make such a major choice in a weekend's time was a little stressful. There was quite the variety to choose from; eventually, I managed to narrow the list down, one offer at a time, by weighing the perks and drawbacks of each job. Because I hadn't asked about wages during my interviews, I didn't really know how much I was getting paid for each job; this was unfortunate as it may have made the decision a bit easier, but then again I wanted to pick my job based on the position rather than money. For each job, I mainly considered the role's responsibilities and the company location. It was definitely a process that included tough choices, but in the end I'm very happy with my decision.

With all that being said, I will be working as a Software Developer for Savision Canada near Ottawa for the next four months! Savision creates business management solutions, bridging the gap between information technology data and marketing. The company works with Microsoft System Center, and I'll be working with C#, so I thought that it'd be a great way to expand upon my foundational understanding of C# and explore how much more can be done with it. Furthermore, I've only visited Ottawa briefly before and it was a lovely place, so I am thrilled for the opportunity to explore the city some more while I am there. The combination of the job itself (where I'll be able to gain very relevant experience), what the company does (which sounds interesting and I'm excited to learn more about) and its location were what sold me for what I hope to be a fantastic work term during and out of work.

I aspire to do lots more writing over the break as well as many updates throughout the work term. The past four months have been a blast, and I can't wait to see what the new year will bring.

Tuesday, 18 November 2014

Mining for Jobs Part 2: Interviews

After two consecutive busy weekends applying for jobs, notifications of interviews began coming in on a rolling basis. I remember distinctly the nerve-wracking feeling of sitting in the Tatham Centre (where all on-campus co-op interviews happen), waiting to be paged for my very first interview; I hadn't had a legitimate job interview before, so I didn't really know what to expect. Sure, everyone can think of generic interview topics that have a good chance of being discussed, but especially for software development positions, it's hard to predict what combination of technical and general questions you'll be asked.

If only it were this easy?
From late September to late October, I was fortunate enough to receive thirteen interviews. These numerous experiences helped me not only to get used to the interview process, but also to build up confidence in answering questions on the spot. To sit in a small room with one or a few interviewers is intimidating enough, let alone having questions thrown at you with minimal preparation. I've never been a fan of public speaking, but I was able to see myself improve in my ability to articulate my experiences clearly and present myself as a good candidate for the job. 
Throughout this period of time, my perception of how to handle an interview also changed; I learned that it is not so much about presenting yourself in the best possible light, but more about connecting with the interviewer. The interviews that I felt best about were the ones where I got to have meaningful conversations with interviewers, whether it  was about their work or even their previous experiences. I think that one of the things we tend to overlook is that interviewers are great people to learn from. When I found out about my Google CSSI phone interview, I decided to make the most out of talking with the interviewer, who I knew was going to be an engineer at Google, regardless of the interview's outcome; I made the same effort with many of my co-op interviews. I think that if you can demonstrate that not only do you care about the job itself but also about the company and people behind it, you add a level of depth to your character that goes beyond merely talking about your accomplishments.

When it comes down to it, I think everyone has their own different way of tackling interviews; there isn't anything specific you can do that will guarantee anything. As long as you are prepared and let your natural character shine through, you will impress an employer sooner or later. Furthermore, since this is only our first work term, I'm sure there will be even greater things to come. Stay tuned for part 3, where I'll be talking more about (UWaterloo-specific) job rankings and where I'm working for the winter term!

Monday, 3 November 2014

YHack 2014: First Ever Hackathon + YOCHECKIN

Last Friday at 6:00am, I got on a twelve-hour bus ride down to New Haven, Connecticut to attend YHack at Yale University! After having missed Waterloo's own Hack The North earlier this year, I was thrilled to finally experience my very first hackathon. For those of you unfamiliar with the term, hackathons are programming competitions where participants team up to create projects in a short, condensed amount of time (commonly over a weekend). These events are notorious for sleep deprivation, but are a great way to not only compete for prizes, but for programmers to come together and focus on something new and learn a lot. I was especially for YHack because it meant getting to see many Google CSSIers again! After going off to universities across the US and Canada, it was awesome to catch up with many of them again.

Before I knew it, we'd arrived at Yale's West Campus:

The weekend went by in a whirl of activity; before I knew it, time was up and it was time to submit our projects. I had so much fun over the weekend, getting to not only develop my programming skills but also going to talks by various companies, and hearing about ideas from people across the country. The enthusiastic atmosphere of the hackathon was contagious; everyone was so passionate about their projects and willing to help us with ours. The crazy environment of the hackathon was very motivating, because everyone was having a great (albeit sleep-deprived!) time.

Our Project: YOCHECKIN
The inspiration behind my team's project came from wanting to taking Yo, possibly the simplest application in the world, and making something more complex and useful out of it. If you've never heard of Yo before, it is essentially a no-character communication app where users tap a button to send a "Yo" message to another user. That's all there is to it. However recently, Yo was updated so that in addition to a mere "Yo", users can also choose to send their location, or a link to a website as well.

We wanted to take such a simple mode of communication and turn it into a useful, hassle-free service. We came up with a situation that we'd all found ourselves in before; we're going out, and our parents want us to check in with them to make sure that we were safe. For some kids, it may feel annoying to take time out of hanging with friends to text their parents; furthermore, how could their parents verify that their children were where they said they were? YOCHECKIN is a solution for both of these issues. After entering in you contact phone numbers on a simple web application, all you have to do is "Yo" your location to YOCHECKIN, and everyone on your contacts list will receive a text message to notify them of your location. We felt that this was a great way to integrate Yo users with people who didn't have the application, to increase the functionality of the app.

The Programming Process
We used the Yo API, Google Geocoding API, Twilio API, and Google App Engine to create YOCHECKIN.

The first half of our coding process consisted of learning how to use the Yo API. It was initially fairly easy to understand because the code is quite simple when using Python (which we'd already had experience with from CSSI); however, the code in the available documentation used Flask (a Python microframework) to send Yo's from the service, which wasn't supported by Google App Engine. To circumvent this issue, we had to determine how to use the Python urllib and urllib2 libraries instead to replace Flask.

After learning how the Yo API worked, it was time to combine everything together. In essence, our project consisted of the following steps:
  1. User enters contact phone numbers, which are stored in an Google App Engine datastore
  2. User Yo's their location to YOCHECKIN
  3. The latitude/longitude coordinates are converted into a street address through reverse geocoding with the Google Geocoding API
  4. If the user can be found in the datastore, text messages are sent out to the user's contacts via Twilio 
  5. Otherwise, the user receives a Yo back with a link to the website, to enter their contacts in
After working on separate parts of the process, we all regrouped to piece together the final product. Our team worked together really well to overcome all the challenges that we faced while developing our project. In fact, before I knew it, we'd worked almost twelve hours straight from 7pm on Friday night to 7am Saturday morning! Thankfully, we managed to finish our project in around 24 hours total, meaning we were able to get a lot more sleep on Saturday. By the end, we'd created a service that we truly believed would have a beneficial purpose.

The Final Product
Our final product comes in two parts: the website (http://helpyofind.me/) where users go to save their contacts, and the Yo service itself, YOCHECKIN on the Yo application.

The user interface of the website, modeled after the simplicity of the Yo application itself.

The source code of the entire project can be viewed on GitHub. I am really proud of how this turned out in a short period of time and how much we learned as a team throughout the process. There is definitely room for more improvement; depending on how much time we have to work on it in the future, I definitely have ideas of ways to increase functionality and error-checking user input on the site.

One of the other exciting aspects of our project is that we actually got to speak to the CEO of Yo himself about our project and he was interested in adding it to the official list of Yo services, the Yo Index! I hope that we will actually be able to get it up on there soon, as it'd make our service a lot more accessible to Yo users.

All in all, I had an amazing time at YHack 2014; it felt really nice to be able to dedicate a weekend to focus solely on a single programming project. I will without a doubt be going to more hackathons in the future! But until then:

Tuesday, 28 October 2014

Mining for Jobs Part 1: Applications

After two months of going though the job hunt process, I'm happy to say that I've found work for Winter 2015! As a first year, particularly Stream 4, I definitely felt the pressure from submitting my first application up to deciding which job to take. In this next series of posts, I'll be reflecting on my experience with the different steps of the job search and what I've learned from the first ever job search.

The University of Waterloo has an internal job search system called JobMine (which inspired the title of this series) for its co-op students to find and apply for jobs on. The first part of the job search consisted of reading through hundreds of listings and deciding which ones to apply for. JobMine limits applications to 50 per round, likely to prevent everyone from applying to everything. Without much previous job experience or even programming experience in general, it was a fine line to decide between the "safe picks", entry-level jobs that didn't require a lot of experience, and the "long shots", jobs where I didn't meet all the requirements.

The easiest way I found to sort potential jobs that I wanted to apply to was by three categories:
  1. Fits most requirements
  2. Fits some requirements
  3. Hard to get
As I added jobs that I was interested in to my shortlist, I added them to one of the categories; this made it a lot easier to keep track of how many of each type of job I was shortlisting. Then, when it came time to apply, I could easily choose from the categories and keep track of how many jobs in each category I was applying to.

From this round of the job search, here are some important things that I learned:

  • Don't be overwhelmed by a long list of required skills: As a general rule of thumb, employers who list a lot of requirements generally aren't looking for someone who fits exactly all of them. I mostly applied to jobs from the first two categories above, but I also took a chance to apply for some "hard to get" jobs. You never know specifically when you'll fit well with what an employer is looking for; while it's good to be realistic, the required skills are only part of the picture.
  • Don't be scared to apply to jobs that many people have applied to: I made this mistake when considering whether or not to apply for some jobs, in thinking "what chance will I have against tens or hundreds of other people"? Again, you just never know, so if it is a job that you really want, it doesn't hurt to take a shot.
  • Be specific on your resume: Writing specific details about relevant skills or experience and how they'd apply on the job not only helps employers to connect your skills to their work, but also helps you in deciding what to talk about/elaborate on if you manage to snatch an interview!
  • A cover letter isn't always the best way to go: I actually chose not to write any cover letters when I applied for jobs, because I didn't have a lot of time to personalize them for different jobs. From what I've heard, it's sometimes better to not include a cover letter at all if it's going to be a generic one. Unless you're confident that your true interest in a job or skills description shines through in a cover letter, it might be best if you just didn't include one.

Overall, I definitely learned a lot from the very first round of job application; thinking ahead, I will be changing my mindset a little when applying for jobs next round. I hope that these tips are useful to Stream 8 co-op students or anyone really who is looking for a job. Job applications are a crucial first step because they are the deciding factor for whether or not you receive an interview (which I'll be talking about in the next part). All in all, be prepared, don't be afraid of failure, and I'm sure the results will show for themselves.

Tuesday, 21 October 2014

Midterm Week Is Over

It's hard to believe that my very first university term is already half over. Last week, commonly referred to as "Hell Week" here at Waterloo, has been a whirlwind of studying for and writing all of our midterms in the span of five days. There were definitely a few stressful moments throughout the week, from unease about the very first exam (calculus) to apprehension over the notoriously difficult physics midterm. Reminiscent of the pressure that I'd felt during International Baccalaureate exams only a few months ago, this week seemed to bring about more anxiety due to it being our first official test of university. Whether it was self-motivation or simply the weight of stress - likely a combination of both - many of us spent the weekend of Thanksgiving studying rigorously for the midterms to come.

Since I am in Stream 4, midterms happened to coincide with the second-last week of job interviews for winter co-op positions (which I'll be talking about more in my next post!). I happened to also have one to two interviews a day, so I spent the week running around from midterm to interview, then back to my dorm to prepare for the next ones. Thankfully, we had the week off from classes, meaning that we could focus all our effort on exams. One of the main things I've enjoyed about living in residence is always having a group of people to study with; in high school, I preferred to study independently, and while I still like to study alone for more major exams, it really helps to have a network of people to go to with questions, where we're able to help each other out.

They key to midterms, I soon realized, is to study past exams. You can study lecture notes or the textbook for as long as you want, but it isn't as effective as studying actual exams from previous years. Often, it becomes easy to see patterns of questions you know for sure will appear again. University exams focus more on applying what you know versus simply just knowing it, so it really helps to practice examples and put your knowledge to the test. 

Overall, midterms went by smoothly, and I am quite pleased with how I did. I think that they were a great introduction into how to better study for exams in university; it already feels as if finals are right around the corner. Thankfully, they're not all in one week, as they are quite heavily-weighted toward our final course grade. Now that exams are over, the focus is back on securing a co-op job; I'll be discussing some of my experiences with employer interviews soon, as Monday is when I find out where I'm working next term! More exciting details to come.

Sunday, 21 September 2014

The Job Search Begins: Highlights from Employer Info Sessions

Yesterday, co-op students in Stream 4 officially start applying for jobs through the university's internal job postings, JobMine. After exerting all efforts to perfect our resumes during the past weeks, it is finally time to put our skills to the test and apply to internships for the next term. Throughout September and October, companies big and small host employer information sessions around campus where they speak about their company and what projects they have been working on, to give students a deeper understanding about whether or not the company will be a good fit for them. Having been to a few sessions this week, here are some features from the talks, as well as some tips related to attending sessions.

Highlights
This past week, I attended information sessions for Facebook, Google, and BlackBerry. Each one had a slightly different setup; Facebook held a talk about security in computer network systems, Google discussed its Waterloo office and projects that they are working on, and BlackBerry mainly organized a networking session with recruiters from various departments.





The first information session that I attended was for Facebook. Much of the presentation went over my head as it was very advanced and technical. However, the presenters concluded with information about Facebook itself and available job/internship opportunities. At the end, I had the opportunity to speak with one of the recruiters; although I found out that Facebook mostly only hires students with a lot of experience (e.g. upper-years), it was through the recruiter that I found about Facebook U, a special internship-type program for first-year students. Unfortunately, the program is only available in the summer so I am unable to apply, but nonetheless it was great to find out about the opportunity.






Next, I attended an information session from Google, as I had been introduced to our campus recruiter from the CSSI team! The presentation was given by Steve Woods, Engineering Director of Google Canada. One of the interesting parts was about why Google chose Waterloo to set up its first Engineering office in Canada and how the company has worked with so many start-ups coming out of the University of Waterloo; I find it so exciting that Waterloo has fostered such a culture of technology engineering and entrepreneurship. We also learned about the many community initiatives that Google contributes to - many of these projects involve sparking children's interest and supporting underrepresented people in engineering. I thought it was fantastic that every Google is so active in encouraging younger generations to explore technology. In terms of internship opportunities, Google offers the Engineering Practicum Internship for first and second-year students, which unfortunately I am also unable to apply for this year, but I am definitely going to apply next summer!




The last information session I went to was for BlackBerry, which is based right out of Waterloo. Their session focused on a networking fair setup, with stations for various job departments to speak to recruiters and a display of current/new BlackBerry products. One of the exciting aspects of the session was having the opportunity to test out the unreleased BlackBerry Passport! The most interesting feature of the Passport is its full QWERTY keyboard with touch functionality. I feel that this feature is very innovative because it combined the traditional Blackberry keyboard with increased user-friendliness by allowing users to use the keyboard to control applications instead of touching the screen. It was fantastic to be able to try out and learn more about Passport.
The BlackBerry Passport, soon to be released.
I really enjoyed the networking fair because I got to speak one-on-one with different BlackBerry employees: a Campus Ambassador who'd done two co-op terms with the company gave us a lot of insight into what her role was during her internships, and one of the recruiters for Software Development answered many of our questions about first-year co-op students and internship opportunities, which was very helpful. It was great to find out that BlackBerry has several internships tailored for first-year students in Winter 2015, which I am definitely considering applying for.

Tips
From attending these few sessions, here are some suggestions that I've gathered about making the most out of employer presentations (wherever they may happen):
  • Come prepared with questions: If you have specific questions that you'd like to ask the employer about, there will definitely be people there who can answer them and it is a lot easier to talk in-depth to recruiters in person than through email.
  • Talk to employees: Whether it's during or after sessions, talk with people from the company. Even if you don't have any questions, employees offer a lot of perspective and more details on what it's like to work at the company.
  • Bring your resume: This one applies more to non-co-op students, but if you bring a copy of your resume to a session, there will be recruiters taking them in or employees who can pass on your resume directly to one.
  • Attend many different sessions: Each session that I've gone to so far has offered something different, not just in terms of company but also in content; even if you're not interested in a position at a company, the sessions are a great way to learn more about how they are contributing to the tech industry in general and you may be surprised at how the company fits with what you're looking for. 
Employer information sessions are very beneficial to find out about a company and what they're up to from people who have actually experienced working there. I have only gone to three so far, and I've already learned a lot more specifics than you could find out on their websites. In my opinion, these sessions are very useful and I'll definitely be going to a few more in the coming weeks.