------------------
12/2017 bis 04/2018: Bringup eines embedded Linux Boards auf ZynqMP Basis.
Die Hardware war noch nicht fertig entwickelt, als das Linuxsystem darauf getestet werden sollte. Zuerst baute ich eine Simulationsumgebung mit den petalinux tools (qemu), um die darauf geprüfte Software auf die Hardware zu übertragen.
* Inbetriebnahme des QSPI Flash
* Anpassen von Devicetree und Linkerskripten
* Entwickeln einer Boot-Technik mit Möglichkeit zu sicheren Updates
* Aufbau des rootfs
* Nutzung und Änderung einer Vivado Hardwarebeschreibung
Benutzte Tools: Xilinx Toolchains (vivado, xsdb, ...), JTAG SmartLynq, GNU Entwicklungstools, qemu, gdb, bitbake.
------------------
11/2016: bis 11/2017: Unterstützung beim Bau einer neuen Serverarchitektur in Hamburg.
Als selbstständiger Berater und Programmierer unterstütze ich ein Start-Up bei der Entwicklung einer neuen Serverarchitektur mit dem Ziel eine optimale Platform für Edge Computing zu bauen.
In enger Zusammenarbeit mit anderen großen Firmen, mit agilen Entwicklungsmethoden und im regen Austausch zwischen Software und Hardware Abteilung entsteht eine neue Serverentwicklung. Meine Aufgaben dabei:
* Hilfe beim Bring-Up der Hardware
* beisteuern von Ideen und Konzepten
* Koordination
* Hilfe bei der Auswahl von Software
* Programmierung
* Dokumentation
Eingesetzte Technologien und Werkzeuge: Debian GNU/Linux, PowerPC Toolchain, Crossentwicklung, python, TFS
------------------
06/2014: bis 10/2016: Schulungen für verschiedene Firmen im Bereich C++, Qt,
Netzwerk, (embedded) Linux
Als Selbstständiger Berater und Trainer bin ich für verschiedene Firmen
zwischen Hamburg und Rastatt tätig.
Themenbereiche sind:
* die Verwaltung und das Sicherstellen des vorhandenen Firmen Know-Hows.
* moderne Entwicklungsmethoden (agile Entwicklung).
* Open Source Software für Entwickler (git, GNU Tools, wireshark, IDEs, ...).
* Sicherheit bei der planung eines Projektes und beim erstellen von Software.
* Kommunikationsprobleme in der Zusammenarbeit, Gruppenmoderation mit Methoden aus dem Improvisationstheater.
Diese Schulungen waren häufig für die Dauer von drei Tagen bis einer Woche
vor Ort ausgelegt. Dabei kümmerte ich mich wenn gewünscht auch um Essen und den
Schulungsort etc.
------------------
12/2013: bis 05/2014: Trainings and Coaching in the area "embedded C++" and "Qt5"
About every two weeks I trained the employees of a company in Rastatt, Germany in-house for 2-3 days. When I was at home, we had contact by mail and phone to solve actual problems.
We discussed embedded development, C++ and Qt in the needed detail. Important was to bring the software engineers together to work as a team since they where a heterogenous group (in knowledge, age, ...) with a history as lone fighters.
We worked with virtual machines (GNU/linux and tools) as development environment and with role plays and other social games (trust each other, ...). The games where in part developed in the group.
------------------
02/2012: bis 09/2013: Mitarbeit an der Entwicklung von Informationssystemen auf Linux Basis.
I was hired to help build up a new infotainment system based on GNU/linux
and embedded ARM9 hardware with custom graphics drivers. I learned details
about IBIS+ vehicle bus systems, CAN, RS485, Realtime-Ethernet.
Part of the job was to train the engineers (in C++, GNU/linux and Qt). The
main part was to enhance the old infotainment software, to plan and install
a new linux environment, to write libraries for the bus systems which could
be used for the KEIL compilers as well as for GNU compiler.
The task included to build up a in-house toolchain on a extra server hardware
based on buildroot for compiling and cross-compiling (i386 > ARM,
linux > windows).
Stichworte / Mittel: Buildroot, Crosscompilieren, MIPS, arm, Grafiktreiber, serielle Busse, IBIS Bus, GNU Entwicklertools.
-----------------
07/2011 - 11/2011: Qt user space software for XML processing and graphical
representation.
From different websites a bunch of XML files had to be fetched and compared
and the results had to be written in open document format.
The XML was not always well defined, the XML namespaces were unusable and
therefore dropped. The software had to find the relevant context inside the
XML structure and pick its data according to a list of searchwords from there.
The greatest problems were to eliminate double data (same data but from
different websites) and to make the time information comparable.
-----------------
03/2011 - 06/2011: Linux Kernel tracing and performance optimizing
The task was to have a look at the customers data flow through the linux
kernel: From the input (driver) to the output (user space program). The
problem was that at irregularly intervals the customer observed glitches
(delays).
For that I used the ftrace framework, qemu sometimes (it was not as good
as now, then) and even a digital oszilloscope (for the bus signals).
I could smooth the data flow a litle bit but the main problem were un-
documented IRQs for the motherboard maintenance. They could not be detected
from "inside" linux with only linux tools.
-----------------
10/2010 - 11/2010: Schulungen im Bereich OpenOffice
Eine mittelständische Firma stellt ihre Microsoft Office basierte Rechnerlandschaft
schrittweise auf freie Software um.
Meine Aufgabe dabei ist das Schulen der Mitarbeiterinnen und Mitarbeiter und die
Neuprogrammierung der vorhandenen MS-Office Basic Funktionen.
Arbeitsabläufe und Dokumentenmanagement beim Kunden wurden im Zuge des Projektes dahingehend verändert, dass jeder Mitarbeiter nur die für sie / ihn wichtigen Dokumente sehen und verändern konnte. Stichwort Datenschutz.
Eingesetzte Mittel waren OpenOffice (noch von Sun), OpenOffice.org Basic, gnome, python, postgresql (Dokumentenmanagement, Rechteverwaltung)
-----------------
05/2010 - 09/2010: Embedded Linux Kernel Anpassung und Treiberprogrammierung
Projektbeschreibung:
Anpassen eines Linux Kernels an die Hardware eines WLAN Routers. Optimieren des Kernels hinsichtlich Latenzen und Taskswitching.
Ein vorhandener Linux Kernel Version 2.6.32 sollte für eine embedded Hardware (ARM Cortex
M3) und per GPIO angebundenem Soundprozessor hinsichtlich Speicherverbrauch und Latenzen
optimiert werden.
Die schon vorhandene fast fertige Software zeigte Aussetzer wenn bestimmte IRQs auftraten.
Eine Emulator durchlauf zeigte, dass ein "big kernel lock" (BKL) die Ursache war, welches
ich entschärfen konnte.
Die Speichernutzung wurde optimiert, indem ich "worst-case" Szenarien im Emulator durch-
spielte und mit den gewonnenen Daten einige Kernelstrukturen und -variablen anpassen
konnte.
Technik: Die bewährten Linux Kernelwerkzeuge (git, make, gcc) und emacs als Texteditor,
Versionskontrolle (frontend für git) und Projektverwaltung.
-----------------
11/2009 - 03/2010: C Quelltextanalyse
Projektbeschreibung:
Ein C Quelltext für eine Gerätesteuerung sollte hinsichtlich seiner Eignung
für die verwendete Hardware geprüft werden. Besonders das Zeitverhalten
und das Verhalten in besonderen Fällen (Stromausfall, elektrische Störungen)
sollte geprüft und dokumentiert werden.
Für die Untersuchung des Codes baute ich eine isolierte Testumgebung,
welche beliebige Eingaben und eine Prüfung der Ausgaben zuließ. Ein
Debugger oder Emulator kam nicht in Frage, weshalb ich die Codeausgaben
per LED und GPIO Umschaltungen beobachtete.
Technik:
GNU Tools für die crosscompilierung, emacs
-----------------
05/2009 - 08/2009: Code eines embedded Messgerätes umstellen von
ARM auf M16C Zielplattform
Projektbeschreibung:
Ein vorhandenes grafisches Display sollte jetzt mittels neuer
Hardware angesteuert werden.
Lösungsdetails:
Die alte Hardware wurde komplett mit firmeneigener Software
angesteuert.
Statische Codeanalyse mit Lint, entfernen alter und hardwarenaher
Strukturen, einbau einer Zwischenschicht für den neuen Treiber
und erstellen des neuen Treibers für seriellen spi Bus.
Technik und Methoden:
Ansi-C, SPI, IO-Ports, hardwarenahe Messtechnik (Speicheroszilloskop),
IAR Compiler, HEW Emulator, emacs.
-----------------
02/2009 - 04/2009: Test eines kundenspezifischen Busses
Projektbeschreibung:
Der Kunde möchte einen neuen Bus auf den Markt bringen und benötigt
geeignete Tests als Verifikation seiner Bus Spezifikation.
Projektaufgabe:
Im Projekt war meine Aufgabe die Dokumentation des Testkonzeptes, die
Planung eines Teils der Softwarearchitektur, Machbarkeitsanalyse
bezüglich IPC unter Windows, Schnittstellendesign der Softwareteile,
finden eines geeigneten Frameworks für die schnellere
Softwareentwicklung (in dem Fall wxWidgets), Enwicklung eines Teils
der Software und finden einer Lösung für automatisierte Hardware Ein-
/ Ausschalttests.
Lösungsdetails / Solution Details:
Die Softwarearchitektur war aufgrund vorhandener Kundensoftware
weitgehend vorgegeben (MS Windows XP, MS Visual C++). Aufgrund der
knappen Zeit und von Lizenzvorgaben entschied ich mich, das Framework
wxWidgets (Version 2.8.9) dazu zu nehmen, womit die grafische
Oberfläche, die IPC per Pipelines und die Netzwerkkommunikation
schnell umzusetzen war.
Die Dokumentation der Software wurde im Quelltext mit Tags für doxygen
während der Entwicklungszeit gemacht. Dadurch standen stets aktuelle
Shnittstellenbeschreibungen im gewünschten Zielformat (HTML, PDF) zur
Verfügung.
Die Projektplanung und Umsetzung fand im Rahmen agiler
Softwareentwicklung statt. Die täglichen kurzen Koordinationstreffen,
die zielorientierte Planung und ein aktuelles Backlog halfen die
Übersicht zu wahren und das Projekt fristgerecht zu beenden.
Technik und Methoden:
MS Visual C++, agile Softwareentwicklung, Objektorientierte
Schnittstellen, doxygen, Funktionstests.
-----------------
06/2008 - 09/2008: Aufbau eines angepaßten Notebooks
Projektbeschreibung:
Aufbau eines stromsparenden Notebooks mit grafischem Display und für
folgende Aufgaben / mit folgenden Eigenschaften:
* grafisches Display
* WLAN und Ethernet Verbindung
* Entwicklungstaugliche Performance (gcc, make, emacs)
* Laufzeit mit Akkus größer als 8h
* einfache Synchronisierung mit meiner bestehenden Software (per rsync).
Lösungsdetails:
Ausgangspunkt meiner Umsetzung war das verdex Board der Firma gumstix
/ USA mit farbigem Sharp LCD (480 x 272 Pixel), WLAN, ethernet,
microSD Slot, USB 1.1 und RS232. Zur vollständigen Realisierung war
eine Halterung für LCD und Akkus plus Stromversorgung notwendig.
Als Software kommt debian ARM zum Zuge. Die grafische Oberfläche
basiert auf Linux Framebuffer und wird von mir noch weiter
entwicklet. Denn obwohl es fertige Lösungen gibt (tinyX, matchbox,
...), benötigen diese zu viele Ressourcen.
Techniken und Methoden:
rsync, gcc, ARM crossentwicklung, linux-Framebuffer, GPIO Ansteuerung.
-----------------
02/2008 - 05/2008: Projekt "Sicherer NGW100 Router".
Projektbeschreibung:
Das NGW100 ist ein Board auf Basis des neuen AT32AP7000
Microcontrollers von Atmel. Es bietet Anschlussmöglichkeiten für
RS232, microSD, LCD Display, PS2, USB und vor allem zwei Ethernet
Anschlüsse. Einsatz der 32 Bit Cross-Entwicklungsumgebung von Atmel.
Projektaufgabe:
Ich wollte auf dem NGW100 Board mindestens einen pppoe daemon und eine
Firewall plus DSL-Einwählautomatik realisieren. Ferner waren ein LCD
Display als Statusanzeige und automatischer Mailempfang geplant.
Lösungsdetails / Solution Details:
Auf der Boardrevision wurde ein fehlender Steckkontakt aufgelötet
(notwendig für LCD). Ein AVR Linux mit den meisten Treibern war schon
auf dem internen Flash installiert und war per RS232 und kermit zu
erreichen. pppoe mußte leicht angepaßt und crosscompiliert werden
bevor er problemlos funktionierte. Die Steuerskripte dafür schrieb ich
selbst, weil die bekannten Skripte von Linuxdistributoren
Abhängigkeiten hatten, die zu viel Platz im Flash benötigen. Als
firewall kam iptables und eine eigene Konfigurationsdatei zum Zuge.
Techniken und Methoden:
Busybox, AVR Linux, gcc-avr, kermit, remote debugging mit gdb,
iptables, bash-skripting.
-----------------
11/2006 - 12/2007: Planung und Entwicklung eines Werkzeugs für die
Kommunikation (Traces, Fehlerbehebung) mit Mobilfunkstationen.
Projektbeschreibung:
Es handelte sich um ein von mir eigenständig durchgeführtes Projekt in
enger Zusammenarbeit mit einem Ansprechpartner beim Kunden. Ich habe
ein einfach zu bedienendes, erweiterbares Tracetool für den
Feldeinsatz programmiert. Vorbereitend unternahm ich folgende
Schritte:
* Ist-Analyse, was ist schon vorhanden?
* Vorhandene Dokumentation zusammenstellen.
* Abstimmung mit Projektleitern / Verantwortlichen und Präsentation
meiner Ideen.
* Erfragen des vorhandenen Know-How.
Besonders der letzte Punkt erwies sich als problematisch, denn die
Entwicklungsabteilung beim Kunden sollte aufgelöst werden, was zu
wechselnden Verantwortlichen führte. Trotzdem ist es mir gelungen,
durch häufigere Abstimmungstreffen die Projektsituation zu verbessern.
Lösungsdetails:
Die Geräte kommunizierten per CORBA, ftp und telnet über IP (TCP/UDP)
und serieller Schnittstelle RS232. Die Datenübertragung erfolgte per
UDP mit firmeneigenem Protokoll. Softwareanforderungen waren:
* Performance auch auf alten Rechnern.
* Lauffähig ohne Installation direkt von der CD.
* Plugin Schnittstelle zwecks Erweiterbarkeit.
* Zukunftsfähige Softwareplatform mit grafischer Oberfläche.
* Zielplatform Windows (XP).
Techniken und Methoden:
libcurl, wxWidgets, cygwin (gcc) und MS Visual C++, UML, Modellierung
des C++ Klassenmodells mit MS-Visio, CORBA (TAO mit ACE
Kompatibilitätsklassen), Text- und Folienpräsentationen mit tpp und
OO-Impress
-----------------
04/2006 - 06/2006: Schulungen im Rahmen von Softwareumstellugen auf
OpenSource Produkte
Projektbeschreibung:
Aufgrund meiner langjährigen Erfahrung in verschiedensten Bereichen
der SW-Entwicklung hatte ich die Möglichkeit mein Wissen in Schulungen
weiterzugeben. Ich schulte die Mitarbeiter und paßte die Software an
die Bedürfnisse des Kunden an. Ein Problem war die veraltete Hardware,
welche nicht komplett ausgetauscht werden konnte. Dies löste ich
dadurch, dass ich rechenintensive Aufgaben auf einen Server
verlagerte.
Meine Aufgaben im Einzelnen:
* Entwicklung des Schulungskonzeptes (große Bandbreite an Altersstufen
und Vorkenntnissen).
* Einzelbetreuung der Mitarbeiter.
* Tuning der Arbeitsumgebung in Richtung einfacher Bedienbarkeit.
* Entwickeln von Openoffice-Basic Skripten.
Die von mir eingesetzte Technik:
Ubuntu Linux, Openoffice + eigene Skripte, Firefox + eigene Plugins.
-----------------
11/2004 - 02/2006: Treiber für ARM Prozessor
Projektbeschreibung:
Im Projekt war meine Aufgabe die Entwicklung von Treibern für Linux
Kernel 2.4.19 mit ARM patchset für ein proprietäres System mit ARM PXA
Architektur. Zuvor beriet ich den Kunden bezüglich
Softwarekompatibilität, Entwicklungskostenabschätzung und
Personalfragen. Die Hardware (embedded ARM System) mußte spezielle
Anforderungen hinsichtlich Störanfälligkeit und Leistungsaufnahme
erfüllen. Darum arbeitete ich eng mit der
Hardwareentwicklungsabteilung zusammen. Das machte sich später bei
meiner eigenständigen Aufgabe Treiberentwicklung positiv bemerkbar.
Meine Aufgaben in Stichworten:
* Softwareauswahl und Beratung bezgl. Entwicklungssystem.
* Machbarkeitsstudie zum Zeitverhalten.
* Beratung bei der Personalauswahl.
* Aufbau der Arbeitsumgebung auf Opensource Basis.
* Entwicklen der Treiber für proprietäre Hardware: Oxford UART Chips für
die RS-822 Kommunikation. I2C Treiber für DS 1339 RTC. GPIOs für die
Kommunikation mit dem kundenspezifischen CPLD für die Gerätesteuerung.
* Dokumentation der Treiber und der Schnittstellen zur Userspace Applikation.
* testen der Treiber auf Hardwareebene mittels 4-Kanal Logicanalyser.
* Schreiben von Testskripten mit dejagnu, um einzelne Komponenten täglich
automatisch zu testen.
* Aufbau und Pflege von Zulieferer-Kontakten.
Von mir eingesetzte Technik:
ARM, GNU/Linux, crosscompiler gcc, gdb (mit JTAG), busybox, emacs,
etags, CVS, dejagnu
-----------------
10/2003 - 09/2004: Projekte im Bereich Linux Softwareentwicklung und
Linux Schulungen
Aufträge von wenigen Wochen Dauer, die hier nur in Stichworten
aufgelistet werden:
* Optimierung des Mailsystems für eine Firma in Frankfurt/M.
* Linux Schulungen in Berufsfortbildungsinstituten im Bundesgebiet,
z.T. für Siemens in Erlangen.
* VHS Kursangebot in ANSI C Programmierung.
* Beratung des Berliner Bezirksamts Kreuzberg, Wiener Straße 53 (Jug3)
bezüglich freier Software.
* Umstellen von Windows Clients auf GNU/Linux mit xfce Desktop und OpenOffice.
* Schulung im Bereich Netzwerkprogrammierung für Bremer und Berliner
Schulungsunternehmen (Complex GmbH, GPB, ...).
Die von mir eingesetzte Technik:
GNU/Linux, sendmail, skripting (bash/awk), GNU gcc, emacs, xfce,
Präsentationen (tpp und Browserbasiert), Openoffice 1.x
-----------------
04/2002 - 08/2003: Backupstrategie und Automatisierung
Projektaufgabe:
Meine Aufgabe bestand in der Einrichtung von Backupservern und
Umstellen der Firmenserver auf Linux. Dabei ergaben sich für mich zwei
Probleme: Als Startup war die Firma noch gänzlich unstrukturiert, es
gab keine klare Aufgabenstellung außer alles muß funktionieren. Die
preiswertesten DAT-Backupserver arbeiteten nicht perfekt mit dem
Softwaretool mt zusammen, welches für die Steuerung der
SCSI-Bandmaschinen notwendig war.
Beide Probleme löste ich durch ausgiebige Tests im Vorfeld der
Hardwareauswahl und durch möglichst breitbandig einzusetzende
Hardware, die sehr gut zu skalieren war.
Lösungsdetails / Aufgaben:
* Beratung bzgl. Hardware und Software.
* Erstellen einer Backupstrategie.
* Entwicklen von Clients für den Backupprozess durch CGI Skripte.
* Schulen der Mitarbeiter.
* Einrichten von Samba- und Apache-Server unter Linux.
Von mir eingesetzte Technik:
GNU tar, mt, GNU gcc, POSIX-shellskripte, CGI, samba, apache
-----------------
01/2001 - 03/2002: Treiberentwicklung ISDN unter RTOS Linux
Projektbeschreibung:
Ziel war ein ISDN Tracer und Debugger, ein netzwerkfähiges und
ausbaufähiges Meßsystem. Meine Aufgabe war anfänglich, ISDN Treiber
für GNU/Linux Kernel 2.4 mit RT-patchset zu entwicklen.
Projektaufgabe:
Eine Besonderheit hier war, dass das Startup-Unternehmen sowohl die
Hardware als auch die Software von jungen Ingenieuren komplett neu
entwicklen wollte. Ich war zu Beginn der Einzige mit ANSI-C und Linux
Kenntnissen. Dieser Herausforderung begegnete ich mit mehrmonatigen
Schulungen im Bereich Software und genauen Absprachen mit den
Hardwareentwicklern. Ich habe meine Aufgabenstellung in Richtung
Machbarkeitsanalyse und Schulungen erweitert, weil ohne diese Maßnahme
kein Produkt entstanden wäre.
Lösungsdetails / Aufgaben:
* Auswahl der (embedded) Hardware und Software (ELAN Board).
* Machbarkeitsstudie bezgl. RT-Linux (timing / Bandbreite für bis
zu 32 ISDN Kanäle).
* Design der Schnittstellen zum Userspace.
* Entwickeln der Bibliotheken in C mit GNU-Tools.
* Entwicklen einer Testsuite.
* Entwicklen von HFC Chip Kerneltreibern für RT-Linux.
* Entwicklen von RS 232 Treibern für RT-Linux.
* Dokumentation der Schnittstellen für die Userspace Applikation.
* Kontakt mit dem Hardwarezulieferer Ferrari, Teltow.
* Softwareschulungen für die Onsoft Mitarbeiter.
Von mir eingesetzte Technik:
C, GNU-Tools, GNU/Linux, RTOS mit mbuf, busybox, dietlibc, emacs, etags, CVS
-----------------
01/2000 - 05/2000: Umstellung vorhandener heterogener
Hardware (Apple, BSD, Windows) auf eine homogene Linux-Basis
Projektaufgabe:
Ziel meines Projekts war eine Vereinheitlichung der Rechnerlandschaft,
so daß eine nachhaltige Schlung der Mitarbeiter stattfinden
konnte. Das von mir entwickelte Schulungskonzept mit eigenen
Unterlagen legte besonderen Wert auf paarweise Zusammenarbeit, da
(wegen Arbeitsausfalls) nie alle zu schulenden Mitarbeiter
gleichzeitig anwesend waren.
Lösungsdetails / Aufgaben:
* Auswahl des Linuxsystems und des Kernels.
* Vereinfachung der physikalischen Netzwerkstruktur, Umstellung
auf 100MBit Ethernet, Routerkonfiguration.
* Programmierung kleiner Frontends in Java.
* Schulungskonzept ohne Ausfall der Mitarbeiter und Einzelbetreuung
der Mitarbeiter.
Die von mir verwendete Technik:
Debian, GNU/Linux, java, emacs, Textpräsentationen
-----------------
05/1999 - 12/1999: Design und Entwicklung einer schnellen und
Plattformunabhängigen Benutzerschnittstelle in Java
Projektbeschreibung:
Die Entwicklung einer wiederverwendbaren Benutzerschnittstelle unter
Java ohne Swing. Wichtig dabei: Kurze Antwortzeiten, performant,
Plug-In fähig und erweiterbar.
Projektaufgabe:
Meine besondere Idee hier war, dass ich eine grafische Oberfläche in
kleine Bereiche (Klötzchen) unterteilte, die mehrfach verwendet wurden
und innerhalb eines vorgegebenen Rechteckes beliebig angeordnet werden
konnten. Die Elemente der GUI und deren Anordnung legte ich in einer
XML Datei fest, die von der Anwendung dynamisch geladen wurde.
Die Techniken Java, AWT und XML lasteten die vorgegebene Hardware bis
an ihre Grenzen aus, weshalb ich einen einfachen XML Parser schrieb.
Lösungsdetails / Aufgaben:
* Objektorientiertes Design einer dynamischen Benutzeroberfläche.
* Softwareentwicklung in Java mit AWT, entwicklen eines XML Parsers.
* Befragung/Interaktion von/mit Test-Nutzern.
Von mir eingesetzte Technik:
Borland JBuilder, java, emacs JDT, javadoc, doxygen, AWT, XML (eigener
Parser).
--------
vor 1999: Projekte von zwei Wochen bis drei Monaten Dauer, zum Teil
neben meinem Studium, für Unternehmen, Behörden und Universitäten in
Berlin, Göttingen, Hannover, Bremen und Ulm.
Dazu Stichworte:
* Mailserverumstellung im Rechenzentrum der FU-Berlin.
* Linux Server für ein Internetcafe einrichten.
* Praxissoftware für einen Röntgenarzt (mit eigener Anamnesedatenbank).
* Geodäsiesoftware und spezielle Treiber für die TU-Berlin.
* Schulungen für Fortbildungsmaßnahmen.
* Computerschulungen für Jugendliche für das Jugendamt.