POPULARITY
Gros épisode qui couvre un large spectre de sujets : Java, Scala, Micronaut, NodeJS, l'IA et la compétence des développeurs, le sampling dans les LLMs, les DTO, le vibe coding, les changements chez Broadcom et Red Hat ainsi que plusieurs nouvelles sur les licences open source. Enregistré le 7 mai 2025 Téléchargement de l'épisode LesCastCodeurs-Episode-325.mp3 ou en vidéo sur YouTube. News Langages A l'occasion de JavaOne et du lancement de Java 24, Oracle lance un nouveau site avec des ressources vidéo pour apprendre le langage https://learn.java/ site plutôt à destination des débutants et des enseignants couvre la syntaxe aussi, y compris les ajouts plus récents comme les records ou le pattern matching c'est pas le site le plus trendy du monde. Martin Odersky partage un long article sur l'état de l'écosystème Scala et les évolutions du language https://www.scala-lang.org/blog/2025/03/24/evolving-scala.html Stabilité et besoin d'évolution : Scala maintient sa position (~14ème mondial) avec des bases techniques solides, mais doit évoluer face à la concurrence pour rester pertinent. Axes prioritaires : L'évolution se concentre sur l'amélioration du duo sécurité/convivialité, le polissage du langage (suppression des “rugosités”) et la simplification pour les débutants. Innovation continue : Geler les fonctionnalités est exclu ; l'innovation est clé pour la valeur de Scala. Le langage doit rester généraliste et ne pas se lier à un framework spécifique. Défis et progrès : L'outillage (IDE, outils de build comme sbt, scala-cli, Mill) et la facilité d'apprentissage de l'écosystème sont des points d'attention, avec des améliorations en cours (partenariat pédagogique, plateformes simples). Des strings encore plus rapides ! https://inside.java/2025/05/01/strings-just-got-faster/ Dans JDK 25, la performance de la fonction String::hashCode a été améliorée pour être principalement constant foldable. Cela signifie que si les chaînes de caractères sont utilisées comme clés dans une Map statique et immuable, des gains de performance significatifs sont probables. L'amélioration repose sur l'annotation interne @Stable appliquée au champ privé String.hash. Cette annotation permet à la machine virtuelle de lire la valeur du hash une seule fois et de la considérer comme constante si elle n'est pas la valeur par défaut (zéro). Par conséquent, l'opération String::hashCode peut être remplacée par la valeur de hash connue, optimisant ainsi les lookups dans les Map immuables. Un cas limite est celui où le code de hachage de la chaîne est zéro, auquel cas l'optimisation ne fonctionne pas (par exemple, pour la chaîne vide “”). Bien que l'annotation @Stable soit interne au JDK, un nouveau JEP (JEP 502: Stable Values (Preview)) est en cours de développement pour permettre aux utilisateurs de bénéficier indirectement de fonctionnalités similaires. AtomicHash, une implémentation Java d'une HashMap qui est thread-safe, atomique et non-bloquante https://github.com/arxila/atomichash implémenté sous forme de version immutable de Concurrent Hash Trie Librairies Sortie de Micronaut 4.8.0 https://micronaut.io/2025/04/01/micronaut-framework-4-8-0-released/ Mise à jour de la BOM (Bill of Materials) : La version 4.8.0 met à jour la BOM de la plateforme Micronaut. Améliorations de Micronaut Core : Intégration de Micronaut SourceGen pour la génération interne de métadonnées et d'expressions bytecode. Nombreuses améliorations dans Micronaut SourceGen. Ajout du traçage de l'injection de dépendances pour faciliter le débogage au démarrage et à la création des beans. Nouveau membre definitionType dans l'annotation @Client pour faciliter le partage d'interfaces entre client et serveur. Support de la fusion dans les Bean Mappers via l'annotation @Mapping. Nouvelle liveness probe détectant les threads bloqués (deadlocked) via ThreadMXBean. Intégration Kubernetes améliorée : Mise à jour du client Java Kubernetes vers la version 22.0.1. Ajout du module Micronaut Kubernetes Client OpenAPI, offrant une alternative au client officiel avec moins de dépendances, une configuration unifiée, le support des filtres et la compatibilité Native Image. Introduction d'un nouveau runtime serveur basé sur le serveur HTTP intégré de Java, permettant de créer des applications sans dépendances serveur externes. Ajout dans Micronaut Micrometer d'un module pour instrumenter les sources de données (traces et métriques). Ajout de la condition condition dans l'annotation @MetricOptions pour contrôler l'activation des métriques via une expression. Support des Consul watches dans Micronaut Discovery Client pour détecter les changements de configuration distribuée. Possibilité de générer du code source à partir d'un schéma JSON via les plugins de build (Gradle et Maven). Web Node v24.0.0 passe en version Current: https://nodejs.org/en/blog/release/v24.0.0 Mise à jour du moteur V8 vers la version 13.6 : intégration de nouvelles fonctionnalités JavaScript telles que Float16Array, la gestion explicite des ressources (using), RegExp.escape, WebAssembly Memory64 et Error.isError. npm 11 inclus : améliorations en termes de performance, de sécurité et de compatibilité avec les packages JavaScript modernes. Changement de compilateur pour Windows : abandon de MSVC au profit de ClangCL pour la compilation de Node.js sur Windows. AsyncLocalStorage utilise désormais AsyncContextFrame par défaut : offrant une gestion plus efficace du contexte asynchrone. URLPattern disponible globalement : plus besoin d'importer explicitement cette API pour effectuer des correspondances d'URL. Améliorations du modèle de permissions : le flag expérimental --experimental-permission devient --permission, signalant une stabilité accrue de cette fonctionnalité. Améliorations du test runner : les sous-tests sont désormais attendus automatiquement, simplifiant l'écriture des tests et réduisant les erreurs liées aux promesses non gérées. Intégration d'Undici 7 : amélioration des capacités du client HTTP avec de meilleures performances et un support étendu des fonctionnalités HTTP modernes. Dépréciations et suppressions : Dépréciation de url.parse() au profit de l'API WHATWG URL. Suppression de tls.createSecurePair. Dépréciation de SlowBuffer. Dépréciation de l'instanciation de REPL sans new. Dépréciation de l'utilisation des classes Zlib sans new. Dépréciation du passage de args à spawn et execFile dans child_process. Node.js 24 est actuellement la version “Current” et deviendra une version LTS en octobre 2025. Il est recommandé de tester cette version pour évaluer son impact sur vos applications. Data et Intelligence Artificielle Apprendre à coder reste crucial et l'IA est là pour venir en aide : https://kyrylo.org/software/2025/03/27/learn-to-code-ignore-ai-then-use-ai-to-code-even-better.html Apprendre à coder reste essentiel malgré l'IA. L'IA peut assister la programmation. Une solide base est cruciale pour comprendre et contrôler le code. Cela permet d'éviter la dépendance à l'IA. Cela réduit le risque de remplacement par des outils d'IA accessibles à tous. L'IA est un outil, pas un substitut à la maîtrise des fondamentaux. Super article de Anthropic qui essaie de comprendre comment fonctionne la “pensée” des LLMs https://www.anthropic.com/research/tracing-thoughts-language-model Effet boîte noire : Stratégies internes des IA (Claude) opaques aux développeurs et utilisateurs. Objectif : Comprendre le “raisonnement” interne pour vérifier capacités et intentions. Méthode : Inspiration neurosciences, développement d'un “microscope IA” (regarder quels circuits neuronaux s'activent). Technique : Identification de concepts (“features”) et de “circuits” internes. Multilinguisme : Indice d'un “langage de pensée” conceptuel commun à toutes les langues avant de traduire dans une langue particulière. Planification : Capacité à anticiper (ex: rimes en poésie), pas seulement de la génération mot par mot (token par token). Raisonnement non fidèle : Peut fabriquer des arguments plausibles (“bullshitting”) pour une conclusion donnée. Logique multi-étapes : Combine des faits distincts, ne se contente pas de mémoriser. Hallucinations : Refus par défaut ; réponse si “connaissance” active, sinon risque d'hallucination si erreur. “Jailbreaks” : Tension entre cohérence grammaticale (pousse à continuer) et sécurité (devrait refuser). Bilan : Méthodes limitées mais prometteuses pour la transparence et la fiabilité de l'IA. Le “S” dans MCP veut dire Securité (ou pas !) https://elenacross7.medium.com/%EF%B8%8F-the-s-in-mcp-stands-for-security-91407b33ed6b La spécification MCP pour permettre aux LLMs d'avoir accès à divers outils et fonctions a peut-être été adoptée un peu rapidement, alors qu'elle n'était pas encore prête niveau sécurité L'article liste 4 types d'attaques possibles : vulnérabilité d'injection de commandes attaque d'empoisonnement d'outils redéfinition silencieuse de l'outil le shadowing d'outils inter-serveurs Pour l'instant, MCP n'est pas sécurisé : Pas de standard d'authentification Pas de chiffrement de contexte Pas de vérification d'intégrité des outils Basé sur l'article de InvariantLabs https://invariantlabs.ai/blog/mcp-security-notification-tool-poisoning-attacks Sortie Infinispan 15.2 - pre rolling upgrades 16.0 https://infinispan.org/blog/2025/03/27/infinispan-15-2 Support de Redis JSON + scripts Lua Métriques JVM désactivables Nouvelle console (PatternFly 6) Docs améliorées (métriques + logs) JDK 17 min, support JDK 24 Fin du serveur natif (performances) Guillaume montre comment développer un serveur MCP HTTP Server Sent Events avec l'implémentation de référence Java et LangChain4j https://glaforge.dev/posts/2025/04/04/mcp-client-and-server-with-java-mcp-sdk-and-langchain4j/ Développé en Java, avec l'implémentation de référence qui est aussi à la base de l'implémentation dans Spring Boot (mais indépendant de Spring) Le serveur MCP est exposé sous forme de servlet dans Jetty Le client MCP lui, est développé avec le module MCP de LangChain4j c'est semi independant de Spring dans le sens où c'est dépendant de Reactor et de ses interface. il y a une conversation sur le github d'anthropic pour trouver une solution, mais cela ne parait pas simple. Les fallacies derrière la citation “AI won't replace you, but humans using AI will” https://platforms.substack.com/cp/161356485 La fallacie de l'automatisation vs. l'augmentation : Elle se concentre sur l'amélioration des tâches existantes avec l'IA au lieu de considérer le changement de la valeur de ces tâches dans un nouveau système. La fallacie des gains de productivité : L'augmentation de la productivité ne se traduit pas toujours par plus de valeur pour les travailleurs, car la valeur créée peut être capturée ailleurs dans le système. La fallacie des emplois statiques : Les emplois sont des constructions organisationnelles qui peuvent être redéfinies par l'IA, rendant les rôles traditionnels obsolètes. La fallacie de la compétition “moi vs. quelqu'un utilisant l'IA” : La concurrence évolue lorsque l'IA modifie les contraintes fondamentales d'un secteur, rendant les compétences existantes moins pertinentes. La fallacie de la continuité du flux de travail : L'IA peut entraîner une réimagination complète des flux de travail, éliminant le besoin de certaines compétences. La fallacie des outils neutres : Les outils d'IA ne sont pas neutres et peuvent redistribuer le pouvoir organisationnel en changeant la façon dont les décisions sont prises et exécutées. La fallacie du salaire stable : Le maintien d'un emploi ne garantit pas un salaire stable, car la valeur du travail peut diminuer avec l'augmentation des capacités de l'IA. La fallacie de l'entreprise stable : L'intégration de l'IA nécessite une restructuration de l'entreprise et ne se fait pas dans un vide organisationnel. Comprendre le “sampling” dans les LLMs https://rentry.co/samplers Explique pourquoi les LLMs utilisent des tokens Les différentes méthodes de “sampling” : càd de choix de tokens Les hyperparamètres comme la température, top-p, et leur influence réciproque Les algorithmes de tokenisation comme Byte Pair Encoding et SentencePiece. Un de moins … OpenAI va racheter Windsurf pour 3 milliards de dollars. https://www.bloomberg.com/news/articles/2025-05-06/openai-reaches-agreement-to-buy-startup-windsurf-for-3-billion l'accord n'est pas encore finalisé Windsurf était valorisé à 1,25 milliards l'an dernier et OpenAI a levé 40 milliards dernièrement portant sa valeur à 300 milliards Le but pour OpenAI est de rentrer dans le monde des assistants de code pour lesquels ils sont aujourd'hui absent Docker desktop se met à l'IA… ? Une nouvelle fonctionnalité dans docker desktop 4.4 sur macos: Docker Model Runner https://dev.to/docker/run-genai-models-locally-with-docker-model-runner-5elb Permet de faire tourner des modèles nativement en local ( https://docs.docker.com/model-runner/ ) mais aussi des serveurs MCP ( https://docs.docker.com/ai/mcp-catalog-and-toolkit/ ) Outillage Jetbrains défend la suppression des commentaires négatifs sur son assistant IA https://devclass.com/2025/04/30/jetbrains-defends-removal-of-negative-reviews-for-unpopular-ai-assistant/?td=rt-3a L'IA Assistant de JetBrains, lancée en juillet 2023, a été téléchargée plus de 22 millions de fois mais n'est notée que 2,3 sur 5. Des utilisateurs ont remarqué que certaines critiques négatives étaient supprimées, ce qui a provoqué une réaction négative sur les réseaux sociaux. Un employé de JetBrains a expliqué que les critiques ont été supprimées soit parce qu'elles mentionnaient des problèmes déjà résolus, soit parce qu'elles violaient leur politique concernant les “grossièretés, etc.” L'entreprise a reconnu qu'elle aurait pu mieux gérer la situation, un représentant déclarant : “Supprimer plusieurs critiques d'un coup sans préavis semblait suspect. Nous aurions dû au moins publier un avis et fournir plus de détails aux auteurs.” Parmi les problèmes de l'IA Assistant signalés par les utilisateurs figurent : un support limité pour les fournisseurs de modèles tiers, une latence notable, des ralentissements fréquents, des fonctionnalités principales verrouillées aux services cloud de JetBrains, une expérience utilisateur incohérente et une documentation insuffisante. Une plainte courante est que l'IA Assistant s'installe sans permission. Un utilisateur sur Reddit l'a qualifié de “plugin agaçant qui s'auto-répare/se réinstalle comme un phénix”. JetBrains a récemment introduit un niveau gratuit et un nouvel agent IA appelé Junie, destiné à fonctionner parallèlement à l'IA Assistant, probablement en réponse à la concurrence entre fournisseurs. Mais il est plus char a faire tourner. La société s'est engagée à explorer de nouvelles approches pour traiter les mises à jour majeures différemment et envisage d'implémenter des critiques par version ou de marquer les critiques comme “Résolues” avec des liens vers les problèmes correspondants au lieu de les supprimer. Contrairement à des concurrents comme Microsoft, AWS ou Google, JetBrains commercialise uniquement des outils et services de développement et ne dispose pas d'une activité cloud distincte sur laquelle s'appuyer. Vos images de README et fichiers Markdown compatibles pour le dark mode de GitHub: https://github.blog/developer-skills/github/how-to-make-your-images-in-markdown-on-github-adjust-for-dark-mode-and-light-mode/ Seulement quelques lignes de pure HTML pour le faire Architecture Alors, les DTOs, c'est bien ou c'est pas bien ? https://codeopinion.com/dtos-mapping-the-good-the-bad-and-the-excessive/ Utilité des DTOs : Les DTOs servent à transférer des données entre les différentes couches d'une application, en mappant souvent les données entre différentes représentations (par exemple, entre la base de données et l'interface utilisateur). Surutilisation fréquente : L'article souligne que les DTOs sont souvent utilisés de manière excessive, notamment pour créer des API HTTP qui ne font que refléter les entités de la base de données, manquant ainsi l'opportunité de composer des données plus riches. Vraie valeur : La valeur réelle des DTOs réside dans la gestion du couplage entre les couches et la composition de données provenant de sources multiples en formes optimisées pour des cas d'utilisation spécifiques. Découplage : Il est suggéré d'utiliser les DTOs pour découpler les modèles de données internes des contrats externes (comme les API), ce qui permet une évolution et une gestion des versions indépendantes. Exemple avec CQRS : Dans le cadre de CQRS (Command Query Responsibility Segregation), les réponses aux requêtes (queries) agissent comme des DTOs spécifiquement adaptés aux besoins de l'interface utilisateur, pouvant inclure des données de diverses sources. Protection des données internes : Les DTOs aident à distinguer et protéger les modèles de données internes (privés) des changements externes (publics). Éviter l'excès : L'auteur met en garde contre les couches de mapping excessives (mapper un DTO vers un autre DTO) qui n'apportent pas de valeur ajoutée. Création ciblée : Il est conseillé de ne créer des DTOs que lorsqu'ils résolvent des problèmes concrets, tels que la gestion du couplage ou la facilitation de la composition de données. Méthodologies Même Guillaume se met au “vibe coding” https://glaforge.dev/posts/2025/05/02/vibe-coding-an-mcp-server-with-micronaut-and-gemini/ Selon Andrey Karpathy, c'est le fait de POC-er un proto, une appli jetable du weekend https://x.com/karpathy/status/1886192184808149383 Mais Simon Willison s'insurge que certains confondent coder avec l'assistance de l'IA avec le vibe coding https://simonwillison.net/2025/May/1/not-vibe-coding/ Guillaume c'est ici amusé à développer un serveur MCP avec Micronaut, en utilisant Gemini, l'IA de Google. Contrairement à Quarkus ou Spring Boot, Micronaut n'a pas encore de module ou de support spécifique pour faciliter la création de serveur MCP Sécurité Une faille de sécurité 10/10 sur Tomcat https://www.it-connect.fr/apache-tomcat-cette-faille-activement-exploitee-seulement-30-heures-apres-sa-divulgation-patchez/ Une faille de sécurité critique (CVE-2025-24813) affecte Apache Tomcat, permettant l'exécution de code à distance Cette vulnérabilité est activement exploitée seulement 30 heures après sa divulgation du 10 mars 2025 L'attaque ne nécessite aucune authentification et est particulièrement simple à exécuter Elle utilise une requête PUT avec une charge utile Java sérialisée encodée en base64, suivie d'une requête GET L'encodage en base64 permet de contourner la plupart des filtres de sécurité Les serveurs vulnérables utilisent un stockage de session basé sur des fichiers (configuration répandue) Les versions affectées sont : 11.0.0-M1 à 11.0.2, 10.1.0-M1 à 10.1.34, et 9.0.0.M1 à 9.0.98 Les mises à jour recommandées sont : 11.0.3+, 10.1.35+ et 9.0.99+ Les experts prévoient des attaques plus sophistiquées dans les prochaines phases d'exploitation (upload de config ou jsp) Sécurisation d'un serveur ssh https://ittavern.com/ssh-server-hardening/ un article qui liste les configurations clés pour sécuriser un serveur SSH par exemple, enlever password authentigfication, changer de port, desactiver le login root, forcer le protocol ssh 2, certains que je ne connaissais pas comme MaxStartups qui limite le nombre de connections non authentifiées concurrentes Port knocking est une technique utile mais demande une approche cliente consciente du protocol Oracle admet que les identités IAM de ses clients ont leaké https://www.theregister.com/2025/04/08/oracle_cloud_compromised/ Oracle a confirmé à certains clients que son cloud public a été compromis, alors que l'entreprise avait précédemment nié toute intrusion. Un pirate informatique a revendiqué avoir piraté deux serveurs d'authentification d'Oracle et volé environ six millions d'enregistrements, incluant des clés de sécurité privées, des identifiants chiffrés et des entrées LDAP. La faille exploitée serait la vulnérabilité CVE-2021-35587 dans Oracle Access Manager, qu'Oracle n'avait pas corrigée sur ses propres systèmes. Le pirate a créé un fichier texte début mars sur login.us2.oraclecloud.com contenant son adresse email pour prouver son accès. Selon Oracle, un ancien serveur contenant des données vieilles de huit ans aurait été compromis, mais un client affirme que des données de connexion aussi récentes que 2024 ont été dérobées. Oracle fait face à un procès au Texas concernant cette violation de données. Cette intrusion est distincte d'une autre attaque contre Oracle Health, sur laquelle l'entreprise refuse de commenter. Oracle pourrait faire face à des sanctions sous le RGPD européen qui exige la notification des parties affectées dans les 72 heures suivant la découverte d'une fuite de données. Le comportement d'Oracle consistant à nier puis à admettre discrètement l'intrusion est inhabituel en 2025 et pourrait mener à d'autres actions en justice collectives. Une GitHub action très populaire compromise https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised Compromission de l'action tj-actions/changed-files : En mars 2025, une action GitHub très utilisée (tj-actions/changed-files) a été compromise. Des versions modifiées de l'action ont exposé des secrets CI/CD dans les logs de build. Méthode d'attaque : Un PAT compromis a permis de rediriger plusieurs tags de version vers un commit contenant du code malveillant. Détails du code malveillant : Le code injecté exécutait une fonction Node.js encodée en base64, qui téléchargeait un script Python. Ce script parcourait la mémoire du runner GitHub à la recherche de secrets (tokens, clés…) et les exposait dans les logs. Dans certains cas, les données étaient aussi envoyées via une requête réseau. Période d'exposition : Les versions compromises étaient actives entre le 12 et le 15 mars 2025. Tout dépôt, particulièrement ceux publiques, ayant utilisé l'action pendant cette période doit être considéré comme potentiellement exposé. Détection : L'activité malveillante a été repérée par l'analyse des comportements inhabituels pendant l'exécution des workflows, comme des connexions réseau inattendues. Réaction : GitHub a supprimé l'action compromise, qui a ensuite été nettoyée. Impact potentiel : Tous les secrets apparaissant dans les logs doivent être considérés comme compromis, même dans les dépôts privés, et régénérés sans délai. Loi, société et organisation Les startup the YCombinateur ont les plus fortes croissances de leur histoire https://www.cnbc.com/2025/03/15/y-combinator-startups-are-fastest-growing-in-fund-history-because-of-ai.html Les entreprises en phase de démarrage à Silicon Valley connaissent une croissance significative grâce à l'intelligence artificielle. Le PDG de Y Combinator, Garry Tan, affirme que l'ensemble des startups de la dernière cohorte a connu une croissance hebdomadaire de 10% pendant neuf mois. L'IA permet aux développeurs d'automatiser des tâches répétitives et de générer du code grâce aux grands modèles de langage. Pour environ 25% des startups actuelles de YC, 95% de leur code a été écrit par l'IA. Cette révolution permet aux entreprises de se développer avec moins de personnel - certaines atteignant 10 millions de dollars de revenus avec moins de 10 employés. La mentalité de “croissance à tout prix” a été remplacée par un renouveau d'intérêt pour la rentabilité. Environ 80% des entreprises présentées lors du “demo day” étaient centrées sur l'IA, avec quelques startups en robotique et semi-conducteurs. Y Combinator investit 500 000 dollars dans les startups en échange d'une participation au capital, suivi d'un programme de trois mois. Red Hat middleware (ex-jboss) rejoint IBM https://markclittle.blogspot.com/2025/03/red-hat-middleware-moving-to-ibm.html Les activités Middleware de Red Hat (incluant JBoss, Quarkus, etc.) vont être transférées vers IBM, dans l'unité dédiée à la sécurité des données, à l'IAM et aux runtimes. Ce changement découle d'une décision stratégique de Red Hat de se concentrer davantage sur le cloud hybride et l'intelligence artificielle. Mark Little explique que ce transfert était devenu inévitable, Red Hat ayant réduit ses investissements dans le Middleware ces dernières années. L'intégration vise à renforcer l'innovation autour de Java en réunissant les efforts de Red Hat et IBM sur ce sujet. Les produits Middleware resteront open source et les clients continueront à bénéficier du support habituel sans changement. Mark Little affirme que des projets comme Quarkus continueront à être soutenus et que cette évolution est bénéfique pour la communauté Java. Un an de commonhaus https://www.commonhaus.org/activity/253.html un an, démarré sur les communautés qu'ils connaissaient bien maintenant 14 projets et put en accepter plus confiance, gouvernance legère et proteger le futur des projets automatisation de l'administratif, stabiilité sans complexité, les developpeurs au centre du processus de décision ils ont besoins de members et supporters (financiers) ils veulent accueillir des projets au delà de ceux du cercles des Java Champions Spring Cloud Data Flow devient un produit commercial et ne sera plus maintenu en open source https://spring.io/blog/2025/04/21/spring-cloud-data-flow-commercial Peut-être sous l'influence de Broadcom, Spring se met à mettre en mode propriétaire des composants du portefeuille Spring ils disent que peu de gens l'utilisaent en mode OSS et la majorité venait d'un usage dans la plateforme Tanzu Maintenir en open source le coutent du temps qu'ils son't pas sur ces projets. La CNCF protège le projet NATS, dans la fondation depuis 2018, vu que la société Synadia qui y contribue souhaitait reprendre le contrôle du projet https://www.cncf.io/blog/2025/04/24/protecting-nats-and-the-integrity-of-open-source-cncfs-commitment-to-the-community/ CNCF : Protège projets OS, gouvernance neutre. Synadia vs CNCF : Veut retirer NATS, licence non-OS (BUSL). CNCF : Accuse Synadia de “claw back” (reprise illégitime). Revendications Synadia : Domaine nats.io, orga GitHub. Marque NATS : Synadia n'a pas transféré (promesse rompue malgré aide CNCF). Contestation Synadia : Juge règles CNCF “trop vagues”. Vote interne : Mainteneurs Synadia votent sortie CNCF (sans communauté). Support CNCF : Investissement majeur ($ audits, légal), succès communautaire (>700 orgs). Avenir NATS (CNCF) : Maintien sous Apache 2.0, gouvernance ouverte. Actions CNCF : Health check, appel mainteneurs, annulation marque Synadia, rejet demandes. Mais finalement il semble y avoir un bon dénouement : https://www.cncf.io/announcements/2025/05/01/cncf-and-synadia-align-on-securing-the-future-of-the-nats-io-project/ Accord pour l'avenir de NATS.io : La Cloud Native Computing Foundation (CNCF) et Synadia ont conclu un accord pour sécuriser le futur du projet NATS.io. Transfert des marques NATS : Synadia va céder ses deux enregistrements de marque NATS à la Linux Foundation afin de renforcer la gouvernance ouverte du projet. Maintien au sein de la CNCF : L'infrastructure et les actifs du projet NATS resteront sous l'égide de la CNCF, garantissant ainsi sa stabilité à long terme et son développement en open source sous licence Apache-2.0. Reconnaissance et engagement : La Linux Foundation, par la voix de Todd Moore, reconnaît les contributions de Synadia et son soutien continu. Derek Collison, PDG de Synadia, réaffirme l'engagement de son entreprise envers NATS et la collaboration avec la Linux Foundation et la CNCF. Adoption et soutien communautaire : NATS est largement adopté et considéré comme une infrastructure critique. Il bénéficie d'un fort soutien de la communauté pour sa nature open source et l'implication continue de Synadia. Finalement, Redis revient vers une licence open source OSI, avec la AGPL https://foojay.io/today/redis-is-now-available-under-the-agplv3-open-source-license/ Redis passe à la licence open source AGPLv3 pour contrer l'exploitation par les fournisseurs cloud sans contribution. Le passage précédent à la licence SSPL avait nui à la relation avec la communauté open source. Salvatore Sanfilippo (antirez) est revenu chez Redis. Redis 8 adopte la licence AGPL, intègre les fonctionnalités de Redis Stack (JSON, Time Series, etc.) et introduit les “vector sets” (le support de calcul vectoriel développé par Salvatore). Ces changements visent à renforcer Redis en tant que plateforme appréciée des développeurs, conformément à la vision initiale de Salvatore. Conférences La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs : 6-7 mai 2025 : GOSIM AI Paris - Paris (France) 7-9 mai 2025 : Devoxx UK - London (UK) 15 mai 2025 : Cloud Toulouse - Toulouse (France) 16 mai 2025 : AFUP Day 2025 Lille - Lille (France) 16 mai 2025 : AFUP Day 2025 Lyon - Lyon (France) 16 mai 2025 : AFUP Day 2025 Poitiers - Poitiers (France) 22-23 mai 2025 : Flupa UX Days 2025 - Paris (France) 24 mai 2025 : Polycloud - Montpellier (France) 24 mai 2025 : NG Baguette Conf 2025 - Nantes (France) 3 juin 2025 : TechReady - Nantes (France) 5-6 juin 2025 : AlpesCraft - Grenoble (France) 5-6 juin 2025 : Devquest 2025 - Niort (France) 10-11 juin 2025 : Modern Workplace Conference Paris 2025 - Paris (France) 11-13 juin 2025 : Devoxx Poland - Krakow (Poland) 12 juin 2025 : Positive Design Days - Strasbourg (France) 12-13 juin 2025 : Agile Tour Toulouse - Toulouse (France) 12-13 juin 2025 : DevLille - Lille (France) 13 juin 2025 : Tech F'Est 2025 - Nancy (France) 17 juin 2025 : Mobilis In Mobile - Nantes (France) 19-21 juin 2025 : Drupal Barcamp Perpignan 2025 - Perpignan (France) 24 juin 2025 : WAX 2025 - Aix-en-Provence (France) 25-26 juin 2025 : Agi'Lille 2025 - Lille (France) 25-27 juin 2025 : BreizhCamp 2025 - Rennes (France) 26-27 juin 2025 : Sunny Tech - Montpellier (France) 1-4 juillet 2025 : Open edX Conference - 2025 - Palaiseau (France) 7-9 juillet 2025 : Riviera DEV 2025 - Sophia Antipolis (France) 5 septembre 2025 : JUG Summer Camp 2025 - La Rochelle (France) 12 septembre 2025 : Agile Pays Basque 2025 - Bidart (France) 18-19 septembre 2025 : API Platform Conference - Lille (France) & Online 23 septembre 2025 : OWASP AppSec France 2025 - Paris (France) 25-26 septembre 2025 : Paris Web 2025 - Paris (France) 2-3 octobre 2025 : Volcamp - Clermont-Ferrand (France) 3 octobre 2025 : DevFest Perros-Guirec 2025 - Perros-Guirec (France) 6-10 octobre 2025 : Devoxx Belgium - Antwerp (Belgium) 7 octobre 2025 : BSides Mulhouse - Mulhouse (France) 9-10 octobre 2025 : Forum PHP 2025 - Marne-la-Vallée (France) 9-10 octobre 2025 : EuroRust 2025 - Paris (France) 16 octobre 2025 : PlatformCon25 Live Day Paris - Paris (France) 16-17 octobre 2025 : DevFest Nantes - Nantes (France) 30-31 octobre 2025 : Agile Tour Bordeaux 2025 - Bordeaux (France) 30-31 octobre 2025 : Agile Tour Nantais 2025 - Nantes (France) 30 octobre 2025-2 novembre 2025 : PyConFR 2025 - Lyon (France) 4-7 novembre 2025 : NewCrafts 2025 - Paris (France) 6 novembre 2025 : dotAI 2025 - Paris (France) 7 novembre 2025 : BDX I/O - Bordeaux (France) 12-14 novembre 2025 : Devoxx Morocco - Marrakech (Morocco) 13 novembre 2025 : DevFest Toulouse - Toulouse (France) 15-16 novembre 2025 : Capitole du Libre - Toulouse (France) 20 novembre 2025 : OVHcloud Summit - Paris (France) 21 novembre 2025 : DevFest Paris 2025 - Paris (France) 27 novembre 2025 : Devfest Strasbourg 2025 - Strasbourg (France) 28 novembre 2025 : DevFest Lyon - Lyon (France) 5 décembre 2025 : DevFest Dijon 2025 - Dijon (France) 10-11 décembre 2025 : Devops REX - Paris (France) 10-11 décembre 2025 : Open Source Experience - Paris (France) 28-31 janvier 2026 : SnowCamp 2026 - Grenoble (France) 2-6 février 2026 : Web Days Convention - Aix-en-Provence (France) 23-25 avril 2026 : Devoxx Greece - Athens (Greece) 17 juin 2026 : Devoxx Poland - Krakow (Poland) Nous contacter Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs Contactez-nous via X/twitter https://twitter.com/lescastcodeurs ou Bluesky https://bsky.app/profile/lescastcodeurs.com Faire un crowdcast ou une crowdquestion Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/
Hollywood and the Media Truth About Drug Gangs and Police. Special Episode. The portrayal of law enforcement and criminal organizations in Hollywood has long shaped public perception. However, the media's representation of police work and the realities of drug gangs often diverge from the truth. Dr. Stephen Morreale, a retired DEA agent, college professor, and host of The Cop Doc Podcast, is dedicated to dispelling these myths. He sheds light on the overwhelming violence committed by organized drug gangs and the misconceptions surrounding law enforcement. The story on this episode of the "Law Enforcement Talk Radio Show and Podcast", is available on their website for free in addition to Apple Podcasts and Spotify, as well as through other podcast platforms. The Reality of Drug Gangs in America Hollywood often glamorizes or oversimplifies the operations of drug gangs, but the truth is far more complex and violent. The United States is home to numerous gangs deeply involved in drug trafficking and organized crime. Groups like MS-13, Nuestra Familia, Surenos, Crips, Bloods, Latin Kings, and 1% Motorcycle Clubs have an extensive presence across the country. According to the Federal Bureau of Investigation (FBI), as of 2014, there were approximately 33,000 gangs in the U.S., classified into street gangs, motorcycle gangs, and prison gangs. While some of these organizations are multi-ethnic, many operate along racial lines, restricting membership based on ethnicity. Follow the Law Enforcement Talk Radio Show and Podcast on Facebook, Instagram, LinkedIn, Newsbreak, Medium and most all social media platforms. At least 23 gangs operate at a national level, spanning multiple states and drug markets. Moreover, law enforcement has identified connections between transnational drug trafficking organizations (DTOs) and several street and prison gangs. Mexican DTOs, such as the Federation, the Gulf Cartel, the Juárez Cartel, and the Tijuana Cartel, leverage U.S. based Hispanic street gangs and prison gangs for drug smuggling, distribution, and enforcement. These DTOs avoid direct involvement in retail drug distribution, instead utilizing gang members to minimize their exposure to law enforcement. Read supporting stories about this and much more from Law Enforcement Talk Radio Show and Podcast in platforms like Medium, Newsbreak and Blogspot. The Role of the DEA and Law Enforcement, Hollywood and the Media Truth About Drug Gangs and Police. The Drug Enforcement Administration (DEA) is at the forefront of combating these criminal enterprises. Its mission is to enforce U.S. controlled substances laws, dismantle drug trafficking organizations, and reduce the availability of illicit drugs in domestic and international markets. Dr. Morreale, who served in law enforcement for 30 years, played a crucial role in these efforts, retiring as Assistant Special Agent in Charge for the U.S. Department of Health and Human Services, Office of Investigations. During his 20-year tenure with the DEA, he worked on financial investigations, asset forfeiture, and enforcement operations targeting major drug networks. Follow the Law Enforcement Talk Radio Show and podcast on Facebook, Instagram, LinkedIn, Newsbreak, Medium and most all social media platforms In addition to his work with the DEA, Dr. Morreale was instrumental in advancing community policing efforts. In 1990, he co-founded the New England Community Police Partnership, a program that trained thousands of police officers and community members to foster better relationships between law enforcement and the public. He educated future law enforcement professionals as Chair and Full Professor of Criminal Justice at Worcester State University. The interview is available as a free podcast on the Law Enforcement Talk Radio Show and podcast website, also available on platforms like Apple Podcasts, Spotify, and most major podcast outlets. Dispelling Hollywood Myths Through The Cop Doc Podcast Through his podcast, The Cop Doc Podcast, Dr. Morreale provides a platform for in-depth discussions on law enforcement, policing reforms, and the challenges officers face in the field. His expertise is especially relevant in an era where social media platforms like Facebook, Instagram, LinkedIn, and X play a significant role in shaping public opinion. Many misconceptions about law enforcement stem from sensationalized portrayals in movies and TV shows, leading to unrealistic expectations and misunderstandings about police procedures and challenges. Hollywood often focuses on dramatic shootouts, rogue cops, and quick case resolutions, but the truth is that real policing involves extensive investigations, intelligence gathering, and strategic planning. While media outlets and streaming services like Apple Podcasts and Spotify provide platforms for entertainment and also facts, it is crucial for the public to seek out factual information. This conversation is a valuable resource in this regard, offering insights from experienced law enforcement professionals and academics. Check out the show on Facebook, Instagram, LinkedIn, Newsbreak, Medium and most all social media platforms The Impact of Social Media and News Outlets, Hollywood and the Media Truth About Drug Gangs and Police. The role of social media in spreading misinformation cannot be overlooked. Platforms like Facebook, Instagram, LinkedIn, and X have become primary sources of news for many people, but they often contribute to the dissemination of biased or incomplete narratives about policing and criminal organizations. Dr. Morreale emphasizes the importance of critical thinking and fact-checking when consuming media. His work highlights the need for a balanced perspective that acknowledges both the challenges and successes of law enforcement efforts. It is available as a free podcast on the Law Enforcement Talk Radio Show and Podcast website, on Apple Podcasts, Spotify and most major podcast platforms. Conclusion, Hollywood and the Media Truth About Drug Gangs and Police. Dr. Stephen Morreale's career in law enforcement and academia has given him a unique perspective on the realities of drug gangs and policing. Through his Podcast, he continues to challenge Hollywood myths, educate the public, and provide a factual account of law enforcement. In an age where media influence is stronger than ever, it is essential to seek the truth beyond dramatized portrayals and social media narratives. By engaging with experts and factual sources, the public can gain a more accurate understanding of the complexities of crime and policing in America. You can help contribute money to make the Gunrunner Movie. The film that Hollywood won't touch. It is about a now Retired Police Officer that was shot 6 times while investigating Gunrunning. He died 3 times during Medical treatment and was resuscitated. You can join the fight by giving a monetary "gift" to help ensure the making of his film at agunrunnerfilm.com. Time is running out to secure the Medicare coverage you deserve! Whether you're enrolling for the first time or looking for a better plan, our experts help you compare options to get more benefits, lower costs, and keep your doctors, all for free! Visit LetHealthy.com, that's LetHealthy.com or call (866) 427-1225, (866) 427-1222 to learn more. Learn useful tips and strategies to increase your Facebook Success with John Jay Wiley. Both free and paid content are available on this Patreon page. Your golden years are supposed to be easy and worry free, at least in regards to finances. If you are over 70, you can turn your life insurance policy into cash. Visit LetSavings.com, LetSavings.com or call (866) 480-4252, (866) 480-4252, again that's (866) 480 4252 to see if you qualify. Be sure to check out our website. Be sure to follow us on MeWe, X, Instagram, Facebook,Pinterest, Linkedin and other social media platforms for the latest episodes and news. Background song Hurricane is used with permission from the band Dark Horse Flyer. You can contact John J. "Jay" Wiley by email at Jay@letradio.com, or learn more about him on their website. Get the latest news articles, without all the bias and spin, from the Law Enforcement Talk Radio Show and Podcast on the Newsbreak app, which is free. Find a wide variety of great podcasts online at The Podcast Zone Facebook Page, look for the one with the bright green logo. Hollywood and the Media Truth About Drug Gangs and Police. Attributions DOJ Wikipedia DEA The Cop Doc PodcastSee omnystudio.com/listener for privacy information.
Jake and Michael discuss all the latest Laravel releases, tutorials, and happenings in the community.This episode is sponsored by Sentry - code breaks, fix it faster. Don't just observe, take action today!Show linksSentry can't fix thisDynamic Cache, Database, and Mail Builders in Laravel 11.31 PHP 8.4 is released with Property Hooks, Class Instantiation without extra parenthesis, and more Asymmetric Property Visibility In PHP 8.4Herd Executable Support and Pest 3 Mutation Testing in PhpStorm 2024.3 Laravel Black Friday Deals PHP×World - The resurgence of PHP meet-ups with Chris Morrell Laravel Forge adds Statamic Integration Automated Composer Security Audits in Laravel with Warden Access Laravel Pulse Data as a JSON API Hide and safeguard emails from bots with the Muddle Laravel package Transform Data into Type-safe DTOs with this PHP Package Handling Default Values in Laravel Request using mergeIfMissing Dynamic Mailer Configuration in Laravel with Mail::build
DTOS website: https://www.dtoskimball.org/ Start Name Artist Album Year Comments Song Of The Vagabonds Barry Baker Concert: Dickinson High School 1998-01-31 1998 3-66 Kimball, Dickinson High School, Wilmington, DE 3:10 Can't We Talk It Over? Dick Smith Concert: Dickinson High School 2004-02-21 2004 3-66 Kimball, Dickinson High School, Wilmington, DE 6:56 You're Never Fully Dressed Without A Smile Stan Kann Concert: Dickinson High School 2001-11-10 2001 3-66 Kimball, Dickinson High School, Wilmington, DE 10:03 There's A Place In My Heart For You Richard Hills Concert: Dickinson High School 2002-03-16 2002 3-66 Kimball, Dickinson High School, Wilmington, DE 15:28 My Heart Belongs To Daddy Clark Wilson Concert: Dickinson High School 2006-11-18 2006 3-66 Kimball, Dickinson High School, Wilmington, DE 19:27 Darn That Dream Jerry Nagano Concert: Dickinson High School 2009-11-21 2009 3-66 Kimball, Dickinson High School, Wilmington, DE 23:12 Never Gonna Fall in Love Again George Wright Concert: Dickinson High School 1977-10-01 1977 3-43 Kimball, Dickinson High School, Wilmington, DE 28:10 The Girl From Ipanema Simon Gledhill Concert: Dickinson High School 2007-04-29 2007 3-66 Kimball, Dickinson High School, Wilmington, DE 32:44 Le Secret (Intermezzo Pizzicato No. 276) Rob Richards, Ralph Wolf Concert: Dickinson High School 2006-03-11 2006 3-66 Kimball, Dickinson High School, Wilmington, DE 36:44 Skylark Tony Fenelon Concert: Dickinson High School 2010-10-02 2010 3-66 Kimball, Dickinson High School, Wilmington, DE 41:42 Fantasy on Get Me To The Church On Time Tedde Gibson Concert: Dickinson High School 2021-01-30 2021 3-66 Kimball, Dickinson Hight School, Wilmington, DE 46:29 Temptation Donnie Rankin Concert: Dickinson High School 2020-03 2020 3-66 Kimball ,Dickinson High School, Wilmington, DE 51:39 Night In Monterey Chris Elliott Concert: Dickinson High School 2007-06-09 2007 3-66 Kimball, Dickinson High School, Wilmington, DE 56:13 Nice Work If You Can Get It David Peckham Concert: Dickinson High School 2007-01-29 2007 3-66 Kimball, Dickinson High School, Wilmington, DE
Cartel Corruption of Federal Agents, FBI, DEA, at the Border and More. The U.S.- Mexico border has long been a battleground in the fight against drug trafficking and organized crime. Yet, a lesser-known and equally troubling battle involves the corruption of federal agents — from corrections officers and border patrol to FBI and DEA agents. This episode of the Law Enforcement Talk Radio show and Podcast explores how cartels corrupt federal agents, the investigations that unveil these betrayals, and the outcomes. Follow the Law Enforcement Talk Radio Show and Podcast on Facebook, Instagram, LinkedIn and most all social media platforms. Cartel corruption of Federal Agents often begins with small, seemingly harmless actions by federal agents. For instance, a border patrol officer might turn a blind eye to suspicious activity in exchange for a quick payoff or accept a small bribe for allowing contraband through. These seemingly minor transgressions can escalate, gradually entangling the agents in a web of cartel operations. Once compromised, agents find themselves increasingly beholden to criminal groups, leading to more significant acts of corruption. Listen to this interview as a free podcast on our website, Apple Podcasts, Spotify and most major podcast platforms. The journey from minor misconduct to severe criminal involvement is often marked by a series of careless, even mindless, decisions. According to Ken Strange, a retired federal agent with the FBI, USAID, and the Department of Justice (DOJ), "many major corruption investigations are triggered by stupid, mindless incidents by the officers involved." Strange's insights are informed by years of experience investigating cartel corruption among federal agents. His new book, A Cop's Son: One G-Man's Fight Against Jihad, Global Fraud, and the Cartels, sheds light on the multi-faceted corruption efforts by cartels targeting FBI and DEA agents. Ken Strange's career spanned three federal agencies — the FBI, the U.S. Agency for International Development (USAID), and the DOJ — and involved conflicts with jihadists, cartels, and international fraudsters. In his book, he breaks down his federal career into three parts: the fight against jihad (FBI), the fight against global fraud (USAID OIG), and the fight against the cartels (DOJ OIG). The book has received praise from notable figures in law enforcement, including former NYPD Commissioner Ray Kelly and former LAPD Chief William Bratton. Cartel Corruption of Federal Agents, FBI, DEA, at the Border and More. Strange's book is more than just a recounting of his experiences; it is a unique exploration of the variety of investigative stories accrued across three distinguished U.S. government agencies. His friend, a prominent Hollywood actor, has even suggested that the book's final chapter would make for a great movie. Follow us on Facebook, Instagram, LinkedIn, Pinterest, MeWe and other social media platforms. Articles about this are on Newsbreak and Medium. The FBI has intensified its focus on corruption at the Southwest border. Out of the 700 agents dedicated to combating public corruption, about 120 are assigned to this region. These agents coordinate their investigative efforts with the Department of Homeland Security Office of Inspector General (DHS OIG), Customs and Border Protection Internal Affairs (CBP-IA), the Drug Enforcement Administration (DEA), the Bureau of Alcohol, Tobacco, Firearms, and Explosives (ATF), and the U.S. Immigration and Customs Enforcement. The results of these efforts are significant: over 400 public corruption cases have originated from this region, leading to more than 100 arrests and over 130 state and federal cases prosecuted in FY 2009 alone. To further these efforts, the FBI has established 12 border corruption task forces along the Southwest border, which share intelligence with groups such as the Southwest Intelligence Group (SWIG), the El Paso Intelligence Center (EPIC), and Mexican legal attachés to identify and disrupt Mexican drug trafficking organizations (DTOs). Cartel Corruption of Federal Agents, FBI, DEA, at the Border and More. The interview is available as a free podcast on Apple Podcasts, Spotify, our website or most major podcast platforms. International cooperation is crucial in the fight against cartel corruption. The FBI, for example, has strengthened its ties with Mexican law enforcement. Recently, the FBI's McAllen office hosted 30 Mexican police officers for a week of training and information sharing through the Mexican American Liaison and Law Enforcement Training (MALLET) program. This week-long initiative included modules on ethics, firearms, and investigative techniques aimed at building law enforcement contacts with the Mexican government. During a Senate hearing, Senator Mark Pryor expressed concerns about cartels infiltrating U.S. law enforcement, stating, "U.S. border defenses have been beefed up, which has helped to squeeze these drug routes. However, to gain an advantage, the cartels have begun to infiltrate U.S. law enforcement." This infiltration is not limited to federal agents; state and local governments are also targets. A recent news report highlighted a 40% increase in corruption arrests within U.S. Customs and Border Protection (CBP), and dozens of investigations are currently underway. While other federal agencies, like the DEA, FBI, and Transportation Security Administration (TSA), are also targeted, CBP appears most vulnerable due to its frontline role and rapid expansion in recent years. The doubling of its size over the past decade has introduced many new faces, some of whom may not be fully vetted. Cartel Corruption of Federal Agents, FBI, DEA, at the Border and More. Follow us on Facebook, Instagram, LinkedIn, MeWe, Pinterest and other social media platforms for the latest episodes and news. There is a growing concern that CBP is not employing all available tools to screen job applicants effectively. The agency aims to polygraph all applicants, but currently, only about 10% are tested. This lack of thorough screening raises concerns not just about drugs, but also about guns, money, and even the potential for terrorists entering the U.S. if border defenses are weakened. A report from U.S. Senator Chuck Grassley's office has called for a reassessment of U.S. security cooperation with Mexico. Tracing allegations of corruption back to the 1980s, the report accuses U.S. officials of overlooking Mexican corruption to secure cooperation in drug seizures and arrests. This leniency has come at a cost, placing U.S. agents at risk and undermining the long-term fight against cartels. "For the past 40 years, U.S. officials have overlooked widespread corruption in Mexico in favor of cooperating with and funneling resources to foreign actors," the report states. It urges Congress to reevaluate Washington's security cooperation policies in the Western Hemisphere. The DEA continues to pursue evidence globally, including investigations and prosecutions related to public corruption. Cartel Corruption of Federal Agents, FBI, DEA, at the Border and More. Listen to the interview which is available as a podcast on Apple Podcasts, Spotify, our website and most major podcast Platforms. The corruption of federal agents by cartels at the U.S.-Mexico border remains a pressing issue that requires a multi-faceted approach, involving stricter vetting processes, stronger international cooperation, and a commitment to transparency. The battle against corruption is ongoing, and understanding its complexities is the first step toward winning it. Stay up to date by following us on Facebook, Instagram, LinkedIn, MeWe, Pinterest, Newsbreak, Medium and other social media platforms. Breakfast With Champions in the Clubhouse Social Audio App a solution for Loneliness? It has helped countless people and might help you too. Best of all Breackfast With Champions and the Clubhouse Social Audio app are both free. Loneliness has become a significant public health concern in the United States, affecting millions across all age groups. The sense of isolation and disconnection can have serious consequences for both physical and mental well-being. Connect and make new friends from around the world daily in the Breakfast With Champions Rooms in the Clubhouse App, get more details on their website, www.TheBWCInfo.com Be sure to check out our website. Be sure to follow us on Facebook, Instagram, LinkedIn, MeWe, Pinterest and other social media platforms for the latest episodes and news. Get the latest news articles, without all the bias and spin, from the Law Enforcement Talk Radio Show and Podcast on the Newsbreak app, which is free. Listen to this for free in Apple Podcasts, Spotify, our website or most major podcast platforms. Background song Hurricane is used with permission from the band Dark Horse Flyer Find a wide variety of great podcasts online at The Podcast Zone Facebook Page, look for the one with the bright green logo. Follow us on MeWe, X, Instagram, Facebook. Get your daily dose of Motivation, Education and Inspiration in the Breakfast With Champions Rooms In The Clubhouse app, both are free. Cartel Corruption of Federal Agents, FBI, DEA, at the Border and More. Attributions FBI.gov Reuters GovInfo.gov See omnystudio.com/listener for privacy information.
¿Cuánto se tarda en ver resultados físicos cuando se entrena? Pues, depende de varios factores. Primero, está tu punto de partida. Si eres nuevo en el mundo del fitness, podrías notar cambios más rápidamente que alguien que ya lleva tiempo entrenando. Normalmente, las primeras señales de progreso aparecen en unas 2 a 4 semanas. Estos pueden ser mejoras en la fuerza, resistencia y un mejor estado de ánimo Otro factor muy importante es la intensidad y consistencia de tu entrenamiento. Si te dedicas a entrenar con regularidad, siguiendo un programa bien estructurado, los resultados serán más visibles. Para quienes entrenan de 3 a 5 veces por semana, en unas 8 a 12 semanas se pueden empezar a notar cambios más significativos en la composición corporal, como aumento de masa muscular y reducción de grasa corporal. La nutrición también juega un papel fundamental. Sin una alimentación adecuada, los resultados pueden demorarse. Consumir proteínas, carbohidratos y grasas saludables en las proporciones correctas es clave para maximizar tus esfuerzos en el gimnasio. ¡Recuerda, Máquina, que lo que comes es tan importante como lo que entrenas! 🍎🥑 El descanso es otro componente muy importante. Sin suficiente sueño y recuperación, el cuerpo no podrá reparar y construir el músculo de manera efectiva. Apunta a dormir al menos 7-8 horas por noche. Además, tu genética influye en cómo y cuánto tiempo te tomará ver los resultados. Algunas personas pueden desarrollar músculo más rápidamente, mientras que otras pueden necesitar más tiempo y esfuerzo. Finalmente, tu nivel de estrés también afecta. ¡Huye del estrés, Máquina! El estrés crónico puede sabotear tus objetivos de fitness al afectar tus hormonas y energía. ✅ Si deseas contactar con nosotros, puedes hacerlo aqui: https://malagaentrena.com/entrenamiento-online-dieta/ Entrena con nuestras Rutinas y Ejercicios en nuestra app. 👉🏻 https://malagaentrena.com/app-entrenamiento-malagaentrena 👉🏻 Conoce más de nosotros en Malagaentrena.com Canal Principal: https://www.youtube.com/malagaentrena_entrenadorpersonal 👉🏻 Pulsa Aquí: https://malagaentrena.com/app-entrenamiento-malaga/ ✔️ Prepárate para TRANSFORMAR tu CUERPO con Nuestra App. ➤ 💰 Dtos en PROZIS : https://prozis.com/154k --- Cupón 10 % Dto [MALAGAENTRENA] ✅ 🥇 Entrenamiento Online +Dieta: https://malagaentrena.com/entrenamiento-online-dieta/ Síguenos en Redes Sociales: 📸: @Malagaentrena: https://www.instagram.com/malagaentrena/ 📸: @Patri_fitmodel: https://www.instagram.com/patri_fitmodel/
Hoy vamos a hablar de algo muy importante que siempre explicamos a nuestros clientes: Entrenamiento, Nutrición y Descanso. Estas tres áreas son esenciales para alcanzar tus objetivos de fitness y salud. Primero, el entrenamiento. Siempre les decimos a nuestros clientes que ser consistente es la clave. Entrenar de 3 a 5 veces por semana es ideal para ver resultados. Les ayudamos a crear un programa de ejercicios personalizado que se adapte a sus metas y nivel de condición física. Les recordamos que no solo se trata de levantar pesas o hacer cardio, sino de encontrar un equilibrio y disfrutar del proceso. ¡A tope, Máquina! 😎 Luego, está la nutrición. Hablamos mucho sobre la importancia de una dieta balanceada. Les explicamos que consumir proteínas, carbohidratos y grasas saludables en las proporciones correctas es fundamental. Siempre recomendamos planificar las comidas y ser conscientes de lo que se come. No se trata de seguir una dieta estricta, sino de hacer elecciones saludables que apoyen sus objetivos de entrenamiento. 🍎🥑 El descanso es otro tema que no podemos dejar de lado. Muchos de nuestros clientes subestiman la importancia del sueño y la recuperación. Les recordamos que el cuerpo necesita tiempo para repararse y crecer. Dormir al menos 7-8 horas por noche es vital para el rendimiento y los resultados a largo plazo. ¡No olvides descansar, Máquina! 😴 Además, discutimos cómo manejar el estrés. El estrés crónico puede afectar negativamente el progreso. Les sugerimos técnicas de relajación como la meditación y la respiración profunda para mantener el estrés bajo control. 🧘♂️ En resumen, siempre enfatizamos a nuestros clientes que un buen programa de entrenamiento, una nutrición adecuada y suficiente descanso son esenciales para alcanzar sus metas. ¡Vamos a darlo todo juntos y verás cómo los resultados llegan! 🚀 Te esperamos si quieres entrenar con nosotros en www.malagaentrena.com ✅ Si deseas contactar con nosotros, puedes hacerlo aqui: https://malagaentrena.com/entrenamiento-online-dieta/ Entrena con nuestras Rutinas y Ejercicios en nuestra app. 👉🏻 https://malagaentrena.com/app-entrenamiento-malagaentrena 👉🏻 Conoce más de nosotros en Malagaentrena.com Canal Principal: https://www.youtube.com/malagaentrena_entrenadorpersonal 👉🏻 Pulsa Aquí: https://malagaentrena.com/app-entrenamiento-malaga/ ✔️ Prepárate para TRANSFORMAR tu CUERPO con Nuestra App. ➤ 💰 Dtos en PROZIS : https://prozis.com/154k --- Cupón 10 % Dto [MALAGAENTRENA] ✅ 🥇 Entrenamiento Online +Dieta: https://malagaentrena.com/entrenamiento-online-dieta/ Síguenos en Redes Sociales: 📸: @Malagaentrena: https://www.instagram.com/malagaentrena/ 📸: @Patri_fitmodel: https://www.instagram.com/patri_fitmodel/
Ian & Aaron discuss the joy of Diet Coke, Ian's deep dive into DTOs, Inertia vs. Livewire, & more.Sponsored by LaraJobs & Screencasting.com.Sent questions or feedback to mostlytechnicalpodcast@gmail.com.(00:00) - Totally Zonked (04:46) - Little A (09:31) - Feedback (18:38) - Even More Feedback (29:29) - Laracon US Tickets (30:52) - Blade + Livewire (35:41) - Inertia vs. Livewire (45:54) - Deep into DTOs (55:40) - The Sleep Is Not Great Links:Aaron's dad nap (on Twitter)Taking Cara BabiesNew York Times Dialect Quiz (Gift Link)LinearArchitect/plotter/outliner vs. GardenerHelpSpot On-PremisePodline.fmPodscan.fmGeocodioLaracon US 2024Livewire: Blade Components ScreencastTaylor's friendly reminder re: Inertia vs. Livewire (on Twitter)maryUI
Hablamos con Cristina, alumna nuestra que ha decidido ponerse en nuestras manos y la cual da consejos sobre cómo dar ese paso final para comenzar a marcarte un estilo de vida sano y saludable. ✅ Si deseas contactar con nosotros, puedes hacerlo aqui: https://malagaentrena.com/entrenamiento-online-dieta/ Entrena con nuestras Rutinas y Ejercicios en nuestra app. 👉🏻 https://malagaentrena.com/app-entrenamiento-malagaentrena 👉🏻 Conoce más de nosotros en Malagaentrena.com Canal Principal: https://www.youtube.com/malagaentrena_entrenadorpersonal 👉🏻 Pulsa Aquí: https://malagaentrena.com/app-entrenamiento-malaga/ ✔️ Prepárate para TRANSFORMAR tu CUERPO con Nuestra App. ➤ 💰 Dtos en PROZIS : https://prozis.com/154k --- Cupón 10 % Dto [MALAGAENTRENA] ✅ 🥇 Entrenamiento Online +Dieta: https://malagaentrena.com/entrenamiento-online-dieta/ Síguenos en Redes Sociales: 📸: @Malagaentrena: https://www.instagram.com/malagaentrena/ 📸: @Patri_fitmodel: https://www.instagram.com/patri_fitmodel/
In this episode, Jordan and GT Dallas Shareholder Bill Stark discuss “DTOs” (device turnover orders), how to get them and their impact on trade secret litigation.
After (another) month-long, scheduling-conflict hiatus, Jake and Michael are back!This episode is brought to you by our friends at Workvivo - The leading employee communication app Show links Spikeball: The basics Bitmasking in Laravel Bit functions and operators in MySQL
This week, the trio celebrates their podcast mid-life crisis by discussing a concept coined by Daniel Steinberg in a 2022 talk, "Packaged Oriented Programming." How do you organize your app using Swift Package Manager packages? What are the benefits and costs? There is also some discussion on dealing with JSON API changes, using Codable vs DTOs, and strategies for caching external package dependencies for the longterm. Be sure to stay until the end where Kotaro engages in some live "prompt engineering" with Chat GPT that generates some impressively bad jokes. ## Topics Discussed - Mid-life crisis episode - Are we buying the rumored AR headset? - PickleJarTodo / LazyGrids are cool! - Package Oriented Programming - Previews and Package Oriented Programming - Daniel Steinberg - CocoaHeadsNL, Do iOS 2022 - https://youtu.be/_5uBJeJVUm0 - Why? - How? - How many frameworks per SPM? - Codable/Decodable/Encodable/DTO - Dealing with JSON API changes - Unit testing - Project organization - Circular dependencies - Assets/Resources - Apple Food Truck example - Caching SPMs for the future - https://www.sonatype.com/products/sonatype-nexus-repository - Swift Package Index - https://swiftpackageindex.com - Be mindful of importing dependencies - Wrap-Up - Chat GPT Prompting for Jokes! Intro music: "When I Hit the Floor", © 2021 Lorne Behrman. Used with permission of the artist.
Jake and Michael discuss all the latest Laravel releases, tutorials, and happenings in the community.This episode is sponsored by Honeybadger - combining error monitoring, uptime monitoring and check-in monitoring into a single, easy to use platform and making you a DevOps hero. (05:34) - Laravel 10.5 released (10:47) - Everything you can test in your Laravel application (13:38) - Replace raw query calls with Laravel Query Expressions (19:12) - Validated DTO package for Laravel (22:14) - Sponsor: Honeybadger (23:16) - PlanetScale database migrations for Laravel (28:47) - Laravel expectations plugin for Pest (32:06) - Useful Laravel date scopes for Eloquent models (35:06) - Pest architecture plugin (36:11) - Let's talk about form requests
An airhacks.fm conversation with Aleksey Stukalov (@AlekseyStukalov) about: the deepest hole-11km, starting with Pascal, math - and there is nothing to argue about, integral and differential equations, writing an article about magnetic impulses, 1c - consulting company, implementing accounting software, learning C#, Silverlight and LINQ, from C# to Java, starting CUBA and jmix, cuba and jmix are like MS Access for Java, building a banking system for Paraguay, 25k developers is using CUBA, starting JPA Buddy, selling on IntelliJ marketplace, JPA Buddy - the Vlad automation tool, "#117 Java Persistence: From DB over JDBC to Transactions" episode with Vlad Mihalcea, JPA buddy is a IntelliJ plugin, the Jetbrains MPS (Meta Programming System), Intellij is an interesting distribution channel, DTO generation, mapping entities to DTOs, implementing projections with JPA, JSON-P with Java Records Aleksey Stukalov on twitter: @AlekseyStukalov
For this Foojay Podcast, we invited security experts to dive into the fascinating world of secure coding and detecting vulnerabilities in your Java applications. How can you make and keep your systems safe? That's what we want to find out... GuestsSteve Poole (Sonatype, @spool167)Brian Vermeer (Snyk, @BrianVerm, @brianverm@mastodon.social) Anastasiia Voitova (Cossack Labs, @vixentael, @vixentael@mastodon.social)Podcast hostErik Costlow (Azul, @costlow, @costlow@mastodon.social)Content00'00 Short intro and music00'15 Introduction about the topic of this podcast00'31 Introduction of the guests and host02'40 Foojay article written by Brain about dependencies https://foojay.io/today/best-practices-for-managing-java-dependencies/ 05'02 XML parsers in Java05'55 "The more the merrier" versus "The less the better"06'30 Foojay article written by Brain about the role of Data Transfer Objects in securityhttps://foojay.io/today/how-to-use-java-dtos-to-stay-secure/ 09'10 Extending on DTOs: encryption in data provisioning11'10 Database entities versus DTOs and serialization12'25 Developers need to be trained more on security and take responsibility13'50 Don't design your own security solutionhttps://www.cossacklabs.com/blog/cryptographic-failures-in-rf-encryption/16'58 Cryptograpic dad joke... ;-)17'40 What are CVEs (Common Vulnerabilities and Exposures)20'40 Security in the layers of a Java environmenthttps://imagetragick.com/ 24'50 JAR signing26'40 CWE with the W of Weaknesses and OWASPhttps://owasp.org/www-project-top-ten/https://www.exploit-db.com/29'40 How to evaluate vulnerability scoreshttps://foojay.io/today/java-security-log4j-the-securitymanager-and-funding/31'23 CVEs as Pokemon, "You gotta catch them all" workshop32'20 How to be able to fix vulnerabilities33'57 About the recent critical SSL vulnerability36'02 Libraries are linked (integrated) into a Java projecthttps://github.com/quarkusio/quarkus/issues/1490438'15 Security is an educational thing and understand your tools39'90 Role of the different players in a team46'32 Can the JVM itself be more secure49'44 Make the JVM aware of vulnerable code 51'10 Security insights in IoT deviceshttps://www.cossacklabs.com/case-studies/iiot-security-a-hive-and-a-queen/1h01'30 Developers should learn about defending depth1h02'10 Conclusion
Halloween Start Name Artist Album Year Comments The Ghost and Mr. Chicken Trio con Brio Tales From The Chambers 2010 First United Methodist Church, Portland, OR; 107 rank Mary L. Collins sanctuary pipe organ; Allen R-370 Mary Naito chapel organ; plus Allen L-8 classical and Allen Q-311 theatre organs 4:25 Blue Is The Night Bill Vlasak Concert: Manual High School 25 June 1991 1991 3-26 Wurlitzer, Manual High School, Indianapolis, IN 7:34 Dark Eyes Dick Leibert Transcriptions EQ 3-14 Wurlitzer, Broadcast Studio, Radio City Music Hall, New York 9:56 Horror Of Erik Verne Langdon Phantom of the Organ [Electric Lemon PLP 1909] 1973 Unknown Theatre Pipe Organ 12:43 Mars, The Bringer Of War Isao Tomita Back To The Earth 1988 Moog Synthesizer 17:37 The Music Of The Night Christian Cartwright Tuned Up 3! [Pipes in The Peaks CD] 2019 3-18 Compton-Wurlitzer, Pipes in the Peaks, Ashbourne, Derbyshire 21:11 Mr. Ghost Goes To Town John Buzon Trio Organs in Orbit: Ultra Lounge 11 [Capitol CD] 1996 24:13 Black Moonlight Tony Fenelon Concert: Dickinson High School 2004-05-22 [DTOS 136] 2004 3-66 Kimball, Dickinson High School, Wilmington, DE 27:47 Whistling Away The Dark Robert Maidhof Opening Night [DSP-1407] 2014 4-23 Robert Morton, Loew's Theatre, Jersey City, NJ 31:31 Grim, Grinning Ghosts Trio con Brio Tales From The Chambers 2010 First United Methodist Church, Portland, OR; 107 rank Mary L. Collins sanctuary pipe organ; Allen R-370 Mary Naito chapel organ; plus Allen L-8 classical and Allen Q-311 theatre organs 38:16 Night On Bald Mountain David Gray ATOS 2013 Atlanta [Here With The Wind] Highlights 2013 4-32 Wurlitzer, Alabama Theatre, Birmingham, AL 50:17 Funeral March of a Marionette Scott Foppiano I Remember You [SBTOS CD] 2011 4-27 Robert Morton, Arlington Theatre, Santa Barbara; ex 1929 Loew's Jersey Theatre, Jersey City (4-23) 55:49 Hell's Bells Don Baker The Birmingham [Concert Recording CR-0174] 4-20 Wurlitzer, Alabama Theatre, Birmingham, AL Intro & playout: Suite Gothique - Toccata Thomas Trotter Sounds Spectacular 2003 Klais Organ, Birmingham Symphony Hall, England
Have you ever heard someone suggest "you should use a DTO!" and wondered what they're even talking about? In this video, you'll learn EXACTLY what DTOs are, when to use them...and when you can ditch 'em! ==== Want to get a free tech e-book, be alerted to my discounts, and get even MORE content about SPRING BOOT? Then SIGN UP FOR MY NEWSLETTER: https://springbootlearning.com/newsletter ==== RESOURCES:
We have DTOs, entities, Java 17 records, interfaces, classes, and more! So what are we supposed to use? And when? Can we use entities as DTOs? And when is it a good idea to use interfaces vs. classes? Discover what COULD be holding you back. And LEARN what you need to know to catapult your next application forward. ==== Want to read exclusive posts, get big discounts, and see content before any one else? Then BECOME A MEMBER: https://springbootlearning.com/member ==== RESOURCES:
Tribute to Dick Smith 1945-2021 Note: this edition has been updated on 2022-02-03 to correct an error in the commentary. Start Name Artist Album Year Comments This Could Be The Start Of Something Big Dick Smith Concert Time [Concert Recording CR-0013-T] 3-13 Wurlitzer, Loew's Theatre, Richmond, VA (1928) 3:33 Just The Way You Are Dick Smith Concert: South Hills Theatre, Dormont 1979-03-13 1979 2-6 Wurlitzer, South Hills Theatre, Dormont, PA; Went to private residence in NJ 9:19 Valencia; La Paloma Dick Smith Concert: Keystone Oaks High School 2005-10-22 2005 3-19 Wurlitzer, Keystone Oaks High School, Dormont, PA; Formerly 2-10 Wurlitzer, Prospect Theatre, Brooklyn, NY 13:09 I Should Care Dick Smith The Velvet Sounds of Dick Smith [Custom Fidelity CFS-3249] 1973 3-10 Wurlitzer, Downers Grove High School, Chicago, IL; ex-Ohio Theatre, Lima, OH (1927); c. 1973, shortly after organ installed. 16:46 The More I See You (The More I Want You) Dick Smith Concert Time [Concert Recording CR-0013-T] 3-13 Wurlitzer; Loew's Theatre, Richmond, VA (1928) 20:57 La Comparsa Dick Smith Concert: Dickinson High School 2004-02-21 [DTOS 134] 2004 3-66 Kimball, Dickinson High School, Wilmington, DE 28:19 Remember Me? Dick Smith The Many Sides Of Dick Smith [EAR-10283] 3-?? Kimball, Dickinson High School, Wilmington, DE 30:35 San Francisco Dick Smith Concert: Jim Reinhart Residence 2011-05-11 2011 3-42 Allen T321Q Theatre/Classic, Jim Reinhart Residence, central VA 33:01 Jealous Dick Smith Concert: Allen GW319-EX, Mike Phillips Residence 2007-05-17 2007 Allen GW319-EX, Mike Phillips Residence, Chesterfield, VA 37:38 Button Up Your Overcoat Dick Smith ATOS 1993 Chicago 1993 3-17 Wurlitzer-Kimball, Gateway Theatre, Chicago IL; 6 July 1993 40:16 Velvet Moon Dick Smith ATOS 1993 Chicago 1993 3-17 Wurlitzer-Kimball, Gateway Theatre, Chicago IL; 6 July 1993 43:33 I Guess I'll Have To Change My Plan; You Turned The Tables On Me Dick Smith A Dick Smith Happening [EAR-10490] 3/?? Kimball, Dickinson High School, Wilmington, DE 48:07 Anniversary Song Dick Smith Concert: Jim Reinhart Residence 2011-05-11 2011 3-42 Allen T321Q Theatre/Classic, Jim Reinhart Residence, central VA 52:15 Roses Are Red; Melody Of Love Dick Smith Concert: Keystone Oaks High School 1999-10-10 1999 3-19 Wurlitzer, Keystone Oaks High School, Dormont, PA; Formerly 2-10, Prospect Theatre, Brooklyn, NY 57:49 I Can't Believe That You're In Love With Me Dick Smith A Dick Smith Happening [EAR-10490] 3/?? Kimball, Dickinson High School, Wilmington, DE
An airhacks.fm conversation with Shaun Smith (@shaunmsmith) about: GraalVM is bound to openJDK releases with a few days delay, GraalVM support Java 17 native image, Java Records are DTOs, see airhacks.fm episode: "#131 I don't hate your DTOs", GraalVM 17 21.3.0 improved the performance of the native image, GraalVM native image is as fast as openJDK, optimization of Truffle languages, article: Multi-Tier Compilation in GraalVM, shopify is using Ruby, Ruby on GraalVM outperforms MRI, the use case Nashorn, Java 6 introduced the Scripting API, the Project Avatar at Oracle, G1 Native Image is configurable, trading memory for throughput, conditional code inclusion, quarkus and Micronaut are GraalVM native, reflection is slow and memory intensive, CDI lite will come with build-time optimization, truffle is built as an AST, Espresso is Java on Truffle, Espresso's startup time improved by 40%, running Java 17 on Java 11 with Espresso, Espresso is able to sandbox Java, Oracle Functions is using Java in container, "RAM equals CPU", Oracle Functions never oversubscribe, Micronaut - as concise as Python, but faster, the economic impact of performance, GraalVM 22 comes in January, wasm is maintained by the JavaScript team, JavaScript in the Oracle Database, Shaun Smith on twitter: @shaunmsmith
In this episode, Jake and Michael remember 9/11, talk about upcoming PHP 8.1 features, Data Transfer Objects, and approaches to optimising your database.This episode is sponsored by Makeable.dk and Workvivo and was streamed live.Show links Birds Aren't Real Data Transfer Objectsspatie/data-transfer-object MySQL slow query log EXPLAIN statements Notion's questionably heavy static marketing site
Dickinson High School Kimball Name Artist Album Year Comments On A Wonderful Day Like Today Tony Fenelon An Affair To Remember [DTOS F-114] 2013 3-66 Kimball, Dickinson High School, Wilmington, DE; In concert Can't Help Falling In Love Lew Williams Concert: Dickinson High School 2003-11-01 [DTOS 132] 2003 3-66 Kimball, Dickinson High School, Wilmington, DE The Woman In The Shoe Lowell Ayars At Last [Engle Associates EAR-10282] 3-30+ Kimball, Dickinson High School, Wilmington, DE I Talk To The Trees Dick Smith The Many Sides Of Dick Smith [EAR-10283] 3-?? Kimball, Dickinson High School, Wilmington, DE Melody On The Move Simon Gledhill Kavalkade [DTOS CD] 1996 3-57 Kimball, Dickinson High School, Wilmington, DE; ex Boyd Theatre, Philadelphia 3-19 The Thunderbirds March Simon Gledhill, Richard Hills ATOS 2015 Philadelphia Highlights 2015 3-66 Kimball, John Dickinson High School, Wilmington, DE Tip-Toe Through The Tulips Tom Hazleton Concert: Dickinson High School 2004-07-10 [DTOS 137] 2004 3-66 Kimball, Dickinson High School, Wilmington, DE The Jitterbug Waltz Dave Wickerham dave@dickinson [DTOS CD] 2000 3-66 Kimball, Dickinson High School, Wilmington, DE Honky Tonk Train George Wright GW At Dickinson [Banda 202004] 1979 3-?? Kimball, Dickinson High School, Wilmington, DE
Hablamos con Nuria Jorba, sobre S€XO en esta primera Entrevista. Aqui podeis encontrar más contenidos: https://www.nuriajorba.com/ y todo sobre Nuria. 🔴 📩 Newsletter con Rutinas Gratuitas: https://malagaentrena.com/newsletter/ 📲 🏋🏻♀️ Nuestra App Fitness: https://malagaentrena.com/app-entrena... ➤ 💰 Dtos en PROZIS : https://prozis.com/154k --- Cupón 10 % Dto [MALAGAENTRENA] ✅ 🥇 Entrenamiento Online +Dieta: https://malagaentrena.com/entrenamien... Siguenos en Redes Sociales: 📸: @Malagaentrena: https://www.instagram.com/malagaentrena/ 📸: @Patri_fitmodel: https://www.instagram.com/patri_fitmo...
An airhacks.fm conversation with Christian Beikov (@c_beikov) about: Nintendo, then Pentium 3, the rpg maker, blockly - the visual programming language from google, switching to C programming at highschool, starting with Java 1.5 and Swing, Java was really appealing, using NetBeans for development, developing a RPG game in Java, learning programming at HTL, studying software engineering at Vienna University, trying to implement an Operating System in Java, trying to start with Java Maxine, jos the free Java Based Operating System, jnode -"Java New Operating System Design Effort", starting with PHP, trying to port Java "standard" library to PHP, Java Server Faces (JSF) offers a nice programming model, starting the blazebit company at highschool, architecting Java EE software at supply-chain management, initiating the opensource Blaze Persistence project, running JSF on WebSphere classic was painful, SaS based JSF business, great primefaces experience, Blaze-Persistence on 80th airhacks.tv switching from WebSphere to Wildfly 10, migrating from WildFly to openshift and PostgreSQL, starting another startup: Sweazer - the tinder for shopping with Java EE and Apache Cordova, working on Hibernate at RedHat, Adobe PhoneGap is EoL, optimizing costs for RDS on AWS, clouds can be too expensive, WildFly worked perfectly in the clouds, WildFly ran on EC2, reducing the amount of data with blaze persistence entity views, using JSON aggregation functions to reduce network traffic by folding collections, using multi-set strategy to aggregate results into a JSON document, reducing the selected columns for performance, Markus Winand - the SQL ambassador, "Blaze-Persistence: Use Modern SQL like native JPA", indices over caching, the JPA "dot" operator produces inner joins, Blaze-Persistence query builder supports CTEs, Common Table Expressions (CTE), Java Persistence API is productive enough for startups, Blaze-Persistence generates implementation for interfaces, Blaze-Persistence maps deep query result hierarchies into DTOs, Open Session in View concept was bad for performance, Blaze-Persistence supports Java Records, article: Blaze-Persistence: Use Modern SQL like native JPA commercial support is available for Blaze-Persistence, Christian Beikov on twitter: @c_beikov, and Christian's company: blazebit.com
This is Last Week in .NET for the week ending 10 October 2020.No releases this week, but lots of goodies showing off .NET 5.Starting out with some inside baseball, I'm working to improve the layout of the newsletter, and if there's someone's design you think I should shamelessly copy, let me know on twitter
Jake and Michael discuss the use of DTOs and Enums in their upcoming SaaS, thenpingme, and catch up with Caneco to discuss the design work he's been doing for the community.
Nach drei Wochen Pause geht es in der 199. Episode (sic!) mal wieder richtig zur Sache. Tom und André starten gleich mit einem Follow-Up zur letzten Episode und Tom erzählt von seinen Erfahrungen mit dem Gradle Build Cache. Danach geht es weiter mit DTOs in der Softwareentwicklung und Verwendung von Hibernate in geteilten Libraries. Der etwas "lockerere" Teil beschäftigt sich dieses Mal mit dem Female Coders Hackathon in Linz, Voice Over IP (VoIP) und zu guter Letzt Evernote.
An airhacks.fm conversation with Matthias Reining (@MatthiasReining) about: Famous Tech 11, Tech 11 expands to Italy, refactoring to MicroProfile HTTP client from JAX-RS client, DRY Jakarta Persistence (JPA) entities -- used for persistence and communication, using JSON-B / Eclipse Yasson as DTOs, versioning client and services, happy with Jakarta EE and MicroProfile, 17 developers from Nigeria, Cameroon, Ghana, Vietnam and Germany love Jakarta EE and MicroProfile, the ultimate Bamberg test (schlenkerla), Tech 11 developers joining airhacks.com in MUC, self constraining as competitive advantage, Apple Music Web Client uses Web Components, Web Components with plain lit-html library, the 50 LoC abstract component, redux works well with Web Components and Boundary Control Entity structure, unidirectional data flow, dumb and smart Web Components, no npm is installed on developer machines, rollup.js over parcel.js, Jakarta EE service with Servlets 4.0 prepopulates browser cache with http/2 (3 mins http/2 JSF screencast), developer's joy without build tools, ES 6 modules is a more Jakarta EE-stic way of architecting apps, further performance optimizations with resource hints, no issues for Firefox, developing on Firefox and Chrome, the amazing Firefox' developer experience, Custom Elements with lit-html look a lot like React code, if Facebooks drops react, easy migrations to frameworks from web standards, migration between frameworks is mission impossible, Progressive Web Apps without frameworks #nomigrations #webstandards #noslides talk at IJS, the MDN first approach, the WildFly starting in 3-4 seconds, Quarkus starts in under a second, by removing EJBs you can save one second startup time, Tech 11 hires developers with passion for WebStandards, Matthias Reining on twitter: @MatthiasReining
An airhacks.fm conversation with Mark Struberg (@struberg) about: Mark loves microservices, "if all you have is a hammer, everything looks like a nail", by Abraham Maslow, Hype Driven Development, the right size of a Microservice, splitting an application with Apache Maven, interfaces and DTOs, structuring a monolith, the killer argument against modules, interfaces with a single implementation, what if all the modules have the same version, testing against interfaces, pure unit tests are problematic in microservice world, avoid testing mocks, most problems and errors are in the database, System Tests in production-near environment over CDI Unit, Arquillian and Delta Spike, the overhead of Kubernetes, there are projects which require scaling others do not have such requirements, KVM over Kubernetes, testing locally vs. in production-like environment, Kubernetes is not only about load and scaling, Kubernetes is about management and sysadmins productivity, the main problem in business projects is overengineering, "Anything that can go wrong will go wrong": Murphy's Law, 200 errors per second, coursing about EJB and Java Enterprise, back to synchronous programming, transaction optimizations could be problematic, generating superfluous code with lombok, the "open session in view" pattern, transactions on JSF actions, in many use cases transactions are started on a too deep level, SOA and transaction boundaries, the fallacies of distributed computing, even larger projects have 10 microservices at most, there is no big company with a single, big monolith, staying local comes with the comfort of transactions, large amount of microservices is problematic, in 5 years we are going to reeingineer microservices into something different, everyone hates SOA now, everyone loved SOA back then, the saga pattern and compensating transactions, Jeff Bezos note on microservices from 2002, the benefits of microservices, the big bang Jakarta EE migration, the automatic package transformation with classloader, runnning old JARs on new namespaces, MicroProfile moves and iterates faster, Jakarta EE's release cadence is less frequent, the definition of "done" and micro frontends: Mark Struberg on twitter: @struberg and github: https://github.com/struberg. Mark's blog: https://struberg.wordpress.com/.
Hi and welcome back to Weekly Dev Tips. I’m your host Steve Smith, aka Ardalis. This is episode 58, on the concept of boundaries, with guest James Hickey. Boundaries This week's tip is brought to you by devBetter.com. Sponsor - devBetter Group Career Coaching for Developers Need to level up your career? Looking for a mentor or a the support of some motivated, tech-savvy peers? devBetter is a group coaching program I started last year. We meet for weekly group Q&A sessions and have an ongoing private Slack channel the rest of the week. I offer advice, networking opportunities, coding exercises, marketing and branding tips, and occasional assignments to help members improve. Read some of the testimonials on devBetter.com and see if it sounds like it you might be a good fit. This week we have our first returning guest, James Hickey. James was on the show earlier for episode 48 on how to accelerate your career. This week, he's back to talk about boundaries withing software systems. James is a software developer working remotely in eastern Canada. He's recently written a book about keeping your code clean called "Refactoring TypeScript" (https://leanpub.com/refactoringtypescript). He's also the author of an open-source .NET Core library called Coravel, which provides advanced capabilities to web applications. Welcome back, James! Boundaries Hi! I'm James Hickey. I'm a software developer working remotely in eastern Canada. When I started my career as a software developer I was thrust into a large codebase for a SAAS that helped automotive manufacturers perform analytics on their financial data. The way the codebase was organized is probably familiar to most developers - especially those with a background in enterprise-y companies. The solution was organized into 3 main projects: business, DAL (data-access), and "core" (which was just a bunch of classes having no business logic full of public getters and setters). At the end of the day, all the real business logic was mostly found within stored procedures in the database. So, all those layers didn't serve any real purpose. Business-oriented classes would just call a function from the DAL layer, and that method would call a stored procedure. As a fresh-out-of-school developer who's trying to learn "how the pros do it", I didn't question this way of organizing code. Eventually, though, I came to realize that this way of organizing code was terrible. It was hard to find code for specific features. You end up having to switch contexts between multiple projects when working on the same feature. A Better Way I've also been in projects having very different ways of organizing code, yet suffered from the same kinds of issues. Throughout this time, I had a hunch that there was a common issue that was causing these difficulties. It didn't matter how well classes or sub-systems were designed, because, in the grand scheme of things, it was still hard to deal with the codebase as a whole. As I read books and blogs and listened to well-known industry experts share their knowledge about software design, I came across better techniques and patterns for organizing code and designing software well. Then, I discovered domain-driven design. DDD DDD is a pretty huge subject, but at the heart of the entire philosophy is the idea that the most important thing about managing complexity in software is around putting up boundaries. In these other systems I've mentioned, the boundaries were enforced the wrong way. Instead of slicing our solutions by technical concerns (like by data-access, objects, interfaces, etc.), DDD teaches us to slice our solutions by business functionality (like shipping, search, billing, etc.) Since then, I've had the opportunity to learn about other approaches to software design and have formed some opinions around what works well and what generally doesn't work out so well. Out of all of these ideas, the most important one I've learned and have seen the effects of within real software projects is this idea of creating boundaries. Different Boundary Types You might be familiar with the concept called Bounded Contexts. In a nutshell, these are isolated sub-systems or bubbles that you design and build individually. Instead of creating one codebase and shoving all your code into it, you create a codebase or application per specific business feature or area of functionality. Multiple boundaries can communicate with each other, but not by traditional means. In projects like the ones I mentioned at the beginning, if shipping needed information from the payments feature, it would just reach into the database and query the payments table! These more strict boundaries mean you can't just reach into another feature's data or code. This has many benefits. Mainly, it allows the inside of each boundary to attack its core business problem head-on and not worry about secondary concerns like persistence and what other business problems require. And it decouples all your different bubbles or contexts. Inside each bounded context are these other boundaries called aggregates. These are objects that represent transactional boundaries. The details are not important, but what is important is that each aggregate does not directly call another aggregate's methods and grab its data. Usually, aggregates will emit events to communicate with each other. I use domain-driven design as the first example because the idea of boundaries is so fundamental to it. But there are other ways to enforce boundaries. Some prefer to create an isolated component, module, package or assembly (depending on what language you are in) and expose all the functionality of that isolated component as a facade. In this case, you might have one class that has all the publicly accessible behaviours or functions. None of the internal classes are exposed. When looking at architectures like Clean Architecture, all business functionality might be exposed as use cases. Each use case, like "register new user", would be modelled as a single class. This class would not expose any domain objects or objects from modules farther down the chain. It would expose it's own specific models or DTOs. This is a way to enforce a boundary so that the outside world doesn't know about the internal details of specific modules or components. Similarly, if you are building a web API then you might want to enforce boundaries by using view models or DTOs which are used for sending data to your clients. This way, internal details like specific domain classes aren't exposed and you can modify or version each endpoint without affecting the other modules or projects that depend on it. Using specific classes dedicated for use in HTTP POST data binding also helps keep boundaries around each specific end-point. You also get the added security benefit of not "over posting." Duplication? Whenever you share code you are introducing some form of coupling. This, in turn, is the opposite of putting up boundaries. Let's say, for example, I have a User class. This class is used within the user profile logic and the authentication logic for an application. If I need to add new behaviours to the authentication flow, does it make sense that the same functionality is now available for use in the user profile scenario? Since both features are sharing the same class, this is possible. This approach of trying to share as much code as possible throughout our apps is what causes spaghetti code and bugs galore. This is probably the biggest issue I come across in codebases. We think that sharing everything is good. But it's not. It creates a tangled mess of dependencies that, over time, cause businesses who want to be agile to sluggishly attempt to keep up with customer and market needs. Instead, if we isolate each of these features and NOT share that User class, then changes from one feature won't affect the other. Sure, you might end up creating two different user classes that have what look like duplicated fields, but that's OK. You aren't duplicating logic because these classes represent different things. The logic for the user profile screen is going to be different than authentication logic by definition. There is a place for shared behaviour, like sharing how you might display a user's name in your application's UI. But fundamentally, we should seek to create boundaries around the different parts of our codebases. Conclusion Next time you find yourself having to start a new project or product, think about how you can isolate that product or feature from the rest of your codebase. Maybe you want to build it as a completely separate assembly or project? In this case, you could use an event-driven means of communication. Or, maybe expose a public API as a facade. If that doesn't make sense or isn't possible, you can at least create a new folder structure that makes it very clear what business functionality exists in that place. I've written more about this last point over at builtwithdot.net if you are curious. Thanks for listening in! Thanks, James. I've added a link to your blog to the show notes. Listeners interested in learning more about Domain-Driven Design and Clean Architecture will find additional resources in the show notes as well. Show Resources and Links devBetter Changing How Your Code is Organized Could Speed Development Clean Architecture on GitHub DDD Fundamentals That’s it for this week. If you want to hear more from me, go to ardalis.com/tips to sign up for a free tip in your inbox every Wednesday. I'm also streaming programming topics on twitch.tv/ardalis most Fridays at noon Eastern Time. Thank you for subscribing to Weekly Dev Tips, and I'll see you next week with another great developer tip.
Defy The Odds Show - Buy or Sell A Small Business in 6 Steps
Just like Elaine says on Seinfeld, you need to be careful when attracting a squirrel. Buyers, like squirrels, are hesitant. You have to give the buyer time to get comfortable or, like Elaine says, you'll scare the squirrel away.
Defy The Odds Show - Buy or Sell A Small Business in 6 Steps
In this episode, I explore how being a "bottom line" person or a "top line" person might impact what kind of business you buy.
Defy The Odds Show - Buy or Sell A Small Business in 6 Steps
I speak with business owners every week. At times, we'll talk about what the business might be worth. In this episode, I share one of these conversations.
Defy The Odds Show - Buy or Sell A Small Business in 6 Steps
You're thinking about selling your business. You're also thinking you need a business broker because you're really busy, don't know how to start, don't have a plan, don't know your businesses' value, and don't know how the process works. Listen in...
Defy The Odds Show - Buy or Sell A Small Business in 6 Steps
What is the role of your gatekeeper? Should your gatekeeper be a decision maker that decides which possible products and services are "eligible" to help your business? It probably depends on your business but it might be worth some consideration.
Defy The Odds Show - Buy or Sell A Small Business in 6 Steps
The reality is, there are more sellers than qualified buyers. Depending on your niche, location, and price, it may be even more challenging. It pays to be proactive if you want to sell your business.
Defy The Odds Show - Buy or Sell A Small Business in 6 Steps
This is a must listen to episode for anyone interested in buying a small business. If you're wondering how you can qualify and/or fund the purchase of a small business, Larry shares an innovative funding strategy that's really powerful.
Defy The Odds Show - Buy or Sell A Small Business in 6 Steps
Lately, I've been thinking about how business owners sacrifice. But recently, I've had a couple circumstances that have made me think about suffering and how it applies to us professionally and personally.
Defy The Odds Show - Buy or Sell A Small Business in 6 Steps
In this episode, we interview Jared Greer, Executive Coach and founder of The Greer Method. We talk to Jared about getting yourself right, having structure, IronMan Triathlons, and a whole lot more.
Defy The Odds Show - Buy or Sell A Small Business in 6 Steps
70% of small business owners have given no attention to transition yet 30% of ALL small business owners think about selling their small businesses at any given time. It's why less than 30% of small businesses are EVER sold. Take our FREE course: "How To Create A Transition Plan Yourself!"
Defy The Odds Show - Buy or Sell A Small Business in 6 Steps
In a recent discussion with one of my clients, he asked me about what he needed to get his business ready to be LISTED for sale. In this episode, I go over the checklist I sent him...and all my clients.
Defy The Odds Show - Buy or Sell A Small Business in 6 Steps
When I first speak with a business owner, I often get asked similar questions like what's my business worth/what do you think I can get for it? Or, how do you get paid? Or, how will you market my business...among others. In this episode, I answer these questions and more...like getting my AARP card?!
Defy The Odds Show - Buy or Sell A Small Business in 6 Steps
Every Business Has potential access to 3 buckets of money but most don't get value out of the 3rd bucket. I also talk about a course I've developed and a report I've created for small business buyers and sellers.
Defy The Odds Show - Buy or Sell A Small Business in 6 Steps
In this episode, I share a story of a small business I founded/started, bought (partner buyout), sold, helped my mom buy, and contemplated buying again! Lots of lessons learned.
Domain Events - Before Peristence Domain Events are a DDD design pattern that in my experience can really improve the design of complex applications. In this episode I describe specifically how you would benefit from raising and handling these events prior to persisting the state of your entities. Sponsor - DevIQ Thanks to DevIQ for sponsoring this episode! Check out their list of available courses and how-to videos. Show Notes / Transcript So before we get started, let's describe what a domain event is. A domain event is something that happens in your system that a domain expert cares about. Domain events are part of your domain model. They belong in the Core of your Clean Architecture. They should be designed at the abstraction level of your domain model, and shouldn't reference UI or infrastructure concerns. Domain events are a pattern, and one with several difference implementation approaches. I generally segment these approaches into two camps: before persistence and after persistence. For this tip, we're going to focus on events that occur and are handled prior to persistence. In future tips, I'll talk about domain events that should only be dispatched once persistence has been successful. So, as a pattern, what problem are domain events designed to solve? Just as with other event-driven programming models, such as user interface events, domain events provide a way to decouple things that occur in your system from things such occurrences trigger. A common example I use is checking out a shopping cart from an ecommerce site. When the user checks out, a variety of other things generally should take place. The order should be saved. Payment should be processed. Inventory should be checked. Notifications should be sent. Now, you could put all of this logic into a Checkout method, but then that method is going to be pretty large and all-knowing. It's probably going to violate the Single Responsibility and Open/Closed Principles. Another approach would be to raise an event when the user checks out, and then to have separate handlers responsible for payment processing, inventory monitoring, notifications, etc. Looking specifically at events that make sense to handle before persistence, the primary rule is that such events shouldn't have any side effects external to the application. A common scenario is to perform some kind of validation. Imagine you have a Purchase Order domain object, which includes a collection of Line Item objects. The Purchase Order has a maximum amount associated with it, and the total of all the Line Item object amounts must not exceed this amount. For the sake of simplicity let's say the Purchase Order object includes the logic to check whether its child Line Item objects exceeds its maximum. When a Line Item object is updated, how can we run this code? One option would be to provide a reference from each Line Item to its parent Purchase Order. This is fairly common but results in circular dependencies since Purchase Order also has a reference to a collection of its Line Item objects. These objects together can be considered an Aggregate, and ideally dependencies should flow from the Aggregate Root (in this case Purchase Order) to its children, and not the other way around. So, let's assume we follow this practice, which means we can simply call a method on Purchase Order from Line Item directly. Another common approach I see developers use instead of domain events is to pull all of the logic up from child objects into the aggregate root object. So instead of having a property setter or property on Line Item to update its amount, there might be a method on Purchase Order called UpdateLineItemAmount that would do the work. This breaks encapsulation and will cause the root object to become bloated while the child objects become mere DTOs. It can work, but it's not very good from an object-oriented design standpoint. So how would domain events apply here? First, you'd put the logic to modify Line Item on the Line Item class where it belongs. Then, in the UpdateAmount method, you would raise an appropriate domain event, like LineItemAmountUpdated. The aggregate root would subscribe to this event and would handled the event in process (not asynchronously or in another thread). If necessary, the handler could raise an exception. In any case, it could update properties of the root object to indicate whether it was currently in a valid state, which could easily be reflected in the UI. This is one particular use case for domain events that I've found very helpful, and which I typically refer to as aggregate events since there isn't a separate event handler type in this case. I have a small sample showing them in action on GitHub you can check out in the show notes. With aggregate events in place, you can check all the blocks for your object design. Your aggregate's dependencies flow from root to children. Your aggregate's child objects are responsible for their own behavior. Changes to child objects are communicated to the aggregate root which is responsible for ensuring the validity of the entire aggregate. Many scenarios have rules where the root object has to perform validation checks that are based on the aggregate of several child objects, and this pattern provides an elegant solution to this problem. Would your team or application benefit from an application assessment, highlighting potential problem areas and identifying a path toward better maintainability? Contact me at ardalis.com and let's see how I can help. Show Resources and Links Clean Architecture Sample (GitHub) Aggregate Design Pattern Aggregate Events Sample (GitHub)
Data Transfer Object Tips (Part 2) One classification of objects in many applications is the Data Transfer Object, or DTO. Here are some more tips that may help you avoid problems when using these objects. Sponsor - DevIQ Thanks to DevIQ for sponsoring this episode! Check out their list of available courses and how-to videos. Show Notes / Transcript Last week we talked about the definition of a DTO and how they're typically used. This week we'll cover a few more common problems with them and offer some Dos and Don'ts. Mapping and Factories It's fairly common to need to map to a DTO and another type, such as an entity. If you're doing this in several places, it's a good idea to consolidate the mapping code in one place. A static factory method on the DTO is a common approach to this. Note that this isn't adding behavior to the DTO, but rather is just a static helper method that we're putting on the DTO type for organizational purposes. I usually name such methods with a From prefix, such as FromCustomer(Customer customer) for a CustomerDTO type. There's a simple example in the show notes for episode 8. public class CustomerDTO { public string FirstName { get; set; } public string LastName { get; set;} public static CustomerDTO FromCustomer(Customer customer) { return new CustomerDTO() { FirstName = customer.FirstName, LastName = customer.LastName }; } } You can also use a tool like AutoMapper, which will eliminate the need to use such static factory methods. I usually quickly end up moving to AutoMapper if I have more than a couple of these methods to write myself. What about attributes? It's common in ASP.NET MVC apps to use attributes from the System.ComponentModel.DataAnnotations namespace to decorate model types for validation purposes. For example, you can add a Required attribute to a property, and during model binding if that property isn't, an error will be added to a collection of validation errors. Since these attributes don't impact your ability to work with the class as a DTO, and since typically the DTO is tailor made for the purpose of doing this binding, I think it's perfectly reasonable to use these attributes for this purpose. You can rethink this decision if at some point the attributes start to cause you pain. Follow Pain Driven Development (PDD): if something hurts, take a moment to analyze and correct the problem. Otherwise, keep on delivering value to your customers. If you're not a fan of attribute-based validation, you can use Fluent Validation and define your validation logic using a fluent interface. You'll find a link in the show notes. Keeping DTOs Pure Avoid referencing non-DTO or primitive types from your DTOs. This can pull in dependencies that can make it difficult to secure your DTO. In some cases, it can introduce security vulnerabilities, such as if you have methods accepting input as DTOs, and these DTOs reference entities that your app is directly updating in the database. An attacker could guess at the structure of the entity and perhaps its navigation properties and could add or update data outside of the bounds of what you thought you were accepting. Take care in your update operations to only update specific fields, rather than model binding an entity object from external input and then saving it. DTO Dos and Don'ts Let's wrap up with some quick dos and don't for Data Transfer Objects: Don't hide the default constructor Do make properties available via public get and set methods Don't validate inputs to a DTO Don't add instance methods to your DTO Do consolidate mapping logic into static factories Do consider moving to AutoMapper if you have more than a few such factory methods Do feel free to use attributes to help with model validation Don't reference non-DTO types, such as entities, from DTOs Show Resources and Links AutoMapper Pain Driven Development (PDD) Fluent Validation
Data Transfer Object Tips (Part 1) One classification of objects in many applications is the Data Transfer Object, or DTO. Here are some tips that may help you avoid problems when using these objects. Sponsor - DevIQ Thanks to DevIQ for sponsoring this episode! Check out their list of available courses and how-to videos. Show Notes / Transcript Data Transfer Objects, or DTOs, are, as the name suggests, objects whose main purpose is to transfer data. In Object Oriented Programming, we typically think about objects as encapsulating together state, or data, and behavior. DTOs have the distinction of being all about the data side of things, without the behavior. Why do we need DTOs? DTOs are used as messages. They transfer information from one part of an application to another. Depending on where and how they transfer information, they might have different names. Often, they're simply referred to as DTOs. In some cases, you may see them characterized as View Models, API Models, or Binding Models. Not all view models in MVC apps are DTOs, but many can and probably should be. For instance, in an ASP.NET MVC application, you typically don't want to have any behavior in the ViewModel type that you pass from a controller action to a view. It's just data that you want to pass to the view in a strongly typed fashion. If you're following the MVVM pattern to build apps using WPF or something similar, then your ViewModel in that scenario is supposed to have behavior, not be a DTO. Ideally we'll come up with a better name for ViewModels in MVC apps, but obvious choices like ViewData are already overloaded. Why shouldn't DTOs have behavior? DTOs don't have behavior because if they did, they wouldn't be DTOs. Their entire purpose is to transfer data, not to have behavior. And because they are purely data objects, they can easily be serialized and deserialized into JSON, XML, etc. Your DTO's data schema can be published and external systems can send data to your system in a wire format that your system can translate into an instance of your DTO. If your DTO has behavior on it, for instance to ensure its properties are only set to valid values, this behavior won't exist in the string representation of the object. Furthermore, depending on how you coded it, you might not be able to deserialize objects coming from external sources. They might not follow contraints you've set, or you might not have provided a default public constructor, for instance. The goal of DTOs is simply to hold some state, so you can set it in one place and access it in another. To that end, the properties on a DTO should all have public get and set methods. There's no need to try to implement encapsulation or data hiding in a DTO. That's it for this week. Next week I'll talk some more about DTOs and provide a list of Do's and Don'ts.
On this episode of Eat Sleep Code guest Jimmy Bogard shares his perspective on Microsoft's basic object-mapper. Jimmy talks about the future of Automapper and support for .NET Core & .NET Standard. 00:57 EC: So I wanted to get you on the show today, because of a GitHub issue I saw on the MVC GitHub repository. And this GitHub issue is… It reads, “Basic object mapper for simple model view. View model property mapping.” And I have a feeling that you have some opinions about this, having one of… A very popular NuGet package for ‘.NET’ AutoMapper. And it’s been quite successful. And this, to me, it looks like it may step on your toes a little bit. So I wanted to get you to talk about kinda where you’re at and how this affects you. But before we get started, why don’t you give everybody a quick introduction of who you are and what you do, Jimmy? 01:56 JB: Okay. I guess I really write code for customers for a living. I work at a consulting company called Headspring out of Austin, Texas. And nearly all of the open-source stuff I work on, is just stuff that I build to help my clients. It’s just tools I wanted to keep using, and using, and using as we go from client to client. And so, almost everything that I write and use these days with open-source is stuff I’m actually using on client projects, that I don’t wanna lose when I go to the next client. 02:33 EC: And you have this tool called AutoMapper, which is an object mapping tool. Why don’t we give everybody a quick elevator pitch. What is an object mapper? 02:46 JB: Well, the basic idea is I have two objects that look pretty similar, and my general use case was I’m building web applications in ASP.NET MVC, typically. And I have a rich domain model that’s bound to the database in some way or another, usually with an ORM, like in any framework. But then, I had this other thing I’m using to show information on the web, either for showing forms, or also posting data from the web. And you have this general problem, and that’s your backend object is generally very rich and behavioral, and has a lot of things associated with it, but the thing you’re coming in from the web, is generally not. And you typically don’t wanna mix those two things together. So about… Gosh, eight or nine years ago, I saw this issue of when we’re starting out MVC, that we wanted to have these DTOs that we use for the MVC side and have these rich backend objects. But what would be the mechanism that we copy that information from the rich backend objects to the frontend dumb DTO objects? And I didn’t wanna do that all by hand, and I looked around, and saw there really wasn’t anything that did it for you automatically. And so, I created AutoMapper as a way to automatically figure out how to copy information from one object to the other. 04:12 JB: Probably a stupid idea. That didn’t seem that complicated, but there were a few things that I wanted to have out of the box that would help us out. One of the big ones was flattening, so if you have “foo.bar.baz” on your destination object, you could just have a single property, “foo, bar, baz.” And it would automatically traverse those associations, and figure out how to flatten that object for you. It handled nulls as well. If foo was null or bar was null, it’d be able to handle that as well. And the other big thing that I wanted to do, was make sure we could test it as well. So if I misspelled something or removed a property, I could just have one line of… Just check all my configuration is valid, and all the names match up, and there’s nothing missing. And if there is, go in exception, so it’s really easy for us to test, to say, “Make sure all my mappings are good.” Find out more at http://developer.telerik.com/content-types/podcast/automapper-net-core/
DTOS (Design-To-Order-Service). What is it? How can I use it? All of these questions answered in this episode of "Chatting with Chuck"
Terrell Bosarge, National Team Leader for the Deployable Tactical Operations System (DTOS), discusses the mission and capabilities of DTOS. DTOS is a fleet of USACE emergency response vehicles that deploys nationwide in response to natural or manmade disasters.