Category Archives: School

Gson & Deserialization of Objects Containing Arrays

After my practicum team and I banged our collective heads against the wall for several hours trying to force Gson to deserialize json arrays into a collection of complex classes containing their own collections, we chose to go another route entirely. Our problem at the time was that we had blinders on and couldn’t walk away from using Javas Collections library. I came to realize today that Gson does a fantastic job of deseralizing classes with any depth of arrays so long as those json arrays are actually represented as primitive arrays in your java class.

For example: let’s say you had the following json:

[
  {
    "name":"Beagle",
    "colors":["black","white","tan"]
  },
  {
    "name":"Dalmation",
    "colors":["white","black"]
  }
]

Continue reading Gson & Deserialization of Objects Containing Arrays

My next project: ActiveMob

For my last semester at Carnegie Mellon Silicon Valley I’m working through an entrepreneurship course with several past team mates. In 12 weeks (of which we have about 9 remaining), we’ll be designing, implementing and seeking user feedback for a software product of our choosing.

Our team has chosen to develop a route tracking Android application for runners and cyclists with a twist (eventually for other various outdoor sports). There are many of them available at the moment, some of which are open source (usually a good sign that the market is saturated), but we hope to add a social element that we have yet to see executed properly. We’ve named our app ActiveMob and set up a website to which we’ll be posting updates and eventually launching the application. So far we’ve been developing at full speed and I’ve been amazed at how quickly we’ve been able to pull something usable together. As we collect user feedback we hope to focus our idea into something marketable and potentially profitable.

Twitter as a Software Engineering Process Tool

It was recently suggested by my practicum teammate, @samdkarp, that in lieu of formal daily “stand-up” meetings to support our agile software process we use Twitter to share our daily status. For a remote, part-time team with a variety of schedules we thought that this might be a good approach, allowing us to share status at our convenience. So far it has been a great way to coordinate; we’ve committed to at least daily updates so that we can have impromptu pairing sessions as team members are available. Including the hash tag #geocamsu has allowed us to capture our updates and display them as a feed on our Google Sites landing page. Our goal being to use it as a means of keeping our stakeholders’ confidence up by keeping them in the loop.

Our use of HudsonJenkins CI should provide even more opportunity to incorporate Twitter into our process. We plan to create a test status account on twitter, driven by the Jenkins Twitter plugin. As we push our commits to GitHub, our Jenkins CI server will pull, run the test suite and tweet any changes in success status. Being able to include this status with our individual daily status has made Twitter our one-stop status dashboard.

Assuming that we continue to update as frequently as we plan to, Twitter should prove to be a great way for our remote team to get the benefit of a status meeting without the need for a dedicated daily time.

C2DM Prototype

As part of my current practicum project at CM-SV, I was asked to put together a prototype that demonstrates the capabilities of Google’s Cloud To Device Messaging (C2DM) service, or push notifications. What follows was the result:

https://github.com/patrickbaumann/c2dmprototype

c2dmprototype consists of two applications: a relatively vanilla Django server application (the Cloud part of C2DM) and an Android 2.2 application (the device part of C2DM). The demo aims to demonstrate the basic pieces of a “push to talk” application by allowing a user to send audio messages to devices by pushing them instead of requiring the battery-limited phone to poll the server. I’ll cover the purpose of the two applications below. Continue reading C2DM Prototype

The Carnegie Mellon Practicum Has Arrived!

When I got accepted into the SE masters program at CM-SV, my most anticipated and nerve-wracking course was the always-off-in-the-distance practicum. The idea of working a legitimate software project with several of my classmates caused my mind to wander, chasing all of the possibilities while the concept of working potentially full-time simultaneously on two projects had me terrified. Well, the time has finally come as the practicum kicked off one week ago, today. The nerves are all but gone and the excitement is in full swing as I learn more about the project I’ve been placed on with several of my former teammates and one that, after only a week, is already hitting it off with the group as though we’ve worked together for months.

We’re working with several NASA Ames researchers that are working on the GeoCam project being sponsored by Google. Their goal is to provide a suite of tools to disaster first responders that utilize recent advances in mobile technologies to make search efforts more efficient and effective. As the first part of the GeoCam name hints, the projects focus on incorporating the capture of geolocation data into disaster response protocols.

The most mature of the tools and the inspiration for the project name is GeoCam Photo, an image capturing application that attaches geolocation data and allows users to label and classify images before synchronizing them with a central server. This data can be useful in coordinating, documenting and analyzing the actions of disaster response team members in the field. The application consists of a client and server component, written using the Android SDK and the Django framework respectively.

Our project (or projects), which are still being brainstormed, should provide similar functionality within the disaster response domain. We’re looking into options that range from providing more direct push-to-talk communication to a status monitor that would analyze movement using a phone’s accelerometer and compass and alert search team managers when they’re in potential imminent danger. We’ve set up a Google Sites landing for the project and intend to update it regularly as we further define the project.

Studying for the GRE

GRE flashcards by NEPMET
GRE flashcards by NEPMET

I recently took the Graduate Record Examinations (GRE) General Test as part of the application process to get into a technical masters program. I had only a few weeks to prepare for it and was given advice of all kinds from many sources, some of it helpful, some of it not. Below is a list I’ve compiled of the advice that was helpful along with some of my own:

  • Find out what score you should be shooting for
    By all means, reach for the sky and try to get the best score you can, but within reason. Whether your scores are good or not is dependent upon what the program(s) you’re applying for are seeking. See if you can find the average GRE scores for current students in your program and make that your minimum goal.
  • Start early
    Start a month or two before you have to take the test. This will give you plenty of time to learn what you might need in order to improve your scores.
  • Take a written practice test first
    Before any studying, print out the practice test from the GRE website or use a GRE preparation book and work through the problems by hand. Use this to guage your skills and find out what you need to work on. The types of problems that you spend the most time on should likely become a focus early in your preparation.
  • Practice your weaknesses at the beginning
    If you struggled with vocabulary in the practice test, spend most of your time in the early days of preparation learning vocabulary. If it took you forever to work the math problems, spend a few days just working practice math problems.
  • Buy a GRE preparation book
    Even if you have access to online practice tests, spend the 20ish dollars it costs to get a current GRE prep book. The practice problems are more than worth it and they’ll provide you with some strategies for taking the test. Take their suggestions with a grain of salt though as some of them are worthless. Just use what you find works best for you.
  • Practice, practice, practice
    This is key. Spend at least a couple of hours a day drilling yourself with as many practice problems as you can. Grade them yourself and, if available, read through the solutions to those you get wrong.
  • Save the timed practice tests for last
    Work as many practice problems as you can but save the full timed practice tests for last. These tests can be found in the prep books and online and are extremely helpful if you take a few of them in the days before you take the actual test. They get you used to the process and help you learn to manage your time.
  • Prepare physically
    If you’re taking the GRE, you’ve likely taken plenty of tests prior to this and know that you need a good night’s rest and a good breakfast the day you take it. The same applies here. Exercise the day before and try to schedule the test so you won’t be in a stressful state when you arrive to take it (i.e.: schedule it so you don’t have to drive in rush hour traffic to get to it).

There are many other tips to be found with the help of Google or in one of the books available on GRE test prep, but these were most helpful to me. I got the score I wanted on my first try and aside from my test day, wasn’t any more stressed than I usually am. I hope these tips help those of you preparing for the GRE as much as it did myself. Good luck!