I’m so fed up!

Half the weekend I am trying now to convert an hg repository into a svn repository. It seems to be the direction no one else needs, because hg (or git) are soo much better and greater that no one needs svn anymore and no one needs to convert to svn. *Not a single one* of the tools out there are working. Any my hg repository really is not that complex. The tools break at tasks as difficult as failing to delete a file because it does not exist. You cannot be serious!

Early this week I was participating at the workshop Molecular Modeling and Simulation. I spent these two days with physicists, chemists and engineering scientists. Being a computer scientist and visualization researcher I felt a bit exotic there, but I found it very exciting to see the current state of the art of these research fields. And, after giving my presentation I got very positive feedback that my current work was also very interesting for the audience.

Visualization research is great. You can do so many things, and you should do so many things. The only problem is that often huge technical challenges must be overcome before you can work on the actual research question. A lot of effort, work and time, is thus infested in parts of the software, which seem not to do anything good for you scientific career. This is kind of frustrating sometimes.

You can accuse me (righly) to be a Windows fanboy. Why not. I like that OS and I am realy more and more convinced of Windows 8 the more time I am using it. Like this week again:

Each software is aging. (Somehow) This is a fact. Whether this is bit-rot or if software was never ment to be used, I don’t know. But, OS’ are no exception. At the times of Windows 95 it was pretty normal to re-install your system bi-monthly. And, before the first Linux fanboy now cries: Linux is not better in that respect. We use Ubuntu at work. Just by “not using” the computer at all, hardware configuration settings change and break themself. Great. However: this is not a flame against Linux. In this aspect all systems are stupid.

Early this week I experienced a massiv drop in IO performance on my Windows 8! After klicking a file I needed to wait several seconds before the program, which was already running, noticed that something happend. I never found out who to blame. (The last thing I had installed was an Update for Java.) I even was afraid it could be signs of a coming hardware failure. However, based on my experience: It is always the software to blame.

So, I tried out the new Windows 8 feature “refresh your PC” (re-install lite). I am totaly excited. Now the computer flys again. Ok, I have to reinstall my programs and I forgot to back up the settings of two of them. However, my system is clean now. I like it.

This weekend I took some work home with me. I am working on an implementation of a code library for research prototypes. However, during the week I can hardly make any progress. There to many different tasks for me to do (e-mails, meetings, funding proposals, reports, etc.).

Yesterday, I literally took the existing source code apart and started rewriting the internals. Why is it, that you always need to write 60% of a program, before you understand how to do it correctly? Year, I know the software engineering drill. I am an experienced software engineer myself and I know how to develop good code. But nevertheless it does not work. At least it does not work if the program is to complex, or gets to complex because I want to be ready for(already known) future uses. It feels like a special version of Hofstadter’s law: A software design has always problems, even if you consider all problems you know. It really would be a lot easier if software could stink. Then you would know when something goes into the wrong direction.

The development of TheLib continues.

One thing I learned during my work as developer of scientific software is that large software projects at universities are extreamly difficult to manage. Mainly because the people involved are “scientists” and no “developers”. The experience, the processes, and the structures to reach common goals (compromises) are mostly missing. At the same time, many problems of todays sciences cannot be solved without large and complex software. Thus, most software created in academia is pratically not usable. This is a fact I can not accept.

The approach of TheLib is based on the idea of “divide an conquer”. Instead of developing a huge software which can do everything, we concentrate on a clean development of smaller pieces of the software. This way, we can increaste the usablility, the maintainability and thus the re-usability of these components. The TheLib provides fundamental base classes. I see this project as “extension” to existing projects like the STL or BOOST. It is not a competitor and it does not aim to be one. Therefore, we pay close attantion to reach very high interoperability with these projects.

Even so we reduced the scope of the TheLib to a moderate minimum, it still is a lot to do. Whatever. This is how it should be. If it would be easy, anyone could do it. ;-)

My Harddisk became unpleasently full, therefore I bought an additional one this week and installed in my computer. I noticed again how reluctantly I am tinkerin with my computer’s hardware. Whatever.

My computer uses the ASUS P8Z77-V mainboard, which I can only tell good things about. However, when I inserted the new harddisk and booted my Windows, this harddisk appeard at the tray icon for removable drives. The nonsense.

After some googling I lerned that it is the ASMedia controller, which controls two of the eight SATA ports. And for this controler, the corresponding bios option for drive removal is missing. There are some solutions in the net, e.g. injecting registry hacks at boot time using the task scheduler. What I did not find on the web, but what I found for myself is the “real solution”: simply set the option at the controller:

Device Manager > IDE ATA/ATAPI-Controller > Asmedia 106x SATA Controller > Properties > Policies

What I don’t like, is that this solution was not the first hit at Google. …

In our workgroup we are currently discussing the presentation of our research and the definition of topics for student theses (e.g. for bachelor, master, or diploma). Therefore, each member of our workgroup lists his/hers personal research interests.

Here are mine:

  • Scientific visualization
    • No volume rendering and no flow visualization (there are enough other people doing that)
    • Visualization of particle-based data, e.g. from molecular dynamics (continuation of my Ph.D. thesis, becaue there are enough open questions left)
    • Efficient rendering and high visual quality
    • Development of new abstract visual methophors to aid the understanding of the data
  • Visualization of dynamic data
    • Not restricted to data from classical scientific visualization, but also for abstract data known from information visualization
    • Even data from high dimensional spaces (mostly spaces with “geometric” properties, e.g. physical phase spaces)
    • Visual analysis of dynamic properties through static representations
  • Softwaren engineering for visualization research prototypes
    • For publications almost every time only proof-of-concept prototypes are written; quick and dirty, which makes is almost impossible to maintain them
    • For large scientific projects often larger software is required
    • Large software in the academia almost always failes. Why?

Of course, I am also interested in a lot of other things, practically almost everything. But one has to focus, right. Well, these three topics are such wide, that it should not be called a focus. Whatever. I call it that way. This is my research focus.

Today, I want to write about the project I am working in: the Junior Research Group VICCI

VICCI stands for “Visual and Interactive Cyber-physical systems Control and Integration”.

Core topic are the Cyber-Physcial Systems (short: CPS). Ask ten people what CPS are and you will get ten answers. It is just not clear yet. Here is my opinion:

CPS are “smart”, (semi-)autonome systems (networks) of elements (embedded systems) which have both, a real-world object (e.g. sensors or actuators) as well as a virtuell object (image of data in software). The interconnected elements together form a system capable of optimizing and adapting itself, supporting or performing processes in the real world.

Well, this description is not really clear, is it. Maybe like this: CPS are “automation 3.0”. While classical automation only uses simple control loops or are just remote controls, CPS can optimize and adapt their control mechanisms by themselves. Typical buzzwords are “Smart Factory”, “Smart Grid”, “Smart Office”, “Smart Home”, etc. It is always the idea that the surrounding “thinks along”.

In the VICCI project we follow the scenario of a “smart home”, an apartment which is thinking along and which supports it’s residents. For example, simple transportation or search tasks can be handled. Our CPS consist of sensors and actuators. The sensors are placed in a computer lab which will represent our model-apartment. We have sensores for temperature, light, humidity, cameras, etc. As actuators we have robots which are exemplary for service robots. You remember I, Robot. We (scientists) are working on it ;-)

My field of work with our group is (in addition to coordination and administrative tasks) the visualization of CPS, more precisely, the internal state of the CPS. I create visualizations for analyzing: “What does the CPS think?” First results exist, but are not published yet. As soon as they are, I will write about them here.

The Windows Powershell is quite nice. Of course, now all the Linux users start bitching around, that they always has something like this and that it is nothing special. And no one claims otherwise. But still, the PowerShell is nice and I enjoy it. :-)

Like today: I needed a simple hex dump of a file:

PS >  $str = ""; $cnt = 0; get-content -encoding byte C:\pfad\zur\Datei.txt | foreach-object { $str += (" {0:x2}" -f $_); if ($cnt++ -eq 7) { $cnt = 0; $str += "`n"; } }; write-host $str

It’s elegance is limited, that I will admit, however, I does it’s job. And, somehow, it is quite nice …