09 novembro 2009

What is Software Architecture

When people question me about my main interests in software development, or about exactly what I do in my job, I use to say I like to act as a Software Architect, which is a pompous title, and most people don't take it seriously, by finding it is just a job title and not a real role in the development process. Probably most of you who know from inside a software development process know what is the job of a Software Architect, but some ones might not. This week I found this great reference, which explains exactly what I feel to be a Software Architecture, as well as what is the job of a Software Architect. So, that is the answer for what I like to do for living.

09 setembro 2009

Scott Hanselman's 2009 Ultimate Developer and Power Users Tool List for Windows

As I said in my first post, this blog will also serve as a kind of delicious for me, so you will see me posting many references to other blogs' posts. One reference I couldn't let pass is this post of Scott Hanselman's blog: An amazing list of tools for Windows developers and power users. For sure they worth a try.

28 agosto 2009

My Own Code Snippet Formatter

Some weeks ago when I needed to publish code snippets here for the first time, I looked for plug-ins for Windows Live Writer and found two good alternatives, from which I decided to use the simpler one.

After that, I started to build my own code snippet formatter. Only for C# snippets, and using JavaScript, that is far from what I'm used to write.

After some weeks working on it in my spare time, it's finally usable.

It is available here.

But, if you want a true syntax highlight tool, try this one.

Enjoy!

23 agosto 2009

How to define the priority of a bug

Some time ago a tester told me we didn't have a formal criteria to define the priority of a bug, and that the few criteria he know were not easy to use. After some thoughts, we decided to work together to define a criteria that would be good for us.

The result was a compact definition for five priority levels for bug fixes:

  • Minimal: A bug is said to be of minimal priority when its occurrence:
    • Do not cause any damage to the stored data;
    • Do not interrupt the usage of the software;
    • Is hard to be observed* and does not bother the user.
  • Low: A bug is said to be of low priority when its occurrence:
    • Do not cause any damage to the stored data;
    • Do not interrupt the usage of the software;
    • Is easy to be observed but does not bother the user.
  • Normal: A bug is said to be of normal priority when its occurrence:
    • Do not cause any damage to the stored data;
    • Do not interrupt the usage of the software;
    • Is easy to be observed and bothers the user.
  • High: A bug is said to be of high priority when its occurrence:
    • Causes some damage to the stored data or interrupts the usage of the software;
    • Is hard to be observed.
  • Maximal: A bug is said to be of maximal priority when its occurrence:
    • Causes some damage to the stored data or interrupts the usage of the software;
    • Is easy to be observed.

* A bug is said to be of hard observation when it only occurs in extraordinary use cases, it means, in situations that are rarely provoked by the user.

15 agosto 2009

Parsing a Delphi DFM File

Some time ago a friend asked me to help him to parse a DFM file into .NET objects. We tried to find something in the web that does the job but no success, so I accepted the challenge and wrote the parser he needed.

If for some reason you need a DFM parser, or just for curiosity, you can download it from here.

Here is an example of how to use it:

class Program { 
    static void Main(string[] args) { 
        var fileName = @"c:\Unit1.dfm"; 
        var dfmParser = new DfmParser(fileName); 
        dfmParser.ReadFile(); 
        foreach (var node in dfmParser.Nodes) { 
            if (node.PropertyType == "string") { 
                node.PropertyValue = "'Hello World!';"; 
            } 
        } 
        dfmParser.SaveFile(); 
    } 
}

The example above loads this file:

object Form1: TForm1
  Left = 0
  Top = 0
  object Label1: TLabel
    Left = 8
    Top = 40
    Caption = 'Label1';
  end
  object Label2: TLabel
    Left = 48
    Top = 40
    Caption = 'Label1';
  end
end

And rewrites like this:

object Form1: TForm1
  Left = 0
  Top = 0
  object Label1: TLabel
    Left = 8
    Top = 40
    Caption = 'Hello World!';
  end
  object Label2: TLabel
    Left = 48
    Top = 40
    Caption = 'Hello World!';
  end
end

If you find some use for this, enjoy :)

23 julho 2009

Best Practices for Individual Contribution

Today, in his blog, Scott Hanselman is talking about how to be a good individual contributor.

Whatever it means, what he shows is a good bunch of best practices for how to be a good professional. I was surprised to see how much I agree with his points, and I only did not see me in the situations he describes for the one about twitter, cause I don’t tweet, but yet in this case, I completely agree with the general rule.

Below I’m quoting his points, but you need to see the original post, as there are many good contributions also in the comments section.

  • Consciously manage your personal brand.
    • You work here to help the company, but also yourself. No one will manage your “personal brand” except you. How are you perceived? Do you know? Take negative feedback gracefully, and implement change. Rinse, repeat.
  • Push the Limits
    • Chris Sells told me once, If you’re not getting in trouble with your boss at least twice a year, you’re likely not pushing the envelope hard enough. Two slaps a year might be the cost for 10 successes. If you’re not moving forward, well, you’re not moving forward.
  • Conserve your keystrokes.
    • When you’re emailing a single person or a reasonably sized cc: list, ask yourself, are you wasting your time? Is this a message that 10 people need to see, or 10,000? Is email where you should be spending your time. Actively be aware of the number of people you communicate with , and the relative level of influence. Is a blog post seen by 50,000 more or less valuable than a single email to your skip-level? Only you can answer, but only if you’re consciously trying to conserve your keystrokes. Your fingers DO have an expiration date; there’s a finite number of keystrokes left, use them wisely.
  • Don’t give bile a permalink.
    • While you’re on the clock, think about what you tweet and FB. It only takes one bad link to undo a year’s work. Same goes for tweeting product launches before they’ve launched.
  • Write down what you’re trying to accomplish and hang it on the wall.
    • Make T-Shirts. Tell your spouse and kids. If you’re working towards a goal, tell people. It’ll keep you honest and it’ll motivate you. Saying things out loud help make them reality.
  • Manage Up
    • Are your commitments aligned with your boss and your bosses boss? Do you have visibility into their commitments? If not, ask for them. Make sure your accomplishments are making yourself, and your boss, look good.
  • Have a System to Manage Information Flow
    • If you’ve got 1000 emails in your Inbox, it’s not an Inbox. It’s a pile of crap. Have a system, any system, to triage your work. Any item in your inbox should be processed: Do it, drop it, defer it, delegate it. There are no other actions to take. Are you effectively managing your information flow? Try scheduling time for email on your calendar.

Remember, don’t lose the original post.

18 julho 2009

JQuery Framework

As I don’t work with web development at the moment, and did few things related in the past, JQuery is something completely apart of what I’m used to work with, but at the same time, as I intend to work with it in the future, it is something that interests me a lot.

This month, Luis Abreu is writing a series of posts in his blog that gives a good introduction for that amazing framework and then I decided to post a reference for such posts here, for future use, and for the appreciation of the readers.

I’ll keep it up to date as soon as new posts come up.