Monthly Archives: December 2006

Year End – Goodbye 2006

How did it get to be the end of 2006 so fast? I’m sure there is a relevant theory that says that your sense of time is directly related to your age. Given that no-one is getting younger, I’m sure everyone understands. It must be some kind of hope that time will slow down when things get good. My wife reminded me the other day that if time is going slow, then most likely there is some kind of suffering involved. So, I guess I’m glad time is not going slow.

I’ve been reading a book called “About Time” by Paul Davies. I’ve read it before but it seems that either I forgot the content or didn’t get it the first time. Its fascinating to hear from a scientist point of view what the nature of time is. There are two very different camps between scientists and holistic about what time is. Surprisingly, they seem to reaching some of the same conclusions. Not all of them of course.

The point of this blog, if there is indeed a point, is to sum up the year from my perspective. Work-wise, its been all about working on PortICA. Its been an interesting journey that continues into 2007. There has been a lot more focus on the new DDI (Dynamic Desktop Initiative) inside Citrix with the upcoming Trinity project.

The progress is going well and within the next few months the initial test phase will start. I’m being cautious not to commit to any dates. However, it is obvious that Citrix is fully committed to doing PortICA and Trinity.

There is a few projects that are not fairing so well inside Citrix. I won’t name any names in the hopes that such projects will get a second chance through some generous judgment or other friendly miracle. Some projects are obviously more hopeful of beginning than others.

The big question at the end of 2006 is “Are we a billion dollar company?”. I don’t know any figures. The codename for the three year financial plan was “X-1″ and was to give reference to the original X-1 project to break the sound barrier. I have been conditioned to avoid anything that even smells like financial disclosure so I’m not going to give anything away!

We caught a number of companies in our acquisition net this year. Reflectant, Orbital Data, and Ardence are our most recent additions. Each company was focused on different areas that hopefully will extend the market for Citrix. We certainly are not a one product company anymore.

So, this brings us to the end of this post. As I sit here on a summer’s evening and think about 2006, I look forward to the work next year on PortICA. I also look forward to doing more blogs :)

I will leave you with best wishes for 2007.

Happy New Year!


Free counters

Files, Folders, and Folly

The concept of files has been around for quite some time. I just tried to find out how old the idea was but did not find a date. Instead, I found a very exciting entry at Wikipedia about file folders. If you feel you need to know more about how many different kinds of file folders there are, I encourage you to visit.

What I really want to write about is how we store information. The original IBM PC stored its information on a floppy disk with essentially one “folder”. In this folder, each item, called a file, had a name. This name was restricted to a naming scheme devised to give some meaning without using too much space. For most of you, that means being stored in FAT format. The reason I’m going down memory lane about the IBM PC is that this initial machine set the tone for all future work done on its descendants. Through the years, a number of features have been added to this model but basically it was all derived to be compatible with the existing machines.

You can have your folders be on a network share. You can have your folders follow you around based on your profile. You can have your folders even potentially be coming from the Internet. Your files and folders are always going to need to be somewhere so you might as well accept the need to expand what folders can do.

Here is where it gets a bit more interesting. It is great to be able to have folders that go with you. The user profile folders is a good idea but it really does not address the need to be able to take all your folders with you. Okay, I’ll admit that I’m not a portable file folder expert. I will also admit that I see most people get really lost when it comes to keeping track of their data on the go.

Most people accept the drudgery of taking laptops with them to make sure their data is there right next to them. Anyone that travels can see the frustration of having to go through security with these heavy annoying limited devices. I can attest to this level of frustration with having two hard drives fail over the period of a few months even though I treated the machine like it was made of china. The only idea of how it failed came from how it would get bumped around on the conveyor belt at the security checkpoint. Devoid of its usual protective casing, it would bounce around like a bit of butter on a hot pan. Well, that was a bit dramatic but I swear I saw it jump a number of times when going over joins in the metal cylinder conveyor belt (why does it need to be metal on one side and smooth fabric on the other?).

The point is that it can be a hassle to take your data with you. But what other option is there?

Don’t carry the data with you! Or, if you do, only take the storage device (disk or USB stick).

Why?

Because the future of data storage is coming and it is coming fast. People like Amazon (and most likely Google) are waking up to the possibility of cheap online storage. This model blows away what can be done by most companies, even the really big ones. Even more amazing, anyone can use it. So, what this means that instead of carrying my folders around with me or forgoing their use, I can actually access them anywhere the Internet without having to setup anything special in my company or personal web server. Now, I can hear some of you saying this would not make sense. What about security? What about the programs to interact with this storage mechanism?

Ah, well, that is annoying isn’t it?

So, I predict that someone will understand this model and invest heavily in providing a cheap easy way to secure the information on the web using the standard folder model that already exists on the systems. In this way, it would be possible to mount drives on local systems from the remote online storage.

It gets better. Given that you can allocate a large amount of storage on the web that is managed (backed up and always available) you could actually capture that state of your workstation (in a virtual way) and let this image be your hub for zooming around the world. Imagine how much happier your travelers would be if they didn’t have to take around those damn laptops.

So, if any of you feel the need to create such a solution (or are aware of an existing solution) please let me know. I’d love to hear the progress report of such a venture and if I like it, I would even use it. :)

Brad Pedersen (Citrix Chief Architect) Interview with Brian Madden

Brad Pedersen at Citrix Office

There is someone else within Citrix that probably loves Citrix history as much as I do. His name is Brad Pedersen and he has the rare right to say that he has been there since the beginning of Citrix in 1989. I have written about him before in previous history posts. He has had a major role in the definition of Citrix technology, but also has provided the basis for Microsoft to enter the Terminal Services market. He still works at Citrix today and is the Chief Architect and Fellow. During his 17 years, he has seen much change and can directly relate them to what is going on today.

Brian Madden took the time to interview Brad and has posted the podcast on his web site. As usual, I found Brad’s view on Citrix history to be very interesting. The interview was about an hour long.

I suspect some of you have already heard of this but I wanted to make sure that those that hadn’t would have a chance to hear about the history of certain choices from the source.

To read the article and listen to the interview, please go here.

Brian Madden has also posted a transcript of the interview. This makes it easier to scan and search.


Writing the Impossible Code

I’ve been writing code since high school in 1981. During that time I have seen a number of progressions in both computer hardware and programming languages. I’m sure some of you would be familiar with BASIC (not the Visual kind) and perhaps even older languages like FORTRAN and COBOL. Personally, I hated COBOL since it was just too English-like and frankly a bit too verbose. Anyways, there have been many versions of languages to come out. Here in the office is a chart that shows the progression of languages. It is odd to see some of the names since I’ve never heard of them. It becomes a bit like looking into the archaeology of computing systems to realize that it is a very similar ecology to nature. The main difference being that computer languages last for on average about twenty years whereas nature’s creations can last in the millions.

The point I’m headed towards is that languages are really just an expression of a certain desire. You can’t say “pass the butter” if you don’t have a language that includes the word for “butter”. You have the desire, but not the tools to accomplish those goals. In computer terms, this is very important because if the computer doesn’t know what you want you have no chance of actually getting it.

So, what makes a language successful? What makes it obsolete? These questions bring up interesting insight into what would normally be considered a fairly dull topic. I could formalize it by listing out the benefits and drawbacks of languages, but instead I’ll focus on why languages create problems.

Can language capture reality? Is it possible to share an idea using language alone? Is it possible to express all possible outcomes in language?

No.

In fact, that is often the trouble with language. We mis-identify with words to be equal to reality. In fact, the words become triggers for personal mental images that would have little chance of matching what would happen in another person’s mind. So, language is a very imperfect thing and tends to create different experiences than what either the author or the speaker intended.

This has been proven again and again throughout world history. How is the different in computer terms?

In the computer world, words really do have the same meaning. In fact, you can be guaranteed that these English keywords will work exactly the same given that a computer platform supports modules built with that compiler. There is no level of being unclear.

Now, here is the twist. What if misunderstanding (meaning not the same) actually helps the situation. If I was inspired by a work of art to go off and create a new work of art, that inspiration would be coming from my own interpretation (which could be translated to misunderstanding). This could be seen as a flaw, or as a possible breakthrough.

If you extend this model, you can argue that my imperfect mind help to create solutions to new problems based on the fuzziness of how my brain works. Human minds are not based on digital circuits with clear cut binary decisions and fixed language. We live more in a state of flux and transience. Our imperfections help us deal with the imperfections of the environment.

Which leads to a realization… what if perfection can only exist as a model. In other words, we can never attain perfection due to the fact that it is only available based on judgement within the mind. Perfection tends to imply that something is desired but unattainable. Shangri-La is an example of what could be considered paradise on earth. It is a fictional account of a place that could never exist. Yet, it still stirs images in people’s minds about what perfection would be to the point that people still actively pursue going to Shangri-La for real.

Many programmers feel the same way about their languages. It almost becomes a religious experience to declare your preference for platform and language. This is most obvious when talking about systems that are completely unrelated except for a distant ancestor. Programmers and computer science researchers are always pursuing what they see as improvements towards computer nirvana. Examples of this in the last twenty years are C++, Java, and C#.

The point is that deterministic programming can always be improved, but it will never be perceived as reaching perfection. It will never fulfill the role of addressing all the needs of seeking answers to problems without assistance from a human intelligence.

Ideally you would want a self-learning system that is willing to use its experience and potential misunderstanding to lead to a computer system that could last potentially for eternity without the need for constant baby sitting. In other words, a computer system built from scratch to live a thousand years could grow and evolve that would be frankly impossible on a biological scale. Is this nirvana, and if so, for who?

Once the restraints are removed from computers to go beyond deterministic sequencing, it becomes much more a risk that we are about to create an intelligence that would directly compete with us. We’ve all seen what happens when things go wrong in the movies. It has been a theme of movies from the beginning. The real question is, how could they go right? Do we really need the perfect computer system anyways?

Yes, I think we are meant to create artificial intelligence. I think it is the next step in evolution. That does not mean that this next step would preclude the existence of humanity but rather the potential salvation of it. We are not collectively intelligent (yet) to save the planet from ourselves. Our approach to our world is fairly short sighted. I believe that artificial intelligence would lead to a more collective mindset which could be raised to the level of global consciousness. In this model, humans would interact with this global mind to better understand, learn, and advance not only their personal lives but to integrate with the world wide thinking.

Is this going to happen soon? Probably not. The Internet is but a clue of what is to come. We’ve worked out how to share information but we haven’t figured out how to get computers to truly think for itself.

I think I have a partial answer for what we are doing wrong as programmers with this regard.

We have focused so hard on building the perfect language to solve our problems without realizing that language is probably the biggest barrier. I suspect a better answer comes from understanding the value of senses. This includes the ability to sense the environment by all means and then integrating this experience into a reality that leads to thought and action. Notice that no words are involved. It is only a trained mind that identifies words as labels to these items. Words really just identify, they do not accurately portray reality. Therefore, reality is a very personal experience which implies also that it is more important to build the basic building block of sensing than it is to build the mind that interprets it.

As an analogy, I would say most artificial intelligence researchers are focused on the brain than actually building an intelligence without a brain. Or, should I say, a minimal brain. Without a proper body to sense and act with, there is little hope that intelligence will form. A dark void and no sense of body only leads to more of the same. There is nothing to sense and therefore reality has not changed and you have not changed with it.

I started this blog intending to find what it would take to write the perfect code. I’ve come the realization along the way that this goal is imperfect itself and that it would be better to focus on the basics of sensing reality than to associate the words that we readily accept.

Citrix Shirts

It is a right of Citrix employees to collect Citrix shirts. In the beginning, it is interesting. Then, it starts to become a bit much. I suppose that most technology companies see shirts as an easy way to spread their message. It’s kind of like wearing a portable banner around.

The shirts are often given out at major events involving customers and resellers. Citrix iForum is an example of this. Usually, but not always, the employees will be given one shirt per day spent at the event. That adds up to quite a few shirts.

I’ve collected quite a few over my eleven years of time with Citrix. I would estimate that I have upwards of 30 that I have received. I haven’t kept all of them, but I still have quite a number.

I had this idea that I would take pictures of these remaining shirts and share them with you. Well, I’ve done that, and it isn’t as interesting as I thought it would be. In fact, I would classify this whole subject as fairly boring.

However, it is history and a sample of various slogans and symbols related to Citrix. I suppose someone would find this interesting eventually.

My favorite shirt was for the second annual Citrix picnic. It showed an ant carrying the Citrix symbol and it was just for fun. Lisa and Michelle produced the shirt from Marketing and gave it out at our picnic. I would guess the picnic happened either in 1994 or 1995. Unfortunately, I could not find it and share it with you.

Citrix Shirts


Webcounter

Monkey Ceremony

Every company has its own unique culture. As the years progress, some of the rituals grow large but the meaning is often lost. This is not much different from any other cultural exchange that exists in the broader scope of human understanding.

Citrix has perhaps one of the more unique rituals involving shipping new products from Engineering. It started around 1992/3 after the initial wave of Citrix development. When Ed Janeczek was working with Bombay Furniture, one of our earliest customers, he was given a brass monkey with a small platter above its head. The monkey is probably about 8 inches (20 cm) high and is holding both sides of the platter. The tail is used to form a sort of tripod to make sure the monkey will not tip over. Bombay was showing their appreciation for the work EdJ had done with them to solve some issues. Bombay is often located in shopping malls in America and sells an assorted collection of housewares with a bit of a exotic and flashy flair. I haven’t been in America much lately so I don’t know if they are still doing well or if they still use Citrix.

Anyways, because of Bombay, EdJ was now the proud owner of a brass monkey best suited to serving small candies. I sat next to EdJ so we sometimes talked about Bombay and the story of the monkey. I remember a few jokes going around about the freezing of the brass monkey.

During one of our releases, as a joke, someone suggested using the brass monkey in our release party. Then someone else joked that we should put our product disks on top of it. Then someone else said we should look into the eyes of the monkey. I remember it being funny and yet everyone decided it was a good idea to stare down the monkey to prove, that as developers, we were not afraid of shipping the product. It was a test of will, with a big sense of humor.

It was suggested that if the monkey tipped over or that someone could not stare into the monkey’s eyes, that it would be bad luck for that release.

Somehow, the monkey ceremony became the standard mechanism to ship products within Citrix. The products were loaded on top of the monkey and everyone got the chance to look into the eyes.

I actually have some pictures of a shipping party in 1996 with the monkey ceremony. Keep in mind that some people in these pictures are still doing work while the ceremony was going on. I couldn’t tell you which product was being shipped but I would guess a version of WinFrame (perhaps 1.6).

It is interesting to note that the monkey ceremony still exists within Citrix. I have even seen the Monkey in Sydney, Australia within the last couple of years.

Here’s to you EdJ!

And thanks to Bombay for giving us one of the most unusual rituals I know of.

Monkey Ceremony