We code IT happen https://www.macrix.eu/ Macrix Technology Group Wed, 02 Jul 2025 13:18:35 +0000 de hourly 1 https://wordpress.org/?v=6.5.8 Wir Starten Durch: well-beINTeam – Psychologische Sicherheit Für Hybride Teams In Ganz Europa https://www.macrix.eu/wir-starten-durch-well-beinteam/ Wed, 02 Jul 2025 09:58:48 +0000 https://www.macrix.eu/?p=13237 Mit well-beINTeam starten wir ein internationales F&E-Projekt, das sich einem zentralen Thema der modernen Arbeitswelt widmet: psychologische Sicherheit. Ziel ist es, hybride Teams – besonders in kleinen und mittelständischen Unternehmen – nachhaltig zu stärken und neue Wege für eine gesunde, vertrauensvolle Zusammenarbeit zu entwickeln. Gemeinsam mit Partnern aus ganz Europa wollen wir mutige Impulse setzen […]

Der Beitrag Wir Starten Durch: well-beINTeam – Psychologische Sicherheit Für Hybride Teams In Ganz Europa erschien zuerst auf We code IT happen.

]]>

Mit well-beINTeam starten wir ein internationales F&E-Projekt, das sich einem zentralen Thema der modernen Arbeitswelt widmet: psychologische Sicherheit. Ziel ist es, hybride Teams – besonders in kleinen und mittelständischen Unternehmen – nachhaltig zu stärken und neue Wege für eine gesunde, vertrauensvolle Zusammenarbeit zu entwickeln. 

Gemeinsam mit Partnern aus ganz Europa wollen wir mutige Impulse setzen – für mehr Offenheit, Resilienz und Zusammenhalt im digitalen Zeitalter. 

Worum Geht’s?

well-beINTeam ist ein 32-monatiges EU-gefördertes Projekt mit intensiver Nutzerforschung. Partner aus Polen, Zypern, Italien und Spanien arbeiten gemeinsam an der Entwicklung von Methoden und Tools, die hybride Teams stärken und ein vertrauensvolles, sicheres Miteinander fördern.

Das Projekt ist eine echte Teamleistungmit starken Partnern an unserer Seite, die jeweils eigene Schwerpunkte einbringen:   

  • OIC (project lead): einer der größten EU-Fördermittelmanager in Polen. Zuständig für Organisation, Verwaltung und Gesamtkoordination. 
  • Eurosuccess: Spezialisten für EU-Projekte und Trainings – sie verantworten die Forschungsmethodik, Qualitätssicherung und das Feedback-Tool. 
  • SmartUp: bernimmt PR und Öffentlichkeitsarbeitmit einem modernen, technologieorientierten Ansatz, der speziell auf KMUs ausgerichtet ist. 
  • Wyde: leitet den Lernbereich in Form von Kohortenprogrammen mit viel Branchenwissen und fundierter Forschung. 
Unsere Rolle Im Projekt

Wir übernehmen die technische Umsetzung und Entwicklung der digitalen Plattformmit dem Ziel, Teams dabei zu unterstützen, psychologische Sicherheit bewusst zu erleben und gezielt zu fördern. 

Konkret arbeiten wir an: 

  • Interaktiven Workshops in Form kurzer, inspirierender Filme 
  • Einem KI-gestützten Avatar, der die Nutzer individuell durch das Erlebnis begleitet 
  • Reflexionsbasiertem Lernen, das weit über trockene Theorie hinausgeht 

Unsere HR- und R&D-Expert:innen begleiten den Prozess aktiv, um sicherzustellen, dass alle Inhalte praxisnah und auf reale Herausforderungen im Arbeitsalltag abgestimmt sind. 

Wer Steckt Dahinter?

Development: Bartosz Pierzchlewicz, Tomasz Skarżyński 
HR-Expertinnen: Claudia Sójka, Olga Piątek 
Produkt-/Projektmanagement: Sebastian Brosch, Filip Zuchowski, Szymon Panfil 

Für uns ist dieses Projekt ein wichtiger Schritt – nicht nur als hybrides Unternehmen, sondern auch als Beitrag zu einer menschlicheren, technologiebasierten Arbeitswelt in Europa. 

Warum Wir Mitmachen
  1. Wir leben hybrides Arbeiten selbst – und kennen die Chancen wie auch die Herausforderungen. 
  2. Die Arbeitswelt verändert sich rasant. Wer möchte, dass Teams darin erfolgreich sind, muss Strukturen schaffen, in denen offenes Feedback, Fragen und Fehler willkommen sind. 
  3. Wir bringen fundierte F&E-Erfahrung mit – auch im psychologischen Bereich. 
  4. PS: Vielleicht hast du den Begriff „psychologische Sicherheit“ schon einmal gehört – populär gemacht wurde er von Amy Edmondson (Harvard). Sie beschreibt damit den gemeinsamen Glauben innerhalb eines Teams, dass es sicher ist, zwischenmenschliche Risiken einzugehen. 

In der Praxis heißt das:

  • Ich darf sagen: „Ich weiß es nicht.“ 
  • Ich kann ehrliches Feedback geben – auch wenn’s unangenehm ist. 
  • Ich darf Neues ausprobieren – auch wenn es schiefgehen könnte. 
  • Fehler? Sehen wir als Lernchance, nicht als Schuldfrage. 

Gerade in hybriden Teams, wo Kommunikationslücken oft Realität sind, ist so ein Umfeld entscheidend. 

Mehr Informationen zum Projekt gibt’s unter: wellbeinteam.com 

Der Beitrag Wir Starten Durch: well-beINTeam – Psychologische Sicherheit Für Hybride Teams In Ganz Europa erschien zuerst auf We code IT happen.

]]>
Macrix Academy Awards 2025 https://www.macrix.eu/macrix-academy-awards-2025/ Wed, 16 Apr 2025 13:24:43 +0000 https://www.macrix.eu/?p=13126 WAS MACHTE DIESE GALA SO BESONDERS? Der Star-Wars-Intro mit einem unerwarteten AI-Twist Max’ großer Abschied und seine wohlverdiente Anerkennung Live-Voting beim Meetup, musikalische Highlights und überraschende Präsentationen Die wertschätzende Rede des CEOs mit ehrlichen, persönlichen Worten Fünf Kategorien, achtzehn Nominierte – und ein unvergesslicher MVP Eine brandneue Tradition: das MaQuiz! Und natürlich… die unschlagbare Energie […]

Der Beitrag Macrix Academy Awards 2025 erschien zuerst auf We code IT happen.

]]>
WAS MACHTE DIESE GALA SO BESONDERS?
  • Der Star-Wars-Intro mit einem unerwarteten AI-Twist
  • Max’ großer Abschied und seine wohlverdiente Anerkennung
  • Live-Voting beim Meetup, musikalische Highlights und überraschende Präsentationen
  • Die wertschätzende Rede des CEOs mit ehrlichen, persönlichen Worten
  • Fünf Kategorien, achtzehn Nominierte – und ein unvergesslicher MVP
  • Eine brandneue Tradition: das MaQuiz!
  • Und natürlich… die unschlagbare Energie der Macrix-Community
MAX’ ABSCHIED & EIN BESONDERER DANK

Nach diesem dramatischen Intro betrat Max Zuchowski, Head of Development bei Macrix, ein letztes Mal als Gala-Moderator die Bühne. Nach drei Jahren voller unvergesslicher Momente übergab er das Mikrofon offiziell an Claudia, die die Veranstaltung nun gemeinsam mit Dominika moderieren wird.

Um Max’ Beitrag zu würdigen, kam Patrycja auf die Bühne und überraschte ihn mit einem besonderen Award – als Anerkennung für seine Kreativität, seinen Humor und sein Engagement, einen Raum zu schaffen, in dem Macrix-Talente glänzen können.

MACRIX ACADEMY HIGHLIGHTS – 2024 UND DARÜBER HINAUS

2024 war ein Jahr des echten Wachstums – über 70 Kolleginnen und Kollegen bei Macrix nahmen an Workshops zu technischen und Soft-Skill-Themen teil. Mit dabei: Microservice-Architektur, strategisches Denken, Sales-Mindset und vieles mehr. Außerdem startete die Academy neue branchenspezifische Trainings – unter anderem für die Kohleindustrie, den Motorsport und den Finanzsektor.

Doch Lernen fand nicht nur in klassischen Formaten statt. Der interne Wissensaustausch blühte auf – durch Artikel, Meetups und Webinare. Beim Hackathon stellten sich Teams realen Automatisierungs-Herausforderungen, und das Young Potentials Program führte zu drei neuen Festanstellungen.

Und 2025? Da geht’s erst richtig los: eine neue YPP-Runde, ein Soft-Skills-Podcast, Experten-Webinare, interne Meetups und praxisnahe Trainings – abgestimmt auf technische und branchenspezifische Herausforderungen.

GEDANKEN DES CEO

CEO Marek Żuchowski betrat die Bühne, um über die Bedeutung von Wertschätzung zu sprechen. Er erinnerte uns daran, dass die MVP-Gala zwar einzelne Personen ehrt – doch die wahre Stärke von Macrix liegt in den täglichen Beiträgen all jener, die vielleicht nicht im Rampenlicht stehen, aber durch Zusammenarbeit, Engagement und Verlässlichkeit einen echten Unterschied machen.

MAQUIZ – KEIN QUIZ WIE JEDES ANDERE!

Zwischen den Award-Kategorien erwartete uns ein ganz besonderes Highlight – das MaQuiz, ein urkomisches und super interaktives Quiz, moderiert von niemand Geringerem als Mateusz Michno.

Von Macrix-Trivia und historischen Fun-Facts bis hin zu Insider-Witzen und Team-Duellen: Das MaQuiz brachte in jeder Runde den Saal zum Toben. Es war eine geniale Mischung aus Wissenstest und Stimmungskick – und hat für jede Menge Lacher und Teamspirit gesorgt.

BEST TEAM MEETUP AWARD

Nach einer kurzen Verschnaufpause war es Zeit, Teamgeist und Wissensaustausch zu feiern – mit einem der spannendsten Programmpunkte des Abends: den Präsentationen zum Best Team Meetup und dem anschließenden Live-Voting.

Die drei Finalisten-Teams hatten jeweils die Bühne, um ihre Meetups kreativ vorzustellen – und sie haben richtig abgeliefert. Nach drei originellen Präsentationen und einer Abstimmung in Echtzeit standen die Ergebnisse fest:

  1. Paweł Urbaniak & Marcin Dyba – Hamming it up: Code that brings the bacon and the beef 
  2. Claudia Sójka & Dominika Kirschenstein – Feedback – Heart of Improvement 
  3. Paweł Kordaczuk & Bartłomiej Szczepanik – Unity Technology in 3D Visualization 
MVP-KATEGORIEN – WAS WIRKLICH ZÄHLT

BUSINESS VALUE 

Nominiert: Kamil Wilkosz, Katarzyna Rzadkiewicz, Piotr Walczak, Stanisław Wasik 

Gewinner: Stanisław Wasik 

INNOVATION & CREATIVITY 

Nominiert: Błażej Szajrych, Mateusz Michno, Rustam Ashurov 

Gewinner: Rustam Ashurov 

READINESS FOR DUTY 

Nominiert: Bartosz Matysiak, Benjamin Witt, Dariusz Rudziński, Piotr Ptak 

Gewinner: Piotr Ptak

COMMUNITY INVOLVEMENT 

Nominiert: Benjamin Witt, Claudia Sójka, Piotr Pietrzak, Mateusz Michno   

Gewinner: Claudia Sójka 

SUPPORT FOR OTHERS 

Nominiert: Benjamin Witt, Olga Piątek, Piotr Pietrzak   

Gewinner: Olga Piątek 

Nachdem die letzten Stimmen abgegeben und die finale MaQuiz-Frage gelöst war, stand der große Moment bevor: die Wahl der Besten unter den Besten. Und der Titel Macrix MVP 2024 ging an… Olga Piątek!

Ein wirklich berührender Augenblick – begleitet von Applaus, Umarmungen und sogar ein paar Freudentränen.

LASST UNS DIESEN SPIRITU KEEPEN!

Diese Gala war nie nur eine Preisverleihung. Es ging darum, innezuhalten – nur für einen Abend – um all jene zu würdigen, die sich jeden Tag voll einbringen. Diejenigen, die Energie, Empathie, Lösungen und Lächeln in unsere Projekte und Meetings bringen. Die, die eingreifen, andere unterstützen und Macrix mehr als nur ein Arbeitsplatz machen. Auf all diejenigen, die aufbauen, unterstützen und sich kümmern. Lasst uns gemeinsam wachsen, uns herausfordern – und weiterhin füreinander da sein.

Der Beitrag Macrix Academy Awards 2025 erschien zuerst auf We code IT happen.

]]>
Coding Bootcamp (25.11-29.11.2024) https://www.macrix.eu/coding-bootcamp-25-11-29-11-2024-2/ Tue, 17 Dec 2024 12:51:46 +0000 https://www.macrix.eu/?p=13151 Unser engagiertes Entwicklerteam Marta, Stanisław, Piotr, Jarosław und der Head of Development Max nahmen am Bootcamp teil und gaben ihr Bestes, um Lösungen pünktlich zu liefern. Während der 5 intensiven Tage arbeiteten sie an einer Datenbankmigration, um reibungslosere Abläufe und verbesserte Leistung zu gewährleisten. Sehen Sie sich die Highlights des Events an. SCHAU DIR DAS […]

Der Beitrag Coding Bootcamp (25.11-29.11.2024) erschien zuerst auf We code IT happen.

]]>

 Unser engagiertes Entwicklerteam Marta, Stanisław, Piotr, Jarosław und der Head of Development Max nahmen am Bootcamp teil und gaben ihr Bestes, um Lösungen pünktlich zu liefern. 

Während der 5 intensiven Tage arbeiteten sie an einer Datenbankmigration, um reibungslosere Abläufe und verbesserte Leistung zu gewährleisten. 

Sehen Sie sich die Highlights des Events an. 

SCHAU DIR DAS VIDEO VOM BOOTCAMP AN. LOS GEHT’S!!! 

WAS WURDE IN DEN 5 TAGEN GEMACHT?

 Wir haben das Datenmanagementsystem der Finanztransaktionsplattform unseres Kunden ersetzt, indem wir von der Dateispeicherung auf MariaDB migrierten. Diese Aufgabe war besonders herausfordernd, da das System bis zu 50 Transaktionen pro Sekunde verarbeitet und innerhalb eines Legacy-Anwendungsrahmens operiert. Dieser Rahmen ist sehr komplex und umfasst maßgeschneiderte Knoten, die Failover-Szenarien und andere Komplexitäten handhaben. 

WER WAR FÜR WAS VERANTWORTLICH?

Marta leitete das Projekt, und das gesamte Team – einschließlich Jarek, Piotr, Stasiu und Maxarbeitete während des Bootcamps eng zusammen. Um sich auf diese kritische Aufgabe zu konzentrieren, pausierten wir vorübergehend die Arbeit an unseren beiden anderen Projekten. 

WARUM EIN BOOTCAMP?

 Das Bootcamp war notwendig, weil es nahezu unmöglich war, den Migrationsaufwand genau abzuschätzen, angesichts der Komplexität des Legacy-Umfelds und des suboptimalen Designs des vorherigen Anwendungsrahmens. Jedes gelöste Problem brachte neue Herausforderungen mit sich, was die Aufgabe zunehmend komplizierter und unvorhersehbarer machte. Darüber hinaus war die enge Marktforderung eine nicht verhandelbare Deadline. Dieser intensive Einsatz ermöglichte es uns, all unsere Expertise zu bündeln, die Leistung zu maximieren und jede mögliche Lösung zu prüfen, um die Migration erfolgreich abzuschließen. 

Der Beitrag Coding Bootcamp (25.11-29.11.2024) erschien zuerst auf We code IT happen.

]]>
Macrix Sports Challenge 2024: Eine Reise voller Teamarbeit, Wettbewerb und Wohltätigkeit https://www.macrix.eu/macrix-sports-challenge-2024-eine-reise-voller-teamarbeit-wettbewerb-und-wohltaetigkeit/ Fri, 15 Nov 2024 11:39:22 +0000 https://www.macrix.eu/?p=13132 Die Macrix Sports Challenge 2024 war mehr als nur ein Wettbewerb – sie war eine Initiative zur Förderung von Teamarbeit, persönlicher Entwicklung und zur Unterstützung eines sinnvollen wohltätigen Zwecks. Über einen Zeitraum von vier Wochen traten Teams in Aktivitäten wie Gehen, Radfahren und Laufen gegeneinander an, während sie auf ein gemeinsames Ziel hinarbeiteten: 3000 PLN […]

Der Beitrag Macrix Sports Challenge 2024: Eine Reise voller Teamarbeit, Wettbewerb und Wohltätigkeit erschien zuerst auf We code IT happen.

]]>

Die Macrix Sports Challenge 2024 war mehr als nur ein Wettbewerbsie war eine Initiative zur Förderung von Teamarbeit, persönlicher Entwicklung und zur Unterstützung eines sinnvollen wohltätigen Zwecks. Über einen Zeitraum von vier Wochen traten Teams in Aktivitäten wie Gehen, Radfahren und Laufen gegeneinander an, während sie auf ein gemeinsames Ziel hinarbeiteten: 3000 PLN für wohltätige Zwecke zu sammeln. Die Challenge legte den Fokus nicht nur auf körperliche Fitness, sondern auch auf Zusammenarbeit, Kommunikation und Problemlösungskompetenz. 

Kompetenzentwicklung

Während der gesamten Challenge erhielten die Teilnehmenden Ressourcen, um ihre Kommunikations- und Problemlösungsfähigkeiten zu schärfenentscheidende Kompetenzen sowohl im beruflichen als auch im privaten Kontext. Diese Materialien, die zuvor mit den Teilnehmenden geteilt wurden, stehen intern weiterhin zur Verfügung und unterstützen die Mitarbeitenden dabei, ihre Fähigkeiten kontinuierlich weiterzuentwickeln. 

Überblick über die Challenge

Das gemeinsame Engagement aller Teams war herausragend. Sowohl die Teams als auch einzelne Teilnehmende zeigten großen Einsatz und Teamgeist. Hier sind einige wichtige Statistiken zur Challenge: 

Gewinner und Highlights

Werfen wir nun einen Blick auf die Teams mit der besten Leistung und auf herausragende Einzelleistungen. Unsere Teilnehmenden haben alles gegeben – und hier sind die Ergebnisse: 

Endplatzierungen der Teams: 

  1. Platz: Team Howlers 
  2. Platz: Team Dream4Lean 
  3. Platz: Team Stark 

Herausragende Leistungen in den Einzelkategorien: 

Radfahren: 

  1. Dariusz – 1046,6 km 
  2. Szymon – 942,8 km 
  3. Bartłomiej – 432,8 km 

Laufen: 

  1. Piotr – 166,5 km 
  2. Paweł – 150 km 
  3. Mateusz – 49,8 km 

Gehen: 

  1. Mateusz – 200,7 km 
  2. Patrycja – 169,1 km 
  3. Szymon – 162,4 km 

Herzlichen Glückwunsch an alle Teilnehmenden für ihre großartigen Leistungen und ihren Einsatz! 

Wohltätigkeitsziel

 Das Gewinnerteam Howlers wählte das Tierheim in Skałowo als Empfänger der 3000 PLN-Spende aus und erfüllte damit das zentrale wohltätige Ziel der Challenge. Diese Spende wird dem Tierheim helfen, seine wertvolle Arbeit in der Pflege und Betreuung von Tieren fortzusetzen. 

Best Leader Award

In diesem Jahr wurde zudem eine besondere Auszeichnung eingeführt: der Best Leader Award. Dieser Preis, basierend auf den Stimmen der Teilnehmenden, würdigt eine Führungsperson, die nicht nur ihr eigenes Team motivierte, sondern auch andere während der gesamten Challenge inspirierte. 

Claudia wurde zur Best Leaderin gewählt – für ihre außergewöhnliche Führungsstärke und ihr Engagement.

Preisverleihung und Fotos

Die Preisverleihung hat bereits stattgefunden – ein Moment, in dem wir die Leistungen aller Teilnehmenden gebührend gefeiert haben. 

Hier sind einige Eindrücke vom Event: 

Looking Ahead 

As the Macrix Sports Challenge 2024 comes to an end, we extend our heartfelt thanks to everyone for their enthusiasm, participation, and commitment. We look forward to continuing this tradition and making the next challenge even more engaging and rewarding.

Der Beitrag Macrix Sports Challenge 2024: Eine Reise voller Teamarbeit, Wettbewerb und Wohltätigkeit erschien zuerst auf We code IT happen.

]]>
Hackathon im Büro in Posen: ArconQ ist jetzt Edge-Ready! https://www.macrix.eu/hackathon-im-buero-in-posen-arconq-ist-jetzt-edge-ready/ Mon, 16 Sep 2024 13:19:29 +0000 https://www.macrix.eu/?p=13145 Vom 4. bis 6. September 2024 versammelte sich das ArconQ-Team im Macrix-Büro in Posen zu einem dreitägigen Hackathon. Das Team teilte sich in zwei Gruppen auf – mit einem gemeinsamen Ziel: ArconQ-Anwendungen sollen nahtlos außerhalb der Cloud-Umgebung, direkt auf externen Geräten, laufen können. Gleichzeitig sollten alle eingebauten Funktionen von ArconQ (App-Repository, Logging, Messaging usw.) erhalten […]

Der Beitrag Hackathon im Büro in Posen: ArconQ ist jetzt Edge-Ready! erschien zuerst auf We code IT happen.

]]>

Vom 4. bis 6. September 2024 versammelte sich das ArconQ-Team im Macrix-Büro in Posen zu einem dreitägigen Hackathon. Das Team teilte sich in zwei Gruppen auf – mit einem gemeinsamen Ziel: ArconQ-Anwendungen sollen nahtlos außerhalb der Cloud-Umgebung, direkt auf externen Geräten, laufen können. Gleichzeitig sollten alle eingebauten Funktionen von ArconQ (App-Repository, Logging, Messaging usw.) erhalten bleiben. 

Die Aufgabe war anspruchsvoll, aber die Regeln waren einfach

Zwei Teams – Stanisław Boboryk & Bartłomiej Zając (Team 1) sowie Marcin Ptak, Mateusz Michno & Kacper Pocheć (Team 2) – wurden gebildet. Jedes Team hatte seinen eigenen, fest zugewiesenen Arbeitsbereich, aber beide teilten sich dieselbe Aufgabenstellung, dieselben Ressourcen – und natürlich den Zugang zu Getränken und Snacks. 
Unter der Anleitung von Rustam Ashurov, dem Leiter der Forschung und Entwicklung bei Macrix, arbeiteten beide Teams in einem fairen und wettbewerbsorientierten Umfeld mit klaren Grenzen für die Zusammenarbeit. Die Teams durften zwar Unterstützung von Expert:innen und Macrix-Kolleg:innen einholen, jedoch war die direkte Zusammenarbeit zwischen den beiden Teams eingeschränkt. 

Die Herausforderung aus der realen Welt: Fabrikautomatisierung trifft auf Cloud-Grenzen

Stell dir Folgendes vor: eine Fabrik voller Aktivität – Maschinen, Sensoren und SPSen erzeugen einen kontinuierlichen Datenstrom. Diese Daten werden in der Cloud von ArconQ verarbeitet und liefern Echtzeit-Einblicke und -Steuerung. Aber was passiert, wenn das Netzwerk der Fabrik instabil ist oder wenn Entscheidungen lokal und in Echtzeit getroffen werden müssen, ohne auf die Cloud angewiesen zu sein? Manchmal ist eine physische Verbindung zu einem Gerät notwendig – um Messwerte auszulesen oder es direkt zu steuern. Das bringt eine zusätzliche Komplexität mit sich, wenn man sich ausschließlich auf cloudbasierte Lösungen verlässt. 

In solchen Fällen mussten Anwendungen direkt auf Fabrikseite separat entwickelt und über REST-APIs mit der Cloud verbunden werden. Diese Apps verfügten jedoch nicht über den umfangreichen Funktionsumfang von ArconQ – wie z. B. zentrales Logging, Messaging, Zeitplanung und Überwachung – und waren innerhalb der ArconQ-Plattform unsichtbar. 

Die Mission des Hackathons: Cloud-Power auf den Fabrikboden bringen

Das Ziel des Hackathons war glasklar: 

Anwendungen, die ursprünglich für die ArconQ-Cloudumgebung entwickelt wurden, sollten direkt auf Edge-Geräten laufen können – mit nahtloser Integration lokaler Fabriksensoren und Maschinen. 
Diese Edge-Anwendungen mussten vollständig in der ArconQ-Plattform sichtbar sein, sodass Funktionen wie Monitoring, Logging und Deployment in Echtzeit möglich sind. 

Zusatzpunkte gab es für besondere Extras, etwa die Verwaltung und Überwachung der Geräte, das automatische Neustarten von Apps nach Ausfällen oder das gleichzeitige Ausführen mehrerer Anwendungen auf einem Gerät. 

Die Lösung: Echtzeit-Edge-Integration mit ArconQ

Nach über zwei Tagen intensiver Programmierung entwickelten beide Teams unabhängig voneinander ähnliche Architekturen zur Lösung der Aufgabe. Die Lösungen beinhalteten jeweils die Entwicklung eines zusätzlichen Dienstes (von den beiden Teams als ArconQ Demon bzw. ArconQ Controller benannt), der die Ausführung von ArconQ-Anwendungen auf externen Geräten ermöglichte – inklusive der notwendigen physischen Verbindungen zu diesen Geräten für Echtzeitsteuerung und Datenabfrage. 

Am Ende des Hackathons präsentierten die Teams ihre Fortschritte anhand von praxisnahen Beispielen – etwa durch das Anschließen einer Kamera, eines Buttons und einer LED-Diode an einen Raspberry Pi, was eine Echtzeit-Datenübertragung und Interaktion mit ArconQ ermöglichte. Auch das Thema Sicherheit spielte eine zentrale Rolle: Beide Teams implementierten SSL-Verschlüsselung und Client-Autorisierung, um eine sichere Kommunikation zwischen der Cloud und den Edge-Geräten zu gewährleisten. 

Das Ergebnis: ein Prototyp für die Zukunft

Am Ende des Hackathons hatten beide Teams funktionsfähige Prototypen entwickelt, die den Grundstein für eine Zukunft legen, in der Edge-Geräte vollständig mit dem ArconQ-Ökosystem integriert sind. Diese Prototypen ermöglichen Echtzeit-Deployment, höhere Ausfallsicherheit und eine vollständig interaktive Benutzeroberfläche, sodass Fabriken auch bei instabilen Netzwerken reibungslos weiterlaufen können. 

Der Hackathon war ein voller Erfolg und zeigte, wie Innovation und Teamarbeit echte Herausforderungen überwinden können. Dieser Durchbruch bringt ArconQ einen Schritt näher an ein wirklich vernetztes und resilientes System für die industrielle Automatisierung. 

Was denken die Teilnehmer über die Initiative?

„Ich denke, die Initiative war fantastisch. Das ist wirklich etwas anderes. Ich hatte die Gelegenheit, viel mit Dingen zu arbeiten, mit denen ich im Alltag einfach keine Gelegenheit hatte zu arbeiten. Es war eine sehr intensive Teamarbeit. Und man kann nicht leugnen, dass es ein bisschen stressig war, alles zusammenzubringen, weil der Zeitdruck groß war, da es nur drei Tage waren. Aber die Initiative ist großartig. Ich freue mich auf den zweiten Hackathon. Es ist auch toll, dass es nicht einfach etwas ist, das wieder verworfen wird, es ist Code, der auf irgendeine Weise in unserem Archiv landen könnte.“ 

Marcin Ptak, Senior Developer 

„Ich weiß, dass es noch keine vollständig fertige Lösung ist, aber nach nur 2,5 Tagen Programmierung ist es klar, dass die Fähigkeit, externe Geräte zu integrieren, überhaupt keine Einschränkung darstellt. Wir können problemlos externe Geräte wie Sensoren und SPSen anschließen und sie zu einem nahtlosen Teil der Anwendungen machen, die in ArconQ laufen – sogar außerhalb der Cloud-Umgebung.“ 

Stanisław Boboryk, Senior Developer 

„Ich denke, wir alle wollen nach diesen drei Tagen sehr, sehr schlafen. Aber ich denke, es war sehr, sehr inspirierend. Es war ein Kampf gegen alles, gegen Deadlines, gegen die Probleme, die wir gelöst haben. Ich hatte die Gelegenheit, an zwei Teams teilzunehmen, naja, man konnte sehen, dass jedes Team eine Herausforderung hatte, und im Großen und Ganzen lief es sehr gut. Und das Thema des nächsten Hackathons? Ich habe schon, mehr oder weniger, das nächste Thema. Natürlich wird es nicht in der nächsten Woche sein, und vielleicht auch nicht in einem Monat, weil wir ein gewisses Intervall brauchen, damit immer frischer Wind kommt.“ 

Rustam Ashurov, Head of R&D 

Der Beitrag Hackathon im Büro in Posen: ArconQ ist jetzt Edge-Ready! erschien zuerst auf We code IT happen.

]]>
Thread-safety – how to mytigate potential pitfalls in asynchronous programming https://www.macrix.eu/hread-safety-how-to-mytigate-potential-pitfalls-in-asynchronous-programming-2/ Mon, 20 Nov 2023 14:25:04 +0000 https://www.macrix.eu/?p=11948   In many cases, a combination of both synchronous and asynchronous approaches may be used within a single application to optimize performance and responsiveness where needed. The decision ultimately lies with the development team, considering the specific requirements and characteristics of the project. Benefits of choosing async programming Asynchronous programming is a powerful paradigm that […]

Der Beitrag Thread-safety – how to mytigate potential pitfalls in asynchronous programming erschien zuerst auf We code IT happen.

]]>

 

In many cases, a combination of both synchronous and asynchronous approaches may be used within a single application to optimize performance and responsiveness where needed. The decision ultimately lies with the development team, considering the specific requirements and characteristics of the project.

Benefits of choosing async programming


Asynchronous programming is a powerful paradigm that can significantly enhance the performance, scalability, and responsiveness of complex industry applications, particularly those with concurrent and resource-intensive tasks.

Asynchronous patterns are essential for handling a large number of concurrent connections or requests in systems like web servers, making applications more scalable.


Many developers find that the benefits of asynchronous programming, such as improved performance and responsiveness, outweigh the downsides. Careful design, coding practices, and proper training can mitigate many of challenges associated with asynchronous programming (fe. complexity, debugging complexicity, increased development time).

Despite their distinctions, asynchronous (async) and synchronous (sync) methods offer advantages tailored to different stakeholders: Async benefits users, while sync eases the workflow for developers.

Examples of async programming in enterprise applications: 

 

Async programming is applied across various domains in enterprise applications, providing advantages in terms of performance, responsiveness, and resource utilization. In Macrix projects we used async programming fe. for: in our SSAB application, data from a device is sent asynchronously via SignalR to a server, where it is processed.

Here, asynchronous programming is used to ensure that the application runs smoothly.
Furthermore there are many examples in the Warehous Manager System where asynchronous programming is used to accomplish concurrent tasks like logging of activities.
Another example is an application in the aluminum manufacturing industry, where a lot of asynchronous processing is used to ensure user interface reactivity.

What is thread safety?


Explanation of thread safety and why it is important.  

 

Thread safety refers to how a program runs safely and reliably in a multithreaded environment. In such a scenario, multiple threads can access shared resources simultaneously, which can cause problems if they are not properly synchronized.

Thread safety is important to avoid problems such as data inconsistencies and deadlocks. Data inconsistencies occur when multiple threads access the same data structure at the same time, and the data can become inconsistent. Deadlocks, on the other hand, are situations where two or more threads are blocked because they are waiting for each other to release certain resources.

Common Problems in Parallel Programming 

 

Several problems can occur with parallel programming that can affect the functionality and stability of your application: 

Data inconsistencies

If several threads access and modify common data at the same time, inconsistent states can occur. This can lead to data being misinterpreted or manipulated.

Deadlocks

A deadlock occurs when two or more threads are waiting to release resources that belong to each other. This causes the threads to block each other and the application to grind to a halt.

The solution to these problems lies in the correct application of synchronization techniques that ensure that threads are properly coordinated to avoid data inconsistencies and deadlocks.

Using the lock statement


How to use the lock statement to protect critical sections 

 

The lock statement in C# is a simple way to implement thread safety in your code. It allows you to define a critical section of your code that can only be accessed by one thread at a time. This prevents data inconsistencies from occurring.

 

Here is how the lock statement is used:

Thread-safety 1

Importantly, you must use the same lock object (lockObject in this case) in all threads that access the same critical section. This ensures that only one thread at a time executes the protected code.

The lock statement is a simple way to achieve thread safety in C#, but it’s important to use it sparingly and selectively, as overuse can affect the performance of your application. 

 

Using Monitor Constructs

In addition to the lock statement, you can also use monitor constructs to ensure thread safety in C#. The Monitor class provides methods such as Enter, Exit, Wait, and Pulse that give you advanced synchronization capabilities.

Monitor.Enter and Monitor.Exit

These methods allow you to manually lock and unlock a monitor to protect a critical section.

Monitor.Wait and Monitor.Pulse

These methods are used to organize threads in a queue. Wait puts the calling thread on hold until another thread calls Pulse to wake it up.

Here is an example of using monitor constructs:

These constructs are useful when you have more complex synchronization requirements.

Avoiding deadlocks

 

Explanation of how deadlocks occur and tips on how to avoid them. 

 

Deadlocks are situations where threads are blocked because they are waiting for resources held by other threads. To avoid deadlocks, you should follow these principles: 

Lock order

make sure that threads always access locks in the same order. This reduces the risk of cyclic wait situations.

Time constraints

Set a maximum wait time for accessing a resource. If a thread cannot access the resource within this time, it releases the lock and tries again later.

Use wait mechanisms

instead of just waiting for resources, use wait mechanisms such as Monitor.Wait or Semaphore with appropriate wait time and condition checking.

Avoid too many locks

reduce the number of locks to a minimum to reduce the probability of deadlocks.

Use timeout mechanisms

set a timeout for waiting for resources to ensure that a thread does not remain blocked forever.

Careful planning and adherence to these principles can help minimize or prevent deadlocks.

Example: How to use a SemaphoreSlim.

Using thread-safe collections


ConcurrentDictionary, ConcurrentQueue, etc.

 

In C#, there are special collections that are designed for concurrent access by multiple threads. These thread-safe collections ensure that access to data is synchronized to prevent data inconsistencies. Some examples of thread-safe collections are ConcurrentDictionary, ConcurrentQueue, ConcurrentStack, and ConcurrentBag.

Here is an example of using ConcurrentDictionary:

These collections are a great way to avoid data inconsistencies when multiple threads need to access the same data.

Asynchronous Programming  

 

Using async and await in thread-safe scenarios     

 

Asynchronous programming allows you to efficiently handle threads without writing blocking code. You can use async methods with the await operator to wait for long-running tasks in a non-blocking way.

Here is an example of using async and await:

Examples

Example 1: Thread safe counter class
Example 2: Parallel counting thread-safe and thread-unsafe

Summing up:


Developers! Don’t be afraid to use the potential of asynchronous programming. Asynchronous programming, when wielded with care and understanding, emerges not as a mystical art but as a powerful tool for crafting responsive, scalable, and high-performance enterprise solutions.

Benjamin Witt
Macrix Lead Developer

Der Beitrag Thread-safety – how to mytigate potential pitfalls in asynchronous programming erschien zuerst auf We code IT happen.

]]>
A first look at .NET MAUI https://www.macrix.eu/a-first-look-at-net-maui/ Wed, 21 Jun 2023 07:30:03 +0000 https://www.macrix.eu/?p=10798 Microsoft recently released its new, highly anticipated cross-platform application building tool .NET MAUI. Does the new tool have what it takes to be a proper successor to Xamarin? And what benefits and new features does it bring to the table for cross-platform developers? Our colleague Piotr Pietrzak had a first look to find out if […]

Der Beitrag A first look at .NET MAUI erschien zuerst auf We code IT happen.

]]>

Microsoft recently released its new, highly anticipated cross-platform application building tool .NET MAUI. Does the new tool have what it takes to be a proper successor to Xamarin? And what benefits and new features does it bring to the table for cross-platform developers? Our colleague Piotr Pietrzak had a first look to find out if the wait has been worth it.

What is .NET MAUI?


.NET MAUI (Multi-platform App UI) is the highly anticipated open-source cross-platform application building tool to succeed Xamarin, which in .NET MAUI was extended with desktop scenarios. .NET MAUI provides a single project that handles all the multi-targeting across devices and their platforms. In .NET MAUI you can develop applications for the following platforms:

  • Windows 11 and Windows 10 version 1809 or higher, using Windows UI Library (WinUI) 3,
  • macOS 10.13 or higher, using Mac Catalyst,
  • iOS 10 or higher,
  • Android 5.0 (API 21) or higher

and additionally:

  • Tizen, supported by Samsung,
  • Linux, supported by the community.

Android and iOS applications with an interface built by MAUI technology can be created in Visual Studio for Windows and Mac in the Visual Studio 2022 in 17.3 version (on Mac it needs also Xcode 13.0 or higher), while creating applications for Windows and macOS is possible just in Visual Studio for the right system.
.NET MAUI is a part of .NET Core (currently renamed as a .NET 6) and it has been released on 9th of August for Windows. Microsoft’s developers are still working to release many of these amazing tools for Mac developers as well, but now it is still only available in preview version for them.

Who is .NET MAUI for?


If you are a developer who wants to:

  • develop cross-platform apps in XAML and C#, with a single shared codebase in Visual Studio
  • share UI and design across platforms,
  • share code, business logic, and tests across platforms

.NET MAUI is for you!

How does .NET MAUI work?


Basically, .NET MAUI is all about the unification of the above mentioned platforms’ APIs into a single API.

As was already mentioned, .NET MAUI is part of .NET 6, which provides platform-specific frameworks for creating apps: .NET for Android, .NET for iOS, .NET for macOS, and Windows UI 3 (WinUI 3) library. The library which connects all of them is .NET 6 Base Class Library (BCL) based on Win32 with UWP in Windows and Mono Runtime in rest systems. This library abstracts the details of the underlying platform away from your code and allows for sharing common business logic between them. But all platforms have different approaches to defining the UI of an application. So the developer can create the UI for each of them separately using the platform-specific framework.

.NET MAUI provides a single framework for building the UIs for mobile and desktop apps.

It unifies systems which allow to create applications with graphical user interfaces for the above mentioned platforms in XAML. But it is not a one and only possibility. The new thing is that you can use Blazor as well (which is associated mostly with Web applications) for this.

Apart of graphical aspects of applications, .NET MAUI also unifies some other parts of applications like access to sensors, e.g. gyroscope or accelerometer, file access and data storage mechanisms, network state tracking or access to device information.

Thanks to that, native client apps can be build with a single codebase (with some platform-specific files just in case, without separating that in different projects). This can be really helpful and means that, to some extent, an application can be written without taking care of differences in code for other platforms. Such an approach is known as ‘write-once, run-anywhere’ (WORA) which has been known in software developing for a long time.

The conclusion is that you write code which is able to interact with .NET MAUI API, and then it directly consumes the native platform APIs. In addition, app code may directly exercise platform APIs, if required. Quite simple, isn’t it?

Image source: https://docs.microsoft.com/en-us/dotnet/maui/

 What does .NET MAUI offer to developers?

✅ Single development stack that supports all modern workloads with a unified SDK, base class libraries and toolchain,

✅ Multi-platform APIs for native device features include access to over 60 platform features, including isolated storage, sensors, geolocation, camera,

✅ Rich collection of pages, layouts, and controls (build from C# or XAML),

✅ Support for two-way data binding to easily have a code update when users interact with a UI,

✅ URI-based navigation system which uses routes to navigate to any page in the app without having to follow a set navigating hierarchy (with navigate backward without visiting all pages on the stack),

✅ Support for Hot Reload (C# and XAML) and XAML Live Preview technologies to make developers much more productive building .NET MAUI apps,

✅ Latest debugging features, IntelliSense, and testing features of Visual Studio to write better code faster,

✅ Support for modern patterns: MVU (model-view-update) and Blazer development patterns,

✅ Hybrid Development with Blazor,

✅ Visual State Manager which manages states and the logic for transitioning between states for controls,

✅ Animation API,

✅ Dependency Service,

✅ Messaging Center to Pub/Sub,

✅ CI/CD Support

and much more!

How does the .NET Maui project architecture look like?

1. One single project that hosts all of the source code for the project including UI, platform code, shared resources, app manifest, and more.
2. Cross-platform resources (fonts, images, and raw assets are all contained in the project).
    a. Fonts – automatically configured per platform.
    b. Images – resized and SVG converted.
    c. App Icons and Splash screens supported.
3. Platform-specific folders hold platform-specific resources, configuration, startup logic and platform code.

Summary

.NET MAUI is a quite new product so it is still too early to judge how big of an impact it will have on the field of cross platform app development tools. Microsoft strongly hopes that it will effectively success Xamarin which popularity has been decreasing for some time now. 

What is attractive about this product is the unification of the tools used to create cross-platform applications. This looks really good from a UI perspective as well as from a business perspective.

Hopefully, Microsoft will be still working to improve product and they will support this for a long time.

Piotr Pietrzak
Software Commissioning Engineer

Source: https://docs.microsoft.com/en-us/dotnet/maui/

Der Beitrag A first look at .NET MAUI erschien zuerst auf We code IT happen.

]]>
Get the most out of LINQ https://www.macrix.eu/linq/ Fri, 02 Dec 2022 10:14:31 +0000 https://www.macrix.eu/?p=11072 Language-Integrated Query (LINQ) is a powerful tool that allows developers to harness the power of functional programming in C#. However, when used incorrectly, in can result in queries that are needlessly slow and inefficient. To leverage the full potential of LINQ, it is important to keep a few rules in mind. In this article, we […]

Der Beitrag Get the most out of LINQ erschien zuerst auf We code IT happen.

]]>

Language-Integrated Query (LINQ) is a powerful tool that allows developers to harness the power of functional programming in C#. However, when used incorrectly, in can result in queries that are needlessly slow and inefficient. To leverage the full potential of LINQ, it is important to keep a few rules in mind. In this article, we will look at the best methods to tune your queries in order to get the fastest possible results.

Language-Integrated Query (LINQ) is the name for a set of technologies based on the integration of query capabilities directly into the C# language. It is used to write queries against strongly typed collections of objects. For a developer who writes queries, the most visible “language-integrated” part of LINQ is the query expression. However, even with the LINQ standard query operators, used to create these queries, it is easy to misuse these operators unless you have a solid understanding of how they work internally.

Such misuse leads to inefficient queries that are slower – in some cases much slower – than the equivalent properly tuned query. This article contains a list of tips that you can use to tune your queries to yield results faster.

1. Avoid projections like ToList() when possible


LINQ offers a deferred execution and lazy evaluation. Deferred execution means that the evaluation of an expression is delayed until its realized value is required. So in some cases that means that iteration over the collection will be done just once.

When you write a method that implements deferred execution, you also must decide whether to implement the method using lazy evaluation or eager evaluation. In lazy evaluation, a single element of the source collection is processed during each call to the iterator. This is the typical way in which iterators are implemented, while in eager evaluation the first call to the iterator will result in the entire collection being processed. A temporary copy of the source collection might also be required. Lazy evaluation usually yields better performance because it distributes overhead processing evenly throughout the evaluation of the collection and minimizes the use of temporary data. Of course, for some operations, there is no other option than to materialize intermediate results.

So, to come back to the tip, these projections force the list values to be evaluated, which is not helpful because that negates the benefits of lazy evaluation and deferred execution and that is why we should avoid that.

NOTE: Please keep in mind that all benchmarks in the below examples were done on the List type object. When working on IQueryable, i.e. when the collection is not materialized, then execution times could be different and more close to each other because the query can be optimized by the provider.

All tests were done on the List of 1 million Person class like here (for some examples it was changed a little bit):

2. Avoid syntax like .Where().First()

 
Putting .Where() in front of the query forces the provider to fetch all items which meet the conditions. There is no need to fetch all items when we are interested just in the first one. There is a simple way to correct this by replacing the Where() clause with the First() from the end.pp

Benchmarks:

The results:

|           Method |     Mean |    Error |   StdDev |

| WhereFirstPerson | 64.02 ns | 1.329 ns | 1.949 ns |

|      FirstPerson | 29.32 ns | 0.623 ns | 0.487 ns |

3. Combine multiple .Where() clauses into a single clause as long as they are done on the same collection

Multiple Where() clauses may be translated in SQL as multiple embedded queries like :
SELECT * FROM (SELECT * FROM PERSONS WHERE LastName = ‘Bond’) WHERE FirstName = ‘James’

The above query can be read like ‘fetch all persons with last name Bond and then, from them take all those with the first name James’. For every Where() clause, it must loop over the set once, which means that the looping process will take place as many times as there are Where() loops on any given collection.

So while refactoring multiple nested if statements together in a Where clause, try putting all of the clauses together:

Now such a query translates into SQL like this:
SELECT * FROM PERSONS WHERE LastName = ‘Bond’ AND FirstName = ‘James’

so: ‘fetch all persons named James Bond’.

Benchmark results:

|                Method |     Mean |     Error |    StdDev |

| WhereTwoCalusesPeople | 7.360 ms | 0.0556 ms | 0.0520 ms |

|  WhereOneClausePeople | 5.012 ms | 0.0989 ms | 0.1178 ms |

4. Understand the difference between Single()/SingleOrDefault() and First()/FirstOrDefault()

 

Let’s consider the following:

Translated into raw SQL it is:

  • FirstOrDefault() : SELECT TOP 1 FROM
  • SingleOrDefault() : SELECT TOP 2 FROM

What does this mean? Single()/SingleOrDefault() ensures that the item is the only match in the set, whereas the First()/FirstOrDefault() returns just the first match immediately after it was found. In the first case, it has to iterate over all elements until the second match will be hit which is both costly and usually unneeded, unless validating user input or such.

In most cases, you are not interested in ensuring that there is just one match – or often it is logically impossible. See the examples above – if your database has two Person entries with same primary key (ID), you have far bigger problems than using LINQ badly.

A special case is Single() without predicate, which should be used when logically or semantically there should be only a single element in the set.

When the item which we are looking for is in the middle of the collection, the FirstOrDefault() will be twice as fast as the SingleOrDefault() on the same collection, because it does not have to go over the rest of the entries to make sure that that the item is the only match.

|          Method |      Mean |     Error |    StdDev |

|  FirstOrDefault |  6.399 ms | 0.0891 ms | 0.0834 ms |

| SingleOrDefault | 12.043 ms | 0.0623 ms | 0.0583 ms |

5. Count vs Count() vs Any()/All()

 
a. Count() vs Any()/All()
 

Count() will do the full iteration of the matched items in the set. If you just want to check if there is a matching item in the set, use Any(). It returns true when there is at least one matching item, with an empty Any() just returning true when there are items in your set.

All() is the opposite of Any() – it will return false when encountering the first item which met the condition, without going over all of the set.

The exceptional case is when Count() and Any()/All() methods are an empty-predicate.

b. Count vs Any()
 

The next tip is to use the public property Count in the Boolean expression list Object.Count > 0 instead of Any().

The Count property is updated whenever a new entry gets added to the collection. Calling the Count property is a constant-time operation, therefore, using Count > 0 to determine whether the collection contains any elements is faster than calling Any(), which has to loop through the collection and update a local variable with the count, as long as the collection remains iterable. Thus, Any() is slower.

For any container that supports a public Count property, prefer .Count == 0 over Any().

c. Count() vs Count

Do not use Enumerable.Count() method for arrays or any collections that implement ICollection/ICollection interfaces, such as List and Dictionary. Use Length for arrays and the Count property for ICollection implementations.

Depending on the platform, there are optimizations in place preventing the O(n) operation of the Count() method, just returning the existing Count value.

Conclusion:


If you are starting with something that has a .Length or .Count (such as ICollection, IList, List, etc) – then this will be the fastest option since it doesn’t need to go through the GetEnumerator()/MoveNext()/Dispose() sequence required by Any() to check for a non-empty IEnumerable sequence.

For just IEnumerable, then Any() will generally be quicker, as it only has to look at one iteration. However, note that the LINQ-to-Objects implementation of Count() does check for ICollection (using .Count as an optimization) – so if your underlying data source is directly a list/collection, there won’t be a huge difference.

Of course, if you have used LINQ to filter it etc (Where etc), you will have an iterator-block-based sequence, and so this ICollection optimization is useless.

In general, with IEnumerable: stick with Any().

Indexing over an array:
Integer indexing over an array or an IList implementation is the fastest performance you can get in terms of indexing over a generic collection in .NET. In contrast, Last() loops through the entire collection as long as it remains iterable. However, whenever a new element is added to a collection, the Count property gets updated. Thus, Count –1 gets evaluated in constant time, regardless of the size of the collection. Therefore, retrieving the last element using [Count – 1] is usually faster than using Last(). The exception is when you are using the overload of Last() that takes a predicate. In that case, the execution time is essentially the same.

6. Use the TrueForAll() method available on the IList implementation instead of All()


For long-running operations and cross-collection membership checks, All<T>() offers worse performance than TrueForAll. TrueForAll() uses a for loop, whereas All<T>() uses a for each loop.

This time the list looks like this:

Benchmarks:

Results:

|     Method |      Mean |     Error |    StdDev |

|        All | 48.173 ns | 0.9841 ns | 2.0541 ns |

| TrueForAll |  6.435 ns | 0.0253 ns | 0.0224 ns |

Piotr Pietrzak

Senior Commissioning Engineer

Sources :

https://learn.microsoft.com/en-us/dotnet/csharp/linq/?source=recommendations
Sudipta Mukherjee – Thinking in LINQ: Harnessing the Power of Functional Programming in .NET Applications

Der Beitrag Get the most out of LINQ erschien zuerst auf We code IT happen.

]]>
How to be a Leader? https://www.macrix.eu/how-to-be-a-leader/ Thu, 17 Nov 2022 10:47:45 +0000 https://www.macrix.eu/?p=10986 How to be a good leader? What are the challenges of managing developer teams? And which values are especially important for aspiring leaders? To answer these and other questions, we talked with Kamil Wilkosz, who is a Senior Software Developer at Macrix and team leader of team ECHO, one of our eight development teams.  By […]

Der Beitrag How to be a Leader? erschien zuerst auf We code IT happen.

]]>

How to be a good leader? What are the challenges of managing developer teams? And which values are especially important for aspiring leaders? To answer these and other questions, we talked with Kamil Wilkosz, who is a Senior Software Developer at Macrix and team leader of team ECHO, one of our eight development teams. 

By introducing the team model to our Development Department, we combined the best aspects of both flat and hierarchical company structures in a unique model. Read the interview with Kamil to learn more about how teams at Macrix work and to get to know his insights from being a team leader.

Kamil started his adventure with Macrix in March 2020 as a Software Developer. In 2021, he became a team leader after successfully completing the selection process for this role. At the beginning of this year, Kamil was promoted to Senior Software Developer. From the very beginning of his time at Macrix, Kamil has been actively involved in the life of the company and in building positive relations between employees. 

Kamil, how did you become team leader of one of the Macrix teams?

It started when the Macrix Board decided to change the organizational structure of our company. The Development Department was constantly growing and became too big for the flat structure that we had at that time. The internal recruitment process started, and I was convinced to take part in it. The final decision was positive, and I was chosen along with five other colleagues to become the first team leaders in the company. We now already have eight teams and everything indicates that they will grow rapidly.

What prerequisites did you have to meet to become a team leader at Macrix?

It’s hard to say. I didn’t have any experience in management, but it was helpful for me that I was a trainer in my previous company, so I already knew something about working with people and guiding them. I think that some of the values that the recruitment team was looking for were empathy, enthusiasm, and openness.

Do you enjoy being a team leader? What are your responsibilities?

Definitely, I do! I derive a lot of satisfaction from working with people, by supporting colleagues at their daily work. In general, I have one major duty – to take care of my teammates’ satisfaction. This was one the main reasons for establishing functional teams and all my actions are directed at maintaining a high level of satisfaction. This includes forwarding two-way feedback during evaluation meetings, interacting in situations when colleagues need support, trying to recognize potential issues, keeping an eye on their moods, and organizing team building evenings. All my actions focus on the wellbeing of the team.

How much time do you spend on team leader duties? Do you have to define time frames?

Usually, this takes about 10% of my time per week. However, it can also be more, depending on if there are any onboardings, evaluation meetings or similar situations that requires my involvement.

Did you always know that you want to be a leader?

I always was finding myself in leading roles at school, so I guess somehow, I have this need. However, when joining Macrix, I didn’t assume that I will take on leadership responsibilities. As I said at the beginning, someone had to convince me to take part in the recruitment process because even then I didn’t plan that. Now I am happy that I took the opportunity.

Was there any situation that was exceptionally satisfying to you?

A few times I was able to help colleagues in the team to solve issues and made them comfortable again at Macrix. In those situations, I felt that I made a difference, which was very satisfying to me. In general, the team leaders have already recognized and fixed a number of issues that would have gone unnoticed in the previous flat structure that we had at our company. It makes me proud of the team leaders group.

For you personally, what are the perks associated with the team leader function?

I appreciate working closely with people. I learn how to work with different types of characters or how to fight for my and my team’s interest. The role also helps me to strengthen my assertiveness. Also, being a leader forces me to balance between project and team duties. I have the opportunity to work on some skills that I never would have a chance to improve being just a developer.

What’s your “recipe” for being a good leader?

I have the principle that I am a team leader first and then I am a developer. I hope that my teammates remember that they can come to me at any time, and that they are my priority.

What challenges do you face managing your team? How do you handle them?

The last two and half years forced us to move our daily work at least partly to home and to communicate via chats or video calls. It is harder to build relationships, especially from the team leader’s perspective who should be close to his team, gauge people’s moods and help whenever they need assistance. To overcome this, I try to convince colleagues working remotely to come to the office from time to time, organize integration evenings or catch colleagues at work for chatting.

What do you think is the most essential aspect of good team management?

There are two fundamentals that I prioritize: honesty and trust. Honesty is a value that a team leader should spread in the team from the very beginning. After some time, honesty will earn trust. Having these two is essential to build a strong team.

What else is important that someone who aspires to become a leader should now?

Our life never is black and white. It’s important to consider all options and learn all perspectives and points of view. Acting on emotions will only cause problems. There is one sentence said once by one of the team leaders: if you make a mistake in the code then it’s easy to fix. If you make a mistake working with people, then it’s hard to build trust again. I think any potential leader should take this thought to heart.

Der Beitrag How to be a Leader? erschien zuerst auf We code IT happen.

]]>
Keeping your data safe https://www.macrix.eu/keep-your-data-safe/ Fri, 21 Oct 2022 10:05:51 +0000 https://www.macrix.eu/?p=10891 In today’s world, it is increasingly difficult to keep our private and business information secure. October is the International Cybersecurity Awareness Month. Let’s explore how we can keep our data safe. The world of cybercrime Back in the days when the Internet was just beginning to explode, the stereotypical hacker was often portrayed as a […]

Der Beitrag Keeping your data safe erschien zuerst auf We code IT happen.

]]>
In today’s world, it is increasingly difficult to keep our private and business information secure. October is the International Cybersecurity Awareness Month. Let’s explore how we can keep our data safe.

The world of cybercrime


Back in the days when the Internet was just beginning to explode, the stereotypical hacker was often portrayed as a hooded guy, working on his PC in a dark room to steal your data. In the modern world things get a little bit more complicated: often, cybercriminals do not act as single persons, but as groups of people with different skills and knowledge.

Cybercriminals mostly fall in one of these categories:

  • Access broker – someone with good technical or soft skills (often both), specialized in getting access to accounts or infrastructures via hacking or social engineering, but all they do is sell the access to the highest bidder.
  • RaaS operator – a Ransomware as a Service operator is someone who develops and maintains ransomware tools. They provide them to cybercriminals as a service, often taking some percentage from the ransom from cyberattacks. They are often the one negotiating with the victim of the attack as a proxy. 
  • RaaS affiliate – this the actual attacker who gets inside the infrastructure, looks through the network, moves laterally (getting more and more privileges and access) and in the end deploys the ransomware software.
  • Script kiddies – this is a mocking term for an inexperienced hacker who only knows how to use already existing tools and scripts to gain access to IT systems.

With such vast gallery of rogues, it’s really important to properly secure your personal and organization data. Here are some of the best ways to do it:

1. Cyber hygiene


Cyber hygiene is a set of practices that organizations and individuals should perform regularly to maintain the security of their networks, devices, and data. Just like with your day-to-day personal security (e.g. locking the door of your home when you leave it), you need to develop similar habits for securing your data. Such habits can include: creating strong passwords, enabling multi-factor authentication where it’s possible, not providing your data to someone via phone or web forms, etc.
 

2. Gathering information about your assets


Before you can start defending your data, you need to identify what data you have and what is worth defending. In today’s world, it is almost impossible to defend every piece of data you or your company own. It is very important to do a proper assessment of the data/devices/systems you own and check what needs to be secured. 


For example, a storage device inside your home network that stores your photos should have less priority in defending than your bank account. In terms of organization assets, it’s better to fully secure your core infrastructure that stores important data for the business than lose time on securing, for example, development environments.

3. Password management


Nowadays, credentials are often your “network perimeter”, especially if we are talking about services in the cloud. Leaked credentials are the top causes of data breaches and cyberattacks. So it’s really important to create strong passwords and store them in a safe place.

Some tips will help you create a strong password:

  1. The password should be at least 12 characters long
  2. Use a mixture of lowercase / uppercase letters, numbers, and special characters
  3. Don’t use words that can be found in dictionaries
  4. Don’t use your personal info in passwords (birth date, name, address etc.)
  5. Don’t use popular slogans or character strings (qwerty, P@sswd, 1234, etc.)

Strong passwords are often hard to remember, so they should be stored in a password manager, for example KeePassXC. It’s often a good idea to randomly generate them. KeePassXC and similar tools have a build-in password generator that will show you how strong your password (it’s mathematical entropy) is. If you need a strong but rememberable password, then the best option is to pick a quote or slogan (should be a sentence, not a single word) and then mix some upper/lowercase characters, numbers, and special characters in it.

A strong password can even save you when a data breach occurs, because almost always leaked credentials are hashed (encrypted) and the malicious actor needs to first crack them before he can use them. The stronger and more complex the password, the longer it will take to crack it.

Image source: https://www.statista.com/chart/26298/time-it-would-take-a-computer-to-crack-a-password/

4. Defending from password attacks


Nowadays, many attack methods allow hackers to crack passwords and get into protected data or systems.

Some of them are:

  • Brute-force attacks – a hacking method that uses a trial-and-error approach to crack passwords, login credentials, and encryption keys (testing every possible combination of characters and numbers)
  • Dictionary attacks – a variety of brute force attacks, here instead of trying every possible combination, the attacker uses dictionaries (big txt files full of common words)
  • Rainbow table attacks – a cracking method that uses special tables full of password hashes which are then compared to the hash of the password that someone wants to crack
  • Password spray attacks – attacks where a malicious actor attempts the same password on many accounts before moving on to another one and repeating the same process.

To stay safe, make sure to follow these best practices to defend from password attacks:

  • Have some system in place to lock accounts after a certain number of failed logins (e.g. fail2ban on Linux or Identity Protection services in AzureAD)
  • Reset your passwords periodically or when you have a suspicion that they got leaked
  • Always use multi-factor authentication when possible, it adds a second layer of security that can defend you even if someone can guess your credentials.

Multi-factor authentication is:

  • Something you have (for example your phone)
  • Something you know (your credentials or security questions)
  • Something you are (biometrics)
So, for example, it can be an additional SMS code that you need to input after successfully providing your credentials or your fingerprint that is needed to be provided via the mobile authentication app.

5. Defending from phishing and social engineering attacks

In the context of IT security, social engineering is the psychological manipulation of people into performing certain actions or revealing confidential information.

Social engineering attacks include:

  • Phishing – the most common type of social engineering, it’s a method that is based on sending fake emails / SMS (even sometimes voice calls) to a targeted person or a group of people. By this, the attacker wants to trick the person into giving out personal information or downloading infected files
  • Pretexting – this type of attack involves a scenario (pretext) created by the attacker to lure victims into a vulnerable situation. The attacker often tries to impersonate someone that the victim trusts (or higher authority).
  • Tailgating – in these types of attacks, someone without the proper authentication follows an authenticated employee (or private person) into a restricted area.
  • Shoulder surfing – a simple technique, where the attacker tries to obtain some valuable information just by looking over the victim’s shoulder.

Unfortunately, there is no single good way to defend from social engineering. It is important to stay vigilant:

  • Always double-check URLs in emails or while browsing the Internet:
  • Always use HTTPS while connecting to websites (check if the website has a valid SSL certificate issued by a trusted organization)
  • Always check the full address of the e-mail sender, not his visible name
  • Look for spelling errors or bad grammar
  • Use the Internet to find more information about the sender or the organization that he represents
  • Double-check attachments in e-mails, never open them if they are suspicious (e.g. have strange extensions)
  • Don’t give your valuable personal information to anyone via web forms or phone calls.

6. Check if your data was leaked

 

Many services let you check if your data was leaked. One of them is https://haveibeenpwned.com/, which shows you if your mail accounts were a part of some major data breaches and what data exactly was leaked. Additionally, you can configure an automatic notification for your accounts or even whole domains, so you can always stay up informed about the security of your data.

If you don’t want to use Haveibeenpwned there are other services like https://monitor.firefox.com/ which provide the same functionality.

7. Check the public exposure of your network / devices

 

It’s important to keep an eye on your private or organization network’s public visibility and keep it to a minimum. The best option would be to use some public search engines like Shodan (https://www.shodan.io/) or ZoomEye (https://www.zoomeye.org/). They use bots to scan and index publicly visible resources like IoT devices or servers with open RDP or SSH ports.

Additionally, you can use the Nmap tool (or Zenmap on Windows) to scan your public IP addresses to check what ports are visible and if your firewalls are configured correctly. Nmap can use a plugin that automatically checks if your servers or devices are vulnerable to some known exploits (it will automatically provide a link to the exploit descriptions + tips on how to protect against it).

8. Cybersecurity on the go

 

While traveling, it can be difficult to keep an eye on your cybersecurity. Follow these rules to reduce the risk of attacks:

  • Always make sure that your devices are protected by passwords or biometrics
  • Make sure that your devices are encrypted (e.g with Bitlocker)
  • Never left them unattended in visible places
  • Use an antivirus software
  • Always stay up-to-date with OS and software updates
  • Have your firewall enabled (with no ports open for public connections)

Special care should be taken when using public open WiFi networks. There is always a small chance that someone is using the network as a ground for cyberattacks like:

  • Man-in-the-middle – it’s an attack where the hacker is secretly relaying and altering the communication between two hosts (e.g. redirecting you to a fake website)
  • Evil twin – here the attacker is setting up a fake a WiFi hotspot with the goal of luring you to connect to it instead of the genuine one.
  • Packet sniffing – this is a method that enables the attacker to collect and analyze network packets passing through the network. This is not harmful by itself, but it can be used to prepare the ground for later more serious attacks.

It’s generally a good idea to use a VPN when accessing private or organizational data on public WiFi networks. It creates an encrypted connection that hides your network traffic from other people in the network. If you don’t have access to VPN, you can simply use your phone’s cellular network (via hotspot or tethering) to create a private connection to the Internet.

Summary

Nowadays, keeping our data safe is becoming increasingly difficult. However, by using the information and advice above, you can increase your cybersecurity and significantly reduce the risk of successful attacks.

Jędrzej Boguszyński
IT System Administrator

Der Beitrag Keeping your data safe erschien zuerst auf We code IT happen.

]]>