October 9th, 2008 • Comments Off on OSGi dependencies
I like the OSGi platform, and I have been using it for quite a while. One of the most important things is to keep track of your dependencies (e.g. like preventing cycled dependencies). Auto-generated MANIFEST.MF files are most of the time not really optimized. Therefor I started writing some python code to check dependencies.
It reads in all the MANIFEST.MF files from the bundles and creates a dependency graph. It will look for unnecessary and unneeded imports and exports. Look for cyclus etc. It is written using the networkx library for python. Also useful is the zipfile extension in python 🙂 It can be used to extract the jar files of bundles.
…to play around with the new VirtualBox Version. In the next version hopefully it will be possible to use SATA disc images with a OpenSolaris client. Then I could test ZFS with several disc images…Useful? no – but fun. To play around with hotspares, delete disc images on the host, RAID-Z, RAID-Z2, test thumper disc configurations (which does not make sense I do not have to think about hot spots, where to position disc :-))
October 6th, 2008 • Comments Off on Software engineering
So my personal opinion on software engineering is pretty straight forward. First of all it is important that the developers who write code are willing to improve themself by reading, blogs, articles, books (e.g. Code Craft or Beautiful Code – good reads).
The second idea is to restrict the work of the users. Provide coding guidelines and define processes. Everybody should know them by heart (and behave like they say). This will help that persons can work more and do not have to look up and ask many things (A knowledge base is always a good idea and even more important a todo/issue tracker so everybody knows what he is doing).
The next is to automate everything (another good tip from the Pragmatic Programmer book :-)). Last but not least do clear designs and document them (do not reinvent the wheel).
And if you behave work like this you can minimize the number of bugs you produce during development. You can also speed up your development! But always try to optimize (e.g. by tracking where you loose time…) your personal working behaviour and the global processses. Be Agile!
October 6th, 2008 • Comments Off on Mercurial – and how it helps to find bugs
The simple question is: how can you use a source code management system to find bugs? First of start by using Mercurial (As you might know: always try to use distributed source code management systems :-))And then install the bisect extension. It is very similar to the version in GIT.
The Basic idea is the following. Take a bug free revision and a revision which has a bug in it. Then use bisect to get a revision in the middle. Test this revision and look if it is bug free or not. Then do a bisect in the higher or lower half. And so on…Until you find the revision in which the bug appeared. Pretty neat he?
Here is another GTD tool. It will greatly improve they way you work. I only Tab Options+Space on my Mac I can instantly do thinks. For example search on google maps, write emails, looking in wikipedia, searching withour opening new tabs typing addresses and stuff. Great tool – it is alpha but worth a try!