Martin Fischer

Software Entwickler

„I'd rather have a search engine or a compiler on a deserted island than a game.“ - John Carmack


Von Konzeption bis zur Implementierung...

...ist nicht nur ein Spruch. Gelungenes Softwaredesign fängt schon bei der Prozessfindung an. Aus Erfahrung kann ich nur bestätigen, dass hinreichend definierte Prozesse für gute Ergebnisse unabdingbar sind. Dabei ist es wichtig, mit dem Kunden gemeinsam Prozesse und Lösungen zu definieren und dabei sowohl die Anforderungen als auch die technische Sicht zu berücksichtigen. Ein Projekt, vor allem im In-house Development ist ein Team aus Entwickler und Stakeholder, nicht nur die reine Implementierung eines Auftrags.

Nachhaltigkeit und Qualität heißt...

...dass bei der Implementierung mögliche zukünftige Einflüsse berücksichtigt werden. Diese kennt der Kunde ggf. nicht, oder aber der Entwickler kennt sie nicht. Auch hier ist es wichtig, gemeinsam am Projekt zu entwickeln. Software erreicht früher oder später einen Legacy Status. Gute Software erreicht ihn später, vor allem, wenn auch fortlaufende Verbesserungen und Refactoring ernst genommen werden. Lediglich die Quantität von Anforderungen zu berücksichtigen geht langfristig auf das Negativkonto, wenn es um Nachhaltigkeit und Qualität geht.

Der User steht im Mittelpunkt

User Experience ist unser Verständnis von Endanwendern und wie sie unsere Software benutzen. Oft stellen sich UX- und technische Anforderungen erst im Laufe des Entwicklungsprozesses heraus. Ob Software für Entwickler, für Endanwender, oder einen anderen Benutzerkreis bestimmt ist, ist wichtig. Mein Grundsatz: Software soll Arbeit erleichtern und für den User auf selbstverständlicher Weise und ohne weiteres Zutun funktionieren. Die Anwendung (und vor allem der Update- und Deploymentprozess) sollte sich für den User nicht wie ein Tamagotchi anfühlen.

Neuartige & unkonventionelle Ansätze

Nicht immer ist die Standardlösung, oder der erste Einfall der beste. "Unkonventionell" bedeutet nicht "so kreativ wie möglich" oder "Hauptsache anders". Es bedeutet, Anforderungen aus einem unvoreingenommenem Standpunkt wahrzunehmen und ohne existierende Einflüsse über Lösungen nachzudenken. Es gibt Anforderungen, für die keine "Standardlösung" hinreichend ist.

Kompetenzen

Erfahrungen / Wissen
Favorisiert
Am meisten favorisiert
Abgelehnt / kein Interesse
Einarbeitung bzw. Vorhaben für späteren Zeitpunkt

Technische Kompetenzen

Programmiersprachen & Skript- und Markupsprachen

  • C#
  • C++
  • PHP
  • HTML, CSS, JS
  • MS SQL
  • MySQL
  • Linux Bash Scripting
  • XML, JSON
  • Python
  • Assembler
  • Lua Script

Frameworks & 3rd Party Libraries

  • .NET Framework
  • WPF
  • Entity Framework
  • Windows Forms
  • jQuery & jQuery UI
  • Xceed / Extended WPF Toolkit
  • ASP.NET Web Forms
  • WCF
  • Arduino
  • DotNetBar für WinForms
  • MVVM Light (30%)
  • ASP.NET MVC (0%)

Applikationen

  • Visual Studio
  • Mercurial & Tortoise HG
  • Linux: Debian
  • SQL Server Management Studio
  • LINQPad
  • Wireshark
  • Git & SourceTree
  • InstallShield Limited Edition

Technologien

  • Software Design, Patterns, OOP
  • LINQ
  • Algorithmik
  • White Hacking, Sicherheit, Reverse Engineering
  • Kryptographie
  • Grafikverarbeitung
  • Netzwerk (Sockets/TCP, HTTP)
  • Parallelisierung

Soziale Kompetenzen

  • Offen
  • Direkt
  • Ehrlich
  • Vertrauensvoll
  • Tolerant
  • Neugierig
  • Analytisch-logisch denkend
  • Selbstbeobachtend / Reflektierend
  • Konsequent

Methodische Kompetenzen

  • Genauigkeit
  • Kreatives Denken
  • Usability-Verständnis
  • Präsentationen

Sprachen

    • Deutsch
    • Muttersprache
    • Englisch
    • Sehr gut in Wort und Schrift
    • Tschechisch
    • Grundkenntnisse

Hobbys

  • Programmieren
  • Klavier spielen
  • Elektrotechnik

Referenzen

www.architektenkreis.de

Der architektenkreis ist eine Webseite, auf der Architekten sowie Studenten ihre Architekturprojekte präsentieren können. Dazu gibt es diverse Finanzierungsmöglichkeiten zur Auswahl.

Für diese Webseite habe ich ein individuelles Content Management System implementiert, in welchem multilinguale Texte, sowie Kunden, Rechnungen und Newsletter im Double Opt-In Verfahren konfiguriert werden können. Der Kunde hat die Möglichkeit, im Rahmen seines Tarifs Projekte und Bilder zu präsentieren und beschreiben.

Literay

Literay ist ein Raytracer, den ich als Projekt während meiner Ausbildung entwickelt und später weiterentwickelt habe. Der Renderer unterstützt eine Vielzahl von 3D-Objekten und Effekten, wie z.B. Licht und Schatten, Anti-Aliasing, sowie Reflektionen und Texturen. Da Raytracing ein Problem ist, das sich ideal parallelisieren lässt, setzt der Raytracer auf Multi-Threading. Die GUI (der Editor) ist in C# und WPF geschrieben und die Render Engine in C++, um eine optimale Performance zu erreichen.

Die gerenderten Szenen können per Lua Script erstellt werden. Da Lua ein Runtimescript ist und nicht statisch, können so aufwendige Szenen per Code erstellt werden.

3D-Berechnungen und deren Mathematik sind für mich spannende Themen, weswegen ich diese Herausforderung gerne auf mich genommen habe.

Die Projektseite finden Sie hier.

tick'it

Während meiner Ausbildung im Euro-BBW Bitburg entstand der Bedarf für ein Ticketsystem. Standardlösungen erfüllten nie unsere gesamten Anforderungen und so kam das Projekt "tick'it" zustande. Das Ticketsystem habe ich in PHP entwickelt, inklusive eines Desktop-Helpertools, das ich in C# mithilfe der DotNetBar Library geschrieben habe.

Im weiteren Verlauf sind zahlreiche Neuerungen hinzugekommen, die für Auszubildende wichtig geworden sind. Dazu zählen beispielsweise der Teamkalender, eine Dokumentenverwaltung und weitere Features zur Verwaltung unseres Alltags.

tick'it ist eine Maßanfertigung, die genau auf die Bedürfnisse des Betriebes zugeschnitten wurde und entwickelte sich im Laufe der Zeit zu unserem "System für Alles", jedoch ohne dabei zum Opfer von Altlasten und Improvisationen zu werden.

Was einst per Hand, Word/Excel oder mithilfe verschiedener kleineren Webapps gepflegt wurde, hat nun ein Zuhause.

Bilderkennung

Unser Kunde hat einen Onlineshop, zu dem wir eine App für Windows 8 entwickelt haben. Dabei sollten Produktabbildungen auf der Metro UI abgebildet werden, jedoch sollte dabei nicht das gesamte Bild, sondern nur der relevante Bildausschnitt angezeigt werden.

Dann habe ich also einen Algorithmus in C++ zu entwickelt, der auf einem Produktfoto den Ausschnitt des Bildes eingrenzen kann. Dies sollte auf den Windows 8 Geräten selber stattfinden, daher spielte Performance hier eine große Rolle. Die Bilderkennung durfte maximal 100ms pro Bild dauern und sollte in mindestens 80% der Fälle ein überzeugendes Ergebnis liefern.

Die Herausforderung hierbei lag vor allem in der Vielfalt von Produktbildern. Von diesen hatten durchaus viele einen heterogenen Hintergrund, wie z.B. einen Holztisch und die Position und Größe des abgebildeten Produktes variierte stark.

Musik mit Diskettenlaufwerken

Dieses Projekt entstand in meiner Freizeit, als ich angefangen habe mit dem Arduino Microcontroller zu experimentieren. So habe ich mich damit beschäftigt, ob es möglich ist mit den Motoren von alten Diskettenlaufwerken Musik zu machen. Schließlich muss alles, was in einer bestimmten Frequenz vibrieren kann, auch Musik erzeugen können.

Das Projekt war sehr interessant, da es sich auch im Bereich der Elektrotechnik bewegt und eine technische Herausforderung ist.

Also habe ich geforscht und kam zu einer funktionierenden Umsetzung. Diese habe ich dann weiter entwickelt und perfektioniert, bis der Arduino mit konvertierten und vorbearbeiteten MIDI Dateien arbeiten konnte und mit 6 Channeln Musik erzeugen konnte. Das abgebildete "Gerät" funktioniert eigenständig, ohne Computer.

Die Projektseite mit technischer Beschreibung und Videos finden Sie hier.

Projektseite

Weitere Projekte finden Sie auf meiner Projektseite:

bytecode77.com - Ein Blick lohnt sich!

Aktivitäten

Stack Overflow

Stack Overflow ist eine der beliebtesten Communities for Softwareentwickler. Dies ist dem einzigartigen Konzept, des Q&A zu verdanken, das sowohl Nutzern Antworten bietet, als auch eine enorme Wissensdatenbank für Antwortsuchende bietet.

Als User beantworte ich gerne Fragen, um einen Beitrag zur Community zu leisten und um Reputation zu gewinnen. Eine gute Reputation auf Stack Overflow ist hilfreich, wenn es darum geht, selber Fragen zu stellen. Ebenfalls verfüge ich über Moderationsrechte, die bei hinreichender Reputation automatisch erteilt werden.

YouTube

Auf meinem YouTube Kanal präsentiere ich ausgewählte Projekte, die für Zuschauer dieser Community von Interesse sind. Eines davon sind musikalische Diskettenlaufwerke (siehe Referenzen). Dieses Projekt hat von allen die größte Aufmerksamkeit erlangt, es war jedoch nie mein eigentliches Ziel, Klicks oder Abonnenten zu generieren. Ich stelle ebenfalls auch andere Projekte vor, die u.a. aus der Elektrotechnik stammen.

bytecode77.com

bytecode77.com ist meine Projektseite, auf der ich diverse Projekte vorstelle, die ich im Laufe der Jahre entwickelt habe. Dies sind ausschließlich private Projekte, die in meiner Freizeit entstanden sind. Einige davon sind nützliche Programme und Tools, andere wiederum sind reine Forschungsprojekte, die zur persönlichen Weiterbildung gedient haben.

Manche dieser Projekte wiederum erfreuen sich besonderer Beliebtheit anderer Entwickler, wodurch ich mir einen Namen verschafft habe.

Die Programmierung ist und war schon immer mein primäres Hobby, das ich auch nicht nach Jahren im Berufsleben verloren habe! Menschen, die ihre Leidenschaft zum Beruf gemacht haben, sind die produktivsten Mitglieder unserer Gesellschaft.

Ziele

Microsoft Bounty Program

Aktuell Forsche ich intensiv an der UAC und den Sicherheitsmechanismen von Windows. Microsoft bietet ein Bounty Program an, das White Hacker unterstützt die eine Sicherheitslücke in einem System von Microsoft gefunden haben, vor allem in Windows und der Benutzerkontensteuerung. Solche Lücken direkt an Microsoft zu melden kann ein Bounty von bis zu 100.000 $ erbringen. Auf dieser Weise behebt Microsoft diese Sicherheitslücken, bevor sie jemals für schlechte Absichten ausgenutzt werden. Und der Finder wird von Microsoft sowohl mit einem Bug Bounty gekührt, als auch mit einem Platz in Microsoft's Honor Roll.

Nun suggeriert der Wert des Bounty, dass es schwierig ist. Wäre es leicht, dann wäre es immerhin nicht mehr mein "Ziel", sondern mein Zweitjob. Wenn ich frühere Sicherheitslücken betrachte, entsteht jedoch der Eindruck, dass Kreativität wichtiger ist, als simple Buffer Overrun Lücken zu finden, um den Stack von High-Integrity Prozessen zu Korruptieren.

Abgesehen von der Komplexität, ist es nicht im Entferntesten unmöglich. Die Vergangenheit bestätigt das und deswegen bin ich von meiner Neugierde getrieben und analysiere die UAC sehr tiefgründig. Aktuell habe ich den Eindruck, dass Windows ein lebendiges System aus hunderten Komponenten ist, die miteinander auf unberechenbarer Weise interagieren - Und dies alles auf einer gemeinsamen Desktopumgebung auf der Windows versucht Systemprozesse von Benutzerprozessen zu trennen. Dort gibt es immer eine gewisse Überschneidung, die potentiell Sicherheitskritisch ist.

Das schlechteste Ergebnis meiner Forschungsarbeit wäre, etwas ziemlich viel über Sicherheitsimplementierungen und Programmierung zu lernen.

Lebenslauf

Seit 16.05.2016 MISUMI

Software Developer

  • Inhouse Entwicklung von Anwendungen zur Optimierung von Geschäftsprozessen
  • Als Desktopanwendung mit Unteranwendungen in WPF mit WCF Service Backend
01.09.2011 - 15.05.2016 SYZYGY Deutschland GmbH

Software Developer

  • Entwicklung von Webapplikationen in ASP.NET
  • Diverse Projekte im Bereich der Grafikverarbeitung
  • Entwicklung von Desktopanwendungen in C#
30.07.2008 - 16.06.2011 Europäisches Berufsbildungswerk Bitburg

Ausbildung zum Fachinformatiker für Anwendungsentwicklung

  • Ausbildung im Rahmen eines Berufsbildungswerkes
  • Entwicklung von Desktopanwendungen in C#
  • Webentwicklung in PHP
  • 5 externe Betriebspraktika

Impressum

Angaben gemäß § 5 TMG

Martin Fischer
Ben-Gurion-Ring 176
60437 Frankfurt am Main

Haftungsausschluss (Disclaimer)

Haftung für Inhalte

Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.

Haftung für Links

Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.

Urheberrecht

Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.

Datenschutzerklärung

Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder eMail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben.

Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.

Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten durch Dritte zur Übersendung von nicht ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit ausdrücklich widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-Mails, vor.