MATSE in Niedersachsen

Die Ausbildung zum Mathematisch-technischen Softwareentwickler (MATSE) ist ein neuer Ausbildungsgang mit Ursprung in Nordrhein-Westfalen. Er wird seit 2008 angeboten und gehört damit zu den jungen Ausbildungsberufen.

Die Fähigkeit, komplexe naturwissenschaftlich-technische Aufgabenstellungen auf Modelle der Mathematik abzubilden und diese Modelle in objektorientierte Software umzusetzen erfährt eine stetig steigende Nachfrage. Das liegt insbesondere am Fortschritt in der Computer-Technologie im Allgemeinen. Vor 10 Jahren gab es zwar schon Computer, das Internet und objektorientierte Programmierung. Seit dem haben neue Technologien wie 3D-Darstellungen, intelligente Gestenerkennung, Lage- und Beschleunigungssensoren, und Bilderkennung den Weg zum Konsumenten gefunden.

Dies Verbindet sich mit einem Wandel in der Prozessortechnik – der Basis für jede Art der Programmierung. Die jährliche Verdoppelung der Taktfrequenzen hat ein Ende gefunden, stattdessen setzen Prozessorhersteller heute auf massive Parallelisierung.

Diese Veränderungen haben massive Auswirkungen auf jede Art von Ausbildungen im Bereich der Softwareentwicklung. Insbesondere fordern diese Technologien ein umfangreiches Wissen über mathematische Zusammenhänge und deren Umsetzung in Software.

Die Ausbildung zum MATSE greift diese neuen Anforderungen auf und bietet eine Ausbildung, die sich an der vollständigen Problemlösungskette mathematisch-technischer Herausforderungen orientiert: Vom mathematisch-technischen Problem über Auswahl und Anwendung passender mathematischer Modelle, der Übertragung in interative, numerische Algorithmen bis hin zur Implementierung dieser Algorithmen in Software.

Während man zuerst vielleicht geneigt sein mag, diese Fähigkeiten dem Ingenieurwesen oder dem produzierenden Unternehmen zuzuordnen, so zeigt allein schon der Blick auf bereits jetzt für Endverbraucher am Markt verfügbare Endgeräte deren Notwendigkeit für die Entwicklung moderner Software.

Viele “Apps” für Smartphones und vergleichbare Geräte verwenden Technologien wie Geolocation, Lagesensoren, Bilderkennung, Gestenerkennung und komplexe 3D-Darstellungen. Nahezu alle aktuellen mobilen Endgeräte bringen entsprechende Sensorik mit.

Bisher gibt es Niedersachsen eine entsprechende Ausbildung nur an Universitäten und Fachhochschulen. Ein solches – sehr selbständiges – Studium ist jedoch nicht für jeden Schulabsolventen geeignet, unabhängig von seinen tatsächlichen Begabungen.

Um hier Abhilfe zu schaffen entwickeln wir am b.i.b. International College derzeit eine entsprechende, vorwiegend schulische Ausbildung unter enger Einbindung der nachfragenden Unternehmen. Noch sind viele Hürden zu nehmen, denn die verantwortlichen Kammern tun sich zunehmend schwer, vorwiegend schulische Ausbildungsgänge in Ausbildungsberufen zu akzeptieren. Dennoch hoffen wir, diese Ausbildung ab dem Wintersemester 2015/16 anbieten zu können!

Joomla 1.5 Sicherheit

Joomla ist ein beliebtes Content-Management-System (CMS). Es hat den primären Zweck, die Verwaltung, Änderung und Erstellung von Inhalten durch Webseiten-Betreiber ohne Kenntnisse in Webseiten-Design zu ermöglichen. Der Betreiber pflegt seine Seiten über eine einfache Textverarbeitung. Das CMS sorgt dafür, dass die Inhalte der Seiten so dargestellt werden, wie bei Erstellung der Webseite für alle Webseiten gemeinsam festgelegt wurde.

Insbesondere bei kleinen Webseiten ist es wichtig, dass das CMS nicht zu oft erneuert oder gewartet werden muss. Schließlich ändern sich die Inhalte nicht sehr oft und die durch die Webseite generierten Umsätze halten sich in Grenzen. Es ist daher für jedes CMS wichtig, dass Updates für ältere Versionen möglichst lange zur Verfügung gestellt werden.

Leider wird diese Forderung von den bekanntesten CMS nur teilweise erfüllt. Besonders beliebt für kleine Webseiten ist das CMS Joomla. Für Joomla sind die Support-Zyklen für sogenannte Langzeit-Versionen (LTS) und Kurzzeit-Versionen (STS) unterschiedlich. Grundsätzlich gilt dabei, dass die LTS die letzte Version eines Zweiges ist. Wenn eine Joomla LTS Version auf die nächste Version aktualisiert werden soll, dann sind stets manuelle Arbeiten erforderlich, deren Umfang von den verwendeten Plugins und Templates abhängt.

Joomlas STS-Versionen werden für 7 Monate gewartet und können ohne großen Aufwand auf die nächste Version aktualisiert werden.
Joomlas LTS-Versionen werden für 21 Monate gewartet und können nicht ohne Aufwand auf die nächste Version aktualisiert werden.

Derzeit wird besonders eine Joomla-Version zum Problem: Joomla 1.5 (LTS). Diese ist auf sehr vielen Webseiten installiert, jedoch ist der Support für Joomla 1.5 vor knapp einem Jahr ausgelaufen (30.04.2012). Nach Ende der Supportzeit wurden weitere Schwachstellen im Joomla 1.5-Konzept öffentlich. Dadurch kommt es nun zu vermehrten Angriffen auf Joomla 1.5-Seiten.

Bei diesen Angriffen erhalten die Angreifer zumeist die komplette Kontrolle über die Joomla 1.5-Webseite. Mögliche Folgen sind:

  • Es wird Schadsoftware (Viren, Trojaner) auf die Computer der potentiellen Kunden übertragen.
  • Es werden zusätzliche, meist illegale Webseiten auf Ihrem Webspace angelegt.
  • Das Aussehen und der Inhalt ihrer Webseite wird verändert, um die Ziele des Angreifers darzustellen.
  • Ihre Webseite wird missbraucht, um Werbe-Emails (Spam) zu versenden.

Insbesondere der Image-Schaden durch Schadsoftware auf der Webseite ist nicht zu vernachlässigen. Der Versand von Spam kann schnell dazu führen, dass eine Webseite als Versender von Spam erkannt wird und auch legitime E-Mails ihre Empfänger nicht mehr erreichen können.

Der einzige tatsächliche Schutz besteht darin, die Version des CMS stets aktuell zu halten. Leider ist der Aufwand für die Aktualisierung der alten Joomla 1.5 Seiten vergleichsweise hoch. Hier die Liste der relevanten Joomla-Versionen:

Joomla 1.5 (LTS) – Ende des Supports 30.04.2012
Joomla 2.0 (STS) – Ein einfaches Upgrade auf 2.5 LTS ist verfügbar und erforderlich, Support beendet.
Joomla 2.5 (LTS) – Die aktuelle LTS-Version. Support-Ende im 2. Quartal 2014.
Joomla 3.0 (STS) – Die aktuelle STS-Version. Das erscheinen der LTS-Version 3.5 ist geplant für das 2. Quartal 2014.

Wer also jetzt eine Joomla 1.5 Webseite aktualisieren möchte, hat die Wahl zwischen den Versionen 2.5, deren Support in etwa einem Jahr ausläuft und der Version 3.0, die unter Berücksichtigung der geplanten LTS-Version 3.5 bis 2016 Support erhalten wird. Es ist leider keine Version von Joomla geplant, die einen längeren Support-Zyklus aufweist.

Javascript / JQuery: Sorting large HTML lists and tables

While Javascript itself is executed very fast on modern browsers, DOM manipulation still takes a lot of time. Moreover, during extensive DOM manipulations some browsers appear to be freezing. And that is something no web developer will want to happen as it dramatically reduces user experience.

So what to do about it? The solution is to change all operations working with DOM to an O(n) performance. The sorting itself is done on pure javascript arrays and objects.

You can use the following sort map function on any javascript array or pseudo-array. pseudo-arrays need to have a .length property and all elements must be accessible using zero-based numeric indices. It does not change the array itself; it generates an index map to the original array instead. You can use that index map as a sorted view of the original array.

The example is using JQuery but the sort function does not.

/*
  create_sort_map   creates a map to iterate through a sorted view 
                    of list
  list              an array or pseudo-array containing all elements
                    to sort
  prop_fn           a callback function that returns the property to
                    sort by for each element of list
  invert            optional: sort descending 
  prev_sortmap      optional: previous result of create_sort_map, if 
                    you want to sort a list multiple times for 
                    different criteria 
  
  Usage example (JQuery):
  
  // find the table to sort
  var table = $('#my_table');
  // find rows to sort
  var list = table.find('tr');
  // created map to sort the list of rows
  var map = create_sort_map( list, 
    function(my_tr) {
      // find the value to sort by inside a row
      return $(my_tr).find('td.my_sort_col').text();
    });
  // re-insert rows in proper order
  for(var i=0; i<map.length; i++) {
    table.append($(list[map[i]]).detach());
  }
  // clean up
  table=list=map=undefined;

  HTML schema for example:
  
  <table id="my_table">
    <tr>
      <td>
        Some text...
      </td>
      <td class="my_sort_col">
        Sort this!
      </td>
    </tr>
    <tr>
      <td>
        Some other text...
      </td>
      <td class="my_sort_col">
        Sort this too!
      </td>
    </tr>
  </table>    
  
  The usage example can be further improved by removing the whole 
  table from page DOM before sorting and insert it back when all 
  sorting is done.
*/
                      
function create_sort_map(list, prop_fn, invert, prev_sortmap) {
  // make sure invert is a valid boolean if not specified in call
  invert = !!invert;
   
  // arr is the sort map that will be created
  var arr=[];
  // list_prop is an array containing all results of prop_fn
  // this makes sure prop_fn is called O(n)
  var list_prop=[];
  
  // is prev_sortmap an array that matches the length of list?
  if(prev_sortmap!==undefined && list.length==prev_sortmap.length) {
    // then use prev_sortmap as starting point for our new sort map
    arr=prev_sortmap;
    // make the list of all prop_fn results
    for(var i=0;i<list.length;i++) {
      list_prop.push(prop_adjust(prop_fn(list[i])));
    }
  }
  else {
    // if prev_sortmap is invalid, use an identity map as starting 
    // point and make the list of all prop_fn results
    for(var i=0;i<list.length;i++) {
      arr.push(i);
      list_prop.push(prop_adjust(prop_fn(list[i])));
    }
  }
  
  // this is pure javascript, it executes quickly although it's a 
  // very slow sort algorithm, O(n^2): Bubblesort
  // change to quicksort if it actually takes more than a few ms
  var changed=true;
  while(changed) {
    changed=false;
    for(var i0=0;i0<(arr.length-1);i0++) {
      var i1=i0+1;
      if(invert ? (list_prop[arr[i0]]<list_prop[arr[i1]])
                : (list_prop[arr[i0]]>list_prop[arr[i1]])) {
        changed=true;
        var xchg=arr[i0];
        arr[i0]=arr[i1];
        arr[i1]=xchg;
      }
    }
  }
  
  // return the sort map
  return arr;


  // prop_adjust is a helper function to introduce general search 
  // rules.
  // for example: 
  // * convert numbers in strings to numbers
  // * application sort rules. 1: basement, 2: main-floor,
  //                           3: first floor, ...
  // it's inside create_sort_map to keep global namespace clean
  function prop_adjust(prop) {
    if(sort_isNumber(prop)) {
      return Number(prop);
    }
    
    prop=prop.toLowerCase();

    // insert application sort rules
		
    return prop;
  }
  
  // is it a number? change depending on your application.  
  function sort_isNumber (o) {
    return !isNaN(o-0) && o !== null && o !== undefined;
  }
}

Pecunia non olet

Ein neues Zeitalter in der Immobilien-Verwaltung

Institutionelle Eigentümer und Anleger im Immobilien Sektor bevorzugen die Fremdverwaltung ihrer Liegenschaften. Dabei werden nahezu alle Aufgaben vor Ort durch Dienstleister ausgeführt. Das betrifft insbesondere die Reinigung und Instandhaltung der Immobilien  Wartung technischer Anlagen und Geräte sowie Sicherheit und Besucherempfang. Während sich diese Dienstleistungen gut definieren und dokumentieren lassen und damit gut geeignet für Outsourcing sind, bleiben Marketing und Vermietung oft in den Händen der Eigentümer.

Marktübliche FM-Software

Marktübliche Facility-Management-Software wendet sich speziell an die Bewirtschafter der Liegenschaften und ermöglicht diesen, die Vielzahl von wiederkehrenden Dienstleistungen, gesetzlichen Wartungsvorschriften und Störungsmeldungen zu verwalten und zu dokumentieren. Die Komplexität der FM-Software ist hoch, um die Vielzahl der möglichen Anwendungsbereiche abzudecken. Wenn Gebäudedaten in ausreichender Tiefe erfasst wurden, dann ermöglicht die FM-Software den Technikern und den Mitarbeitern der Verwaltung einen effizienten Informationsfluss und eine Lückenlose Dokumentation der Dienstleistungen rund um die Liegenschaften.

Marketing und Vermietung

Für den Bereich Marketing und Vermietung sind diese Software-Lösungen oftmals nicht zielführend. Neben einer großen Menge von nicht relevanten Informationen und Handlungsoptionen präsentiert die FM-Software zwar auch Grundrisse und einfache Tabellen als Nebenprodukt. Die FM-Software erinnert ihre Anwender allerdings durch die umfangreichen Funktionen daran, dass sie nicht für den Zweck von Marketing und Vermietung erstellt wurde. Durch die Komplexität der Software sind die entscheidenden Funktionen nicht mehr einfach genug zu bedienen.

Die wichtigsten Software-Funktionen für den Bereich Marketing und Vermietung:

  • Anzeige, Ausdruck und Änderung von Plänen der Mietbereiche
  • Anzeige, Ausdruck und Änderung von Tabellen (Raumbuch, Mieterlisten usw)
  • Integration in den Industrie-Workflow mit Excel-Tabellen und PDF-Dokumenten
  • Unkomplizierte Übersicht über das gesamte Portfolio
  • Erstellen und Vorbereiten von Berichten

Die derzeitige Praxis

Diese Funktionen werden durch marktüblicher FM-Software nur rudimentär realisiert, da der Fokus dieser Produkte auf der Bewirtschaftung liegt. In der Praxis werden daher Tabellen und PDF-Dokumente von Architekten und anderen Dienstleistern erstellt. Diese Dokumente stellen jedoch stets Moment-Aufnahmen der Liegenschaften dar und selbst einfachste Veränderungen in Mietbereichen oder Mietern erfordern die Neuerstellung oder Überarbeitung dieser Dokumente durch externe Dienstleister.

Pecunia

Mit Pecunia kommt erstmals eine Internet-basierte Software auf den Markt, die sich speziell an den Nutzerkreis der Vermieter richtet. Die Stärken des Pecunia-Systems liegen in der einfachen Erstellung der gewünschten Tabellen und Dokumente sowie in der einfachen, zentralen Änderbarkeit der veränderlichen Daten in einer graphischen Oberfläche. Anstatt eine teure FM-Software zu erwerben, die gleichzeitig wenig geeignet für den Einsatzzweck ist und aufwändige Installationen im Unternehmens-Netzwerk erfordert, können Sie ihre Liegenschaften in einer sicheren Server-Umgebung von jedem internetfähigen Gerät aus anzeigen, präsentieren und verwalten. Präsentationen zu vakanten Mietflächen erstellen Sie in Minuten und können ihren Interessenten damit hochwertige und spezifische Dokumente weitaus schneller vorlegen, als es andere Produkte erlauben.

Lehrevaluation WS 2012/13

Meine Schüler am b.i.b. International College haben ihre halbjährliche Bewertung vorgenommen. Ich unterrichte dort seit einem Semester als Honorardozent eine Klasse angehender Technischer Assistenten im Fach Softwareentwicklung mit 10 Wochenstunden.

Unterrichtsinhalte waren in diesem Semester:

  • Softwareentwicklung in C# (Windows .NET) am Beispiel eines fiktiven Auftrags,
  • Mikrocontrollerprogrammierung am Beispiel der Atmel AVR 8-bit RISC Reihe und
  • Entwicklung von Web-Anwendungen mit PHP, MySQL, Javascript und JQuery.
Rahmenbedingungen
Frage Durchschnittsnote
Wie empfanden Sie die allgemeine Organisation des Schulbetriebs? (Schulleitung, Verwaltung, Studenplanung, IT-Service, Unterrichtsausfall usw.) 2,2
Wie lernfördernd waren für Sie die Unterrichtsräume und die Einrichtung? 2,9
Wie angemessen war die Ausstattung der Unterrichtsräume an die Erfordernisse des Unterrichtsfaches angepasst? 3,0
Wie gut ermöglichte die vorhandene Hard- und Software die Inhalte des Faches praktisch umzusetzen? 2,7
Rahmenbedingungen gesamt 2,7
Fachbezogene Aspekte
Frage Durchschnittsnote
Wie gut vorbereitet und engagiert wirkte der Dozent? 1,5
Wie beurteilen Sie die Fachkompetenz des Dozenten? 1,2
Wie schätzen Sie die Aktualität der vermittelten Unterrichtsinhalte ein? 1,4
Wie gut war die Abstimmung mit anderen Unterrichtsfächern? 1,4
Fachbezogene Aspekte gesamt 1,4
Methodik
Frage Durchschnittsnote
Wie verständlich und strukturiert wurde der Lehrstoff dargeboten? 2,3
Wie methodisch abwechslungsreich gestaltete der Dozent den Unterricht? 1,7
Wie war das Verhältnis von Theorie- und Praxis-/Übungsanteilen? 1,4
Wurde die Wichtigkeit der Lerninhalte und der praxisbezug deutlich gemacht? 1,8
Methodik gesamt 1,8
Leistungsbewertung
Frage Durchschnittsnote
Wie angemessen war der Schwierigkeitsgrad der Leistungsüberprüfungen? 1,8
In welchem Maße war die Bewertung nachvollziehbar und objektiv? 1,7
Leistungsbewertung gesamt 1,8
Persönlichkeitsbezogene / soziale Kriterien
Frage Durchschnittsnote
Wurde die zur Verfügung stehende Unterrichtszeit hinreichend genutzt (Pünktlichkeit)? 1,2
Wie empfanden Sie die Athmosphäre in der Lerngruppe? 1,1
Wie empfanden Sie die Betreuung durch den Dozenten? 1,5
War der Unterricht zielorientiert und wurde die Zielerreichung überpüft? 2,0
Persönlichkeitsbezogene / soziale Kriterien gesamt 1,5
Zusammenfassung
Frage Durchschnittsnote
Welchen Gesamteindruck haben Sie von dem Fach? 1,6