Saturday, March 23, 2013

Having Trouble importing FragmentBasics Project into Eclipse?

While doing some Android studying, I download the FragmentBasics project to learn more about fragments.  After downloading it, I tried to import it into Eclipse.  Unfortunately, this did not work.  It complained about the project was overlapping with an existing project.

So you don't spend the time that I did trying to track down how to import the Android Tutorial projects into Eclipse, here is the fix that I found that seems to work.

While I still believe that Eclipse is the Best IDE in the World, it is still software, made by human beings, capable of creating bugs.

Thanks and Happy Coding

Monday, October 1, 2012

Interview with JavaWorld

Recently, I was given the honor of being interviewed by JavaWorld in a series called The Full Java Life.  In this interview I talk about various topics drawing on over 12 years of professional experience with Java and JEE.  This interview was a lot of fun, and I thank Matt Heusser for selecting me for this great opportunity.

Saturday, August 18, 2012

Gmail stopped working on iPhone :- FIXED

Believe or not, for the past couple of weeks, Gmail has completely stopped working on my iPhone.  I have been scouring the internet to try to find out why this happened.  Just now, I finally found a solution to the problem.  Unfortunately, according to the docs, it is merely a temporary fix, and the issue will resurface again in the future.  However, this fix does work [1].

For brevity's sake, here are the instructions:

1.  On your phone, navigate to the following page:

2.  Now attempt to access you email through the iPhone

Once again, according to the place where I found this information, it appears as though this fix will last for about a couple of months before you have to apply it again.

Pay it forward!!!


Monday, May 21, 2012

GRWebDev :- Git 101 / Git-SVN Presentation

Just completed a presentation at Grand Rapids Web Developer tech group.  What an awesome group of folks.  I have pushed my presentation to Github.


Wednesday, May 9, 2012

Creating Git Patches for the Git-less

Recently, I have had to flex my git skills in a way that I have never had to do before.  I work for a client that does not use Git as their version control system of choice.  They use a product that starts with an 'S' and ends with a 'VN'.

Problem Statement
At times, there is code that I need to enhance, however, I do not have write permissions to.  If we were using Git, I would simply clone the project, create a branch for the specific feature, and once the feature was completed, have them pull from me.  However, this is not possible if the other team members are using SVN.  So how do you solve this issue?

Create a patch
The way to solve this problem is by creating a patch.  This patch cannot be just any patch, it has to be a patch that does not include all of the "Git" information.  Instead it is a patch that could be applied by using non-git tools.  Here are the instructions for creating such a patch:

1.)  Make sure you are on the feature branch where you just added your new feature.  For our purposes, we will say that it is feature_123.
2.)  This feature branch, let's say was created from the master branch.
3.)  In order to create a non-git friendly patch, you would enter the following command:  git diff --no-prefix master > feature_123.patch
4.)  You would then send this patch to someone that does have commit access to the repository.
5.)  They would apply the patch using their Editor of choice, or from the command line enter: patch -p0 < feature_123.patch

Happy Coding.

Wednesday, November 23, 2011

How to open multiple Gmail accounts in Chrome...

[Although the title of this post relates specifically to Gmail, this feature / functionality can be used for a wide assortment of online applications.]

I love the Google Web Applications, including Gmail, Calendar and Reader.  I also manage many Gmail accounts for various reasons.  One thing that I find myself doing a lot is switching from one Google Account to another.

Typically, I start my day by logging into my personal Gmail account.  However, there are times when I have to create a new appointment using a different Google Account.  I used to do the following steps:

  1. Log out of my personal account
  2. Log into the account that I want to create the appointment in
  3. Create the appointment
  4. Log out of that account
  5. Log back into my personal account
I always wished there was a way to stay logged into my own personal account, open a tab, log into the other account and do what needs to be done there, but unfortunately that does not work.  If you are already logged into Google, when you open another tab to another Google resource (gmail, calendar...) it keeps you in the same account.

The way around it is to use Chrome's Incognito mode.  If you are logged into a Google account, create a new window in Incognito mode (File -> New Incognito Window).  In that window, you can access another Google Resource under a different account, all the while staying in your original account on the first browser window.

This neat little trick was introduced to me by a co-worker, and it has been a real time saver.  I hope that it is a timesaver for you as well.

Pay it forward.

Thursday, November 17, 2011

What has been keeping me busy...

Every once in a while, your world gets turned upside down.  Someone challenges you to think different, and because of it you will never be the same.  After developing software professionally for the past eleven years, I have had the pleasure of being introduced to some new ideas and concepts, that have caused me to rethink how to develop software.

There will be more to come, but I thought I would send out this little teaser of what I have been spending time with.


Imagine someone suggesting that the way traditional way of scaling and boosting performance by adding more CPUs is not correct.  Then imagine this same company that made this suggestion is proving it by processing more than six million orders per second on a single thread.  LMAX has done just that, but more than that, they have completely open sourced their findings and their Java solution.  Wondering how to write your next multi-threaded application?  You should definitely give the disruptor some attention.

Event Sourcing

While learning about the Disruptor, I came across a new term that I had never heard of before, but one that I will never forget.  The easiest way to think about Event Sourcing is when you think about your bank account.  How does a bank determine your current balance?  It rolls up the debits and credits of your account since the beginning of your account.  What if we applied this same technique to our data model when developing software?  We would be able to look at the system and our data at any point in time.  Anyone likes to guess the state of the system at 2 o'clock in the morning after being woken up due to a production issue?

Events are not just for notifications, by Greg Young, is a great introduction to Event Sourcing.


Last, but not least is my current obsession.  During Greg Young's talk, he mentioned something called CQRS.  Since I was so impressed with what he had to say about Event Sourcing, I thought I would look up what CQRS is all about.  In a nutshell, it is an alternative to N-Tier Software Design (Database Tier, Services Tier, UI Tier).  It allows software to be designed and tested with behavior.  Grounded in the principles of Domain Driven Design, this architecture has taken me a while to understand, and I am still learning.  The implications of what is possible with it, are amazing.

To learn more, I would recommend the following:

If you would like to get your feet wet in what it would be like to develop software using these principles, I would highly recommend the Axon Framework.  I have been using it for a month now, and it is great.  Not to mention the documentation is outstanding and the responses that I have received on the mailing list has been wonderful.

So, that is what has been keeping me busy.....there will definitely be more to come, but I thought I would offer this as a primer before digging in too deep.