Debug a Bluetooth App with Android Emulator on PC

  1. Install VirtualBox. I have version 4.2.10.
  2. Follow these instructions to create a new VM and install android-x86 on it.

Bluetooth Configuration

  1. If you use a Bluetooth USB adapter, follow these instructions to access it from the guest OS (I stopped at “Verification Under the Guest OS”). 
  2. If you use a laptop’s built in Bluetooth device, this should do the trick.
  3. Enable Bluetooth on the guest OS, make sure you can see and pair with whatever device you want.

Network and Remote Debug Configuration

  1. Follow these instructions to enable internet connection on your VM.
  2. Find the IP of your VM by goint to the terminal (Alt+F1 and Alt+F7 to toggle) and running netcfg.
  3. On the host machine, navigate to your android installation folder > platform-tools and execute “adb connect IP” where IP is the IP of your VM.

Now you can see your device in the devices view in eclipse and play with it to your heart’s content.

Other nuisances

  1. If the cursor is not responding when you start your machine, go to Machine ->Disable Mouse Integration. You will have to click on the VM screen to interact with it and press “host” key to escape.
  2. Seems like the current version of Android-x86 has a bug that prevents it from “waking up” when it is locked. You probably want to disable screen locking so that you don’t have to restart the machine after every time you go to the loo.
  3. You can configure the “adb connect” command as an external tool in eclipse so that you can run it inside your IDE:
    1. Click the little arrow near the external tools button, and choose “External Tools Configurations…”
    2. Click “new”
    3. Name your configuration (i.e: “Remote connect adb”)
    4. Location: path to your adb.exe
    5. Working Directory: platform-tools folder in android installation folder
    6. Arguments: connect IP
      Alternatively, you can use ${string_prompt} instead of IP if you want eclipse to ask you which IP you cant to connect to each time you run the command.
    7. Click “Apply”

And that’s it.

Getting Fit, Keeping In Shape

I think that all the programmers I know want to get better at what they do. In fact, I think that every professional who takes pride in her work, not just a programmer, wants to get better at what she does. Sadly, I figured long ago that just by doing my work and following my daily routine, I will never be able to advance in a way that satisfies me.

This is why I’ve resolved to taking active steps towards my professional development.

Surrounding myself with bright people

I think that being surrounded by smart people with whom we communicate and work well is crucial for our development. I’ve learned so much from the people I work with, and I’m not talking only about technical knowledge and methods – by comparing myself to the people around me and finding our similarities and differences, I’ve been able to find out what my strengths and weaknesses are, and highlight my strengths while working on the things that need improving.

Working on my BSc in Math and Computer Science

It is a known fact that in the Israeli IT market, if you have the right kind of military experience, you don’t need a BSc in CS in order to get a job and advance to many positions. However, I feel that the broad formal education you get in the university often proves useful in unexpected situations.

Further than that, I hope that later my education will enable me join a research position in the field.

Reading

I make a point of always reading a book or a magazine that may broaden my horizons: it can be a technical book, a book about project management, general management (I’m currently working my way through Harvard Business Review‘s essays bundles, they are quite fascinating), or any other type of book that seem like it can open my mind to new ideas, or spark my creativity.

Working on pet projects

This is something that I learned from the guy that is sitting next to me. I always say that programming is a job that leaves you with a lot of free time. This is why I always keep an IDE open in the background with some pet projects, which I use to explore concepts that I find interesting, or features that may contribute to our product but I am not “formally allowed” to code.

Following technical blogs

I try to find interesting people whose opinion I value, and follow them online. I consider this an extension of the “surround yourself with bright people” principle to smart people who live oversea and have no clue that I exist.

Writing a blog!

Having to communicate your ideas often makes them clearer in your head. Writing a blog is a way to deal with subjects you may not normally talk about with your peers. In addition, when I worked on some of the (unpublished) technical articles for this blog, I faced the fact that I had some gaps in my knowledge, which I had to fill in order to complete my writing.

As an added bonus, I am also forced to slowly but surely improve my English skills.

Teaching

Similar to writing, teaching forces you to communicate with your students. Teaching also pushes you to always learn a bit more than what you already know, because no matter how knowledgeable you are, your students will always find a way to surprise you with questions about this extra bit of information you’ve neglected.
I haven’t taught for a long time, and I really miss this experience.

What about you? How do you get fit and keep in professional shape?