A bit of this... a bit of that. About and around programmer's daily problems, solutions, and struggles.
Tuesday, November 25, 2008
biding jobs ?
But to my surprise you can bid for work. not literally ;) but look at that. freaky ;)
The minor changes
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
IPluginElement
s /IPluginExtension
s 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
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
Reckoning
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
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
Monday, June 30, 2008
Living in dorm
"Fiszki" approach to learning german language
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
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
org.eclipse.equinox.transforms.xslt
org.eclipse.equinox.transforms.hook
from the Eclipse repository.
Saturday, June 28, 2008
before milestone
- Product Customization branch will be synchronized with HEAD
- 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
Relearning SWT
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 ...
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
Here you will find some photos.
Product Customization
Monday, May 5, 2008
Simple(x) Problem
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)
<= Yjwhich means that we cannot give more bears than we have in j shop.
For each i:
SUMj(xij)
= Xiwhich 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
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
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
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
Sometimes
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
<Khassaki> O THANKS!!! ITS SO MUCH EASIER TO WRITE NOW!!!!!!!
<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.
- define xml for your contribution
- provide builder for your implementation
- 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.
cheers,
Friday, March 28, 2008
Articulate - kids don't use it at home ;)
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
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 :)
$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);
}
}
close(F);
Reversing BEAST
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).
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
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)
So after spending sometime online I've found another solution: flatex or flatten. Enjoy.
Sunday, February 17, 2008
On the road
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.
- 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.
- 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
Simple, isn't it ? ;)
Sunday, February 10, 2008
Crawling through the information's ocean
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
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
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.