// caseydunham.net

Saturday, May 22, 2010

Eclipse Pulse #001 – Working Sets

As anyone that has been using Eclipse for any period of time can tell you, it doesn’t take long for your Workspace to become a complete mess with a multitude of related or unrelated projects when at any particular time, you only care about one or two specific projects.  I have been using Eclipse for years and one of the biggest issues I have with it is the way that it lumps everything together into Workspaces. An example of this type of Workspace dis-organization can be seen in the screen shot of my experimental workspace below:

Yes, you could always create a new workspace but this is isn’t so simple when you have a few plugins installed, specific project build and run configurations, (and don’t even get me started with custom editor settings…) this can quickly become a mess. You can export some of the settings and than reimport them, but overall I tried working this way for a time and quickly gave it up; it was just too much upkeep. After spending some time seeing how other developers use Eclipse where I work (some use Netbeans and others use IntelliJ) I realized that many developers, even those that have been using Eclipse for a while, don’t know about Eclipse Working Sets. By creating Working Sets and setting the Top Level Element, you can group your projects any way you want since Working Sets have no clue about project dependencies at all.

To create a working set, click on the View Menu button (the down arrow in the upper right corner right next to the minimize button) and select the “Select Working Set” menu option:

This will bring up the Select Working Set dialog from where you need to click the New button

which will bring you to the New Working Set dialog window where you would select the type of projects that the Working Set will contain. Now you can define the Working Sets that you will want to use and the Projects that should be associated with it. I suggest to create as many Working Sets that make sense for the projects that you have. There is no limit to the number of projects that can belong to a particular Working Set and a project can even belong to more than one. A Working Set is just an organizational tool for displaying Projects in Eclipse. I am going to just create  a single Working Set for the testing projects I have in my Workspace:

Now that we have a Working Set defined, we can use it to filter our Projects in any of the Views by going back to the Select Working Sets dialog and selecting a Working Set:

We can also filter the Views to show the Working Sets along with Projects by setting the Top Level Elements under the View menu to Working Sets and not Projects. This is my preferred way of doing it as it shows all of the Working Sets with the Projects beneath them. Any Projects that are not in a user defined Working Set automatically get placed into an “Other Projects” Working Set that Eclipse creates.

At this point the ordering of the Working Sets can be adjusted just by dragging and dropping it to the desired place in the tree or bulk actions on your Projects such as Refreshing an entire Working Set or limiting searches to a particular Working Set can be performed.

While Working Sets provide a bit of help in controlling the Workspace clutter, it’s not as ideal as being able to work with a single Project grouping like Visual Studio’s Solution files or IntelliJ’s project files. This is one area where I find Eclipse very lacking compared to other Java IDE’s.

posted by Casey at 9:16 pm  

Thursday, May 20, 2010

Developer Goals

I have an upcoming meeting with my manager at work to discuss my development goals for the year (I’m just coming onto this team so it’s a bit late) and I have of course been thinking about not only what my developer goals are, but what should a developer goal look like. I could easily list a ton of different technologies/APIs or frameworks that I want to learn, but in my opinion knowing a lot of frameworks isn’t enough so I am trying to think about other things that would make me a better developer. I know a fair amount of different technologies so I would rather spend the upcoming months refining my knowledge with what I am currently using.  Here are a few of the things floating around in my head right now as far as areas I want to improve in:

Tech

I want to increase my level of knowledge of these

Methodology

I would like to improve my abilities in these areas

  • Test Driven Development
  • Agile/Scrum
  • Software Estimation

Projects

I want to continue to work on

  • Finish PlayWithYourPeas XNA game
  • Contribute to an Open Source Project
  • Write more

These are just a couple of areas that I want to either learn more about or improve upon. I have also been pondering whether or not to pursue the Certified Associate in Project Management certification. I have already met the requirements so it would just be a matter of a bit of study and to take the exam. I currently have no desire to be a project manager, but I think having this under my belt would go a long way towards reaching my longer term goal of becoming a team lead. I currently don’t have any other certifications and am not planning on getting any.

When constructing the above list of items, I was also thinking about SMART which is an acronym for Specific, Measurable, Attainable, Relevant, Timebound.  For example, applying this to my above list I could do almost all of these by building a small web application. However, to make any of these official goals I need to make them more specific like “build a website with Grails that does CRUD operations to a database as well as make use of a webservice” (that covers about 90% of the tasks I would use it for at work).  I would make this a bit more specific by outlining the type of site that I wanted to build, most likely something data heavy with a lot of complex forms like I have to deal with at work. This is also definitely attainable. I don’t need to build the next big thing but I could easily build a website that flexes all of the technology I need it to in a few months with spare time.  Even if I am not using Grails as an everyday technology, it is completely relevant as it uses technology I do use every day. Also, laying out the UI and handling form data is going to be a great exercise that I can apply to every other application I build. Timebound is the tricky one. I would want to set a time frame on when these goals should be completed that isn’t too aggressive but also not too far off in the future.

I will most likely refine these items and remove or add some over the next few days, but whatever makes the final cut, it is important to stay focused and to complete them.

posted by Casey at 8:33 pm  

Powered by WordPress