Archive for March, 2008

Remember the Milk, GMail, and GCal - the trifecta

Today I discovered that the fine folks behind Remember the Milk created an extension for Firefox that integrates the RTM task list into GMail. Quite simply this is fan-freaking-tastic. I was already using the Google Calendar “plugin” which works well but the GMail integration really is awesome since it is far more integrated into the GMail UI than is the GCal option.

As far as GTD goes though now I have a complete online environment for mail, tasks, and calendar. In fact I’m so excited by this I just decided to start getting my work email via GMail as well. It seems really silly to keep work stuff in one spot and personal stuff in another. I know that David Allen doesn’t recommend doing this and it just feels wrong. There should be no reason to have to hit multiple sources for what is essentially the same information.

Just one note about the GMail extension: please read the warning note near the bottom of the page I linked to above. If you feel squeamish about stuff like that then head for the exits and don’t install the extension.

GTD using online applications - Part 3

Way back in October of last year I wrote part two of a small series of articles about using various online applications to follow David Allen’s “Getting Things Done” methodology of time management.  At the end of the second part I said I would cover using Remember the Milk (hereafter referred to as RTM) and Toodledo for the list-keeping part of the methodology.   Here is that long overdue follow-up.

What took so long?

Glad you asked :)  A host of things came into play the most important being that I totally fell off the GTD wagon.   About the same time I posted the last article I started looking for a new job and I’ve been really busy every since.  I’m just starting to once again pick up the pieces of my GTD practice such as it was.

I also hit some snags in just how to use RTM as a list keeper.  But before I talk about that let me talk briefly about Toodledo.

So long Toodles

First off let me say that Toodledo is a fantastic task and list keeper.  It has a ton of functionality, offers good Google Calendar integration, and has a very nice UI that is very configurable.  Why did I stop using it then? 

  1. The version that I found essential, the Pro version, isn’t free.  It’s only $14.95 a year but pretty much all of what I need is in RTM which, at the moment anyhow, is completely free.
  2. You can only have one note per task.  RTM allows you to have as many as you want.  I use the notes a lot and I like being able to keep different notes per idea. 
  3. History of completed tasks in the free version only goes back 1 week!  I find this totally ridiculous and its a show-stopper.  I like to go back and refer to things often and the 1 week limit is just kills this application for me.

All that being said, if these aren’t issues for you then by all means give Toodledo (especially Pro) a look.  It really is a nice application.

The cow says Moo…

 

 

Isn’t that a great logo?  How can anyone resist such a lovable cow?  Doesn’t it make you want to use RTM? :)  Well, RTM is free so go try it.  I’ve done so and I’ve been pretty happy so far.  But I’ve been having problems and have been searching out a solution.   Before I get to that let me tell you how I was using the application for GTD previously.

Contexts

I was using the List feature of RTM for my contexts.  I have only a few that matter like @home, @work, @computer, etc.  I have five total so I thought that having those contexts displayed as tabs would be beneficial and it was.   The contexts worked just fine.   I would create tasks under the right context and move on. 

Lists

I, shockingly enough, also used the list feature to hold my other lists so that the main lists, such as Someday/Maybe, To Buy, etc. also showed up as tabs.   Items would be added to those lists easily enough.  They were actually RTM tasks but in the scheme of things that really was irrelevant because it just looked like a long list of things I wanted to buy, things I wanted to do someday, etc.   Again this worked fine.  The real issue for me was projects.

Projects

Projects was a tab (an RTM list in other words).  Each project (remember, anything more than 1 step is a project) had a place holder task on the project list.  Now I kept running into the problem of how was I going to add tasks to those projects?  The way I had the system laid out the only option was to use the Notes feature which I did by adding the subtasks for a given project in the Notes.  This did not work at all.  There is no way to make items inside a note into a task so therefore there was no easy way for me to move things into the appropriate context when I needed to.  This actually is the reason I originally took a look at Toodledo.

Also, using a list per project also doesn’t work.  Remember that anything requiring more than one step is a project?  At any given time you might have 30 or more projects happening.  That is a lot of tabs cluttering up the screen.

Solutions

A couple of days ago I just couldn’t take it anymore and went looking to find out how other people are using RTM for GTD and I ran across this article.

I thought that most of the ideas there, both in the article itself and the comments, were very good.   By using tags for my contexts I can create smart lists that are based off of searches on those tags.  That way I still get a tab for my contexts.  What about projects though?  More in a second.

What I found interesting was that people were doing the same thing I was doing before with having an RTM list/tab serve as the placeholder for their contexts and the more I think about it the more I think this is probably still the best way to go.   I still have the issue with projects though.  What is the solution?

The solution seems to be to just tag items with a project tag such as p-create-website or something along those lines.  That lets me search easily enough for what I need and it doesn’t clutter up the screen.  It just doesn’t feel satisfying though.   What I’d really like is a sub-task feature.  That would let me create a Projects list/tab like had done originally and then add tasks for each major project.  Then I could add the project steps in as sub-tasks.

Gripes

One thing that really bothers me about the RTM tagging system (and they are not alone by any means) is the stupid way you separate tags.  Instead of making tags separated by commas you use spaces which means no tags like “p-create website” without using quotes.  And when you do use quotes for spaces the final tag just removes all the spaces. Boo!!!  A small thing maybe but annoying.  At least WordPress gets the tag thingright ;)

Second gripe is add subtasks :)  They would be really useful.

Last thing that really irks me about RTM is the funky way the UI works sometimes.  I don’t like the fact that in the default single select mode you can check the boxes of multiple items yet only have one item be affected by edits (yes I know about multiple edit mode).   That breaking a common usage pattern that most people are familiar with.  It would seem the check boxes only apply to the  actions available in the actions dropdown that appears above the task list.   Given the way they’ve engineered the UI I’m not sure how else you’d approach it but it feels wrong to me.

Final Thoughts

Even with my gripes I still think RTM is a fantastic application.  Does it have every feature I want?  No.  Does it do things the way I’d want all the time?  No.  But it still works well in my system and it’s not causing me any major pain or agony.  And you certainly can’t beat the price :)

Google Calendar…um…features?

While messing with a Google Apps setup I have created for my volunteer group I found some interesting things about entering events. Not sure they’re features given the circumstances but they’re interesting nonetheless.

First of all, I selected 1pm to 3pm on a Thursday and entered the term “Kayak Thursday” (no quotes). The calendar application then entered an event for me for the Thursday after the Thursday I had selected.

Then I tried entering “Kayak-Thursday” (again no quotes) and it then scheduled the event for the Thursday prior to the Thursday I had selected.

Putting the title in quotes makes it work the way I want.

I’m not sure this is a feature I really like. When I select a specific day put the event on that day. Don’t try to guess what I want. The behavior with the “-Thursday” was even more odd even though it sort of makes sense. Well, it makes sense now. It certainly didn’t make sense then.

I can understand these things for the quick event feature but not given the context I was in while entering events.

This is a comparison?? Eclipse 3.3 or NetBeans 6.0 from JavaWorld

Update: I’m getting quite a few eyes on this posting because of the link from dzone so I wanted to clarify a couple of things. I am referring to the NB project importer that brings Eclipse projects into NetBeans….not the other way around.

Again I want to state that I am not flaming NetBeans ;) I know that people usually have very strong feelings about the environment they use. I am a big fan of the Eclipse/MyEclipse combination. It’s cheap, it offers a lot of functionality, and the support is very good.

I also really like what is happening with NetBeans. 6 is a fantastic release and I wish it fit my workflow better because there are some things that I really like more like the code editor, diff viewer, etc. I think the out of the box experience is far better for NetBeans but I’m already paying for MyEclipse so for me thats where the comparison is most relevant.

——

I saw this link this morning on dzone where the author compares Eclipse and NetBeans with the intention of giving the reader some sort of guidelines as to which environment to choose for development work. Too bad it is just a laundry list of features.

These types of comparisons are really hard to do. You really have to use the products extensively on a real project before you can come to any sort of conclusion and the waters may still be muddy even after that. I’m currently working with both products on a large project and NetBeans still has a way to go before it can compare with Eclipse with MyEclipse (for me). Why?

  • The build process for large projects can be excruciatingly slow.
  • Is there some reason the Eclipse project importer is rewriting my EJB deployment descriptors as EJB 3.0 when they’re EJB 2.1 beans without asking me if that is what I want to do?
  • The CVS support, for those still using CVS, is completely geared toward the branch you’re currently working on. Want to compare some code to another branch? This is easy in Eclipse but apparently not doable in NetBeans.
  • No workspaces. To me this feature is critical because it makes working with various branches of code very easy. I can have totally custom settings for the IDE in the different workspaces as I chose. NetBeans comes closer with Project Groups but it still isn’t quite the same thing.
  • No exploded deployment options for servers other than Glassfish?

You don’t get to these types of things until you start working more in-depth with two products and really start comparing the workflows. Certainly if this is doable by me it’s doable by a journalist.

Don’t get me wrong though as I still really do like NetBeans. Version 6 has a lot going for it and a for an out of the box experience I think it beats Eclipse since Eclipse really requires a lot of extras to get you to the same level. On that note given the cheap price of MyEclipse it is really hard to beat.

NB6: CVS module has no way to compare a file to another branch?

Once again trying out NetBeans and as a long time Eclipse/MyEclipse user I’m pretty frustrated by what seem like limitations but then I’m not sure if it really is a limitation or I’m just not seeing an option somewhere.

In Eclipse and its built-in CVS support you can easily compare a file you’re working on with another branch. This does not seem possible in NetBeans 6 and this is a huge inconvenience. Sure its fine to be able to compare to the server copy of the file in the same branch but when having to work in multiple branches at the same time its nice to be able to see changes between branches. NetBeans only seems to give me the option of switching to another branch or merge from another branch neither of which I want to do. I simply want to see what the differences are between a copy of a file in one branch to another.

Is this possible inside the NetBeans IDE?

NB6: error on “illegal reference to static field” solved

Easy solution (even though it still appears the old way is legal code): move the initializer code into a static method. Instead of:

private static Map byDBValue;

private AssetImporterTypeEnum(String dbvalue) {
this.dbValue = dbvalue;

if (AssetImporterTypeEnum.byDBValue == null) {
AssetImporterTypeEnum.byDBValue = new HashMap();
}

AssetImporterTypeEnum.byDBValue.put(dbvalue, this);
}

We have something more along the lines of:

private static Map byDBValue;

private AssetImporterTypeEnum(String dbvalue) {
this.dbValue = dbvalue;

AssetImporterTypeEnum.init(dbvalue,this);
}

private static void init(String dbvalue, AssetImporterTypeEnum i) {
if (AssetImporterTypeEnum.byDBValue == null) {
AssetImporterTypeEnum.byDBValue = new HashMap();
}

AssetImporterTypeEnum.byDBValue.put(dbvalue, i);
}

The errors magically disappear.

Now, I just hope the code works properly…. :)

NetBeans 6 problem: editor flags error that doesn’t show up in a compile

OK. I’m about to pull my hair out on this one because it’s driving me completely nuts.

Just a bit of background first: I’m giving NetBeans 6 a test run with the current project I’m on to compare it to Eclipse (with the MyEclipse plugins). I keep hearing great things about it and now that I have my projects set up I am noticing a very odd problem that doesn’t happen in Eclipse. We have the following code in one of our enum classes (actually this same pattern is followed in other enums as well):

private static Map byDBValue;

private AssetImporterTypeEnum(String dbvalue) {
this.dbValue = dbvalue;

if (AssetImporterTypeEnum.byDBValue == null) {
AssetImporterTypeEnum.byDBValue = new HashMap();
}

AssetImporterTypeEnum.byDBValue.put(dbvalue, this);
}

The NetBeans editor is flagging the lines that set AssetImporterTypeEnum.byDBValue as an error of type ‘illegal reference to static field from initializer’. From what I can tell this is completely legal code (enums are initialized before any static initializers are run) and the compiler output doesn’t indicate the same error. Actually the compiler output doesn’t indicate any errors. The compile is perfect. I don’t get this error in Eclipse either (neither in the editor or the compiler output)

It’s driving me crazy that I don’t really have errors in the code but the the flag is still showing up both in the editor and in the project tree. Is there some way to change this behavior? Is it a bug (I searched on the bug tracking site for netbeans with no luck)?

Notes on JSP debugging with Weblogic 9.2 and MyEclipse 6

Here are some things I’ve found the last couple of days when trying to get JSP debugging working in MyEclispe 6 and Weblogic 9.2:

  • You don’t need to modify the weblogic.xml file
    I messed around with the settings here and took them out and debugging still worked.
  • There is an undocumented debug tag in the jsp-descriptor section of weblogic.xml. Looking at the docs it is undocumented.
    The file is checked on load to make sure there aren’t invalid tags there. debug isn’t marked as invalid.
  • Apparently JSP debug information is controlled by the session-descriptor tag and its parameter debug-enabled.
    I determined this by looking at how the weblogic.xml file was affected by changing the JSP debug flag in the administration console. The documentation really doesn’t shed much light on this.

Now, all of that being said, I don’t have any of those items in my weblogic.xml for my web application and JSP debugging still works.

Wow…huge news…Sun hires Jython lead

Was buried in work yesterday and missed this one. Huge news for the Jython community. That along with Tor’s news in the Java Posse podcast that he would start working on another language in NetBeans soon would probably mean Python support coming to NetBeans.

Ruby support really kicks ass in NB. That level of Python support would just be huge.