Friday, February 26, 2010

Know When to Stop

I get myself into these situations once in a while where I get really excited about a particular problem and end up with a mess as the solution.  Here's my workflow.
  1. Think about it.
  2. Sketch out a solution.
  3. Code towards my solution.
  4. Refactor (go to step 1)
Somewhere in that loop I go from 4 to 3 to 4 to 3 a bunch of times and when I come up for air I have a complete mess.  Ideas pop into my head quickly and I seem to go down strange paths here and there. Before I know it my code is littered with random design thoughts that don't hang together in any way.

STOP!!!

... git here we come ...

Wednesday, February 17, 2010

Great UI == Damn Near Impossible

Getting a User Interface right is like scoring a 52 at your local Golf Championship?  Ain't gonna happen.  I'm currently working on a brand new UI for our users.  They want an easy way to edit data.  Great.  I'm guessing they're meaning efficient and intuitive.  Well easy for me isn't easy for you.  Actually, quit the opposite.  If you take my Dad for instance, who is in his 70's, you are going to get someone that is not at all that interested in typing CTRL-Z to undo his changes.  In fact, unless he gets a giant icon on the screen that gives him a very obvious indication that he can actually undo his changes, he won't even know the feature is there.  On-the-other-hand, if you make me pick up the mouse to do anything I'm going to get pissed off.  So, that simple case tells me that getting it right for everyone is damn near impossible.

Monday, February 15, 2010

Let the Training Begin

Well, I survived my first 20 minute run training session.  It wasn't pretty let me tell you, but my goal is to get out 5 days a week until the race. Whether it's for a bike ride or a little run, I have to get out. I'm hoping that after a couple of weeks I can sustain a 20 minute run. That's a big goal for me because I can't keep a sustained run to 5 minutes.

For those of you who don't know, I've been encouraged suckered into signing up for an Adventure Race.  It's an 8 hour race (~55 km) that includes navigation, trail running, mountain biking, river canoeing and repelling off some cliff.

I need to lose at least 60 lbs if I'm going to attempt this.

Sunday, February 14, 2010

Not Too Shabby

Well, a day of playing with Drupal has produced a fairly nice site for what I need.  I must say that I am quite impressed with it.  I'm sure if I grab the infamous CCK module the power will really come out.

Wednesday, December 9, 2009

xargs == awesome

find . -name *.java | xargs -n1 -I@ touch -c @

For those times when commands like touch won't take stdin.

Wednesday, March 25, 2009

EclipseCon 2009 - Days 2 & 3

I've gone to quite a few sessions over the last two days. Cloud Computing, UI Showcase, Nebula, SOA... there's so much good stuff to see. Some are great, some are not so great. In most cases the speakers are rushing because they're running out of time. There's no time to ask questions during the sessions, which wouldn't be so horrible if I weren't myself rushing to the next session, not allowing me to catch them for a quick Q&A. Maybe these sessions were designed that way? :-)

About a third or the talks I've gone to are about e4. That's code for "Eclipse 4.0" for those of us who don't know the lingo. This is a really hard topic for me. Let's see, where do we start?

"Schizophrenia is a psychiatric diagnosis that describes a mental illness characterized by impairments in the perception or expression of reality, most commonly manifesting as auditory hallucinations, paranoid or bizarre delusions or disorganized speech and thinking in the context of significant social or occupational dysfunction."

Hmnn... "...impairments in the perception or expression of reality...". Given that definition, either the speakers have it or I have it. One minute I get it, thinking, "hey, you're bang on", and the next I'm thinking "what? are you insane?".

The Sane Side of Our Schizophrenia

I may not be on side with the approach to the problem, but the use cases driving the solution make sense - at least to me they do.

Java 6

A small point in the grand scheme of things but nevertheless worth mentioning. They're not stuck to Java 1.4 anymore. I've seen the code. It's undeniably not 1.4 compatible. Finally. Fantastic.

The Modeled UI - Declarative User Interfaces

I definitely like the idea. The model approach is trying to lower the bar when it comes to entering the world of Eclipse-based development. Build an EMF model, hook up a framework-supplied renderer, and off you go. It's how we should be building UI's anyway. The only reason we don't work this way today is because its an extremely hard problem to solve well. It's been tried before. This all feels very VisuageAge Smalltalk to me. I don't want to discourage the research, but let's not ignore those learning's or we;ll repeat the mistakes. What will most likely evolve out of e4 is a hybrid approach, where parts of your UI will made up of the EMF models plus renderers and parts will be made up of "do it the old way" code. When I try an visualize what that would look like, I find myself getting back to where I am today. Inconsistency come to mind. Isn't API inconsistency the root of this barrier-to-entry that this very solution is trying to break down? RCP development has a steep learning curve because it makes me learn 10 separate and inconsistent frameworks to do it well. Platform, SWT, JFace, GEF, Preferences, Memento... to name a few. I don't know - I'm just asking the question. Think about it... is this really going to make it easier? How am I going to build an EMF model that allows me to add that third-party widget library that's built on Swing and integrate its selection mechanism with the Workbench across two independent threads? I'll tell you how. It's not. But guess what? I do exactly that in my product today, which is built on the 3.x stack. It wasn't easy to be sure, but I'm able to do it. Please don't take that away from me.

Another key will be tool support. Dear e4 Committers: If you take away our refactoring tools, we won't use it. We've proven that in the past. Until the refactoring tools address the code in plugin.xml, then we're not going to put our stuff in plugin.xml. Luckily enough many of the PDE's refactorings do look in there today. Let's just maintain a good level of support for whatever new XML files are introduced.

In the end, the "model + renderer" approach makes a lot of sense to me. As developers we definitely spend too much time solving UI problems instead of business problems. This is a step in solving that problem. Saying that, I'm not betting my next business strategy on the Summer of 2010. I do see this working for the trivial CRUD applications out there, but not for the more complex. But you guys are smarter than me, so I look forward to it. There is value here if you can pull it off - a tonne of it. I'll be watching closely.

The "Not So Sane" Side

SWT Browser Edition

This makes me feel like we're trying to commercialize some mad scientist's experiment in human cloning. Just because you can doesn't mean you should. It's definitely interesting to build a cross-compiler from Java to ActionScript, but I need someone to help me with the use case. Everyone is talking about bringing the IDE to the web. What for? I don't get it. Please someone, give me one use case that isn't simply about some wow factor. There was a lot of "Oooohhhh.. ahhhhhhhh" when the RCP Photo application demo was shown running inside the Adobe-powered browser. I too think that's very cool. But show that same demo to your boss see if you get the same reaction. I'm not sure you will. Is the desktop deployment model really that broken? Why does everyone want to run their friggin applications in their browser? Or do they?

CSS Styling

This was also introduced as a "someone had some time on their hands and thought it'd be cool if..." kinda thing. This gets a "thumbs down" because every time I look at a CSS file I quickly turn away in fear of turning to stone. Maybe I'm just scared that someday I'm going to wake up and my "to do" list is going to have a "fix screen layout" and its all in CSS. What do I do know? The Idiots Guide to Assember - here we come.

In my not-so-humble opinion, CSS is as bad an implementation of a good idea as I've seen.

At least its optional.

There's So Much More

I've clearly just scratched the surface. The first preview release is coming out in July. I think it'll be fun to see where it is at that point. I'm going to spend my time going a deeper dive, which will hopefully answer some of my own questions and undoubtedly uncover many more.

Heading to a Scala talk today plus a few others. See you tomorrow.