Archive for the 'programming' Category

Would you like to work as a software developer in a research environment?

At Incipit we are seeking the best candidates to incorporate to our scientific software development team.

The top applicants will be guided through a selection process that will conclude with an offer of a 1-year contract, hopefully to be extended depending on results. Benefits will be around 26.700 € per annum. The position will be based on Incipit’s headquarters in beautiful Santiago de Compostela.

More information here in English or Spanish.

Do you remember programming languages?

Mike Papazoglou gave an interesting keynote talk at ENASE 2009 in Milan last week. I especially enjoyed this sentence:

Do you remember programming languages?

He said that in a longing, melancholic tone, as if he was reaching deep inside his memories of long gone conferences of yore when people actually discussed programming languages. It’s true. We don’t discuss programming languages nowadays. They seem to have been relegated to specialised conferences. Programming used to be most of what software was. Today, it’s just a small part. A very small one.

OutlookConfig 1.1 available now

Exactly four years after version 1.0, OutlookConfig 1.1 is available now from my website.

OutlookConfig 1.1 helps you change Outlook’s SMTP server settings as you move your laptop from one place to another. If you use different Internet access providers to access the Internet from different locations (work, home, hotel, etc.), you may need to use different SMTP servers for each access provider. You may also probably have multiple e-mail accounts, and changing the SMTP server settings for each of them as you roam from site to site is extremely inconvenient. OutlookConfig helps you do that automatically.

Version 1.1 incorporates an SMTP Port setting that allows you to set the port for each configuration as well as the SMTP server name.

Some people have told me that this is wrong, and that I should not be doing this. I am not quite sure why though. It’s up to you to download and use my tool or not. 🙂

Moved to .NET 2.0

I have just moved this blog (and my complete website) to .NET 2.0. If you are not programming-inclined, this may sound irrelevant to you. Even if you like programming. Oh well.

Introducing Unimod

Lately I have been working on a skunkworks project that I call Unimod. “Unimod” is supposed to stand for “universal modelling”, which describes what Unimod is supposed to be: a low-level, highly generic modelling platform on top of which you can construct modelling environments.

For example, you may think that object-oriented modelling is quite simple: you have classes with attributes and associations, and you can instantiate them into objects with values and links. Only six modelling primitives and we can express so many things. But this is not that simple. Take, for example, the classic question “what is a class?” From a structural perspective, a class has a name and a collection of attributes. Each attribute, in turn, has a name and a data type, at least. For some people, operations (or methods) are essential components of classes too. For some other people they are not essential. And what about events? Are events (in the C# sense) part of a class? We can enrich the basic object-oriented approach with more complex constructs. For example, many find the concept of interface (again, in its C# or Java sense) very useful, and definitely part of the object-oriented approach. So, must the interface concept be a modelling primitive too?

Continue reading ‘Introducing Unimod’

Handling collection key changes

How do you handle changing values of properties that are used as collection keys in a .NET 1.1 program? I’ve dealt with this problem before in a number of different ways, and none of them are completely satisfactory. Now I am writing the business logic tier of an application and I need to decide whether to take a new approach or not. Let me explain.

Think of a class that represents a business object, such as Book in a bookshop management system. The class Book has several properties that correspond to the attributes of books, such as ISBN, Title and Authors. In addition, all business objects in my application have an integer id, so the class Book has an Id property as well.

Continue reading ‘Handling collection key changes’

Great Hackers

As I said, I am reading Joel Spolsky’s The Best Software Writing I. Actually, I’ve just finished reading it, and I like it. Of the collection of essays that Joel selected for the book, however, there is one that should not be there, in my opinion.

Joel says in the Introduction that he will poke his eyes out with a sharpened pencil if he finds another spirited attack on Microsoft’s buggy code by an enthusiastic nine-year-old trekkie on Slashdot. Well, Paul Graham is no nine-year-old, but his behaviour in Great Hackers, the chapter he contributes to Spolsky’s book, is more or less that of a misinformed kid. I have read Graham’s Hackers & Painters and I liked it, although some chapters run along the same lines as Great Hackers does. Great Hackers, however, is surrounded by high-quality writing, and therefore sticks out like a sore thumb in its propaganda and prejudice.

I am going to dissect Graham’s Great Hackers bit by bit, and counter-argue each section to illustrate my point. Of course, my point is just an opinion, and my opinion is not more valid or superior to anybody else’s, including Graham, although I hope to be more objective and provide more backing to my claims than him. In any case, you draw your own conclusions.

Continue reading ‘Great Hackers’

OulookConfig source code available

I have made the source code of OutlookConfig available on my website.

Enjoy!

Hungarian notation

I love Hungarian notation.

Michael Kaplan has written a nice post on this, with some interesting insights. I particularly agree with (2); I also use Hungarian notation, but all the time. My code looks like this:

//internal create.
internal Clabject(Model moOwner, PowertypePattern pp, Class clClassFacet, Object obObjectFacet)
    : base(moOwner, EModelElementType.Clabject)
{
    //save to private data.
    m_pp = pp;
    m_clClassFacet = clClassFacet;
    m_obObjectFacet = obObjectFacet;

    //init.
    this.SynthesiseName();
}

I fully agree with (3), i.e. most of my team mates (and programmer colleagues) say they don’t like it, they can’t understand why I do it or what its advantages are, and they think it looks ugly. They would write something like this:
In my case, (4) is not true. None of my colleagues, as far as I know, use Hungarian notation. They would argue that the above code is OK because, as Michael points out, Intellisense and other IDE features will tell you what is what.

Continue reading ‘Hungarian notation’

Hackers & Painters

I’ve just finished reading Hackers & Painters by Paul Graham.

The book is a mixture of IT-related and non-IT-related chapters. There is an ongoing theme about computing and “hacking”, but the main topic in some of the chapters is not IT definitely. I loved these. He talks about secondary education in the USA, heretical thoughts, distribution of wealth, spam and design. He is insightful and sometimes brilliant. 9 out of 10 for these chapters. I am not giving him a 10 because I have my reservations of his application of blatant neoliberal ideas (as if they were the only alternative) to the discussion of wealth generation.

The really bad news is, the chapters on programming are extremely poor. After reading the table of contents and the first two chapters (on non-IT topics), I was thinking to myself: “well, perhaps this book contains the first serious approach ever to defending open source software”, and “maybe this guy has a chapter as good as this on the philosophy underpinning different programming languages”. What a disappointment! 1 out of 10 here.

Continue reading ‘Hackers & Painters’


Follow me on Twitter

Archives