Tuesday, November 25, 2008

biding jobs ?

when we look at the Poland there are some very important biding systems. Allegro ... ... ... ... well ok there is only one. We have eBay but as they have not very successful start it is like saing we have świstak.
But to my surprise you can bid for work. not literally ;) but look at that. freaky ;)

The minor changes

There must be such a day once a year (at least once). Something has passed away something comes. I am back to Poznan. I want to follow the path of technical blogging. Eclipse, Springframework, Ruby (from scratch) are topic of higher attention this month. And as I am going to blog about eclipse on our enthusiasts' blog the other topics will be commented here.
Hopefully I will find some time and energy to do that.

Tuesday, August 26, 2008

Does anyone need an Eclipse developer?

GSOC is about to end.
There is a time for change. Maybe not at the moment but in very near future. I have some reasons, personal one to move to Frankfurt for a longer time. The personal one.
If you are looking for Eclipse developer, Java (plain, Struts2, Spring, Hibernate ...), requirements engineer, analyst, designer. If you are looking for such a person in nearby Frankfurt/Main, Mainz, or for remote work. Please let me know.
If you are doing software architecture analysis or think about doing that, or you are looking for young software architect who want to learn, and learns real fast you are my dreamed employer ;)

End of the GSOC 2008

It was nice adventure with the GSOC this year. But my journey with the PDE customization support is not finished. We need to make it as useful as we can.
But I owe all of you some summary. What we have on board:

  • Remove features from tree (Views, Commands etc.. - in general all IPluginElements / IPluginExtensions if you are familiar with the PDE Product model)
  • Changing name of nodes.
  • Launching product with transformations
  • Exporting product with transformations

To make it work make sure that transformation hook is located in the same place as org.eclipse.osgi. It can be issue during the launch (when you exporting all plug-ins ends in the same location).

Code is in the same place it was before - so in code.google.com repo. If you want to make it run you will probably need also ant.ui from the Eclipse HEAD, as I also try to sync the pde.core and pde.ui with the HEAD (cause next step is to make Product Customizations part of Eclipse 3.5 Mx).

If you want to watch presentation please use this link (I've resigned from youtube hosting cause I cannot place there high quality movies) or the uncompressed version with annotations.

Thursday, July 24, 2008

Product configuration will let you set plugin options

So what was the path to this point. First I implemented some Product Customization features. Then I was struggling with product export function but finally it works. Just recently I've started to work on launching with transformations. And now is time for changes. We should be able to add users possibility to set plug-ins properties. Start level, osgi properties ...
What I can say it is not small step for me and big for the mankind, it's rather opposite.
Any way as programming in Eclipse is making life simpler, I hope this new feature will make it simpler for some of you. At the screen shoot how it look at the moment.

Tuesday, July 22, 2008

Product Customization - reactivation

It is time to start with the second part. As you can easy see if you tried use the Product Customization tooling, as it is now, there is much to do. As removal parts of description works pretty well there is no other type of action supported at the moment.
Another feature missing is launching product with the transformations applied. This problem affects more than just Product Customization tooling and it is now described in this bug. If you have any comments feel free to share with us.
I'm starting working... this is first task on my GSOC list for the second part of the program.

Monday, July 14, 2008


We can distinguish variety of aspect in our lives. They are semi-dependent, overlapping, fluent.
It's great when you can find path through your life and are able to cope with them all. Steering your life through the ocean of decisions.
I was wondering how it looks in my case. Well let me focus on so called "professionals life" cause my private I wish keep private.
So, scientific carrier: teaching students, software engineering, software architecture knowledge but rather from books and meetings with professionals than form my own experience. Bioinformatics: C++, perl, math, probability theory, evolution substitution models, dynamic programming algorithms, MCMC etc. World dimly known.
Professional activity: consulting - web applications (struts2 rather than EJB), Eclipse as developer, embedded software C++ (long time ago),
There is a bit more, but the point is that I've started wondering how many ways must you go to get somewhere.
However sometimes possibilities you have are your limitation. Signed contract, agreements, previous choices. Decide and be decisive. But what to do when you decide live your life ? What if you want be happy here and now ?
Yup and once again the area I want to keep for myself. And it just look like this, what matters in my life is it's private part. These moments you get up for every day.

Product Customization in action

I just created some movie showing all features implemented in first milestone. Unfortunately quality of video is very low after uploading it to google videos. (this may change in the future but now it is like it is :/)

Basically how it works. We have new tab called customization which enables us to add customization. The only available at the moment is removal of the extension or element from the bundles tree. This way we can remove some view or function from the target RCP application.

So build new product description file, add bundles for your product, configure destination environment, add customizations, export product, start it...

And here also under Linux (I truly don't know how to publish some screencast with better quality :/)

So if you are interested in higher quality videos you: Linux and Windows versions.

Saturday, July 12, 2008

Procuct Customizations (transforms) GSOC milestone

there is time for semirelax, everything goes as planned.

Monday, June 30, 2008

Living in dorm

among positive aspects of living in my Frankfurt's dorm one is worth to mention:
view from the window ;D

of course there are also negative aspects not worth mentioning ;)

"Fiszki" approach to learning german language

As my German still is not at the point I want it, I decided to speed up learning process.
To achieve it I took the SuperMemo approach in its paper version.
As a result there is a dozen of boxes with some vocab lying round my room, pockets backpacks, washing machine (yup they are watter and washing powder proof to some extend ;) )

How each box look like:
It contain cartons with polish translation on one and german on the another side.
Lerning system is simple as hell you browse through the pages ;)

Anyway if you want take a look at this approach please visit:
www.fiszki.pl (site is in Polish).

PDE Product Customization at code.google.com

As I've said before this is I placed the code at code.google.com.
The think that should be higlighted here is that google doesn't know about EPL.
It sad to see that so at the moment code is shared with BSD license.
To get the code please refer to http://code.google.com/p/product-customization/ page.

To make code working you also may need
from the Eclipse repository.

Saturday, June 28, 2008

before milestone

there are several things to do before adding feature produced in first part of program.

  1. Product Customization branch will be synchronized with HEAD
  2. both plug-ins will be placed in code.google.com before producing Eclipse patch.

Question is: will it be long weekend ? ;)

Monday, June 9, 2008

Product Customization mock

This is a very roughly view of what Product Customization section can look like in the near future.

All user transformations planed in PDE will be available through context menu in Extension section. There also view for the product with changes is visible

Transformations section will enable us to remove transformation we no longer needed. But this is also a overview of all transformation added to the product

Something is done but much more is to be done. Even with action simple as Remove there is a lot of work. While it can be applied for extension point or its children there is a bit of work with overlapping transformations (in the parent child manner). But there is also something even more important (but will be addressed later on). How should we handle removal of extension point in one plug-in for its clients ?

Saturday, June 7, 2008

Ausflug in the rain :D

And don't you think that I spend all weekend on code (but maybe I should). Last weekend we took train to some picturesque little town on the Rhine (or if you prefer German name Rhein) bank.
It was nice but weather was not the best for making photos. Anyway here they are.

Relearning SWT

I've started with Product Customization some time ago, most of the time I've spent on doing "research code" and designing structure. Many times I've been choosing not exactly optimal ways, but thanks to the Kim's voice of wisdom I am on the right track.
I started with finishing what already was done in the Product Customization are, as I wanted also to add some funny details I am working right now on visualizing removed nodes from the plugins tree.
What hit me was that I don't really know to create stroked text in viewer. I started with Font. Where if not there looking for that ? But to my surprise there is no strike. Well after some research in internet the answer is simple: You can get stroked font but only on Windows.
How to put that to TreeViewer use label provider which is also IFontProvider.

Monday, May 26, 2008

Aproximation of approximation of ...

Approximation is sometimes only way to make something reasonable.
What is the problem:
When you are adding new transformation you need to describe for which plug-ins it should be applied.
Now simple approach is taken - choose the first one found. The problem is that it can return strange errors when you will add new pattern which also matches other plug-in.

We've been talking how to deal with that and most reasonable approach is to find most specific pattern that matches resource name. But as we need fast solution we decide use something that have chance to work better than simple "choose first" approach.
First take all matches and choose the best one of them. What choose the best means ? Choose most specialized pattern.
From my observation seems that patterns are rather simple and choose the "longest pattern" strategy should work in most cases.
So ? Choose the exact name or the longest pattern.
I am far from claiming that this solution is working in all cases. In fact there are thousand of examples it's not. But it gives you answer when you will find some unexpected result and want to check which pattern was applied.

Tuesday, May 6, 2008

Long May weekend

Since I disabled weather cast plug-in in Firefox whether is nice. So it was during the long weekend. As previously I tend to travel on these days I did similar thing this year. The difference is that previously it had been hiking and this time it was swan :)
Here you will find some photos.

Product Customization

There is high time to provide you with some useful links in case you are interested in this project. First of all wiki page in PDE incubator projects category. The second one in case you like to follow project on bugzilla.
I will try to add some content to the wiki page this week.

Monday, May 5, 2008

Simple(x) Problem

Imagine you have following a problem. There are some people which needs access to some resources (lets make it students and beer problem). There are some dorms where students are located and shops which stores specific amount of this golden drink. As students are very lazy mammal they can access only this shops that are not very distanced.
We must provide each student with a bear. How to organize delivery?

How to deal with such a problem ?

Is there an optimal solution ?

This is typical resources allocation problem with constrains.
All students must be served. We can translate this problem and treat our students as resources. Let Xi be a number of bears per i'th dorm, Yj number of bears in j'th shop. Let also xij be number of bears for i'th dorm from j'th shop.
Then we can describe our problem as maximization problem of following function

SUM(xij) - where we take into consideration only such a xij where j'th shop can be reached from i'th dorm.
The constrains are following:
For each j: SUMi(xij) <= Yj
which means that we cannot give more bears than we have in j shop.

For each i: SUMj(xij) = Xi
which means that all students from i'th dorm must be served.

The only problem is that for some reason this cannot be solved using OpenOffice solver on my laptop (probably not ideal openSuse configuration ;) ). So please use something more comercial :D
Sometimes working at the university also means solving quite daily life problems ;)

Tuesday, April 22, 2008

GSOC 2008 - Eclipse

With the start of my adventure in Frankfurt GSOC adventure has started. This year I apply for the project in Eclipse PDE and I've got it (as announced yesterday). I'm very pleased with the fact that this is a way to add the biggest piece of software to Eclipse in one chunk since I've started.
Kim has been sentenced to work with me ;)

If you want to follow the project in the bugzilla here is the way.
If you have any suggestion please leave a comment.

Monday, April 14, 2008

Spring goodies

It is not gona be about spring behind window. It's a word about springframework.
Spring is huge but very flexible. One has two options use all it gives or modules one needs.
Nevertheless it can be quite annoying. Whenever you decide to use subset of its modules DAO support is provided in spring-tx.jar. This package is also needed when you decide to use Spring JDBC support classes.
This way my simple surveys app is getting bigger and bigger :)

Thursday, April 10, 2008

Google's hegemony

Yesterday I had a talk with Piotrek about Google extensive and aggressive politic. In Poland there are several companies which monopolize some segments of the marked. Sentenced to Google doesn't sound very realistic neither optimistic :). The big difference between Google monopoly and eg. Polish telecom company is that it is not to the fact that there is no other choice. In case of Google it is simple the best.
There is also a threat that we confide to much of our private information to Google. They are about to start global health service support tooling, they keeping our mails, photos, documents feeling (Blogger), day schedules. So they know about us a lot. Some people claim that Google can use this information to suggest us what should we buy, eat, wear or even think.
I've just had example of that. As I didn't wanted miss my football hours yesterday I've put event to the google calendar with e-mail remainder. Today I found my remainder in gmail spam folder :)
What is terrifying, weather was bad (and I mean baddddd). Cold wind and rain. So maybe Google has started health care program and combined it with Google suggestions service? :D

Wednesday, April 9, 2008


How many times you needed to back away from assumptions you have made ?
This is not really time I want to go with the story further. But as I've browsed the bash I've found something that made me laugh:

<Khassaki> HI EVERYBODY!!!!!!!!!!
<Judge-Mental> try pressing the the Caps Lock key
<Judge-Mental> fuck me

Wednesday, April 2, 2008

Tracing the BEAST

I have spent some time on analyzing BEAST code. I have started with the describing packages with UML. Then I've moved to the business logic analysis.
Let me introduce you BEAST's configurator. It can be found in dr.xml.
Configuration of BEAST simulation is given by xml file. Each xml node has its realization in java code.
BEAST is using builder pattern (or maybe it's better to say builder's builder) for the software initial setup. However this is some data driven, distributed variation on this pattern ;).
As you can see at the picture there are two classes marked yellow.

XMLParser is responsible for parsing XML file with the configuration. It uses DOM model of that file as an input. The traversing through the code is done in post-order manner. To parse each node from the description BEAST uses multiple AbstractXMLObjectParser's specialization instances (this builders can setup instance of the classes with the business logic).
And at this point I can explain what I mean saying distributed. Most of the specializations of the AbstractXMLObjectParser are anonymous classes which can be found in model's classes.
To see whole set of object parser you can always look into BeastParser.setup() method.

Reference class is realization of idref's concept from setup file.
Each parsed node is stored (as a new node realization instance) in some object's registry or/and added to it's parent node. When such a object is referred in other parts of configuration it is wrapped in Reference and returned to caller node. That means we can refer to the classes which was built before.
E.g. When parsing proces reach the mcmc node it look for the builder which is responsible for building class which implements MCMC process (I am skipping building of the mcmc's child nodes). At this point every referred object (is already consturcted) is taken from the registry and used for correct in construction of MCMC implementation.

So the formula for extending BEAST is simple.

  1. define xml for your contribution

  2. provide builder for your implementation

  3. implement your contribution

I don't want to go into much details about this engine (as for example how the simplation is started, after construction or how the xml description is validated) so if you can any questions and suggestions (as I only interpret the code I could misunderstand some concepts) leave a comment.
Next time I will show you simple recipe for adding new tree mutator to the BEAST.


Friday, March 28, 2008

Articulate - kids don't use it at home ;)

Well sometimes there is a need to share some knowledge with others. Sometimes you want to get some knowledge from others. And finally sometimes there is a time to do both at the same moment.
As we are interested how non-functional requirements influence software architecture we decide to ask some specialist. As it should be done nice and smooth we decide to take M$ Office and Articulate&Quizmaker tooling. In theory it enables people to build nice multimedia flash presentation from the power point one.
Well only in theory :P .
Problems you can face using Powerpoint 2007 and Articulate:

  • cliparts doesn't scale well

  • relative distances between some elements of slide are different from original ones

  • there are some additional sighs on the end of random lines of lists elements

Well you can of course live with it but what can happened when you decide to add quiz support (Quizmaker) ?

  • each new quiz slide destroys your animation synchronizations.

And as Quizmaker is intended to build some surveys how should the collecting user e-mail addresses look like ? I though it is nice and easy.
There are two options to get text from user:

  • short text - and I mean it's realy short - 24 characters so some addresses won't fit it

  • or essay - you can limit number of characters but text box takes whole page space which is ridiculous in case of e-mail inputs

Perhaps all this problems are my fault. Can anybody explain how to get rid of at least some of them ?

Wednesday, March 19, 2008

BEAST code reverse engineering - in progress

As I've recently said there is no perfect tool (and this is only my private opinion) which can do all class reverse engineering for me. But as I tried o dozen of them there is one which works not bad. Omondo can reverse from Java 1.5 and as is stated on features site can do much more. Anyway I found it useful. Don't get me wrong, I really like idea of using EMP and MoDisco but I don't have time right now.
What is funny not only people here at Frankfurt Uni are interested in knowing BEAST architecture (or rather design) (just look at this thread) so maybe this is worth to publish my findings after all.

Wednesday, March 12, 2008

PERL for fast and ugly scripts :)

Yup. Example below. Data generator for dishonest casino example from "Biological sequences analysis". Yes I know that states are hardly changeable :). I am putting this code here also to hear answer for this question. how to produce nice colored html output from Eclipse. Eclipse -> Open office -> blogger is quite disappointing solution.

$outputName = $ARGV[0];
$dices = $ARGV[1];

@fair = (1,2,3,4,5,6);
@loaded = (1,2,3,4,5,6,6,6,6,6);

%model = (
"f" => \@fair,
"l" => \@loaded

%change = (
"f" => .05,
"l" => .1
if(rand() > .5) {
$actual = "l";
$next = "f";
} else {
$actual = "f";
$next = "l";
open(F, '>', $outputName) or die "file $outputName cannot be opened\n";

select F;

for($i = 0; $i < $dices; ++$i) {
my @a = @{$model{$actual}};
print $a[(rand() * @a) % @a], " ", $actual, "\n";
if(rand() <= $change{$actual}) {
($actual, $next) = ($next, $actual);


Reversing BEAST

I am exhausted :) Have you ever tried reverse java code using open source software (and also community editions of popular commercial tools) ?? Under Linux ? :D
Well, sometimes it works. And sometimes not necessarily.

BEAST is a cross-platform program for Bayesian MCMC analysis of molecular sequences.
This software package contains almost 800 java classes (and I don't mention classes from used jar libraries) It is about ~60000 LoC. And all written in Java 1.5 (OK, compiled against Java 1.5 shows more than 1500 warnings).

There is a number of problems with freeware software for java reverse engineering that make this tools useless when analysing blast. In many cases the problem is that they works only for Java <=1.4. Non of the tested tools was able to import whole source folder from BEAST and analyze it. In case of ArgoUML (which is still, in my opinion, the best open RE tool for Java 1.5) it failed after using all available for VM memory (yes, I've changed the default values). Now when I change my working model to so called "step-by-step" it works only with few complains.

So, what is the alternative? Commercial license. And believe me I am actually close to make this choice. But who will guarantee that money spent on license solves the problem?

Later on I will give chance Eclipse + UML2. I know I should start with Eclipse (as always), but nobody's perfect :).

Monday, March 10, 2008

Mulitilingua :D

To live in Germany you must know German :) Well it is not truth although this language is very useful ;) Recently I meet one of my neighbors. Georgi is studding law and came from Georgia. The probable was I speak some English and a bit German whereas he speaks some German and acceptable Russian. I though I understand Russian until that day ;). So we were communicating in this languages' mixture for a half an hour. It was fun but now I know that I must work harder on German.
Very similar situation is in bioinformatics. To understand some concepts or simply use it you should to know multilingua mixture.
Recently I worked on Viterbi algorithm (the code at wiki is a bit different from one I am using). It is simple dynamic programming approach to decode of HMM output. Anyway to compare my buggy Java code to the referenced on the page I grasped a bit of Python. As C++ is the basic language in my team and I want to be more fluent in C++ + boost I've decided to code it in C++. To generate input for tests I simple using Perl :).
I started with "Bioinformatics sequence analysis" and I must say I really enjoy this trip.

And if you want to know what I am doing during weekends (maybe later on I'll describe some of them) you can always wisit my picassa web album.

Wednesday, February 27, 2008

how to find IBAN for the German bank

Do you know what anIBAN is ? I thought that this standard is used everywhere. How does it look in Germany ? Well as I need to transfer money for registration fee at the university and for dormitory rental I've got the bank numbers. In the competition national bank numbers vs. IBAN: 2:0.
It was quite surprising as Frankfurt is known as German's bank center. How to deal with that ?
Well, before I give you an answer couple you need some explanation. Why do I think that not IBAN bank numbers can be a problem ?
Because it is in my case. Without it I couldn't specify bank transfer through the internet. Therefore I needed to visit my bank. To my surprise they gave me huge form to fill in. When I asked about format for the German bank's data they didn't give me the answer. The only one I've got was: write it down as you think it would be correct.

Great, thanks :/

So, what I did, was to phone to the German bank and ask for the IBAN for that account. Now I have it, but indirectly ;).

When you will ever be looking for the IBAN in such a case please give a try to IBAN rechner :D.

Monday, February 25, 2008

Random walk

It looks like my process of learning bioinformatics. Though, it should be rather breadth first ;). On of the first MCMC algorithms in my case was Metropolis-Hastings algorithm. And if you will look for good visualization of it please give a try this applet.

Wednesday, February 20, 2008

Going to Leipzig (working with *.tex files)

This year we managed to publish our educational paper on ICSE. As in a few days is deadline for camera ready papers we put the finishing touches on. One of the requirements for this paper is to send document in one source file (bibliography included). As we always work on the multiple *.tex files there is a need to combine it. One of the solution (and the only one was used in previous publications) is to do it manually. But I am very lazy person.
So after spending sometime online I've found another solution: flatex or flatten. Enjoy.

Sunday, February 17, 2008

On the road

Last Thursday I did 1900 kilometers. Czarnkow-Frankfurt-Czarnkow. First of all I need to thanks my brother. It didn't happened without his help. We spent in the car about 20 hours. What for ? First of all I wanted to look in most beautiful eyes in the world.

But as I don't want to talk about my privacy to much, let me tell you about two issues:
German Ordnung and German's roads.

  1. I've been always listening about how well everything is organized in Germany. And it might be truth in some areas, but it doesn't work everywhere. I have couple of things to finalize at the university and as (after phone conversation) it seemed to be quite easy, it was impossible. Simply it was to early to finalize papers for students card. It was even to early to leave documents (I want to add that the day before it was not, at least I was informed it wasn't ;) ). Fortunately I managed to fill dormitory's papers (what should have been impossible :D). And as Frankfurt is sometimes call Bankfrut I've newer thought that there is no chance to open bank account during one day.

  2. German autobahn - the only thing I can say is: In Poland we don't have roads we have paths :D

Tuesday, February 12, 2008

Health insurance

As Poland is part of the European Union we can use our insurance round EU. The only thing you need is insurance card called EKUZ. But to my surprise the card is written in Polish ;) I can only assume that all card in whole Europe has the same design and are this way recognizable. Anyway, when you are in my age please be aware that there are some problems with the card ;) When you are passing 26 you cannot stay on your parents insurance and your university takes control. The new insurance card is needed. And I want mention this card is valid only for 4 months. So even if you are going for Socrates for half a year you need two cards.
Simple, isn't it ? ;)

Sunday, February 10, 2008

Crawling through the information's ocean

What do you think hearing a "bioinformatics" ?? Genetics, statistics, probability theory, computational mathematics, data mining, wtf ? ;)
And from my short experience you can find that all. I can say, I am excited cause bioinformatics integrates my knowledge with the ocean of new methods and problems. Continuous improvement ... But there is also a risk, I should have learn more in high-school or even during my MA studies, there are things that still reminds new for me, but they shouldn't. It makes me feel so stupid... It makes me want to leave this feeling behind.

Tuesday, February 5, 2008

On the road of basis

What I am doing for living ? Well, I am software engineer. I work on the software architecture analysis methods at the university, I work as developer (in Eclipse) and consultant/support engineer (for the last year in IBM).
What I will be doing in Frankfurt ? During next half I year I will work for the bioinformatics team. Work... well we will see how much of work means an exchange program (Socrates).
For today it means a lot of learning. And unfortunately, learn the basis. It is quite sad to see how much I've forgot from my high-school education (the another explanation is I didn't get much from high-school ;) ). On the other hand is great experience, how genetics basis looks like from the software engineer's point of view :)

It also seams that level of my German is to low to attend German intensive course in Frankfurt. But I feel the progress :).

4'th February - World Cancer Day

Everybody has heard about cancer, how dangerous it is... Scientists are working on treatment strategies but that is nothing without our personal engagement.
All you need is good prevention plan. I've just got a great presentation made by the most wonderful person I've ever met. It should be really helpful.
And remember all you need is good prevention plan. When you have it there is nothing to be afraid of.

Wednesday, January 30, 2008

Ready, steady, go

It is about a month before my trip to Frankfurt. I am a software engineer (at least I'm going to be) so the whole situation is new for me. I'm going to work in the bioinformatics team and I'm brushing up my high-school knowledge about genetics. The second thing is my German. It doesn't exists. I've never been an enthusiast of that language but now I think I am ready for it :D.
And if you are Phd student in Poland and want go to Germany using Socrates exchange program please think twice ;) The load of paperwork and bureaucratic hurdles is amazing ;) but this is all behind me (I hope) and now the last thing here in Poland is to pack my stuff and wait for the breeze which will take me to the Frankfurt.