sexta-feira, 13 de junho de 2008

Quaere

A different concept framework to add queries to your java programs:

Quaere is an open source, extensible framework that adds a querying syntax reminiscent of SQL to Java applications. Quaere allows you to filter, enumerate and create projections over a number of collections and other queryable resources using a common, expressive syntax.

Just for your information it is based on a LINQ to SQL: .NET Language-Integrated Query for Relational Data.

Fluent Interface design style

It is always good to get in contact you new design styles and keep our knowleadge up-to-dated.
So take a look at the FluentInterface, proposed by Martin Fowler, probably you will have already seen that.

quarta-feira, 11 de junho de 2008

Legacy system

The term Legacy system is widely used in almost any software engineering paper. It could be a lot of things, like a Mainframe, Old system in CLIPPER (do you remember that), C, Fortran, Win32, so on.
When we talk about SOA, MDA, Mule, connector architecture, etc there is always a reference to the advantage of connecting to the legacy.
Although many says about it few have a way to test it or even he is interested in testing it. But let's face, it is important to have an environment - mainly for architecture concept tests.
Among all these legacy systems the most complicated on is to have a Mainframe environment running, most of the time we just create a mock for it. But have you never desired to put some kind of system up and running? Or you have never been interested in know how the big-blue works?
Well if it is your desire as it is mine, take a look on the following link:
The Hercules is only the emulator, it is necessary to install the OS, Subsystem, Compilers, running system, RACF, VSAM, ISAM, etc. Looks complicated? Yes it is. But try to read this document for a brief introduction, please it is a old work from university
  • zOs (portuguese).
I am not a specialist, but I know more or less how it works, if you are interested I can give you some tips.

terça-feira, 10 de junho de 2008

Let's play?

There is many ways to learn how to developt using Java language, but I should admit that IBM offers three great ways and both are really challenging: gaming.
The idea behind is to create classes (using all the widgets from Java language) that will be used by a gaming program. The first one is to create a robot, that will fight agains other robots, the second one is to create a car to run in a rally and the third is to create peasants and knights, conquer the world and increase your medieval kingdom.
Besides the Java knowleadge that you get coding for these games you also increase your skills for artificial inteligence.
Let's play?

Lightweight development environment

Yesterday my deskptop crashed again (ok, it is not a unusual thing to happen), and now I am stuck with a old notebook (P233MMX with 64MB and Windows ME).
I know that I cannot expect something really amazing from it, but we do not have a lightweight development environment. In that notebook I cannot expect something more complex than a notepad.
It is obvious that I will not be able to use something complex like Eclipse IDE, but most of time we do not need something like that. How much time do you spend waiting for plugin loading, or any other nice stuff that you never use.
I tried some light source code editor, but nothing really amazing, what you normally get from then is a code highlight. In my opinion what we need in these kind of situation, and in almost all the other situations, is something simple that can integrate easially with external tools (that will make the dirt work when you need it).
Let's agree that features like code refactoring, code highlight, online error report, auto compilation, etc are nice and really usefull, but we get to much used to it. Beliave me that it is difficult to work in a simple source code editor, sometimes it is important to come back to something simpler and recicle our base knowledge.
Remember: without a good base we cannot make a building that reach the sky.
For me as a homework: try to find tools for a lightweight development environment (advogates of JEdit, VI, Emacs, etc can post comments about their advantages).

domingo, 8 de junho de 2008

Subjects

One of the most difficult part of writing to a blog is to find out what subject to write about.
I would like to invite you all to purpose something, ideas are always welcome. Fell free to put "almost" anything on the table.

Naked Object Architecture

Probably you have already listened about Naked Objects. But do you know what they are?
Basically it is a architecture and a framework proposed/created by Richard Pawson, as a Phd thesis. It is based, more or less, on two concepts: OOUI (object oriented user interface) and Domain Objects.
The main idea behind them is: you develop the domain object (also know as business objects) and the framework will handle the user interface automatically. Them the users will work directly with the domain objects.
As all architectures it has pros and agains. As pro we can say that it has a fast time development, as again we can say that all business logic should be at the domain objects. In fact there is more pros and agains (these are just the first ones that you can notice).
Although many of you can say that is just for mickey mouse software, I don't agree. Let's face that some software are basically changes on domain objects, for example, those famous C.R.U.D. application, where usually we handle legacy data in the same way.
Why should we care about spending time developing and complete application? But remember that we must know how far this application is goint to, it could become a nightmare to maintain.

It is just a brief introduction to naked objects, I am still reading the articles and the thesis. If you want more information about that you could refer to these links (at least I am using them to learn more about it):
I think that is not necessary to tell it, but I will say it anyway: naked objects are not java or java related. It is a architecture and a framework and as it is it could be implemented in any language and it could be combined with any other architecture, like client-server, web, etc.

Terminology 2

For those interested in another IEEE document terminology (sorry for those I don't have any link, but I have the document - just send me an e-mail):
  • IEEE 610.2-1987: IEEE standard glossary of computer applications terminology
  • IEEE 610.3-1989: IEEE standard glossary of modeling and simulation terminology
I hope it could help to make us communicate better.

Terminology

We all know that communication is a great source of problems, and it is not different in software development.
Most of the terms that we use comes from a common sense of its meaning, but it is important to have a source for them. Although the dictionary is a great source for terms (not only the ones related to the software) we need to reference to something more specific.
Talking about software engineering there is two great sources for papers: ACM and IEEE. IEEE released a document: IEEE 610.12/1990 - IEEE Standard Glossary of Software Engineering Terminology, with some terminology. Even if it is from 1990 (a little bit old) it is a good place to start.
As all IEEE documents you are supposed to buy it, but you can read it at this link: IEEE 610.12/1990

sexta-feira, 6 de junho de 2008

Is it dead? Nooooo...

In my last company I was still using 1.4 and I believe that in the previous company it is also true.
But folks you need to move, just take a look on this article from javalobby: Help, I'm Still Using Java 1.4!
Let's face the problem and fight agains it, let's move to 1.5.

Help me...... I am a support analyst..... support..... what do I support?

After my post of yesterday I got an e-mail with this text: "Help me...... I am a support analyst..... support..... what do I support?" (free translation, the original message was in portuguese). It is something that most of us should worry about, I have a list of job applications and from 14 jobs 5 jobs have as title Support Analyst.
Let's try to understand what this kind of professional does: first of all I investigated over the Internet references and descriptions to this job. The most direct description about it I got from wikipedia (in portuguese, no reference on english version), I know that it is not a official source, but it can provide us with a good start.
Here it is: "The support analyst is the professional, with academic degree in computer (in general a Computer Science Bachelor) , responsible for the TI infra-structure of a company or organization."
Woooo... that is great, imagine someone responsible for all the TI infra-structure of a big company like IBM, Microsoft. I don't think that it is a really specific job title. I suppose that the author of the wikipedia was thinking about someone that support the desktop users, something like: SO installation, network configuration, and so on.
Well I agree a support analyst could do that (let's forget about the meaning of the title, I will come back later), but not only that. I have met a lot of support analyst that doesn't do that, in fact they support some specific software.
Then we come to a different kind of analyst, someone that is a application support analyst: they support a specific application, maybe some commercial one or a company application.
But even this situation is not the last one, a "support analyst" could be a knowledge base for some specific part of the IT world, like a framework, programming language, etc. In my point of view, this kind of professional is more like a XYZ specialist than a support, at the end he will make more than support the users, he will teach the users.
Anyway this job title makes me fell a little bit uncomfortable:
  • analyst is someone that get the problem and make some analysis on that in order to solve it - the professional will do that in most of the cases, but not always.
  • support is someone that helps another one, that offer a comfortable bases to the colleague work.
In my point of view, these two words together mean nothing, although most of us can understand what it means.

To finish this post and answer the title question: you are not a support analyst, you are more like a specialist, that is right that you offer support to the end user, but in most of the cases you are more like a knowledge base. At the end in your work you don't solve problems, like a support guy, you offer possibilities. Is it right? (ps.: to make it understandable to everyone, this person works in a department responsible to create a development framework [after we try to understand what does it means], and he works as specialist of this framework, given courses, support and whatever is necessary).

Remember: in our job we make a lot of things, our title should represent the most important of these ones, or the greatest of them (if these functions are a somehow related).

quinta-feira, 5 de junho de 2008

Sorry, what is your job?

In my quest for a new job I have found a lot of announcements with some funny job titles. Even in my last work I had a visit card as Software Engineer.
Let's think about it a little bit: what does a software engineer do? Well, in that case I used to be a programmer, as my collegues.
Right now I have at my side the book Software Engineering A Practitioner's Approach (Roger S. Pressman) and it has more than 800 pages. It is difficult to imagine that someone apply all these knowledge at the work, in a simple function. Let's take another kind of Engineer, like the Civil: some are specialist on bridges, other houses, other highways, and some other parts (I don't know - someone can help me on that).
Anyway the point here is: Software Engineering is a set of disciplines and as it you are supposed to work on one of these disciplines, not all of them. You could be a analyst, a designer, a programmer, or anything else.
So next time that someone ask your job or want to make a visit card for you, think about your title - remember that it shows your knowledge about yourself and your work.