Archive for the ‘Software Development’ Category

“Less is more” applied to software

Thursday, May 20th, 2010

It’s easy to get carried away by the latest fancy architectures or theories. It’s tempting because of the intellectual challenge, let aside those who like to see some attractive sentences on their professional curriculum.

Not that that all progress in software design shall be ignored, otherwise we would still be programming C in a CGI style, just to name an example.
Just that in many of those new approach there’s a lot of hype, and following Hegel, after the thesis, comes the antithesis. Just it’s not always easy to see the synthesis.

Time to look into some examples. Look at the early EJB architectures early 2000. The EJB 1.0 specs promised abstraction of the low-level transaction and state management details, resource pooling and so one would be taken care of by the application server. At the same time being portable between application servers according to the so-called write-once run anywhere principle.

Some have there value but other are a mere preparation for something that will never arrive.
Every component every layering should have a reason d’être.

Remove the fat in software, get lean.
No code duplication, but also avoid over-layering.

Software Zen, the beauty of clean software designs.

Applying logical expressions as “editable” business logic

Thursday, May 7th, 2009

Making enterprise (and other) applications more configurable has been one of the pursuits in many of my past projects. The extra effort to open up enterprise applications for enhanced adaptability surely pays back the extra investment. Of course, one may go to the other extreme and end up in over-engineering. So the challenge is somewhere in between hard-coding and decoupling what’s in code and what needs to go via configuration. One aspect is about having an idea or even a vision of what can and might change in the future. Yet, even if we have a good idea of what might change in the future it’s in many cases not trivial to make things configurable, simply because configurations don’t always fit in basic parameter settings.

The use of arithmetic or logical expressions, also called formulas, is an interesting way to push the adaptability of a business application beyond simple parameter configurations.handdraw21 (more…)

Starting out with Git version control in ProjectLocker

Wednesday, April 8th, 2009

While working on some personal programming gem, thought I need to have version control on my development project. I’ve worked in the past with several systems (subversion, cvs, PVCS cause we had to…, Visual Sourcesafe long time ago), but recently a friend adviced me to look into Git.

Actually not a source control system but – as Linus calls it – a content-addressable filesystem. Still have to figure out how this all applies to my source code.

I have the gut feeling that the package itself or some of its integrations are not fully stable, but nevertheless want to take the risk, for the sake of learning something new, gaining some experience.

In Eclipse (Version: 3.4.2) took my project; context menu-ed Team/Share Project...

Select Git source controlafbeelding-4

This created a local git repository.

Now I could add my project files to the local repository via selecting my project, right-click (context menu) “Team/Track (add)”; and then “Commit

Next step was to link with a remote repository, in my case via Projectlocker.com.

Linking with a remote repo happens via ssh, and needs a public-private key.

On my Mac this happens like this:

$ cd ~/.ssh

$ ssh-keygen

<enter> // defaulting to id_rsa

<passphrase>

<passphrase again>

Creates 2 files id_rsa & id_rsa.pub

The public key file (id_rsa.pub) needs to be communicated to projectlocker.com. Nice trick is copy it to the clipboard via:

$ cat id_rsa.pub | pbcopy

Now login into projectlocker and goto Manage Public Keys: New Key with Name: <name_your_machine>; User Name: <user name: you can copy the name at the end of the id_rsa.pub file, like alias@localmachinename.local>; key <copy paste from the id_rsa.pub which is in the clipboard>

Now projectlocker should accept ssh connections from your machine to your repo.

Tip: trouble shoot the connect in case of issue via:

ssh -vi ~/.ssh/id_rsa <SshUser@server>

in my case:

ssh -vi ~/.ssh/id_rsa git-<my-project-locker-project-name>@free2.projectlocker.com

in the logs generated from this command I could find: ‘debug1: Authentication succeeded (publickey).’

Which sounds like ok.

Now i believe it’s worth restarting Eclipse in case it were started already. Not sure but had some trouble authenticated from Eclipse to the remote repository as long as I didn’t restart.

In projectlocker there is a connection string (URI) for your project, under “User Home” there is mention “Your Git Location: <URI>”. Copy paste this URI.

Using it in eclipse: Select your project, context menu “Team/Push To….“.

afbeelding-5

By typing the location string, most field got populated. Don’t add anything; only if password is request after clicking next  provide the rsa public/private key password as entered above when generating the ssh keypairs.

Next>

For the first export to the projectlocker server, click “Add all branches spec” button and click “Force update all specs” and click next. All files are then promoted to the projectlocker repository.

Push ref Specifications

This starts the process to publish the project’s files to the project locker.

The files can be verified in project locker via “Browse Source”.

Concluding: a git local repository has been created. This will be used for all local updates. The remote repository will be kept in sync only at specific steps.

Next step is to link the projectlocker’s issue tracking via trac and mylyn (locally)