Profilbild von Herbert Nowak Full-Stack Software Entwicker / Java & Node.js Developer aus LaaanderThaya

Herbert Nowak

verfügbar

Letztes Update: 29.03.2024

Full-Stack Software Entwicker / Java & Node.js Developer

Abschluss: Software & Information Engineering (TU Wien)
Stunden-/Tagessatz: anzeigen
Sprachkenntnisse: deutsch (Muttersprache) | englisch (verhandlungssicher)

Skills

  • Objektorientierte Software-Entwicklung mit Schwerpunkt Java & Node.js(JavaScript)
  • Objektorientierte Analyse und Design
  • Sprach-Schwerpunkt: Java SE, Java EE, Node.js
  • Weitere Sprachen: Android, Python, C, Bash-Scripte, MathLab, COBOL, Visual Basic, Assembler
  • Logikorientierte Lösungen (Wissensbasierte Systeme / Künstliche Intelligenz): DLV-Solver, SAT-Solver (picosat)
  • Plattformen: Debian Linux, Ubuntu Linux, CentOS, Windows 7/8/10
  • Web-Technologien: jQuery, Angular2, REST, MQTT
  • Datenbank-Technologien: MySql (MariaDB), PostgresSQL, JDBC, JPA, Hibernate, EclipseLink
  • DevOps: Docker, Kubernetes, Linux-Administration, Netzwerk-Administration
  • Frameworks/Tools: Git, JUnit, Maven, IntelliJ IDEA, IntelliJ WebSphere, NetBeans, Eclipse, GitHub, Google Cloud

Projekthistorie

Meine ersten Programme schrieb ich im Alter von 13 Jahren, damals noch in QBasic bzw. Quick Basic, das ich mir anhand eines Buches selbst beigebracht hatte. Später besuchte ich eine EDV-Privatschule mit Schwerpunkt Kaufmännischer Programmierung. Auch dort programmierte ich mit QBasic und später Visual Basic. Unter anderem besuchte ich Freifächer wie Betriebssysteme und Netzwerktechnik bzw. zur Programmierung in C.
Mit 15 Jahren entwickelte ich (mit Visual Basic 6) eine Chat-Anwendung, damit unsere (Laptop-)Klasse während des Unterrichts von den Lehrern unbemerkt kommunizieren konnte. Entsprechend hatte der Chat eine Funktion, um ihn mit einem einzigen Tastendruck vollständig unsichtbar machen zu können. Des weiteren unterstützte er gängige Chat-Funktionen und Befehle, mehrere Adminstrator-Accounts und sogar ein simples Spiel, das man darüber spielen konnte.
Auch im Alter von 15 schrieb ich eine Backdoor-Software, die es mir erlaubte, unbemerkt andere PCs über Netzwerk fern zu steuern. Mit der Software habe ich jedoch keinen Schaden angerichtet, sondern verwendete sie nur um meine Freunde im Schulinternat ein bisschen zu ärgern. Beim schreiben des Backdoors ging es mir vorranging darum, zu sehen was möglich ist und meine Programmier-Fähigkeiten zu testen. Aus diesem Grund verbreitete ich die Software auch nie außerhalb dieses Bereiches wie etwa über das Internet.
Seit ca. 2008 liegt mein Schwerpunkt im Bereich Java und Linux. Da ich somit schon sehr lange Software schreibe, kann ich hier auch nicht alle meiner Projekte über die Jahre auflisten. Im folgenden findet sich eine Auswahl über Tätigkeiten, die mir jedenfalls nennenswert erscheinen. Soweit es mir die Zeit erlaubt, werde ich noch weitere Projekte aus der Vergangenheit zusammenfassen und hinzufügen:

Bachelor-Projekt an TU-Wien: Community-basiertes Blockchain gestütztes IoT Broker System (2018/2019)
Professor:
Priv.-Doz. Dr. Hong-Linh Truong
Funktion: Softwareentwickler, Architekt
Aufgabe/Tätigkeit: Erforschung der Chancen, durch Blockchain-Technologie die Möglichkeiten moderner IoT-Netzwerke zu erweitern. Prototypen der Komponenten (Registry-Service, Broker-Service, Monitoring/Control-Service, Client-Framework, Test-Clients) wurden in NodeJS implementiert und in Docker-Containern über Kubernetes Lokal und in der Google-Cloud getestet. Das Projekt ist darauf ausgelegt, auch bei einer großen Anzahl an Teilnehmern noch effizient und zuverlässig zu arbeiten. Weltweit erstes Projekt, das sich auch mit Service-Discovery über Blockchain-Technologie auseinandersetzt.
System-Umgebung: Node.js, Express, REST, Crypto-Conditions, BigchainDB, MultiChain, Crypto-Conditions, Docker, Kubernetes, Google-Cloud, Git, GitHub, MQTT, IntelliJ WebStorm, LaTeX, Markdown, Mocha, Chai, Sinon

TISS-fixer (2017)
Kunde: Privates Projekt
Funktion: Alleine entwickelt
Aufgabe/Tätigkeit: Die Anmeldung zu Lehrveranstaltungen an der TU Wien erfolgt meist über eine Webseite, die TISS genannt wird. Auch an der TU Wien gibt es Lehrveranstaltungen, die sehr beliebt sind und deren verfügbare Teilnehmerzahl geringer ist, als die Anzahl der Studierenden, die sich dafür anmelden möchten. Zu dem Zeitpunkt, an dem eine solche Lehrveranstaltung zur Anmeldung freigegeben wird, warten meist schon viele Studierende, um sofort auf den Anmelde-Knopf zu klicken und sich einen Platz zu sichern. Manche Lehrveranstaltungen sind daher bereits nach Sekunden voll belegt. Um mich dennoch komfortabel zu diesen Lehrveranstaltungen anmelden zu können, entwickelte ich dieses Projekt, dass ich nur plump TISS-fixer nannte. In die Anwendung registriere ich mich mit meinen Zugangsdaten (damit es sich über meinen Account einloggen kann) und trage den Namen der gewünschten Lehrveranstaltung ein. Das Programm wartet anschließend selbstständig auf den Zeitpunkt, an dem die Lehrveranstaltung freigegeben wird und sended nur wenige Millisekunden später einen Request zur Anmeldung. Aus Respekt vor den Entwicklern des TISS und den Authoritäten der TU Wien habe ich das Projekt nur privat verwendet und nicht veröffentlicht.
System-Umgebung: Java, JavaFX, FXML, HtmlUnit, HTTP, Firefox-Debugger

Quiz-Web-Applikation für Smartphones (2016)
Kunde: Privates Projekt
Funktion: Alleine entwickelt
Aufgabe/Tätigkeit: Im Rahmen meiner ehrenamtlichen Tätigkeiten, in denen ich mit Kindern arbeite (Feuerwehrjugend, Jungschar), ist es manchmal sinnvoll, über Fragen das Vorwissen der Kinder fest zu stellen bzw. auch, ob sie das Besprochene richtig verstanden haben. Natürlich kann man jedem Teilnehmer einzeln Fragen stellen oder in die Runde fragen, riskiert dabei aber immer, dass sich einzelne Kinder langweilen, während sie nicht an der Reihe sind. Um die Fragerunden zu beschleunigen und auch als Motivation für die Kinder war die Idee, jedes Kind über sein/ihr Smartphone über Antworten abstimmen zu lassen. Da somit jeder Teilnehmer gleichzeitig gefragt wird, erhöht dies die Aufmerksamkeit und macht den kleinen somit auch mehr Freude, da das Antippen der richtigen Antwort am Telefon 'cooler' erscheint, als bloß eine mündliche Antwort zu geben. Um das System schnell einsetzen zu können, wurde es nicht als App, sondern als Web-Anwendung realisiert. Somit brauchte keine zusätzliche Anwendung auf den Smartphones installiert zu werden. Es reichte, einen einfachen QR-Code zu scannen bzw. die URL direkt im Webbrowser einzugeben. Zusätzlich entwickelte ich einen Modus, indem sich die Anwendung für das Brettspiel "Nobody is perfect" nutzen lässt.
System-Umgebung: Java EE, zuerst Glassfish später WildFly, jQuery, JavaScript, ReST, JSON, JAX-RS, HTML, CSS

Gruppenprojekt in Software-Engineering (2014)
Kunde: Praktische LVA an der TU-Wien (6 Personen Team)
Funktion: Technischer Architekt, stellvertretender Projektleiter, Softwareentwickler
Aufgabe/Tätigkeit: Requirements-Erfassung und Analyse. Durchführung einer Bedarfs-Erfassung unter StartUPs und Unternehmern. Konzeption eines modernen, effizienten Zeit- und Projektmanagement-Systems für diese Zielgruppe. Implementierung und stufenweiser Ausbau des Systems nach SCRUM. Abschließend Erstellung eines übergeordneten Konzepts, das die Verwendung verschiedener Ebenen und Geräte kombiniert, damit ein umfassendes Projektmanagement-System geboten werden kann.
System-Umgebung: Java, JavaFX, Spring-Framework, PostgreSQL, Hibernate, Joda-Time, CalDAV

Mobile Computing in Health Care (2013)
Kunde: Praktische LVA an der TU-Wien (3 Personen Team)
Funktion: Architekt, Softwareentwickler
Aufgabe/Tätigkeit: Entwicklung eines Android-Prototyps einer mobilen Applikation + Backend für Kathastrophen-Einsätze. Kommunikation zwischen Android-Frontend und Java EE-Backend über REST-Service (HTTP / XML). Anwendung und Einhaltung des internationalen CDA Level 3 Standards nach HL7 aus dem medizinischem Bereich.
System-Umgebung: Java EE, EJB, JAX-RS, Glassfish Application Server, REST-Service, Android, Clinical Document Architecture (CDA) nach Health Level 7 (HL7) Standard

Linux Administration und Hardware-Hacking an NAS-Systemen (seit 2012)
Kunde: Private Projekte
Funktion: Alleine entwickelt
Aufgabe/Tätigkeit: Mit dem Auslaufen des Software-Supports alter Hardware endet viel zu oft auch deren Verwendung. Dies macht durchaus Sinn, um sich vor etwaigen Sicherheitslücken zu schützen, die nicht mehr geschlossen werden. Aus Sicht der Umwelt ist dies aber eine Verschwendung. Daher beschäftige ich mich immer wieder gerne damit, auf alten Embedded Linux Geräten Debian zu installieren. Linux Debian ist sehr Ressourcen-schonend und gleichzeitig höchst anpassbar, womit es auch auf diesen alten Geräten tadellos läuft. Die Geräte werden anschließend wieder als Netzwerkspeicher oder Backup-Lösung zuhause eingesetzt, teilweise auch mit zusätzlichen Services.
System-Umgebung: Embedded Linux, Debian Linux, GCC, make, Shell Scripting, OpenVPN, Netfilter/IPTables, SSH

Skript zur Unterstützung der Inventur-Tätigkeiten (2008)
Kunde: s IT Solutions
Funktion: Entwickler / Praktikum
Aufgabe/Tätigkeit: Dieses Skript wurde eigentlich nicht in Auftrag gegeben, wurde aber begeistert angenommen. Als Ferialpraktikant wurde mir aber die Aufgabe zugeteilt, im gesamten Unternehmensgebäude und einem externem Standort die Inventur durchzuführen. Dabei mussten von PCs mehrere Daten wie etwa die Größe des Festplattenspeichers, der verwendete Prozessor oder die Seriennummer des Gerätes erfasst werden. Da ein großer Teil dieser Daten leicht von einer Anwendung abgefragt werden konnte und eine digitale Übertragung gegenüber handschriftlicher Abschrift weniger Fehleranfällig ist, entschloss ich mich dazu, ein Skript dafür zu entwickeln, dass die Daten abfragte und auf einem Netzwerkpfad speicherte. Nur ein kleiner Teil der Daten musste noch handschriftlich erfasst werden, da er nur auf Aufklebern der Geräte vorhanden war und somit nicht digital abgefragt werden konnte. Der zuständige Abteilungsleiter bat mich um eine Kopie, um auch künftigen Praktikanten die Arbeit zu erleichtern.
System-Umgebung: Visual Basic Script (vbs)

Weiterentwicklung einer internen MS-Access Datenbank 2 (2008)
Kunde: s IT Solutions
Funktion: Entwickler / Praktikum
Aufgabe/Tätigkeit: Anpassung der bereits im Vorjahr bearbeiteten Datenbank an neue Vorgaben.
System-Umgebung: Microsoft Access (vor allem MS-SQL, Visual Basic for Applications)

Weiterentwicklung einer internen MS-Access Datenbank (2007)
Kunde: s IT Solutions
Funktion: Entwickler / Praktikum
Aufgabe/Tätigkeit: Anpassung an neue Unternehmensvorgaben und Weiterentwicklung einer bereits vorhandenen, intern genutzten MS Access Datenbank, die von den Bereichsleitern zur Planung und Verwaltung von Software-Projekten genutzt wird. Dafür mussten neue Formulare und Berichte erstellt und bestehende angepasst werden.
System-Umgebung: Microsoft Access (vor allem MS-SQL, Visual Basic for Applications)

Fachzeitschriften-Verwaltung (2007)
Kunde: s IT Solutions
Funktion: Entwickler / Praktikum
Aufgabe/Tätigkeit: Erstellung einer Verwaltung für verliehene Fachzeitschriften innerhalb des Unternehmens. Es wurde vorgegeben, dass das Projekt in Microsoft Excel realisiert werden soll.
System-Umgebung: Microsoft Excel (Funktionalität über Buttons und gecoded in Visual Basic for Applications)

Software-Modifikationen an FritzBox / Hardware-Hacking (seit 2006)
Kunde: Privates Projekt
Funktion: Administrator
Aufgabe/Tätigkeit: Modifikationen an der Betriebssoftware diverser FritzBoxen (DSL-Router), um deren Fähigkeiten zu erweitern. Hierzu wird die Firmware und der Linux-Kernel für das jeweilige Gerät neu gebaut und mit Erweiterungen versehen. Auf diese Weise ist es zum Beispiel möglich, Netfilter auf einer FritzBox 7050 zu verwenden, was von Werk aus nicht möglich ist. Andere Dienste, die dadurch betrieben werden können sind unter System-Umgebung aufgelistet. Die Tätigkeit bezieht sich nicht nur auf das bauen, einspielen und Konfigurieren der erweiterten Firmwares. Teilweise finde ich hierbei auch Fehler im verwendeten Freetz-System, die ich auf der Seite des (Open Source-) Projektes melde. Meist analysiere ich die gefundenen Fehler vor der Meldung so genau, dass ich bei der Meldung auch gleich einen Lösungsvorschlag anhängen kann.
System-Umgebung: Embedded Linux, GCC, make, Shell Scripting, OpenVPN, DNSmasq, Netfilter/IPTables, SSLH, HAProxy, SSH


Hardware-Hacking / verschiedenes zusammen gefasst (seit 2006):
QNAP TS-109 (Debian 9 aufgesetzt, betrieb diverser Services)
Bufallo TeraStation Pro II (Debian 9 aufgesetzt, betrieb diverser Services)
AVM FritzBox 7050 Software-Modifikationen (Linux-Kernel ersetzt und neu gebaut für Netfilter/IPTables-Unterstützung, austausch der ANNEX-Firmware (=DSL-Treiber), installation von OpenVPN, DNSmasq)
AVM FritzBox 7470 Software-Modifikationen (installation von OpenVPN, DNSmasq, HAProxy, OpenSSH, SSLH...)
Dreambox 600 - Modifikation der UI-Software (Python)
Betrieb & Remote-Management diverser Services auf RaspberryPIs

Reisebereitschaft

Verfügbar in den Ländern Österreich
Grundsätzlich im Raum Wien und Bezirk Mistelbach
Reisebereitschaft gegeben
Profilbild von Herbert Nowak Full-Stack Software Entwicker / Java & Node.js Developer aus LaaanderThaya Full-Stack Software Entwicker / Java & Node.js Developer
Registrieren