1 2 3
Der neue Auftritt

Encodo ist eine junge, dynamische und flexible Software Firma und positioniert sich auf einem hohen professionellen Niveau. Da das bestehende, selbst entwickelte Logo diesem Niveau je länger je weniger entsprach wurde eine Überarbeitung des Logos und des gesamten Firmenauftritts in Auftrag gegeben.

Um nicht willkürliche Designvorschläge zu unterbreiten, steht bei einer solchen Neu- oder Weiterentwicklung des Logos immer die Firma, ihr Tätigkeitsbereich sowie die Mitarbeiter im Mittelpunkt. Was heisst das? Es ist wichtig zu wissen, was die Firma macht oder produziert, wer die Unternehmung verkörpert, wie sie wirkt und wie sie wirken will.

Encodo bietet Dienstleistungen in komplexen IT und Webumgebungen an. Dies bedingt dementsprechend hoch qualifizierte Mitarbeiter. Da Dienstleistungen und Produkte der Encodo oft mitten im gewachsenen IT-Umfeld von Unternehmen oder Behörden liegen, müssen sie äusserst präzis in bestehende Umgebungen integriert werden und dort reibungslos mit anderen Systemen zusammenarbeiten.

Grafisch vereinfacht und uminterpretiert kann man das auch als Puzzlestück verstehen. Ein höchst präzise geschnittenes Produkt, das einmal zusammengefügt das Bestehende ergänzt, verbessert, präzisiert, perfektioniert.

Es versteht sich aber von selbst, dass eine grafische Umsetzung mit Puzzlestücken zu banal wäre und den Ansprüchen einer Encodo nicht entsprechen würde.

Das neu entwickelte Logo kombiniert den bestehenden typografischen Schriftzug mit einem farbigen grafischen Element. Die Grafik soll ein abstraktes Sinnbild für die Geschäftstätigkeit von Encodo sein. Zwei ineinander verschränkte Formen ergänzen sich zu einer Gesamtform, Sinnbild für Vollständigkeit, Gesamtheitlichkeit und gesamtheitliches Denken. Die Form balanciert auf einer Kante, wiederum Sinnbild für Balance, Gleichgewicht, Fairness und faires Business. Die Farbe letztendlich steht für Frische, Flexibilität, Lockerheit und Offenheit gegenüber neuen Herausforderungen.

Das neue Logo und der gesamte Auftritt ist schlicht gehalten, die Proportionen sind angenehm und die zwei Blautöne in der Grafik frisch und dynamisch. Der Schriftzug in Schwarz wird mit gleicher Typografie verwendet. Dies als Sinnbild für Kontinuität, Seriosität und Professionalität.

Natürlich braucht nicht jeder alle diese Hintergrundinfos. Sie sollen etwas veranschaulichen, wie und mit welchen Attributen der neue Auftritt entstanden ist. Im Endeffekt soll das Logo und der Auftritt einfach angenehm und passend in der visuellen Erscheinung sein oder in weniger Worten "schlicht und schön". Ich hoffe dieses Ziel haben wir damit erreicht.

Tobias Werner LABOR3

Metadata in Software Development

imageDownload

This paper sketches a brief background of metadata, lists the advantages and drawbacks to existing approaches and provides some examples on where metadata can be useful. It describes Encodo's approach to metadata with a brief overview of the basic elements and ideas on how to avoid the limitations of existing solutions.

What is Metadata?

Metadata is, by definition, data about an application's data. It describes the properties and capabilities of and connections between different types of information in a particular application domain. Examples of application domains are bookkeeping, document management, a lending library or inventory management.

Listed below are a few commonly used terms for modeling methodologies:

  • MDA -- Model Driven Architecture -- This approach focuses on complete separation of design from architecture, including the use of UML in order to avoid committing to a single programming language. The abstract UML model is transformed to the target architecture and is generally not further available to the application.
  • MDD -- Model Driven Development -- This approach also focuses on the "systematic use of models as primary engineering artifacts throughout the engineering lifecycle" [Wikipedia]. As with MDA, the model is a first-class entity from which code can be generated, but is not usually represented in code itself.
  • MDE -- Model Driven Engineering -- Essentially a synonym for MDD, but is not trademarked by the OMG (Object Management Group).

The approach recommended in the following paper can be generally described as MDD, but diverges from traditional approaches in several key ways.

Why use Metadata?

All software defines and uses metadata, but usually defines it implicitly, encoding it in the constructs of the programming language (e.g. classes, field, methods, references, etc.) in which it is written. A non-trivial application -- one that renders a GUI or responds to a web-service request -- needs much, much more information than that. More often than not, that extra information is encoded in application-specific code that is usually not generalized (though it may follow a pattern). Software increases in complexity and size with time. In order to maintain any sort of control over larger software projects, it is important to strike a balance between the following two precepts:

  • K.I.S.S. -- Keep It Simple Stupid -- Don't make things more complicated than they need to be for the foreseeable future
  • D.R.Y. -- Don't Repeat Yourself -- Any single piece of information should exist in exactly one place in an application.

Using a standardized metadata framework helps an application apply the D.R.Y. principle, but seems to violate K.I.S.S. However, applying K.I.S.S. to the metadata framework itself results in a simple API that makes any application using it also much simpler than it would have been with an ad-hoc solution. Using the same simple pattern and library throughout several applications decreases the overall complexity and drastically improves maintainability.

A Real-World Example

Imagine an application that generates a list of entities, say Books. Regardless of whether it generates a report, a web page or a graphical user interface (GUI), it needs to identify columns of data with labels. Traditionally, each application solves the problem of retrieval and internationalization of labels on its own. Programmers without much time or experience -- and without framework support -- will most likely hard-code the text for the labels, making maintenance more time-consuming and error-prone.

A metadata-based application, on the other hand, starts off with a model, in which the labels for bits of data are already defined. This application need concern itself only with transforming the information in the metadata to the output format and not with retrieval and internationalization of the metadata itself. On top of that, the application is free to use other available metadata which maps to the output format, like color, borders or font-size.

Apps using metadata have the following advantages:

  • They address only their assigned tasks, rather than building ad-hoc frameworks for common tasks.
  • They are easier to understand and more maintainable because their non--task-specific code uses standard APIs.
  • They profit from functionality that would be otherwise impossible to provide within time- or budget-constraints

Who Uses Explicit Metadata?

Those few systems that do use explicit metadata do so in order to provide object-relational mapping (ORM) and CrUD (Create/Update/Delete) access to a database. To name just a few:

  • Cayenne (Java)
  • Hibernate (Java)
  • LINQ (.NET)
  • Django (Python)

These solutions use various mechanisms to specify the metadata (uniqueness, primary key, relationships, etc.) needed to communicate with a database: Cayenne uses XML files, Hibernate allows either XML files or Java annotations, LINQ uses the class definition along with optional attributes and Django uses inner classes.

Django goes further still by providing metadata for web UIs as well as data access. It uses this metadata to generate the entire administrative back-end -- including sortable, filterable lists and CrUD UI for all objects -- automatically. The .NET framework has grids that automatically provide CrUD from a LINQ dataset, but these cannot be customized by tweaking central metadata, as in Django . Other frameworks have been similarly inspired -- Rails (Ruby) and Grails (Groovy) come to mind -- but are still in very early stages and don't seem to use much central metadata. For example, the BeanForm component in Tapestry generates web forms from objects using Java reflection and Hibernate properties (if present). However, it can only be further customized (e.g. styles and classes or layout) with metadata hard-coded in the HTML document.

Limitations of Existing Implementations

All of the approaches above use the class hierarchy as the model and the reflection/introspection services of the language itself as the metadata API. Metadata not directly expressible in the language is attached using attributes (LINQ), annotations (Hibernate) or inner classes (Django).

This raises a few issues:

  • Instead of being defined centrally, the application's model is spread throughout its source files.
  • The metadata model is tied to a particular implementation (since it is tied to the classes themselves).
  • Decorating source code with annotations or attributes is not a scalable way of defining metadata, quickly resulting in an unreadable mess.
  • The metadata model is not easily available to the application at run-time (reflection APIs are very low-level and limited for this purpose).
  • These factors limit the re-usability of metadata from application to application. While a classic GUI application would likely use a set of customized classes to represent its data (in order to benefit from business logic defined therein), a report generator accessing the same data and using the same model would be far better off using generic data objects. If the metadata is defined with classes, the reporting tool must include business logic which it neither needs nor uses.
  • With the class as model, all possible extensions to the metadata (web-, GUI-, reporting-specific, etc.) are defined in one place. This drastically increases the interdependence between completely different applications. Programmers of GUI applications should not be confronted with web-specific notation throughout their code.

A New Approach

With metadata so central to the application, it makes no sense to cede control of it to a single external component (like an ORM). Instead, it must be independently and centrally defined and under application control.

In order to be both truly useful, metadata must satisfy the following conditions:

  • It must be independent of any other components in an application.
  • It must be available as first-class objects in the application.
  • It must not be monolithic (e.g. GUI applications not required to load web-specific metadata).
  • There must be a single API for all metadata consumers, be they application components or external components like GUI controls or an ORM.
  • Integrating application components must be simple and straightforward, limited by the complexity or API of the component rather than that of the metadata.
  • It must not be tied to any single instance representation (e.g. given an entity named Book, nothing prevents one application from using class Book1 to represent an instance while another application uses Book2).
  • It must be an enhancement to the existing programming library and should not, through its use, force replacement of any part of that programming library (e.g. an application should not be required to use only customized web or GUI controls in order to benefit from metadata).

Integration with Existing Components

None of the requirements listed above places restrictions on the software environment. Rather, it emphasizes only that none of the components gets to control the metadata. For example, it is trivial to generate the data classes needed by Hibernate or LINQ from the metadata. Similarly, nothing prevents a project from generating the in-memory metadata from more traditional modeling approaches like UML.

The application benefits from the centralized metadata, but can continue to any external components without restriction.

Aspects of Meta-Data

The first step is to define the boundaries of an application domain with entities, properties, operations and relationships (described in section 5 -- "Elements of metadata"). However, as mentioned above, an non-trivial application needs specialized metadata in order to work with one or more external components, such as:

  • Reading from a database (relational, flat file, XML, etc.)
  • Responding to a web-service request
  • Generating a user interface (web or classic GUI)

To address these different needs -- and to stay centralized but decoupled -- metadata is split into aspects, each of which encapsulates one of the tasks listed above. For example, an application might want to store the following information in its metadata:

  • Which kind of GUI control to use to edit the value for a meta-property
  • How to map a property to a database field (is it nullable, is it persistent, etc.)

Aspects that are very similar, like "gui" and "web", can put shared metadata into another aspect (e.g. "view"). This way, common metadata, like "color" and "font-size" are in the "view" aspect, while browser-specific metadata is defined in the "web" aspect. A desktop application includes the "gui" and "view" aspects, while a web application includes "web" and "view". The reporting tool mentioned above includes only "view" so that it has access to the required display metadata.

Elements of metadata

The sections below briefly sketch the basic parts of metadata and are not meant to be comprehensive.

Since metadata is descriptive, all of its elements have the following basic properties:

  • Title (singular and plural)
  • Description

Complicating things slightly, each textual property -- like the "singular title" above -- has multiple values, one for each language supported by the application. In addition to these basic, shared properties (of which there can be many, many more), specific types of elements add other features.

A lending library application is used in the examples below.

Entities

Entities describe particular types of objects in the application domain, like books, authors, publishers or customers. Less obvious entities are languages, media types, genres or lending transactions (when a customer loans a book for a period of time). Entities include the following lists:

  • properties
  • operations
  • relationships

Each of these is described in more detail in the following sections.

Properties

A property is a single feature of an entity, like a book's title, an author's first or last name or the due date for a loaned book. In addition to the basic features above (title, description), a meta-property has the following features:

  • Type -- Integer, String, etc.
  • IsPrimary -- The property is in the primary key of the entity
  • Validations -- required greater than a value, etc.

There are, of course, dozens of other features that an application might associate with a property, but things like "color", "font-size" or "visible" are only interesting to particular application domains. Therefore, these features belong in domain-specific aspects (as described above in "Aspects of Meta-Data").

Operations

An operation is an action that can be executed against an entity (or, more precisely, an instance of an entity). In addition to the basic features above (title, description), a meta-operation has the following features:

  • Signature -- Number and types of parameters
  • Implementation -- The program logic to execute when called

Including the signature in the metadata is useful for validation, but the implementation is best left in the application itself (including it in the metadata would violate K.I.S.S.).

Relationships

An application domain consists of more than just free-floating entities: it is the relationships between those entities that truly describe what is possible within a metadata model. A book has a list of authors as well as a publisher, whereas publishers and customers have lists of books. A relationship has the following features:

  • Source -- Entity and properties to map from
  • Target -- Entity and properties to map to
  • Cardinality -- How many elements can be in the target
  • Filter -- A condition restricting the entities in the target

As with properties, these are the basic features that all relationships have to describe them fully; domain-specific aspects may add more.

No Going Back

Using metadata explicitly is the kind of approach that comes after years of experience working with other methodologies and technologies. It arises from a need to avoid re-inventing the wheel with each new application. We started Encodo after working for years with modeling tools that offered some -- though not all -- of the advantages mentioned in this paper.

Most available components and libraries, however, don't work with metadata as we'd grown accustomed to. We tried using them as-is but, soon enough, realized we could adhere to neither K.I.S.S. nor D.R.Y. principles. Having had the advantage of using metadata in previous applications, our standards were raised to a level where we were no longer willing to work without it.

VoIP @ Home

Im letzten Newsletter haben wir von der VoIP-Infrastruktur der Encodo berichtet. Trotz aller Hindernisse, die wir hier überwinden mussten, habe ich mich entschieden, in meiner neuen Wohnung die Swisscom nicht mehr zu berücksichtigen, sondern auf VoIP zu setzen.

Ich habe mir ein Siemens Gigaset C450 IP gekauft, als VoIP-Provider ist meine Wahl auf sipcall.ch gefallen. Bei der Providerwahl war mir vor allem der Preis wichtig, die monatlichen Grundgebühren sollten möglichst tief sein. Bei sipcall zahle ich zur Zeit 3.80 pro Monat. Dafür erhalte ich keine Monatsrechnung, sondern muss mein Konto im Voraus füllen (Prepay). Das Siemens-Telefon ist ein DECT-Gerät (Funktelefon), das theoretisch zusätzlich an eine (normale) analoge Telefondose angeschlossen werden kann, die dann als Fallback funktioniert.

Die Anmeldung bei sipcall hat problemlos funktioniert, auch die Portierung meiner Swisscom-Nummer. Die Portierung ist grundsätzlich gratis, ich musste aber 200.- auf mein Konto einzahlen, die ich jetzt vertelefonieren kann.

Auch die Einrichtung des Telefons war einfach. Basisstation ans Netzwerk anschliessen und auf dem Handgerät den VoIP-Provider mit einem Wizard konfigurieren: Land wählen, Provider wählen, Benutzername und Passwort eingeben, fertig!

Am Anfang war ich dann doch nicht so glücklich mit meiner neuen Lösung, da die Stimme der Gegenseite sehr leise war. Alle verfügbaren Optionen des Telefons habe ich auf maximale Lautstärke gestellt, leider ohne Erfolg. Anfang März hat sipcall offensichtlich eine Änderung gemacht, seither ist die Lautstärke kein Problem mehr. Mein Telefonanschluss funktioniert zuverlässig, die Sprachqualität ist sehr gut (ich habe einen Cablecom Hispeed Internetanschluss).

Da ich nicht sehr viel und lange telefoniere, ist für mich die niedrige Monatsgebühr sehr attraktiv. Der grösste Teil der 200.-, die ich vor mehr als einem halben Jahr einbezahlt habe, ist noch auf meinem Konto. Und für Vieltelefonierer hat sipcall inzwischen auch Flatrate-Angebote.

Trillian vs. Pidgin

Trillian is a multi-protocol chat client that's been around for a quite a while, with both a free version and a professional version, which includes extra features and support. Their version has stagnated quite significantly, offering a grand total of one update over the last three years or so. The feature set is robust and it does pretty much everything you need from a chat client, but its look and feel is starting to feel a bit dated -- especially if you've gotted used to Adium or iChat on the Mac.

With that in mind, it was time to download Pidgin, which, though its name is new, is a very old and well-established open-source project previously called GAIM.1 Their libraries are integrated into many other chat clients and GAIM/Pidgin itself is used by much of the open-source world. Despite this, it's a pretty unpolished project.

The UI itself is quite nice and simple, looking much like the aforementioned Adium or iChat and dispensing with much of the clutter that afflicted the previous generation of chat clients (like Trillian). So far, so good. Setting up all chat accounts is also pretty straightforward and intuitive. You can easily set up new statuses and the defaults include an "invisible" status, so you can see who else is logged on, but not appear logged in yourself. Status and connection state are combined, unlike in Trillian, which is also a welcome change. Communication is rock-solid, as expected; open-source geeks expect the core stuff to work -- it's the UI where their attention to detail strays and makes for a frustrating user experience.

Here is a list of the major annoying issues or gross oversights that Pidgin includes today, after lord knows how many years of active development.

Installation

Pidgin includes optional spell-checking, which is a nice touch, since Adium on OS X uses the system-standard spell-checker to make chatting a more pleasant grammatical experience. However, the bloody thing only lets you choose one language, with no option to install more languages later.

Documentation

There is none. Features like "pounce on user" will remain completely mystifying for the average new user. There is developer documentation in case you want to help develop Pidgin further, but there is zero documentation for actually using the product. The web site is extremely bare, with a completely empty "news" section, a short "about" section and not much else.

Running State

Pidgin can minimize to the task tray and lets you hide the "Buddy Window" to avoid desktop clutter. However, it relatively quickly got itself into a state where the buddy window was gone, there was no taskbar icon and starting a new instance simply complained that one was already running. God forbid it should actually offer to show the already running instance. Pidgin was alive, but could not be rescued from the limbo to which it had consigned itself. There was no choice but to kill it and restart.

Settings Policy

Killing Pidgin leads you to the next problem: Pidgin only stores its settings when exited cleanly and seemingly doesn't store anything to disk during normal program execution. Again, for users accustomed to Mac OS X-like behavior -- where program state is stored instantly and applications almost always pick up exactly where they left off, even after crashing -- this is completely unacceptable. This hurts all the more when you'd only ever started Pidgin once, entered all five of your chat accounts, set up some new statuses and are faced with the "welcome to Pidgin! You have zero accounts. Would you like to create one?" startup assistant on the next restart.

More Settings Woe

Not only are global settings not stored while the application is running, but some settings are never stored at all. Like window positions. This is infuriating, because Pidgin simply places every new chat window at the top left of the screen no matter what. No, it is not sufficiently amazing that you managed to show a chat window and are allowing me to send text back and forth with friends and family throughout the world. These days, you totally need to remember where I last put the window for each buddy and how big the window was and the position of the text-box slider and -- just remember everything dammit and put the windows back the way they were, so I don't have to constantly drag the damned things around so they are in front of my face. These are not little details anymore. In the old days, it was enough to just work; once a tool becomes part of the everyday workflow, it has to iron out its usability issues or it becomes too annoying to use.

Open-source Disclaimer: I know. It's open-source; I could just go in there and fix it myself. I could stop complaining and do something about it. I could change the culture of the project to be more user-friendly. It's just sad that I would have to, sad that projects like this -- that are the toast of the open-source world -- are still so unpolished and include (or fail to include) features that most of us learned a decade ago were essential.



  1. They had to change their name after a drawn-out court battle with AOL, whose AOL Instant Messenger product -- AIM -- claims all trademarks on similar sounding names.

Working with Wikis

Many businesses have made the leap to using computers to store their knowledge base: information about how their business works. Until recently, the available solutions were limited to using a hierarchy of documents on a network somewhere or an expensive document management system. Enter the Wiki: an easy-to-use way to link documents together into a browsable web site that grows as employees add information to it.

We've had a Wiki at Encodo for over a year now and wanted to share our experiences and recommendations.

What's a Wiki?

All companies have information to manage. Some have more than others, but all have basic information about themselves like pension, insurance and bookkeeping information. On top of basic stuff like that, employees need enough information about the operating environment in order to get started -- for new employees -- or to remember how to do something -- for old hands.

Naturally, businesses differ widely on how this information is handled and made available. In the old days, there was a dusty shelf somewhere with hopelessly out-of-date binders full of papers that defined how the business operated. In more recent days, the mighty file server plays the role of dusty shelf, with at times haphazardly structured folders taking the place of heavy binders.

Enter the Wiki. A Wiki is a type of CMS that makes it very, very easy to create new pages of information and links between those types of information. The binders have made their way into a browsable web site, letting businesses form links between related bits of information that a set of binders or even a folder structure on a file server never allowed.

Just because information can be organized as it should be, doesn't mean that it will be. The degree of organization depends largely on the level of organization of the business itself and the amount of discipline exercised by its employees. Since any document can be linked to any other, there is none of the rigidity imposed by a classic system of folders. On the other hand, it can be difficult to impose structure -- and, depending on software, effectively impossible to impose restrictions on which person can see or edit which documents.

MediaWiki

Assume a business has decided to go this route and wants to set up a Wiki of its own. When most people hear the word "Wiki", they automatically think of the Wikipedia, an online encyclopedia built by the world. A quick search reveals that the software that runs this gigantic site is available for free under the open-source MediaWiki project.

The software is relatively easy to install, requiring only a server of some kind, running both PHP and MySQL. Earlier versions of the MediaWiki required PHP4 and weren't packaged very well. Newer versions require PHP5 and are much easier to install. All configuration is done directly in PHP, using somewhat arcane, but now thoroughly documented, files found at the root of the web site.

Here at Encodo, we started off with MediaWiki 1.4x, graduated to 1.5x, then started to run into some limitations in functionality. We used the Wiki for almost all of our documentation and ran into a few problems:

  • Some documents should not be visible to all employees. Support for folders (or "namespaces") is available in recent versions, but can only be managed from a PHP configuration file.
  • We have a smallish site, so it's nice to get an email every time a page is created. MediaWiki doesn't support this, sending notifications only when a page that a user is "watching" has changed.
  • The newest versions of MediaWiki require PHP5; any other applications running on the same server must also be upgraded (if possible).
  • Security settings are also only configurable from a PHP file

Evaluating Wikis

If you're in the market for a Wiki, you won't suffer from lack of choice. A quick visit to the WikiMatrix helps narrow down the field considerably. Using the following criteria,

  • Has email notification
  • Has been updated within the last 6 months
  • Has namespace or partitioning support
  • Has preview of content
  • Supports page permissions

we came up with the following list of software to evaluate:

  • WackoWiki
  • XWiki
  • SnipSnap
  • MediaWiki
  • MoinMoin
  • Confluence

Confluence is a very nice looking solution offered by the fine folks at Atlassian, but costs quite a bit. WackoWiki and SnipSnap looked a bit new and lacked documentation, while MediaWiki was the one we already had. Between MoinMoin and XWiki, we found that XWiki offered the best mix of features, good documentation and user interface.

XWiki

XWiki provides a UI to manage its "Spaces", which are like folders and can have their own security settings. Security settings are managed through the site rather than configuration files. XWiki is written in Java and runs in any Java web container, including, of course, Tomcat, which we already had installed. Configuration is, in general, accesible from a relatively nice user interface; customization and plugins can be written in Java or Groovy (a functional variant of Java). File uploads are attached directly to pages (as opposed to the global heap of media supported by the MediaWiki) and notifications are supported through an optional plugin.

All in all, it seems just the thing for our corporate intranet and we will be converting our current MediaWiki to an XWiki in the near future. To this end, we've written some scripts to ease importing the data from one to the other. The Wiki syntax isn't exactly the same, so the data has to be massaged a bit; we are also using regular expressions to match and sort a large number of the page to appropriately named spaces on import. The importer is a perl script that downloads HTML pages from the current Wiki and saves them to a local folder (or sub-folder, if it is determined that the page belongs in a named space). From there, a Groovy script imports the pages into the new XWiki, creating spaces as needed.

Conclusion

If used correctly, a Wiki quickly becomes a central knowledge base for a company. That means that it has to be able grow with the company as the company's needs change. The MediaWiki is far too open and simple a storage mechanism for a mature intranet in all but the smallest companies; the project is taking steps to address these issues, but it's not there yet. XWiki, on the other hand, provides the kind of basic functionality businesses expect when migrating from a file server-based knowledge management system. Having ended up with a good part of the company's knowledge stored the Wiki, we had no choice as to whether to migrate or not. In this case, XWiki's scriptabality eased the pain and cost of migration.

Erfahrungen mit VoIP

Schon von VoIP gehört? Ziemlich sicher schon, die neue Technologie ist ja auch so hochgelobt worden, dass sie als DIE ZUKUNFT der Sprachkommunikation und somit als Tod der klassischen Telefonie gilt. Die Abkürzung VoIP steht für Voice over IP zu deutsch 'Stimme übers Internet Protokoll übertragen' Lesen Sie im folgenden Artikel welche Erfahrungen wir in den letzten eineinhalb Jahren mit VoIP gemacht haben.

Der Entscheid für VoIP

Als wir im Sommer 2005 unser erstes Büro bezogen, wollten wir keine teure Telefonanlage kaufen, die dann auch noch mehrere teure Swisscom-Leitungen benötigt um zu telefonieren. Natürlich hatten auch wir schon viel von VoIP gehört und uns durch diverse Artikel in Fachzeitschriften überzeugen lassen, dass das System grundsätzlich funktioniert. Da wir so oder so eine schnelle und stabile Internet-Anbindung brauchten, war auch diese wichtige Voraussetzung erfüllt.

Ein Blick in die Liste der in der Schweiz verfügbaren Provider und deren Preislisten gab dann den Ausschlag definitiv auf VoIP zu setzen. Die monatlichen Fixkosten und die Gesprächsgebühren waren sehr attraktiv. Die Einschränkung, dass das Versenden von Fax-Nachrichten über VoIP nur schlecht oder überhaupt nicht funktioniert, hat uns nicht gestört, da wir nicht vorhatten einen Fax zu betreiben.

Erste Schritte

Wir haben uns für einen Provider aus dem freecall-Netzwerk (Intelifon) entschieden, der sein Angebot auf Geschäftskunden ausgerichtet hat. Nachdem wir uns angemeldet und einen 10er Nummernblock reserviert hatten, haben wir VoIP-Telefone von der Firma Snom gekauft. Diese haben einen sehr guten Ruf was die stabile Hardware und die akustische Qualität betrifft. Die Kosten sind höher als für einfache ISDN-Komforttelefone, liegen aber immer noch unter denen der Systemtelefone von Ascom, Siemens und vergleichbarer Hersteller.

Gemäss den Aussagen des Providers haben wir unsere neuen Telefone übers Netzwerk direkt mit dem Provider verbunden und die Zugangsdaten des Providers eingegeben. Danach konnten wir auf Anhieb die ersten Telefonate führen. Leider konnten wir keine Gespräche intern weiterleiten, obwohl vom Provider versprochen. Zudem war die Gesprächsqualität oft schlecht bis inakzeptabel.

Eine deutliche Verbesserung der Gesprächsqualität erreichten wir, indem wir dem VoIP-Datenverkehr auf unserer Internet-Leitung die höchste Priorität eingeräumt haben (Traffic Shaping). Zum Glück hat unsere Firewall dieses Feature unterstützt, so wir dies schnell umsetzen konnten.

Trotz vielen Nachforschungen im Internet funktionierte die Weitervermittlung von Anrufen einfach nicht. Der Provider zeigte sich völlig unfähig und unwillig zu helfen. In dieser Zeit haben uns auch erste Kunden darüber informiert, dass wir nicht immer erreichbar seien.

Vorhang auf für Asterisk

Da wir es langsam satt hatten, Gespräche in Form des über den Tisch gereichten Telefonapparates 'weiterzuleiten', haben wir uns entschlossen, eine Telefonanlagen-Software für VoIP zu installieren. Die Entscheidung fiel auf die Open Source Software Asterisk, da diese sehr stark verbreitet ist und einen grossen Funktionsumfang aufweist. Nach einigem Installationsaufwand haben wir Asterisk dann auch zum Funktionieren gebracht und können jetzt intern Telefonate weiterleiten. Die Software bietet auch gleich einen integrierten persönlichen Telefonbeantworter für jede Nummer und viele andere Optionen, die bei klassischen Telefonanlagen erst bei sehr teuren Modellen verfügbar sind.

In Punkto Gesprächsqualität war Asterisk am Anfang eher ein Rückschritt. Es konnte schon mal vorkommen, dass wir ein Telefonat beenden und neu verbinden mussten, weil wir das Gegenüber oder das Gegenüber uns nicht mehr verstanden haben. Mit der Zeit fanden wir heraus, dass diese Probleme immer dann aufgetreten sind, wenn auf dem Server neben Asterisk andere Programme zu viel Rechenzeit beansprucht haben. Seitdem wir Asterisk eine höhere Priorität zugewiesen haben, sind die Probleme verschwunden.

Die Probleme mit der Erreichbarkeit sind durch die eigene Telefonanlage nicht besser geworden. Es gab auch Kunden, bei denen konsequent die falsche Telefon-Nummer im Dispaly angezeigt wurde wenn Sie uns oder wir sie anriefen. Erschwerend kam hinzu, dass Asterisk immer wieder abstürtzte, so dass wir die Software anfangs jede Nacht automatisch neu starten mussten. Später fanden wir heraus, dass dieses Problem an einer unausgereiften, frühen Asterisk-Version 1.2.x gelegen hat. Seit einem Update auf den neusten Patchlevel läuft Astrerisk bei uns stabil. Wir werden aber sicher noch ein paar Versionsupdates abwarten, bis wir uns an die seit Ende 2006 verfügbare Version 1.4 trauen.

Die Probleme mit dem Provider wurden leider immer häufiger. Er war immer schwieriger, manchmal tagelang überhaupt nicht erreichbar und hielt keine der gemachten Versprechungen wenn man ihn denn mal erreichte. Wenn der Support beim Provider nicht funktionierte, dann konnte man ausser Warten gar nichts machen, denn telefonisch war niemand erreichbar und wusste drum auch nichts von Problemen...

Unsere Recherchen haben irgendwann ergeben, dass unser Provider keine eigene Infrastruktur unterhält sondern nur ein Wiederverkäufer von VoIP Dienstleistungen ist. Der eigentliche Provider im Hintergrund ist die Firma Backbone Solutions AG die den sipcall Service betreibt. Das heisst am Ende auch, dass die Ursachen für die technischen Probleme mit der Erreichbarkeit und der CallerID wohl bei sipcall zu suchen sind.

Ein neuer Provider

Nachdem alle Support-Bemühungen im Sand verlaufen sind, entschieden wir uns nach etwas mehr als einem Jahr einen neuen Provider zu suchen. Eine Evaluation zeigte, dass die grossen Telefonie-Konzerne Swisscom, Sunrise, Orange und Cablecom noch kein VoIP anbieten oder (noch) nicht auf die VoIP-Bedürfnisse einer kleinen Firma eingestellt sind (sprich die Kosten sind zu hoch weil die Lösungen aufwändig sind). Wir entschieden uns am Ende für den Provider e-fon AG. Der hat alle unsere 10 Nummern auf Ende 2006 anstandslos portiert und wir konnten ohne Unterbruch weiter telefonieren. Der Support bei e-fon ist technisch versiert und hilft wenn es Probleme gibt. Bis jetzt sind wir mit der neuen Lösung sehr zufrieden und hoffen, dass es auch so bleibt...

Fazit

Technik

VoIP funktioniert grundsätzlich, ist aber für den geschäftlichen Gebrauch immer noch nicht ganz den Kinderschuhen entwachsen. Damit das gesamte System funktioniert, müssen die folgenden Komponenten aufeinander abgestimmt sein:

  • Technisches Know-How einer spezialisierten Firma kaufen oder selber aneignen
  • Leistungsfähige und zuverlässige Internet-Leitung (kein normales ADSL) - leider teuer
  • Guter VoIP-Provider
  • Gute VoIP-Telefone
  • Saubere Installation und Konfiguration der Telefone. Eventuell eine eigene Telefonanlage betreiben oder dann eine virtuelle Telefonanlage des Providers mieten.

Falls die Komponenten nicht zusammenpassen oder unzuverlässig sind, dann ist Ärger vorprogrammiert!

Zuverlässigkeit

Eine klassische Telefonanlage, die per Analog-, ISDN- oder DDI-Leitungen mit dem Provider verbunden ist, funktioniert immer noch zuverlässiger als eine VoIP-Anlage. Für unsere Bedürfnisse ist die Zuverlässigkeit aber sicher ausreichend. Sobald bei uns die Internet-Leitung ausfällt, dann funktionieren Internet, E-Mail und Telefon nicht mehr. Wir sind dann also wirklich 'offline'. Unser neuer Provider bietet jedoch für diesen Fall die Möglichkeit, alle Gespräche auf eine einzelne Notfall-Nummer umzuleiten (bei uns ein Prepaid-Handy). So bleiben wir von aussen per Telefon immer noch erreichbar.

Wenn die einzelnen Komponenten richtig gewählt werden, dann ist VoIP eine günstige und zuverlässige Alternative zu den klassischen Telefonanlagen.

Finanzen

Unter dem Strich ist VoIP finanziell interessant. Die fixen und variablen Kosten für das Abonnement und die Telefonie sind tief und die Implementation einer VoIP Installation bindet, genügend Know-How vorausgesetzt, auch weniger Kapital als bei einer klassischen Telefonanlage. Bei diesen wird meist von Anfang an überdimensioniert, weil man nicht beim geringsten Wachstum die ganze Anlage ersetzen will. Eine VoIP-Installation wächst mit, was jederzeit nur angemessene Kosten generiert.

Variante

Wir haben eine reine VoIP Implemetation beschrieben. Es ist aber auch möglich, nur innerhalb der Firma per VoIP zu kommunizieren und die Software-Telefonanlage per klassischem Festnetz mit einem Provider zu verbinden. Dadurch wird die Erreichbarkeit erhöht und die Anforderung an die Internet-Leitung fällt weg. Natürlich verliert man so aber auch einen Teil der Kostenersparnis.


Die obigen Ausführungen sind z.T. stark vereinfacht oder abgekürzt und gibt unsere persönlichen Erfahrungen wieder. Mehr Informationen geben wir gerne, nehmen Sie mit uns direkt Kontakt auf.

First Days with Microsoft Vista, Part II

In part one of this article, we discussed improvements to the user interface and basic applications like Windows Explorer. In this second part, we take a quick look at some usability issues associated with installation, networking and security.

Networking

Accessing known networks is snappy and pretty easy, taking advantage of an explorer that actually seems to use threads (shocking!) One down side is that, somehow, networking support isn't as robust as that in OS X. A laptop that shows up fine on OS X's browser simply never displays in Vista or XP. Typing in the path of the shared folder on the laptop directly pops open the expected window immediately (user/password were even the same), but the laptop remains steadfastly unbrowsable. That's a pity because it's not likely to get any better, as Vista is the pinnacle of 5 years of work. If Vista can't see XP computers on the same network now, it's likely that Microsoft has simply given up trying.

User Account Control

You know that new Apple commercial? The one where the PC guy is accompanied by a secret service agent asking him to "cancel or allow" actions? Right on the nose. Apple isn't being mean ... and they're not exaggerating. It's conceivable that this constant nagging settles down after a while, but during initial installation the screen is nearly constantly going black, then 50% black with a dialog asking you to confirm an action. OS X has the exact same mechanism, but asks much less often. As many of Vista's questions are prompted by the need to change registry keys, one can only imagine that it's the more monolithic nature of Windows itself that is to blame.

As it turns out, the blacking effect has less to do with a non-optimal effect and more to do with the security mechanism. Vista is actually switching to a different desktop in order to display this dialog within a completely different context -- one from which only a user response is accepted. This prevents rogue programs from faking a keypress to allow malicious action. Vista just uses a copy of your current desktop image as the background for this high-security one to fool you into thinking that nothing has changed.

Unfortunately, switching desktops confuses some modern graphics cards/displays into thinking that they've been shut off, leaving the screen off for at least a second (using a Philips flat screen connected by DVI) or more, as reported by some users with CRTs that turn off completely for the desktop switch. Fortunately, you can turn off User Account Control, but then you get an icon in the task tray telling you that you are a very bad person. You can also turn off the icon; however, doing so also turns off messages about out-of-date security or virus definitions.

Much more useful would have been the ability to temporarily escalate privileges for a given context. The sudo command in various flavors of Unix have done this for years, while OS X translated this to UIs by putting a lock icon at the bottom of windows with operations that may require escalated privileges. Click the lock to log in once and have full administrator rights until the window is dismissed. That strikes a far better balance between security and usability than the current implementation. Who knows? Maybe Apple patented it and Microsoft was too proud to license it. Whatever the reason, for anyone making heavy use of their administrator capabilities, leaving User Account Security on is not really an option.

Hardware Requirements

Vista runs nicely on a brand new machine -- purchased for just over CHF1100, or just under $900 -- and Aero Glass works great with the built-in NVidia card. Since there are 2GB of RAM installed in the machine, but Vista reports on 1.8GB to be available, it can assumed that the graphics card has reserved about 200MB for itself. The effects are all quite smooth, except for the rather harsh black screen accompanying the aforementioned "cancel/allow" windows. It's assumed that this harsh transition is a deliberate effort to make people aware that something important is going on.

Installation

Installation is also relatively smooth and question-free, though it does take quite a while to finish. With only an upgrade CD available (as part of the Microsoft Action Pack), one is required to install twice in order to avoid installing over Windows XP. All together, that's over an hour spent on installing the machine. Here, Vista stumbles with by introducing itself in a not-very-reassuring way. Just in the first few windows of the installer, the user is faced with a UI that is clearly not Windows; it behaves differently in subtle ways and exhibits many of the idiosynchracies of it predecessors:

 * Drop-downs don't respond to multiple keypresses, so you won't find Switzerland by typing "swi". You end up on "India" (or whichever country starting with "I" comes first).
 * The back button in what is clearly an installation wizard is no longer to the left of the "next" button, but is inexplicably at the top left corner of the window. The windows explorer also has it's back button there, but *you have got to be kidding me*. How did this pass usability testing? It's clearly the work of dozens of managers ignoring their designers to make sure that they "deliver" the Vista "experience" right away.
 * Returning to the very first screen reveals that the installer isn't even capable of remembering the language selection made just one screen ago. Another screen doesn't remember the time zone selection.This is simple stuff. Basics. Restoring user values. UI 101.
 * Speaking of time zones, why does it sometimes default to Switzerland and sometimes default to Redmond? Why doesn't the pretty analog clock update when you change the time?

The installer seems to be an exception because Microsoft has clearly made an effort to actually store user settings so that windows open back up where you left them. The welcome screen is an exception here, resetting which areas are revealed and hidden every time it is displayed and resizing itself, too boot. The infamous "Services" control panel also still doesn't remember that you'd rather have the standard view than the extended one. The weather gadget defaults to Redmond instead of somewhere in the local area.

These are trifles, though, in comparison to what seems to be a solid release. After almost a week of use, it's still fun and has enough advantages, perks, glitz and glam to distract from some of the things that don't work so great. It's a remarkably solid effort from Microsoft and many of these wrinkles will likely be smoothed out in future service packs. That, probably more than anything else, if what they've copied from Apple: enough of Vista is done really well that users will stay distracted from the things it doesn't do well at all. OS X is also not perfect, but it does enough things right to make it bearable -- Vista seems to have joined that club.

First Days with Microsoft Vista

Past experience has shown that, while the initial reaction to the initial release of a Microsoft product can be very good, that curve degrades with time. With early versions, replace the verb "degrades" with "plummets". Early on, the superficial glitz has the most power to distract from the deficiencies. Vista is far from an early version, coming as it does at the end of a long line of predecessors of Microsoft's flagship product. As it stands, Windows is over a quarter of a century old. For Vista, however, the hype machine rolled out in a manner unlike any since the release of Windows 95 was supposed to change the world.

As with that momentous release a dozen years ago, Vista arrives astoundingly late, touts far fewer features than were originally planned and purports to change the world by giving Windows users many of the features the other 5% have been enjoying for some time now. However, since the just-installed glow hasn't quite worn off, let's stay positive and as objective as possible. Let's see what it actually does.

Aero Glass

Vista is very, very pretty. The prettiness is more than superficial, as with its predecessor, XP, which quickly dropped you back into the Windows 2000/Windows 98 world as soon as you opened something a little off the beaten path. Like a control panel. Vista has got it just right, offering an experience at least as delightful -- as far as subtle effects, shading and hinting are concerned -- as the current version of Aqua. Windows fade in and out convincingly, as do all manner of transition changes. The full-screen compositor releases users from having to choose between no on-screen gesturing at all and the often-jarring, ham-handed approach taken by XP. Vista wows with a lot of little things: when you select a folder with photographs in it and drag it, you see a larger "drag" icon of a folder with a couple of picture in it. Look closer and you see that your pictures have been rendered into the composition. It's just a little thing and purists will argue that it has nothing whatsoever to do with functionality. They are wrong; it is exactly these little things that have let OS X get away with shipping a sub-standard Finder for years.

Start Menu

imageThough the in-place Start Menu has caught flack from other reviewers1, it's probably a godsend for those without exquisite mouse control, capable of smoothly navigating large fields of menus. The XP start menu was also just slow, so the searchable menu is a nice change. The Vista menu is much more plain looking, with a single icon on top, reflecting the currently highlighted choice. Anyone serious about quick application navigation, however, will just get Launchy and be done with it. It's an excellent addition to XP or Vista.

Gadgets

imageThese are small applications that live in the Windows Sidebar, showing weather, time, date and other information. The screenshot to the right shows a notepad and an RSS feed reader (though it only supports Microsoft Newsfeeds). Though some have called it distracting, with a wide enough screen, it's a pretty nice compromise between Apple's Widgets layer -- which only displays on command -- and full-fledged applications. Look for Apple to steal this idea right back from Microsoft (though an application called Amnesty already more or less does this for OS X). All-in-all, a cool addition that is actually useful and pretty easy on the eyes.

Switching Applications

Window shuffling (Windows Key + Tab) is a neat-looking trick, but it remains to be seen whether it will be worth using. Alt + Tab shows thumbnails of each running application to help you find what you're looking for and updates them in real-time! If you hold Alt + Tab for a while, you can watch Flash animations play in open browsers or progress bars inch forward in installers. These thumbnails also pop up above a task bar item along with a tooltip with the full application title. That it doesn't work for minimized windows is the only drawback -- is there really any reason why Vista couldn't just keep a copy of the last bitmap it displayed here? At any rate, this is quite handy for those applications that have multiple windows open, but have less than useful window titles.

In a nod to OS X's Exposé, click any window when you're showing the list with Alt + Tab to go directly to that item. This is considerably easier than circling around if you miss your application (yeah, some of us have literally dozens of things open) or twisting your hand around to go in reverse by hitting Shift. 3D Shuffle also responds to clicks to select a windows, but lack any visual cue while hovering over different windows in this view. This is likely something that will be addressed in an update.

Windows Explorer

imageThe Windows Explorer has gotten what looks to be a worthwhile upgrade. Navigation has changed somewhat, with the "up one folder" button having been replaced with a chain of parent folders in the address bar. Click on a folder to jump back to it. Click on the drop-down arrow next to it to see other children of that folder. It seems pretty usable and extends OS X's column view with the added ability to jump sideways through the folder structure. Again, time will tell how useful this extra functionality is.

On top of that, Microsoft bit the bullet and added the OS X/NextOS-style list of favorites on the left side. For newer applications, this also shows up in the open & save dialogs as in OS X. Older applications have the old-style dialogs without the new links, leaving you at sea if you've gotten used to choosing one of your favorite folders as a starting point. Similarly, the "choose a folder" window also lacks access to these links, which is a shame.

Network access is finally implemented asynchronously with a cancel button and everything; the explorer window isn't blocked at all! It also blocks noticeably less when extracting meta-information or generating enhanced views. A view with a list of 3000 MP3s scrolled normally, displaying empty column values where it hadn't had the chance to extract artist or album information yet. The same went for a folder with almost 3000 icons and small pictures: normal scrolling with explorer filling in thumbnails as it was calculated.

There is a lot of polish here, with a clear information area at the bottom of the window, showing combined attributes for the selection and a toolbar at the top, showing the most important operations available for the selection. This will save a lot of right-clicking for most people. Rename a file and only the name -- not the extension -- is highlighted. Adjust properties for a shortcut and you get a drop-down with potential matches. These are little things, but they're nice and should make users more efficient.

At any rate, the explorer is much, much better than that in Windows XP and reassuringly better than the usability nightmare that shipped with the first beta of Vista. So far, it's my primary file browser, unlike in XP, where I switched to xPlorer2.

That ends part one, which covered user interface impressions of Microsoft Windows Vista. See First Days with Microsoft Vista, Part II for impressions of installation, networking and security.



  1. On general principle, in at least one case: Vista first look: Bugs and confusion by Thomas C Greene

Reverting Plugins in Eclipse

Eclipse provides the ability to keep multiple versions of a set of plugins (a feature) and switch between them. This is especially useful when testing a new release of dubious quality. As long as it doesn't bork your configuration1, you can always go back to the stable version.

The question is, what do you do if you don't have any previous versions? What happens if you're checking out a new tool, get the latest version and it doesn't work at all? Manage Configuration doesn't help you and Find and Install... offers you only the choice to

  • Search for updates of the currently installed features
  • Search for new features to install

With the first option, Eclipse won't find anything because you're already using the latest version. Duh. With the second option, Eclipse will also not find anything, again, because you've already got everything you need, as far as it's concerned.

Begone Foul Feature!

imageAnd there's the rub. You'll have to de-install the feature that's giving you problems from the Manage Configuration. Go to Help, Software Updates, Manage Configuration and open the tree on the left side of the window. Find your feature in the list and select it. On the right side, you'll see Available Tasks, but you can only disable the feature, not uninstall it. Typical. Before you lose all hope and try to delete the feature and plugin manually through the file system, right-click the item in the tree. There, you'll find the Uninstall item you were looking for, but was apparently far too dangerous to show in the list of tasks.

Get rid of the offending feature and restart.

Getting Older Versions

imageimageNow you'd like to install an older, more stable version of the feature. Go to Help, Software Updates, Find and Install.... From there, choose the Search for new features to install radio button and click Next. Make sure the desired site is selected in the list of sites on the left.2

Now, Eclipse should find your feature on the site again and offer to install it. On this window, make sure to deselect the Show the latest version of a feature only checkbox, so you can select multiple versions from the list and install them all at once. Once you've restarted, though, it's anyone's guess which version is really loaded. In my case, the Maven plugin was installed as version 0.4 in the about box and 0.9 in the configuration manager. Reverting to a previous version of 0.5 (I'd downloaded 0.4, 0.5 and 0.9) and restarting got things back on track and I was able to finally test out Maven 2.

Hopelessly Confused

I have since broken it again, as I de-installed everything in order to write this blog accurately. Eclipse refuses to download anything from that site now and has been shut down, so that it can rest. Perhaps later, it will be up to the task of actually being useful again. It turns out, on further inspection, that Eclipse only uninstalls the current version of a feature. Therefore, it uninstalled version 0.5, but left versions 0.9 and 0.4 behind. Deleting them manually from the file system (the last resort of the desperate) did the trick and allowed me to re-install Maven 2.

After having performed all of these re-installs, Eclipse re-installed the Maven plugin at version 0.0.9 -- at which point it actually started working as expected.

Wheeee!!!

Yoxos

In order to avoid these horrendous hassles and to avoid fighting with the Eclipse plugin system, let Yoxos take care of it for you. From their site, you can pick and choose the Eclipse version and set of plugins you want and they pack everything together into a customized installer and let you download it. They include a plugin of their own, that allows you to browse their repositories locally and, if you're a member of their network, download and install them right from within Eclipse. Though Eclipse has its own update system, it's fraught with problems and the Yoxos subscription might just be worth it for those that try out and discard Eclipse plugins more often.



  1. A big "if", I know, considering some of the plugins out there. I'm looking at you, Tycho (plugin for Maven 2).

  2. You can't avoid uninstalling just by selecting the Ignore features not applicable to this environment checkbox either: Eclipse refuses to show any older versions at all, no matter what you select. Using Eclipse 3.2.1 with Maven integration 0.5, 0.9

Learning about Windows Processes

If your Windows installation seems to be taking forever to start up (especially once you've already logged in), you should take a look at all the applications that have registered themselves to run at startup time. After a while, this list will be quite long.

Instead of going directly to the registry, from the Run menu, type msconfig and hit enter. Up pops an ancient-looking System Configuration Utility, which gives you the lowdown on several ancient startup files1 as well as the list of services and startup applications. Scroll through these lists to see what you can weed out.

imageNaturally, it won't be immediatel obvious whether an application is necessary or not based on the name alone. In fact, some of the names are so well-chosen, you can't even figure out who installed it or when! Whereas Adobe Reader Speed Launch.exe is obvious (...and disabled), it's less obvious whether you can disable ImScInst or ctfmon (both located in the {Windows}\system32 folder).

For these cases, it's ProcessLibrary to the rescue. Just type in the name of a startup application or a running Windows process (visible from the Task Manager) and it'll tell you everything you need to know about it ... and whether or not you can shut it off.


  1. And I do mean ancient; SYSTEM.INI and WIN.INI are originally from Windows 3.x days ... or earlier.