Its rare that I care to mention software that puts me in a bad mood. But, I must say, Adobe's latest as set me off.
Today, Acrobat gave me a little message that it needs to be upgraded. Little did I know, it decided to bring a friend along. That friend is Adobe Photoshop Album Starter Edition. A wonderful little program that I neither want, nor asked for.
The best part is, every time I plug in a USB drive, its launched and wastes my time while scanning for things it can open.
Installing extra software is bad, making it interrupt my work is just seriously uncool. At least I can un-install without a reboot. It is rare I say anything about Adobe, and I usually cast them in a positive light. This move changes the stance from bouquets to brickbats.
_
Labels: adobe, review
While ate the IBM/Rational conference, there was a lot of talk about the
developerWorks spaces. There was also much prodding and encouragement to sign up.
Well, this morning I decided to give it a go.
First off, the
process sucked more than expected. Why do I need the email of another "commited contributor"? Why not let me get started right away?
So far, my first impression leaves me underwhelmed.
If I can get the chance to actually do something with it, I'll post the good and the bad. If not, I'll just continue to place things here and on my site.
_
Labels: community, developerWorks, review, spaces
I just installed the beta3 of Safari for windows. I usually just use Konqueror as a Safari stand in (they both use the KHTML rendering engine). However, using a stand in is always a bit risky but, I'm just not going to buy a Mac only to test web pages.
So far, for my pages anyway, it appears to render my pages the same as Konqueror. It does appear to have some newer features (or maybe my Konq is out of date). I see the opacity in CSS is working (woohoo! my DHTML fading tricks work on it). The XML/XSLT transform appears to be at least as good as Firefox/IE (completely broken in Konq). I'll find more as I experiment with it.
I've tried to give a little bit of a shakedown though, nothing thorough. I like it if a browser can support common (to me) keyboard shortcuts.
- ctrl-l and alt-d will bring the focus to the address bar
- ctrl-k puts the focus on the search bar
- ctrl-t starts a new tab
- ctrl-w will close the current tab
- alt-left/right arrows nav forward and backward
Those are the things I use most frequently so, it seems to be holding up. Currently, my only beef is when using 'windows-m', which should minimize
every window, I find Safari still sitting on top (bummer).
At first glance, it appears to be a decent addition to the web browser collection. More variety is a good thing.
Update: ok, ctrl-pgup/pgdn does not work to switch between tabs. suck
I've got to find the keyboard shortcut to switch between tabs.
_
Labels: browser, html, safari
During a session break I wandered into a guy and we some how got on the topic of Build Forge. I was just asking some general questions about it and he had some really good things to say. The main take away was the phrase "Blue Wash". Apparently this means a company and product(s) has been acquired and has been integrated into the Rational Suite for good or bad.
I thought it was a funny term and one that quickly caught on. You didn't hear it first but I'm just passing it along.
The vendor area was great. The IBM Developerworks area was a great surprise many many knowledgeable and committed people behind the site. They had more T'Shirts than any vendor I have ever seen.
Another fantastic find was the genuitec booth. I had an opportunity to chat with the guys there. They have deep knowledge of the community and take a pragmatic approach. Not only is the myeclipseide an awesome product but it's also run by cool people! I felt at home in their booth.
This was presented by
Ian Spence. It was a fantastic session.
In his presentation on iterative development, he recommended iterations of 4-6 (preferably 4) week iterations. Each iteration runs the full scope of:
Requirements -> Analysis -> Design -> Implementation -> TestingOne of the key benefits is continuous measurement. Another is team members are focussed on short term goals (and we all know it is easier to focus on a short term goal than a long term one).
Other benefits are it allows you to cope with change very well, and as products are placed in front of customers, it becomes easier extract the requirements from the customer.
Iterative development can keep things with the highest priority at the top of the heap. If you find a bug in a critical part of the architecture early, then time is spent on fixing that before developing a trivial nice to have feature. So, maybe to make schedule, you ship
working software with fewer features, instead of buggy code with lots of features.
I am a fan of iterative development but, I've never thought of things in that context before.
-cool
The best quote of the presentation:
"The waterfall process is good if you've done it before, you are good at it, and you can do it in one go."The biggest risk with this process can come from the people.
You need continuous stakeholder (and customer) involvement. This is good but, we have all experienced the customer who only wants to be involved at the beginning and the end of a project. This could be the most difficult.
The team needs to be disciplined and collaborative. The challenge here is that since iterations are short, everybody on the team is being judged every 4 weeks. So, there isn't any room for slacking. This can cause a bigger issue than might be predicted.
The next risk, still a people issue, is to not let the iterations stretch beyond the planned iteration period. The companion issue is, don't jump ahead to the next iteration either. This really keys in to the collaborative part of team work. If folks get ahead in their work, instead of working ahead, it is much better if they help test.
There is a lot more on this topic I want to write about. But, I'll save that for another day.
-
Labels: agile, development, iterative development
I wasn't able to get around to posting this yesterday. It was a very busy day.
The best part of the keynote was the presentation by
John Battelle, best known as the founder of
Wired.
Great quote:
"We had no idea what we were doing but, we had a great idea." (in reference to starting wired)
"... like most Web 2.0 companies" (talking about the current state of things.
One of the more interesting parts of his feature was the evolution of the user interface to the machine.
- in the beginning there was the command line - we had to communicate in the computer's language; prompt? blinky cursor
- next, the "hunt and poke interface" - Windows/Mac - we look around for the right thing to click on
- today, search - which brings us back to a command line with a blinky cursor. The major difference is, we communicate with the machine in our own language instead the language of the machine.
The overlying theme of the presentation is about how search is revolutionizing how we communicate with the machine, and how the machines are changing to revolutionize how we communicate with each other.
His definition Web 2.0 is that it is composed of technologies that connect people with other people. Whereas the previous version used technology to connect people to machines.
His take on the new web. "The best sites are iterative." They start simple (and on a shoestring) instead. They then add small changes very frequently based on user feedback.
The final concept he tried to demonstrate was the idea of performing a search with a camera phone. To me, it was funny because it was presented as a
future vision but, the way described, I think it could be done with about 2 days of development. Maybe I'll place a post on willCode4Beer over the weekend.
-
Labels: John Battelle, media, web 2.0
This morning I attended the
session on AJAX and DOJO (OC10). It was beyond packed. Every available seat and place on the floor was taken. That should really be a sign of peoples interest in the subject.
The session was presented well, we got to see source code, and there was a lot of information on how this can integrate with other things. They were good about pointing out the limitations of the technology, as well as providing tips on its use. There was also a fairly good discussion about accessibility and section 508 compliance.
I was hoping to bring up a little more technical detail but there really wasn't time (of course, I also wanted to shamelessly plug my
dojo tutorials).
Really, the only thing lacking was, I would have preferred to see more live demos than screen shots of web browsers. Ahh, just another demonstration of how evil powerpoint is in a presentation.
_
Labels: ajax, dojo, section 508
I've been to a few workshops now where the common theme is "patterns" in development.
The thing is, they way the word is being used, they are
really describing templates. The big usage is for transformations and dealing with common things. While it looks like a big time saver for architecture and design tasks, I don't feel so positive about using it with source code. My first thought, and confirmed with later discussions with other participants, is that the result would be "engineering code duplication".
I understand the concepts of trying to encapsulate, for reuse, expertise. But, I think it might be better for those with the expertise to create configurable libraries to simplify complex tasks. Then again, I'm one of those wacky, make an API instead of duplicating code kind of guys.
On the area of creating new projects, they probably do have a point. Things like building hibernate mapping files, dao's, Spring configurations, etc... are probably good to be simply generated from a model. As long as everybody realizes that the generated files are just a starting point, they will need to be changed. The fact that they have to be changed takes away from the concept of encapsulating expertise.
This brings up another point. Do we really want to encapsulate expertise? If we do it, where do the future experts come from? How about templates that get junior developers started? Then they can be brought into best practices gradually until they can handle things on their own and eventually move into the role of expert. This should be a change from encapsulated expertise to transparent expertise.
I visited what was probably the best presentation in a session on XForms. It was presented by
Doug Tidwell, of
XSLT fame. It was entertaining
and informative.
I was able to find my answer to what is being sent over http during a submission, HTTP
PUT. But, since it is a parameter I'm sure get and post are also supported.
One really interesting usage is creating a custom editor for an XML file. The file itself can be used to generate the XFORM.
One of the demos had to perfect circle:
XForm -> XML -> XSLT -> XForm ..........
This has me think, if I can find a java based renderer for xforms, then I could make a universal XML editor as an Eclipse plugin. Considering the amount of xml we have to deal with in the J2EE world, there could be a lot of potential for such a tool.
Links:
http://formfaces.com (uses javascript to interpret xforms in non-compliant (read all) browsers)
http://chiba.sourceforge.net/ (a standard implementation for the server, with HTML fallback)
http://www.orbeon.com/ (extension of Chiba, to make common things easier)
To Investigate:
XForms / Struts integration
- custom tags?
- chiba?
Eclipse Plugin
- with formfaces?
_
Labels: xforms, xml, xslt
This morning during the keynote speech they mentioned that they would demo a new app.
Jazz, it is described as, "middle-ware between developers and deployment". Which at first made me think, "what the hell is this?" Pure marketing crap for a name.
Anyway, we get Eric Gamma, to give the demo. Yes, its the Gang of Four guy. Well, thinks I, it can't be too bad...
Actually, it turns out to be pretty cool. Basically, we get Eclipse with a bunch of collaborative development tools built in. Its got a built in chat, and can even launch mail (can you believe these guys still use Lotus Notes?). They can drag bugs, code, issues right into the chat windows. You can see what everybody is working on. It even tracks development conversations.
There are also lots of little project management types of things but, they are actually set up to stay out of the way of development. Its even free for non-commercial use.
WooHoo!!!For a distributed team, this seems like a really cool tool.
Later, I learned a little more about it. Some things I don't like: source code version control and issue tracking are kept internal. There are connectors to keep ClearCase and ClearQuest in sync with it but, you just get duplication in those areas. On the plus side, apparently there are some hooks to allow connecting to other resources. Just got to write the code.
To run it, there is a server (tomcat) to download and the client. I might give it a try on
willCode4Beer.com.
This one seemed a bit long. It basically covered a concept of design where you start with a Context Diagram. From the context diagram, we create a use case diagram. From the use case diagram, we take a segment and create a white box sequence diagram. Each node in the sequence diagram is extracted into another sequence diagram. This final process is repeated (in a nested form) until the parts of the sequence diagram have an obvious implementation.
While it appears that this could be a good way to reduce a problem, and hopefully find all of the common bits, it seems like its overkill for most projects. It may fit well on really big projects, or when a solution is to address a large organization.
Labels: process, sequence diagram, use case
I stopped in for a
session on testing
ClearQuest with
FIT. I was actually planning to attend a different session but,
FIT caught my eye.
Although, I'm not a ClearQuest user, the info was really good. I was impressed with the way he wrote a little erl server to allow his Java processes to communicate with the ClearCase server. I think many would have written some
JNI code (and suffered) instead.
One of the tools used was
FitRunner. This is an
Eclipse plug-in to run the FIT test cases (html files). I tried to install the plug-in during the session but, apparently, its broken for Eclipse 3.2.2. Checking in the sourceforge forum, I saw that there was an issue with version 3.2.1 so, its probably a library issue. I'll download the source, and make a patch any day.
I had a little discussion with the Sephen Czenszak, the presenter, about using
Selenium to cover the web front end testing. I'll also post up a little demo of driving Selenium from FIT in a day or two also.
In a way, when I look at SOA, I think of the old Unix model of development. This is where we have lots of little (special purpose, sed, awk, grep, etc) tools, and wire them up with shell scripts.
Since each component is small, the development time is short. The method for input/output is also pretty standardized (pipes, no output when no errors, etc). This makes gluing the components together with scripts pretty easy.
So, with SOA, we end up with a similar model, and the network takes the place of the shell. Your business logic (that wires together the services) takes the place of the shell scripts.
The processing can be distributed amongst many machines.
Now, when I compare SOA with IDD (interface driven design), it is because I see the same concepts occurring. In interface driven design, components can be contained and hidden behind an interface. If you use a library like EasyMock, you can develop against un-implemented interfaces, cool. Then (at run time), when using a dependency injection framework (like Spring), the consumer of the interface doesn't have to be aware of any details. The implementation could be a POJO, and EJB, webservice, or anything, the consuming code doesn't know, or need to know.
So, maybe if we just develop good clean code using interface driven design, things like enabling webservices don't have to be painful.
Labels: IDD, SOA, Unix theory
Today started the
IBM Rational Conference. This is my chance to expand my knowledge in the menagerie of IBM and Rational tools. Granted, most I probably won't use later but, its always good to know whats out there.
Today, didn't get into too much. Mostly registration and Partner stuff.
I did get into a session on
IT Governance. It was pretty informative, if dry and slow. I have a bit to learn in this area. I tend to think that most of it should be common sense but, in most big orgs, common sense becomes a rarity.
There was also a little session giving an overview of the
developerWorks site. Not much new, since I am a regular visitor. Though, I did learn they are starting a '
Spaces' sections. Think myspace for geeks. Oh, wait...
The afternoon was taken up with Business Driven Development. Some of the tools are pretty cool but, I can't help to think that they would serve better in a systems engineering environment better than a software development environment. Then again, I think everybody knows my feelings on tool generated code (if you have it, at least put it out of the way).
There was a good discussion of SOA. So, I should add my personal definition to the mix.
SOA, noun - Interface Driven Design
exploited. Aren't we really just doing IDD and spreading the parts around a network?
Maybe, the real problem is, I don't get why everybody thinks EJBs and web services are so hard. There are a lot of parts but, it isn't really difficult.
Now, that I've braved the hail and rain, its off to the reception. A cold beer would be great right about now.