Archive for August, 2009

This presentation of Natasha Tsakos is very well prepared and entertaining. She shows us a new form of theater, coupled with art and technology. My favorite paragraph is “Being human is an artform”. Watch for your self.

Recently at a conference where I was presenting our Open Source Digital Asset Management, I realized that our company was the only one, out of 60 other companies, that was using a Open Source License. Usually, in this surrounding I get asked more then once how Open Source works for us and primary if we make money from it, in short if we are successful.

Success by its definition can be manifold. For some success means to have a lot of money, for others it is adoration and for some world domination. While the decision to publish a software under a Open Source license is not a plan for world domination (thought, open source is on the way to dominate the world…) it might as well be a huge decision for a company to do so.

In my previous company, we developed and marketed our own propriety system. We developed it by ourselves and we also took care of the marketing. That not only meant that we had the overhead of developing the system, but what put more pressure on us, to gain more and more customers and to get them to pay for a license. We did the usual “game” that we charged for each update, which put another pressure on us, that we had to bring a update at least 2 times a year in order to justify the support subscription and the “high” update cost.

Actually, there was nothing bad about this philosophy of software distribution as there are still many companies that still do so. But it just wasn’t what I believed in in the long run and not what I think the “software” world will be heading to. That was 4 years ago.

So, for me the decision to base my next company on a Open Source license was obvious and a natural continuation of my belief system and what I think will be the most successful and lean way to build a company in these days. Since, one should never involve in a project of building a company that you only believe in part, you should not get involved at all. Remember; a 99% Yes, is still a 100% No.

In that sense, going open source was both a economical and a social decision. But don’t get it wrong, to be a open source company does not mean that there is no money involved (Just look at how much the Mozilla foundation or RedHat makes in a year), it is merely another business model. Actually for a software company, it shifts the income from a license cost to a service oriented cost. Previously, you could have calculated your income on the quantity of sold licenses, now you have to count on your service level.

Given the fact, that a open source company is (sometimes) depending of the income from support subscriptions, it will (hopefully) have a outstanding support nature to its customers. Furthermore, the engineering level will obviously be more exposed to the world. But what will decide your ultimate success of your open source project is the community building.

Community building by itself is a huge subject (Amazon finds over 600 books when searching for “Online Community Building”). While I’m probably not a “guru” on the subject matter, I personally think of a couple of Community building efforts you can do immediately without reading any book;

  • Find a way for your community to gather together (places like GetSatisfaction are perfect)
  • Reply to each question or problem in the shortest time possible, be it in a online forum or by eMail (believe me, everybody is satisfied with a quick answer)
  • Try to involve your community
  • Honor even the littlest help for community members (say a member answers to another users questions, thank him/her for doing so. If someone contributes to your code, mention them in a blog post)

In order to achieve this all, you should have a person in your company that really loves to engage with the community and sets the customers needs at first priority. This can not be just a part time job, as it is the how people will conceive your company and might judge on getting further involved with your system or not.

In the end you might now ask how “successful” Razuna has been since it’s initial release almost a year ago? In short, Razuna has been taken up very well. We have had over 20000 downloads of Razuna so far. Many people have come forward, in order to help us in spreading and coding Razuna. As a example, we have one Community member (Bruce Lane) from France, who translated Razuna and moreover even developed a complete desktop application in order to interface with Razuna. And yes, we do have customers who are paying for support subscriptions. Mind you, all without any marketing money from our side so far.

I hope this little excursion into my reason to go open source enlightened your day. Whatever will be your decision and argument, there is one thing that is for certain. Open Source software will continue to be a huge impact in the world. It’s time to join the ride.

The recent eMail von Jason Calacanis and his blog post entitled “The Case against Apple in five Parts” brought a little up stir in the Apple world. The recent reply came from Marco.  You can read their back and forth on Jason’s take on Apple and make up your own mind. I have read all the blog posts so far, but I have been missing one simple thing!

The one single thing that makes me use Apple products is that they simply work!

I have used Windows, Linux and MacOS X over the last couple of years. Hell, this blog post is even being typed on a Thinkpad with Windows XP, but nothing has ever been an hassle free experience then with using Apple products, be it hardware or software.

When has there ever been a more relaxed operating system update then with MacOS X? All you have to do is to pop in your DVD, run the update and know for sure that it will reboot safely with the new update. Moreover, with the applications itself you don’t need to run trough a “painful” installations with minimum five “OK” clicks (I know you Windows guys don’t see this as a problem because you are used to!), on MacOS X you simply drag and drop an application to the place you want. Nothing else!

iPhone is another topic that people like to argue about. Sure, the hardware is behind the current standard. Bluetooth does not work with cars and you might have to reboot your iPhone sometimes. But, have you ever used a Windows Mobile and did you every try to sync it with your Windows OS? I hate to repeat myself, but with the iPhone all I have to do is to hook it up to my Mac, sync it with iTunes (including Music, Photos, Videos, etc.) it even takes over my eMail settings and my eMail and Calendar just works. Symbian based phones and Windows Mobile ones require you to spend at least an hour fiddling with setting and try and error attempts. I don’t think I have to start arguing about the usability of the iPhone. Apple has done something, that for many years no one could. It brought a phone that simply works and is easy to use.

Remember the “plug und play” wording? Well, what is a “myth” in the Windows and Linux world is a fact with MacOS X. You got a new digital camera? All you do is connect it and the system recognizes it, iPhoto opens and there you got your photos. No hunting for a updated driver , no installation, no reboot needed, nothing else, just plug it in and start working. Isn’t that worth the little more money you got to pay?

Regarding the price, I do have to say that a Dell Lattitude E6500 with the same configuration as an Apple MacBook Pro 15″ will cost you about the same (at least in Switzerland). Price is not everything. And when it comes down to usability you save a lot more then with the initial cost when you use something that simply just works.

For me, and I’m sure for many other people, it is the Apple eco system that saves us money in the long run because it just works!

Oracle Database 11g brings lot of new enhancements, especially in the Memory management. Oracle 11g allows you to allocate one chunk of memory, which Oracle uses to dynamically manage both the SGA and PGA.

Automatic memory management is configured using two new initialization parameters:

  • MEMORY_TARGET: The amount of shared memory available for Oracle to use when dynamically controlling the SGA and PGA. This parameter is dynamic, so the total amount of memory available to Oracle can be increased or decreased, provided it does not exceed the [code]]czoxNzpcIk1FTU9SWV9NQVhfVEFSR0VUXCI7e1smKiZdfQ==[[/code] limit. The default value is “0″.
  • MEMORY_MAX_TARGET: This defines the maximum size the [code]]czoxMzpcIk1FTU9SWV9UQVJHRVRcIjt7WyYqJl19[[/code] can be increased to without an instance restart. If the [code]]czoxNzpcIk1FTU9SWV9NQVhfVEFSR0VUXCI7e1smKiZdfQ==[[/code] is not specified, it defaults to [code]]czoxMzpcIk1FTU9SWV9UQVJHRVRcIjt7WyYqJl19[[/code] setting.

If you are using UNIX/Linux, before you consider using AMM you should check the current size of your shared memory file system. On Linux you do this by issuing the following command.

df -k /dev/shm
Filesystem           1K-blocks      Used Available Use% Mounted on
tmpfs                 3072000   1276532   1795468  42% /dev/shm

To adjust the shared memory file system size issue the following commands, specifying the required size of shared memory. First unmount the current mounted volume and set the new one (in this example we set it to 3GB).

umount tmpfs
mount -t tmpfs shmfs -o size=1200m /dev/shm

Now, the above commands will only last until the next reboot. If you want to make this permanent you need to add the adjustment to the fstab file. To do this just edit the file /etc/fstab and add the line:

none                    /dev/shm                tmpfs   size=3000m        0 0

This is by far the easiest way to manage memory in Oracle Database 11g.

My favorite scripting language is CFML, or as some know it as ColdFusion. I like it because it is very very powerful, easy to use and can do just about everything your xyz language can do.

For many years, ColdFusion was a closed sourced system, where the former Macromedia and now Adobe got the copyright of the code. Luckily, this has changed when OpenBlueDragon (OpenBD) came to play with the first open source CFML application server. So, now the CFML world got a very nice open source CFML language and server. Our very own open source Digital Asset Management – Razuna – runs on OpenBD as well and comes bundled with it.

Anyhow, the reason of this blog post is not CFML, but how to set the correct Java JRE environment under MacOS X. Then why did I mention CFML and OpenBD in the first place, you might ask?

Well, today I downloaded the latest version of OpenBD which runs now on Java 1.6 and is 64 bit. But when I tried to start our server (Tomcat) with the new OpenBD jar I got the following error messages in the log.

at org.apache.catalina.startup.
Bootstrap.main(Bootstrap.java:413) Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class com.naryx.tagfusion.cfm.application.cfHttpSessionListener)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal (WebappClassLoader.java:1854)

As we can see from the “Bad version number…” in the above line there must be some misconfiguration of the Java runtime going on. But wait, does my execution of “java -version” not state that I’m running the latest Java version? Reading from those lines, you could think so.

java version “1.6.0_13″
Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211)
Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02-83, mixed mode)

Apparently when one looks into the Java paths of MacOS X we see that the current “JDK” is set to 1.5 and not 1.6. Judging from this, I tend to think that Apple is not setting the JDK right for Java applications. You might say, well then just set it in the “Java Preferences”, right? Wrong, I already did that as the screen below shows).

Java Preferences

So, in order to solve this, I set the correct JRE_HOME variable in my .profile in order for all Java applications to pick up the current JRE. To do that, you simple edit your .profile (with vi ~/.profile) and add the following lines to it:

JRE_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
export JRE_HOME

Save it, open a new terminal window (or close and open one) and start Tomcat. Now Tomcat is picking up the new JRE path and Java application, in my case OpenBD, that depend on the Java 1.6 JRE version will run.