Blog

  • My first steps with Eclipse Mylyn

    This is my long promised posting about my experiences with Eclipse Mylyn. It took quite some time because I did not stick to it all the time but somehow fell back to my old development-habbits where everything and much more was visible on the screen. Maybe this is caused by the always-changing project situation or changing technologies but I cannot completely blame it to that. Nevertheless, let’s focus on my experiences 🙂

    Mylyn works by hiding everything from your visual workspace which is not connected to your current task at hand. This means, you only see the files in the Package Explorer and all other many views which were touched during your current task. This also means that you have to create tasks for your work in the Task List, which is a good idea anyway. The Mylyn-filtering is activated in the moment when you click on the small circle next to such a task in the Task List. If you have worked before on that task, your previous state of the workplace (which is called Context here) gets restored, like the open files, the touched methods and landmarks. If this is a fresh task, you’re presented with empty views all around. From here you then can open your initial file to work on either by using the "Open Resource" shortcut or by ALT-clicking into the Package explorer, where the hidden files are displayed then.

    From that initial file on you just navigate through the structures and methods with your usual Eclipse navigation (F3, STRG-click, or whatever) and Mylyn takes care to just display and highlight the necessary information for your work. It even cleans up the stuff and removes old and never-again places if you didn’t came back to them for a longer time. The same thing applies to all content-assists like the method-overview or all of the Find-shortcuts where the list gets two-parted with your context-relevant results at the top and only the remaining hits after a separator.

    You can also mark certain methods or files as "Landmarks" which are then displayed in bold text in your Outline or Package Explorer. This is especially handy if you’re hunting a bug and found important places you want to remember or where you nailed down the cause but will fix it at a later time.

    I also tried to connect my Mylyn Task List with a local installation of Bugzilla to better manage my tasks and make them available even outside of my own workspace. This worked quite good. It’s also possible to attach the Context to each task if you’re working with an external task repository. This would allow other people on the same repository to open the Context in the same state as it was when you last saved it to the task repo. Easy moving tasks from one person to another 🙂 But we didn’t come around to test this, as I’ve been the only one to work with Mylyn longer than just for a short tryout.

    All in all I can say that if you get used to the way how Mylyn hides everything unnecessary from your display and how it presents the important information, the speed of development really goes up and the amount of distraction minimizes. But to get to that point you have to really work through the initial get-used phase which can be somewhat confusing and make you switch back to the previous development-mode where everything is displayed. I also fell into this a few times. But if you stick to it, you’ll soon get the benefit of being able to focus!

    If you also want to try it out or are just curious how it feels to work with it, take a few minutes and watch the Eclipse Mylyn 3.0 webcast video and read through the Mylyn 2.0 Tutorial (still applies 100% even if it’s been written for 2.0) how to get started, you won’t regret it!

  • Meeting old friends

    Today our company celebrated its anniversary. It was moved to this date from another date because of bad wheter back that time. Well, it hasn’t been better today. It started to rain quite strong at about 3pm and went on with lighter rain into the evening.

    For this anniversary our company even invited all ex-employees and people which are connected to it. Doesn’t matter if our company had set them free or if they left on their own, everyone (from whom we could somehow acquire contact information) was invited. And as it turned out, quite a lot of the people who worked at our company some time in the past showed up.

    It’s always a great pleasure for me to meet my former work colleagues and long-unmet friends and exchange thoughts and experiences with them. I get a peek on what work they are busy with, how they work and what problems or chances they are faced with. And most of the time I can be sure, that work is almost the same in most companies and they all face the same problems and issues.

    I also met my former boss who way back in time was the responsible person to have the final decision if I would get the job at the company or not. And I’m happy that he agreed. Altough he is not employed in our company anymore for years now, he is still some sort of motivation and acts as a model for me. I’m impressed how he managed to do what he has done, how he built up the connections he has and just how he seems to be successful with most of the things he touches. And when I talk to him I always get peeks into the other world of our business, the management and organisation world. The one, where things are much more volatile and political than in my developer-world.

    I’ve always been interested in the management of projects or teams but until now I only managed to get small chances to get a deeper insight here and there. This may or may not be connected to my interest that I do not want to loose the connection to the hand-on engineering and development of software. And I have the opinion that when someone is managing a team or project this person should focus solely on this task and help the team by removing all obstacles for them but he should not join the development of software itself actively. But it’s always been a tempting idea in my head…

  • Know your frameworks when developing software

    In the last few weeks I’ve got the chance to look into the sourcecode in a lot of different modules of the product our department is working on. The more code I had a look at the more a certain insight was forming in my head. What I saw when I looked at the different parts of the sourcecode from a lot of different people is, that it’s cruical for the maintainability of code to know the advantages and possibilities of the frameworks you’re working with. Otherwise you’re going to reinvent the wheel over and over again. And I recognized many different wheels in this code.

    We’re working with Java here and among our used frameworks is also the Apache Commons. It’s a framework which greatly eases the solving of common problems every Java developer faces every day. To give examples I’ll focus on working with collections here. The Java framework itself has already some convenience methods available when working with Collection classes in the their generic interface classes (like Collection, List, Set or Map) but the Commons Collections Classes provides further methods which cover many day-to-day operations with their xyzUtil classes (see CollectionUtils or ListUtils for examples).

    A lot of the operations I came across in our code deal with creation and manipulation of different collections, transforming from/to arrays, intersecting or summing them and so on. Lots of loops and different ways to solve always-repeating problems. With the utility-classes and methods from the frameworks we’re using a lot of these sourcecode-parts can be reduced and simplified from up to a few dozend lines to just a few ones or in a lot of cases even a single line.

    Not only does this reduction aid the readability and comprehensibility of the code it also makes it more robust as most of the framework-methods are already for example null-safe and thus take the burden of null-checks from the developer. And less code is easier maintainable than endless pages of difficult logic. Of course, the usage of frameworks also requires the developers who get at it later on to have at least a little knowledge of these but the invested time to get familiar with the framework almost always pays off manifold.

    PS: Another extremely useful utility class in the Apache Commons is the StringUtils class. Just have a look at the impressive convenience methods in its interface and I bet there are many methods in there which you immediately could use at some places of your code.

  • Experiences with optimized Firefox builds

    I’m running Firefox on all my computers. And I have a habbit of collecting lots of tabs for later reading or further actions. Furthermore, a lot of the pages I’m visiting have at least a little bit of JavaScript running. Some of those use scripting quite extensively.

    So it was no surprise that over time the oldest of my computers at work, which I use for reading email, was getting slower and slower with Firefox using up to 0.5 GB of the available RAM. Which got paged out to the harddisk a lot, when I also switched back and forth to Outlook and some other applications. It became quite inconvenient to use.

    I decided to take action and try the speed- and memory-optimized Firefox-Builds from pigfoot (via Lifehacker). Installation consisted of unpacking the downloaded package (available as self-extracting archive or also as portable version) and copying over my Firefox-Installation (after making a backup of course).

    Upon startup the first thing I recognized was the new application icon and startup screen. And it felt just a bit faster, almost unnoticeable. In all other manners it behaved exactly like the original Firefox. But now after having it runnig continuously for some days, which would have made the old Firefox crawling like a disabled snail, it is still running fluently and reacting a lot faster than I expected it.

    I’m very satisfied with this build of Firefox and hope, that some of the optimizations somehow make it into the original build. I think many power-users like me would only appreciate that.

    One drawback should not stay unmentioned: I do not know, if this version follows the automatic updates from Mozilla. Nevertheless, new versions have to be installed manually after these are available at pigfoot’s weblog. But for the improvements I’m experiencing on my stressed computer I’m happy to live with that.

  • Small blog enhancements

    Currently I’m trying to make some subtle enhancements to this web presence. If you experience any inconvinience, let me know in the comments.

    One very visible change will be the new top box in the sidebar, titled Common, containing all the common stuff which are part of a blog. Like the new About me page. Or a proper tag cloud page, which is not yet visible because of an unknown reason, as it is present in the blogs templates. But I’ll sort that out sooner or later.

    A new section Similar Entries on each entry’s page now lists also blog postings which may be related to the current one. As this is determined by an automatic process I still have to look if it matches my expectations.

    Furthermore some tweaks here and there but no changes which are big enough for a separate announcement.

  • Back to a colorful world


    Mask too big
    Originally uploaded by kosi2801

    Yesterday I joined some people in a paintball match at paintballaction.at. Since I already played a few times (one time here, one time at another company-event) I instantly agreed to participate when I was asked by ellla1981. if I’d like to play.

    The match yesterday was quite fun. We’ve been eight people, split into two teams and I’ve been the only one who has played before. Altough it had rained the day before, yesterday the weather was fine and the places where completely dried up. There were two fields, a smaller 35x30m and a larger one with 70x30m. We started with some matches on the small one, which had some obstacles and covers, and switched to the greater one with forts and trenches later on.

    In the end all of us were a bit exhausted but everyone was happy and would join another event if we manage to organize one in the future.

    Bunny also wanted to join us but had to skip this chance when during equipping with the safety masks we found none which fit him. Some more impressions from the event are visible on my flickr-set.

    Afterwards I went to a barbecue where I impressed to cook a bit when I emptied my plate which he filled with three chops, two large fried sausages, and a pile of chewabchichis. Added some bread, some salad and a few drinks and this made a nice conclusion of the day.


  • Term (almost) over

    Past Monday finally I handed in one of my term papers for the last term. It has been quite a bit of work but it’s now over at last. Just in time, so that I can see how the good weather is over and my plans to do some cycling will probably vanish in thin air.

    Just one paper left for university to correct if I find the time. Its not mandatory, as the mark in that subject is already a positive one but it could be much better if I didn’t disagree with the professor on some topics in that paper. He gives much more importance on form of the paper than on actual content. For example I gave the different work-packages short-names similar to their project phase, but the professor criticized it being not aligned to the "standard"… This standard was mentioned during the course but never stated as the definitive guideline. Oh well…

  • A new companion

    Almost forgot. Two days ago I met a small friend and he decided to stay with me. I think he likes my mobile computer bag, what do you think? 🙂

    One of the first things this evening he wanted to do is watching a
    sundown on my balcony. I think, he’ll stay 🙂 Maybe he’ll also pay a visit to this blog from
    time to time…


  • Vacation roundup

    As today is my last day of my current vacation block, here is a quick overview of it.

    Most of the time I spent on the term papers which so far needed much more time as I’d initially expected. It’s not that I’m unable to understand it but rather that I’m unable to formulate the knowledge in my head in proper sentences which I could write down.

    Nevertheless I found some time to also do some different activities altough not as much as I would have appreciated. I’ve been to the cinema a few times, I dug out my bicycle from the depths of our storerooms, I’ve paid the city of Linz a visit and also the Ars Electronica Center there which runs science and art exhibitions.

    A bit of minor work here and there and that’s been the roundup of my vacation. Nothing too exciting this time as the university stuff takes up a lot of time even in the holidays…

  • Fixing Cisco VPN Client BSOD on Windows XP

    Recently, after working some time without any problems, my Cisco VPN Client started again to cause bluescreens when connecting to a VPN server. This hiccup was already present when my mobile computer was brand new and I tried a lot of stuff but in the end the problem went away when I had to re-setup my computer for another reason.

    But now it had reappeared. The only thing I could think of which could have caused this was that I had installed a lot of updates for my HP mobile workstation and a lot of Windows updates.

    I then started again into the world wide web to find a solution while hoping that someone found a solution to my problem in the meantime. And indeed, this posting solved my problem. It works by disabling the (hidden) vsdatant device in the device manager.

    1. open the device manager
    2. select devices by connection from the view menu
    3. select show hidden devices, again from the view menu
    4. now in the devices list scroll down to the bottom until you find the vsdatant entry
    5. right-click and disable the device
    6. you’ll be presented with a reboot-request, which you should accept before trying to connect to a VPN now

    I do not know exactly what this vsdatant device is for but from hints in the internet it seems to be connected to the TrueVector (or stateful) firewall, which is included in the Cisco VPN Client. As I do not need this (or know someone who does) and furthermore found no articles in the net indicating further problems with a deactivated vsdatant I consider the case solved for me now.