Sep
20
2011

Apple Notebooks of the Future: Putting Things Toghether

If you’d always wanted to know what future notebooks may look like, this article is for you. It is mainly an article that reflects my experience with Mac notebooks and collected news from everywhere, such as Apple keynotes and rumours. I think in 20 years people would laugh about how cumbersome things must have been done in the past from the viewpoint of 20 years from now. This becomes clear when we look at the progress the computer industry went through the past 20 years. And it seems to progress even faster. Just take a look at the mobile phone development. Five years ago almost nobody knew what a touch screen was. So, the latest developments are only the beginning of a long journey into the information society.

In this article I want to talk about what an Apple Notebook may look like 10 years from now. I picked Apple because Apple has always been a pioneer in the introduction of new technologies in the past. Thus, I assume this will go on for at least for the next ten years, even when Steve Jobs is not CEO anymore. But I think he has left enough potential in the pipeline for the next 10 years.

Back to notebooks. What will certainly be changed is the weight of the devices. Carrying around a 3kg Notebook is not a very healthy activity for everyone. In the last years I’ve been doing business trips quite often. From this experience I know that walking around with a trolley and an laptop that has almost the same weight really is breathtaking. I think we would always need some hardware that we carry around. But this piece of hardware must weigh less than 10% of the weight of an average laptop of today.

Also the input devices of these notebooks must change. The biggest disadvantage that current touch based devices have is that the touch screen of these devices does not give feedback to the fingers when pressing a button, for example. I think in the next few years we will see device that have two touch screens, one in front and one where the keyboard is on today’s notebooks. Both touch screens will be haptic feedback enabled. One application of the lower touch screen would be here to display a keyboard and provide real feedback when typing. It depends then on the kind of application that currently running what will be displayed on the lower touch screen. The user may switch between the keyboard and a big multi-touch surface in order to use the mouse pointer, or the surface is split and and two different sets of buttons are displayed on with sides.

The operating systems for such devices will also go through a transition. Apples iOS and OS X will eventually merge when mobile devices become faster and faster. Apple recently has presented the magic track pad that is one indicator for the movement into a multi-touch world for OS X. Other indicators are the multi-touch gestures that are now supported in OS X Lion and the launch Pad application that shows a full screen view of all installed apps, just like in iOS. This transition has started with OS X Lion and it will go on with the next releases of OS X and iOS.

Another important aspect of the merge of the two operating systems is that doing things with them must be easier. In iOS the file system is hidden from the user. All files that belong to an application can be opened within the application. Abstracting the file system away is the first step towards a more simple interaction with computers for ordinary users. Professionals will still have access to the underlying file system but that will not be needed for everyday work anymore.

In ten years also the cloud would be a part of everyday life. Computers may be booted from the cloud. They can at least be reinstalled from the cloud like it is already possible with OS X Lion. Everything that we work on may stored in the cloud and easily be shared with others for concurrent work.

Passwords are another obstacle for people working with computers. It is not easy for humans to remember long lines of disconnected letters and numbers. Instead, humans are much better in remembering images or melodies. The human body also has many points where it can be distinguished from others, like the finger print that can be used to authenticate. It is also possible that one may draw little images in order to authenticate oneself to work with a computer.

References: 

In the following I have a few references for you that I put together to form the image of future notebooks that I just presented to you:

In one of his recent keynotes, Steve Jobs proclaimed the new MacBook Air as the future of notebooks. The MacBook Air stands for lightness and thinness:

http://www.youtube.com/watch?v=uzZBNoXYjdE

Apple apparently is working on touch screens with tactile feedback:

http://www.geek.com/articles/apple/apple-patents-tactile-feedback-on-a-touchscreen-2011046/

In OS X Lion Apple has introduced many features already present in the iPhone or iPad:

http://www.apple.com/macosx/

Sep
20
2011

Presentation at CloudConf Munich

I will give a talk about compliance in cloud computing at the CloudConf in Munich, Germany this November.

 

http://cloudconf.de/vortraege/articles/compliance-in-the-cloud.html

Sep
15
2011

Best Misheard Lyrics

This is something funny,

have you ever heard of the “Misheard Lyrics” collection by coldmirror on youtube? If not, you have to take a look, even if you don’t like metal music ;-)

http://www.youtube.com/user/coldmirror

 

I think two of the best videos from this collection are:

http://www.youtube.com/watch?v=cjr0bIsxLtE

and

http://www.youtube.com/watch?v=d69be8NjyiU

 

Have fun :-)

Sep
10
2011

The Pomodoro Technique Revisited

I am a big fan of the pomodoro time management technique. If you’re not familiar with it please follow this link (will be opened in a new window).  The pomodoro technique is based on three principles. Fixed working periods, a kitchen timer to time the work periods and the pauses in between, and two task lists the activity inventory and the todo today list.

I am practicing the pomodoro technique for quite a long time now. It really helped me many times to keep focus on my current task but sometimes it didn’t feel too good to end a 25 minute time slot in the middle of a period of strong concentration, for example. And it takes some time to get to full concentration even after a 5 minute break.  Also, one premise of the pomodoro technique seems to be that work can be divided into 25 minutes slots where after that slot is finished a measurable result is present or not. But what about creative work? You cannot estimate how much work will be done in 25 minutes. So, here are my proposals to extend the pomodoro technique for more creative purposes. What do you think?:

  1. At the end of a pomodoro, you should be allowed to keep on working on a creative task if you are in a flow. With every 5 minutes you extend the current pomodoro another minute should be added to the pause afterwards.
  2. When you finished a task too early you should be allowed to do something different within the current pomodoro. This may soften the rules of the original pomodoro technique, but as I said above, it is very hard when you do something creative to estimate the exact work that kan be done within 25 minutes.
  3. A pomodoro should not count as “void” when you are distracted by a colleague with a question, for example. It is much more important to learn new things at any time than to end a pomodoro in a proper way.

 

Jul
17
2011

Airdrop for Mobile Devices?

Recently Apple has issued a patent application describing the act of transfering data from one mobile device to another. The transfer is initiated by a physical gesture.

The next natural step would be to combine the new Air Drop functionality being introduced in OS X Lion with this patent application. With air drop it is possible to transfer data between two Macs even if they are not connected to the same network. This is done using the zero configuration internet protocol called bonjour.

Jul
1
2011

Google+ (Plus) is the Right Way to a Better Social Networking Experience?

A few days ago Google launched a direct competitor to Facebook, Google+. Unfortunately, at the time I am writing this, Google+ is not yes available to the public. However curious people can get a first insight of the features of Google+ at https://plus.google.com/.

The key features that make the difference to Facebook are:

  • Clean interface: Google+ comes with a tidy interface as we know it from various other Google products. This will become a major advantage for Google+ in the future because Facebook, believe it or not, has a cluttered interface that in most cases is full of different areas providing loads of information overwhelming most of the users. From my own experience I know that may brain always goes in ignore mode when I am surfing on Facebook. My mind needs to ignore and suppress all the information that is trying to get into my brain in order to concentrate on the important things, my friends.
  • Another feature where Google+ will outperform Facebook is circles. Every circle in Google+ represents a set of people you are in touch with. The great thing about cycles is that you always have full control over your posts. A post in a certain cycle can only be seen by people that you have put in that cycle. Thus, you can always see what each cycle knows about you. This is a good tool when you want to share the photos of the last party only with a certain set of people. This is also possible in Facebook with groups. The downside of Facebook here is that all posts are shown in a linear way in your profile. It is not easily apparent which persons know what about your activities.
  • Hangouts: This is a feature I haven’t seen in any social community, yet. When I first read about this feature, I immediately was sure that this is a feature I always wanted. In Google+ you can hang out with your friends just as you would in the real life. You can chat with them using web cams and watch youtube videos, for example.
  • Future work: Google must come up with more advanced location based services. From my point of view this is the future of social networks. Examples for location based services I want to use in the future are:
    • Location based notifications: I want to be notified when I am at a certain place
    • I want to be notified when a friend is near me
    • When I enter a bar I want to see people with matching interests. And I want a possibility to get in contact with them
Apr
24
2011

Emacs Versus Eclipse

I am always on the run to be even more productive that I am right now. What has been in my mind for quite some time now is the combination of the best Konzepts of emacs and eclipse. Recently I found out that in the eclipse preferences there is the option to select emacs key bindings for any editor. That is really a step forward in achieving my goal. But what about the kill ring and other more advanced features of emacs? Is it possible to get them with eclipse, too? 

The solution is the Emacs+ plugin. You can find it here: http://www.mulgasoft.com/emacsplus/faq
The plugin goes beyond ordinary key bindings. It for example also provides emacs kill ring behavior in eclipse.

Jan
25
2011

Eclipse BPEL Designer Workarounds

After you have read this article you will be better prepared for the development with the eclipse BPEL designer. I assume you have read the documentation of the eclipse BPEL designer and you are familiar with at least the basic concepts of BPEL.

Wasting way too much time in learning how to use the eclipse BPEL designer (download it here: http://www.eclipse.org/bpel/) to design simple BPEL processes, I would like to share my experiences to prevent others from suffering too much.

The first question that must come into mind when reading these first lines of the introduction must be: “Why eclipse bpel designer, if there even is a blog post on workarounds?”. This question is easy to answer. I work at a university. We want to work with open source products so that we can show the world what we made. The main products we work with is Apache ODE to execute BPEL processes and the eclipse BPEL designer to design them.
I would like to stress that I appreciate the work of the developers of the eclipse BPEL designer. They have done a good job in providing an open source design workbench that is becoming better ant better with every release.
What I want to show in this blog entry are best practices that have emerged during my work with the eclipse BPEL designer. I do not always know why many things work, but what I know from my experience is that they work. Let us just jump in and start with general tips.
General Tips
The first rule you should always keep in mind is: Use graphical editors.
As some of you may know, BPEL processes are edited in XML. XML is very hard to edit and understand when the XML file you want to edit doesn’t fit in one screen anymore. BPEL processes tend to become very large and so are the WSDL files that come along with a BPEL process. So, the first thing to do before you start creating a BPEL process with the eclipse BPEL designer should be to make yourself clear that editing plain XML really is a mess. Everything that needs to be done to create a running BPEL process can be done in a graphical way with the eclipse BPEL designer.
Sometimes you will find yourself tempted to switch to the source view of a BPEL process to just change a tiny little bit of code. Do not take that bait. Try to figure out how to do it in a graphical way.
Another point why you should graphically create BPEL processes is that you could easily introduce faults in the source representation of your BPEL process. These faults can be very hard to find. It is for example very hard to find cyclic dependencies between imported XSD files. XML is not easy to read, so introducing syntactical faults is really easy when you try to edit the XML source.
When you find yourself struggling with such a problem. Or you did not find the fault within 2 hours or so. I would recommend to start over again and build the BPEL process from the scratch again. In most cases you save lots of time when you do so. This certainly depends on the size of your BPEL process. But I think you will not design processes that are so big that you can ignore this advice.
Sometimes the eclipse BPEL designer shows errors where no errors are. To check if there are real errors right click on the modelling canvas and select “validate”. This updates the error marks of the eclipse BPEL designer.Follow Kent Becks advice to change one thing at a time and test afterwards. Frequent use of a versioning system like subversion will save you lots of time. You should commit running version of your BPEL process immediately. So that you can come back to that version if you screwed everything in the next second.

Design Tips
When you start editing a new BPEL process, make sure that you have the interface WSDL for the new BPEL process and all other WSDLs of services the new BPEL process should invoke. This makes the development much smoother and easier. There are three critical modifications you can do to a BPEL process which can cost you hours of struggling around with XML if you do not do it right the first time. The first one is the insertion of an invoke activity, the second one is the creation of an initial value for a variable, and the third one is the development of XPath expressions. In the following I will cover all of these critical modifications.

Figure 1: Assign Partner Role

The insertion of an invoke activity must be done following the steps shown below:

  1. Have the WSDL of the service to be invoked by the invoke activity already present in the directory of the BPEL process. This WSDL should not have any validation errors.
  2. Create the partnerlink to be used by the invoke activity before the invoke activity is inserted into the process. Make sure that you select one partner role an tick the box labeled “Initialize Role” (see Figure 1).
  3. Insert the invoke activity into the BPEL process.
  4. Use the Quick Pick pane in the properties window (see Figure 2) of the BPEL designer to select the right partnerlink and operation that should be invoked by the new invoke activity. This automatically fills all missing information in the operation field and creates request and response variables.
  5. Insert an assign activity before the new invoke activity and initialize the new request variable. How to initialize a variable the easy way is shown below.
Figure 2: Quick Pick

 

In order to make a variable usable an initializer must first be assigned to it. If you know how, this is a quite easy task with the eclipse BPEL designer. Follow the steps below: 

  1. Click on the assign activity which you want to use to assign a value to a variable and open the properties pane (see Figure 3).
  2. Click on “New” in the properties pane and click on the variable you want to assign a value to in the right pane (the “to” pane).
  3. Click somewhere on the modelling canvas. This brings up a dialog asking if an initializer should be generated for that variable. We now click on “yes” and POW the initializer is inserted in the assign activity.
Sometimes you want to access the value of a variable where the structure is not known at design time. This might be a variable which is based on an XML schema containing “any” schema elements. Here, XPath expressions are used to select nodes within one variable in an assign activity and copy them to another variable. To select arbitrary nodes within a variable the XPath function “local-name()” is very helpful. This is an example of an XPath expression I used in a BPEL process:$input.payload/tns:etl//*[local-name()="EPR"]

These tips should help you to avoid most of the problems in creating BPEL processes with the eclipse BPEL designer.
Dec
6
2009

How to automatically change the Java version for development in Windows systems

Since I have a few Java programming projects that need different Java versions I was thinking about how could the current Java version changed automatically in windows systems.

Options I excluded:

 

  • The explicit use of a specific Java compiler version for example in an Apache ANT script. In ANT scripts it is possible to set the compiler that should be used to compile the project. This is not an option because in projects with more than one participant, it is a favourable to use as generic compiler settings as possible.
  • Another point for not using specific compiler settings is out of compatibility reasons. Source files compiled with Java 1.6 or higher may not run on older java runtime environments like Java 1.4.


Out of these reasons I have been searching for a way to easily change environments variables under Windows systems in order to quickly change the Java environment that fits for the current Java project I wanted to work with.

I found the command line program “setx” that was introduced in Windows Server 2003 and Windows Vista. With this program it is possible to set environment variables not only for the current command line session but for all future sessions. Along with the well known “set” program I was able to build some batch files that do the job of quickly changing the Java runtime environment.

You just have to replace my file paths the ones fitting your environments.

I had to use the temporaryPATH variable because the setx command would not work with one variable like PATH twice in one statement.

Put the following code in a *.bat file and run it as an administrator. This is necessary because the setx program would not work correctly otherwise:
set
temporaryPATH=%PATH:C:\Program Files (x86)\Java\jdk1.5.0_22\bin=C:\Program Files (x86)\Java\jdk1.6.0_17\bin%
setx PATH “%temporaryPATH%” /M
setx JAVA_HOME “C:\Program Files (x86)\Java\jdk1.6.0_17″