Archive for category Uncategorized

Google announces Android

Google ended up the mystery and announced a mobile free development platform, called Android and not a GPhone, as someone would expect. This platform leverages the capacity of building rich mobile applications and service, promoting rich content for the consumer. It includes an operating system, user-interface and applications, letting developers build new mobile services equally, in a meaningful way. As Google says,

“We see Android as an important part of our strategy of furtheringGoogle’s goal of providing access to information to users wherever theyare. We recognize that many among the multitude of mobile usersaround the world do not and may never have an Android-based phone. Ourgoals must be independent of device or even platform. For this reason,Android will complement, but not replace, our longstanding mobilestrategy of developing useful and compelling mobile services anddriving adoption of these products through partnerships with handsetmanufacturers and mobile operators around the world.”

Dear readers, would it be the Web2.0 mobile revolution?

Tags: , , ,

The war between Apple and developers

Cédric has posted an interesting point of view about the war between Apple and the developers. This war started when Java developers knew Leopard doesn’t include Java. Cédric resumed Apple’s position in one paragraph, saying:

“What is needed in Cupertino is a radical change in attitude. Dropping the elitist behavior is a mandatory path to success for Apple, and listening to hordes of developers banging at your door is a good first step. Apple doesn’t need to implement Java, but they could show a little bit more willingness to work with whoever is interested in helping take their platform to the next level. Dumping Objective C is probably not an option, but making other languages first-class citizens on a top-notch IDE would undoubtedly go to great lengths toward making this goal a reality (ask Microsoft how Visual Basic and Visual Studio worked out for them). I’d start with C++, maybe C and even some sort of Basic. Hell, just swallow your pride and create a Visual Basic clone for Mac OS.”

Tags: , , ,

How Hard Could It Be? Five Easy Ways to Fail

Pedro da Ros has pointed me an interesting article from Joel Spolsky about ways software projects go wrong. Five Easy Ways to Fail shows us five step-guide to ensure software failure:

  1. Mistake No. 1: Start with a mediocre team of developers
  2. Mistake No. 2: Set weekly milestones
  3. Mistake No. 3: Negotiate the deadline
  4. Mistake No. 4: Divide tasks equitably
  5. Mistake No. 5: Work till midnight.</li

Have you ever been in any situation like those above?

Tags: ,

Reducing the distance between programming and project management

Some days ago me and [info]bpfurtado were talking about different areas of interest on software development and the distance created by programmers in not involving themselves on another interesting (for me :-)) areas, such as process management, requirement analysis, change control processes, etcetera.
Programmers tend to create a barrier between their tasks and other areas on software development, they prefer to be more specialist. Most of them don’t like to participate on requirement analysis discussions, design sessions, development of test cases. They prefer to code instead of being involved on such activities.
When you work on a software development company, you must have interest at the *big thing*, you need to have the whole vision of your area. People around will put better eyes on you, if you show these interest.
Nowadays at my company I’m participating in activies like use case requirement analysis and programming, because I wanna be involved in the best of both worlds. I wanna increase my analysis and programming skills. It was my decision to participate part time on requirement analysis and the rest on programming activities. I think it’s very important to have this vision and consequently it makes you a better professional. And you? Dou you like to be involved not only in programming tasks?

Tags: , ,

Changing Firefox profile location on Win

Some days ago I finally had enough time to move all my Documents and Settings folder to a dedicated partition, storing my Home directory and files (I already know it’s very late for this…don’t have to remember me..). So, I was looking for a way to change the Firefox default profile location to this partition, keeping it safely separated from the installation files. It’s quite easy, the steps are as follws:

  • In Windows 2000 and XP, you should find your profile in: C:\Documents and Settings\{user name}\Application Data\Mozilla\Firefox\Profiles. The Application Data folder is by default a hidden folder in Windows, so if you do not see an Application Data folder, check the Folder Options and make sure the option “Show hidden files and folders” is checked.
  • Open the profiles.ini file, on the Profiles folder. Open it. Do not use Word or a word processor because these programs typically save weird characters when they save a file. You need to use a pure text editor like Notepad++.
  • You have to make two changes to the profiles.ini file. First, change IsRelative=1 to IsRelative=0. This changes the path from relative to absolute. Second, fully specify the new path to the new location of the Profiles folder and the default file folder. The new contents of the file seems like this one:

    [General]
    StartWithLastProfile=1

    [Profile0]
    Name=default
    IsRelative=0
    Path=E:\Rafael\firefox_profile\profile.default

  • If you have any extensions, you have to open the extensions.ini file on your new profile directory (in this case, E:\Rafael\firefox_profile\profile.default) and replace any reference to the older directory to the new one. My new extensions.ini file looks like this:

    [ExtensionDirs]
    Extension0=E:\Rafael\firefox_profile\profile.default\extensions\{34274bf4-1d97-a289-e984-17e546307e4f}
    Extension1=E:\Rafael\firefox_profile\profile.default\extensions\{6AC85730-7D0F-4de0-B3FA-21142DD85326}
    .
    .
    .
    [ThemeDirs]
    Extension0=C:\Program Files\Mozilla Firefox\extensions\{972ce4c6-7e08-4474-a285-3208198ce6fd}
    Extension1=E:\Rafael\firefox_profile\profile.default\extensions\{eb46c787-131a-4eb7-9b93-7f62ca550917}

So I think this should works. Save those files and restart Firefox. Soon I will make these changes on my Linux kubuntu distro!

Tags: ,

Why not design patterns?

Some months ago, Cedric has reported people criticizing the use of design patterns on software projects, with some arguments like:

  • “it’s a sign that your language is fundamentally broken”
  • “focus on simpler solutions before going straight to a complex recipe of design patterns”

and other funny things also. Moreover, some said design patterns was inspired in Cristopher Alexander’s Pattern Language book, although design patterns leverage complexity to the programming languages, totally opposed to the Alexander’s book simplicity proposal. As Cedric said, people do criticize, but not provide better solutions. It’s inside our personality: we often try to find defects in all the ways people realize things, but we don’t like to search for better ways to realize the same things. In my opinion, design patterns are:

  • Patterns for developing object-oriented reusable software;
  • Leverage a solution to a general design problem in a particular context;
  • Promotes design reuse;
  • Promotes a common vocabulary on the software development team;
  • Facilitate software modifications, documentation;
  • Promotes manutenable, understandable, legible code, abstracting aspects of a domain problem;

and some other benefits…

So, what do people want? Every time, every software project implementing the same feature in a different way? Of course we’re not saying here to insulate a lot of patterns in a sofware project, but, come on, why not establish a common vocabulary of software instead of doing things all diferent every time? Why reinventing the wheel?

Tags: , ,

See-Through Mobile Devices

Check out this interesting video about LucidTouch see-through mobile device. See-Through Mobile Devices let users see their hands while touching behind the display. Very nice.

Tags: , ,

About use case reuse

Here are some good idioms by Scott Ambler on use case reuse. Must read.
I’m trying to keep this blog up to date, but it’s being very difficult…

Tags: ,

Thinking Iterative, but doing Waterfall development

Some companies think they’re applying iterative and incremental development, but in practice are doing waterfall development. Here are some tips described in Applying UML and Patterns, by Craig Larman, which can help you discover if your company doesn’t understand the Unified Process and iterative development (these tips can clarify all stakeholders misunderstanding about the difference of the two approaches):

  1. You think that inception = requirements, elaboration = design, and construction = implementation (that is, superimposing a waterfall lifecycle onto the UP).
  2. You think that the purpose of elaboration is to fully and carefully define models, which are translated into code during construction.
  3. You try to define most of the requirements before starting design or implementation.
  4. You try to define most of the design before starting implementation; you try to fully define and commit to an architecture before iterative programming and testing.
  5. A “long time” is spent doing requirements or design work before programming starts.
  6. You believe that a suitable iteration length is four months long, rather than four weeks long (excluding projects with hundreds of developers).
  7. You think UML diagramming and design activities are a time to fully and accurately define designs and models in great detail, and of programming as a simple mechanical translation of these into code.
  8. You think that adopting the UP means to do many of the possible activities and create many documents, and thinks of or experiences the UP as a formal, fussy process with many steps to be followed.
  9. You try to plan a project in detail from start to finish; you try to speculatively predict all the iterations, and what should happen in each one.
  10. You want believable plans and estimates for projects before the elaboration phase is finished.
  11. Are you involved in such a situation at your company?

    Tags: , ,

Do you need closures in Java?

TheServerSide has raised a question about whether closures proposals to be implemented in the Java language are really necessary. In my opinion, I think the Java language must be as it is, because:

  • Generics syntax introduced in Java 1.5 are very difficult to understand and parse when code is read; mixing it with closures will keep the code a little messy;
  • People would prefer to do things in the way they are used to, instead of learning a new construct in the language to implement their tasks (it’s better to focus on code maintenance and readability, after all, code is more read than written);
  • Anonymous-inner classes are far less readable than inner classes, imagine when closures appear in such a code;

So, I think it’s better to maintain the language with the abstractions it already offers and focus on other improvements, like reifiable generics, that is, making generic type information available at runtime. And you? Will you think useful closures on the Java language?

Tags: ,