Podcasts about tostring

Object-oriented programming language

  • 23PODCASTS
  • 80EPISODES
  • 37mAVG DURATION
  • ?INFREQUENT EPISODES
  • Aug 6, 2024LATEST
tostring

POPULARITY

20172018201920202021202220232024


Best podcasts about tostring

Latest podcast episodes about tostring

Modernize or Die ® Podcast - CFML News Edition
Modernize or Die® - CFML News Podcast for August 6th, 2024 - Episode 217

Modernize or Die ® Podcast - CFML News Edition

Play Episode Listen Later Aug 6, 2024 62:26


2024-08-06 Weekly News — Episode 217Watch the video version on YouTube at https://youtube.com/live/Z3m5Nd7HoJc?feature=shareHosts: Eric Peterson - Senior Developer at Ortus SolutionsDan Card - Senior Developer at Ortus SolutionsThanks to our Sponsor - Ortus SolutionsThe makers of ColdBox, CommandBox, ForgeBox, TestBox and all your favorite box-es out there. A few ways to say thanks back to Ortus Solutions:Buy Tickets to Into the Box 2025 in Washington DC https://t.co/cFLDUJZEyMApril 30, 2025 - May 2, 2025 - Washington, DCLike and subscribe to our videos on YouTube. Help ORTUS reach for the Stars - Star and Fork our ReposStar all of your Github Box Dependencies from CommandBox with https://www.forgebox.io/view/commandbox-github Subscribe to our Podcast on your Podcast Apps and leave us a reviewSign up for a free or paid account on CFCasts, which is releasing new content regularlyBOXLife store: https://www.ortussolutions.com/about-us/shopBuy Ortus's Books102 ColdBox HMVC Quick Tips and Tricks on GumRoad (http://gum.co/coldbox-tips)Now on Amazon! In hardcover too!!!https://www.amazon.com/dp/B0CJHB712MLearn Modern ColdFusion (CFML) in 100+ Minutes - Free online https://modern-cfml.ortusbooks.com/ or buy an EBook or Paper copy https://www.ortussolutions.com/learn/books/coldfusion-in-100-minutes Patreon Support (Stupendous)We have 57 patreons: https://www.patreon.com/ortussolutions. News and AnnouncementsBoxLang — Dynamic : Modular : Productivehttps://boxlang.io/https://boxlang.ortusbooks.com/New Releases and UpdatesCFConfig v2.0.6Now supports BoxLang serversSpreadsheet-CFML v4.1.0 – v4.2.0Add moveSheet()Add sheet position to sheetInfo() propertiesUpgrade POI to 5.3.0, commons-csv to 1.11.0 and excel-streaming-reader to 4.4.0Allow datatype to be specified with addColumn()Sentry v2Updated to match Sentry's current event structure designcbq v3.0.8 – v3.0.9SyncProvider bug fixesBoxLang Betas — Beta 2 through 8Beta 2New FeaturesEncryption module — bx-password-encryptNew event: onRequestFlushBufferAbility to coerce BoxLang functions, lambdas, and UDFs, to well-known functional interfaces for Java interopAdd parallel streams from BoxLang arraysTruthy / Falsey completion for boolean casterNew Fluent Attempt BIF and classAdd the ability to add member methods to BoxLang classes — built-in class serialization to JSONNew static helper on Array class: fromString( list, delimiter ) to create quick BoxLang arrays from stringsNew BIFs for registered interceptors into the request pool and the global pool: BoxRegisterRequestInterceptor, BoxRegisterInterceptorwriteDump abort supportwriteOutput on complex BoxLang types should call the toString() on itNative encrypt, decrypt and generateSecretKey() BIFsBug FixeswriteDump expanded collapsed supportwriteDump top supportlistDeleteAt returns a list with multiple delimiters as a list with whole delimitersstructNew with localeSensitive flag throws errorstructKeyTranslate returns voidstructGet does not create struct when missingstructFindValue returning null ownerNo named applications not auto creating nameApplication listener requests interception points not registeredAmbiguous if statements when not using curly bracesthis.javasettings not expanding to correct pathingthis.javasettings ignores paths to actual jars and classescfdirectory fails on centOS, converting datetimedateAdd() modifies its argumenttoString not formatting doubles correctlyAttempt to cast instead of expecting strings inside isValidRegression on JSON serialization of box classes with JSON exclude annotationshttps://www.ortussolutions.com/blog/boxlang-100-beta-2-launchedBeta 3New FeaturesImplement query cache abilityCoerce java SAMs (Single Abstract Method interface) from BoxLang function interfacesAsyncService support for Virtual Thread Executors (create/manage)Bifs for module info: getModuleList() and getModuleInfo( module )Dumping of Java Classes now includes a dump of the toString() value to visualize values betterNew dump template for BoxLang FunctionsAllow the createDynamicProxy BIF to support the request class loader so it can load classes from loaded libraries in the application.bx, runtime, and more.New Script Binaries for bxCFTranspiler, bxCompiler, bxFeatureAudit tools in the distribution bin folderImprovementsRefactor JDBC connection retrieval out of the QueryOptions classDynamic method matching discovery algorithms updated to do 2 pass algorithm: exact then loose coercion matchingImprovement of cache service and cache provider methods for easier BoxLang interactionsRefactored the dump css to resources/dump/html/Dump.cssMigrate dynamic proxies to native java implementation from the JDKPassing the session id to the onSessionStart listenerGive better warnings if the sessionStorage is not a valid stringBug Fixesattributecollection not handled properly on cfthrowLeft in system out calls that need to be removedJSR ScriptEngine starting runtime without debug flag if passedCreating a default cache was not setting the right name and a "default" already registered exception was being thrownDefault argument values not always checked for typeImplements missing from Box Class metadataStatic Scope missing from metadatahttps://www.ortussolutions.com/blog/boxlang-100-beta-3-launchedBeta 4ImprovementsQuery caching improvements and compatibility updatesEnsure request attributes are available to the web runtime scopebx-compat CFML compatibility module updates to ensure null query column values are returned as empty stringsBug FixesFixes compilation issue with variables name cfcatchCFML compatibility for CGI.QUERY_STRING when not providedFix null queryparam functionalityhttps://www.ortussolutions.com/blog/boxlang-100-beta-4-launchedBeta 5New FeaturesData NavigatorsOriginal ConfigurationStringBind BIF and member functionAt...

airhacks.fm podcast with adam bien
A Gentle Introduction to Debugging

airhacks.fm podcast with adam bien

Play Episode Listen Later Jun 21, 2023 63:59


An airhacks.fm conversation with Shai Almog (@debugagent) about: about the name Codename One, JavaLobby became DZone, JavaBlogs and java.net, joining lightrun and developer's observability, the theory of debugging, lightrun: breakpoints which don't break, debugging in production has access to the entire data, lightrun creates snapshots - breakpoints which don't step, time travelling debugging, chrononsystems: DVR with Java, translate java runtimes to charts with appmap, the logging breakpoints: logpoints and tracepoints, exception breakpoints are hard to use, NetBeans debugger is great, exception breakpoints are useful with filters, field watchpoint is not a watch, renderers in Intellij, toString, performance and circular dependencies, memory debugging and MAT by SAP Shai Almog on twitter: @debugagent

Syntax - Tasty Web Development Treats

In this Hasty Treat, Scott and Wes talk about some Javascript one liners that speed up your coding experience in one line. Sponsor - Linode Whether you're working on a personal project or managing enterprise infrastructure, you deserve simple, affordable, and accessible cloud computing solutions that allow you to take your project to the next level. Simplify your cloud infrastructure with Linode's Linux virtual machines and develop, deploy, and scale your modern applications faster and easier. Get started on Linode today with a $100 in free credit for listeners of Syntax. You can find all the details at linode.com/syntax. Linode has 11 global data centers and provides 24/7/365 human support with no tiers or hand-offs regardless of your plan size. In addition to shared and dedicated compute instances, you can use your $100 in credit on S3-compatible object storage, Managed Kubernetes, and more. Visit linode.com/syntax and click on the “Create Free Account” button to get started. Sponsor - Sentry If you want to know what's happening with your code, track errors and monitor performance with Sentry. Sentry's Application Monitoring platform helps developers see performance issues, fix errors faster, and optimize their code health. Cut your time on error resolution from hours to minutes. It works with any language and integrates with dozens of other services. Syntax listeners new to Sentry can get two months for free by visiting Sentry.io and using the coupon code TASTYTREAT during sign up. Show Notes 00:24:12 Welcome 01:24:11 Sponsor: Linode 02:11:02 Sponsor: Sentry 03:54:18 Twitter ask for One Liners 04:24:05 Math random const getPsuedoID =() => Math.floor(Math.random() * 1e15); 05:43:09 Random color Paul Irish random color '#'+Math.floor(Math.random()*16777215).toString(16); 06:41:06 Console.log as an object. console.log({ dog, person }); VS Marketplace Link 08:29:17 Edit anything document.designMode = "on" 10:15:15 Temporal date export const today = Temporal.Now.plainDateISO(); 11:44:05 Console(log) const myFunc = (age) ⇒ console.log(age) || updateAge() 13:26:13 Remove a prop const { propToRemove, ...rest } = obj; 15:29:01 PHP style debugging preElement.innerText ={JSON.stringify(val, '', ' ')}` 16:31:00 First and Last Destructure var {0: first, length, [length - 1]: last} = [1,2,3]; 17:34:17 Speed up audio video document.querySelector('audio, video').playbackRate = 2 Overcast 19:44:15 Sleep function let sleep = (time = 0) => new Promise(r => setTimeout(r, time)) 20:26:00 If statements on one line If (!thing) return 'something' Tweet us your tasty treats Scott's Instagram LevelUpTutorials Instagram Wes' Instagram Wes' Twitter Wes' Facebook Scott's Twitter Make sure to include @SyntaxFM in your tweets

Les Cast Codeurs Podcast
LCC 265 - Chérie, ça va couper

Les Cast Codeurs Podcast

Play Episode Listen Later Oct 13, 2021 63:39


Dans ce nouvel épisode news, Arnaud, Emmanuel et Audrey reviennent sur les annonces d'Oracle concernant le JDK, sur Spring One, mais aussi sur les petites fuites de données et autre panne généralisée qui ont fait l'actu récemment. Enregistré le 8 octobre 2021 Téléchargement de l'épisode LesCastCodeurs-Episode–265.mp3 News Langages Oracle annonce des LTS de deux ans Donc une LTS tous les 2 au lieu de 3 ans, ce qui fait que la prochaine sera la 21 et pas la 23. Une enquête récente auprès de développeurs montre qu'entre un quart et la moitié utilisent les release de six mois en dev, mais moins de la moitié d'entre eux en prod Mais pas de détail sur le temps de security patch support gratuit. Oracle en payant c'est 8 ans Oracle offre Oracle JDK gratuitement avec support pendant 1 LTS + 1 an (donc 3 ans) Java 17 et + Redistribution gratuite aussi. Pas de click through. Sous license NFTC (“Oracle No-Fee Terms and Conditions”). Ils en ont marre d'avoir de la compétition ? Dans JDK 18, avec le JEP 400, le charset par défaut va enfin passer à UTF–8 Autant ce n'était plus vraiment un problème pour les systèmes sour mac OS ou Linux, qui utilisent depuis assez longtemps UTF–8 par défaut, mais c'est surtout pour les systèmes Windows où c'est plus problématique Dans JDK 17, la propriété système System.getProperty("native.encoding") avait été introduite si on veut lire par exemple un fichier avec Deux approches de mitigation pour les problèmes de compatibilité, en recompilant et en utilisant cette propriété quand on ouvre un fichier en utilisant -Dfile.encoding=COMPAT sans recompilation, qui gardera le même comportement qu'en JDK 17 et avant L'équipe d'Oracle suggère de tester ses applications avec -Dfile.encoding=UTF–8 pour voir s'il n'y a pas de soucis Librairies JUnit 5.8 les classes de test peuvent être ordonnées avec la Class Order API (par nom de classe, nom d'affichage, avec @order ou random) les classes de test imbriquées peuvent l'être avec @TestClassOrder @ExtendWith peut maintenant être utilisé pour enregistrer des extensions via des champs ou des paramètres de méthode (constructeur, méthodes de test ou lifecycle) @RegisterExtension peut maintenant être utilisé sur des champs privés. assertThrowsExactly version plus stricte de assertThrows() assertDoesNotThrow() supporte les suspending functions Kotlin assertInstanceOf produit de meilleurs messages d'erreurs (remplacement pour assertTrue(obj instanceof X)) assertNull comporte maintenant le type de l'object si sa méthode toString retourne null pour éviter les messages de type expected but was @TempDir peut maintenant être utilisé pour créer plusieurs répertoires temporaires (le retour au mode par context peut être fait par configuration) fait un reset des permissions read and write du répetertoire root et de tout les répertoires contenus plutôt que d'échouer à les supprimer peut maintenant être utilisé sur des champs private Nouvel UniqueIdTrackingListener qui va générer un fichier contenant les identifiants des test executés et qui peut être utilisé pour re-executer ces tests dans une image GraalVM par exemple. Stephen Colebourne avertit les utilisateurs de Joda Time de ne pas mettre à jour la base de données des fuseaux horaires Les personnes qui sont responsables de cette base de données veulent fusionner certaines zones ensemble, par exemple, Oslo et Berlin. Alors que ces deux villes (et d'autres) n'ont pas forcément toujours eu la même heure La base est censée référencer tous les changements depuis 1970 mais en fusionnant plusieurs zones, le risque est de perdre l'historique pré–1970 Recap Spring.io : Récap Jour 1 Récap Jour 2 Récap en vidéo par Josh Long State of Spring 2021 les chiffres: 61% des sondés utilisent spring boot 94% d'entre eux pour faire des micro services 35% sur des architectures reactive 61% voudraient passer sur du natif d'ici 2 ans Nouvelle baseline pour Spring Framework 6.0 Java 17 et Jakarta EE 9 dès la 6.0 M1 de Spring Framework qui arrive Q4 2021 (GA en Q4 2022) Spring Native arrive dans Spring Framework Compilation AOT bénéficiera aux déploiements JVM aussi Spring Boot starter pour applications natives Spring Boot proposera des plugin de build et configuration native dès la 3.0 Support de RSocket and GraphQL Spring Observability passe dans Spring Framework API unifiée pour les metrics et le tracing, compatible Micrometer, Wavefront, Zipkin, Brave et OpenTelemetry intégration consistante dans tout le portfolio auto configuration dans Spring Boot 3.0 Core abstractions dans Spring Framework 6.0 Spring Native De Spring framework 5.3 à 6.0 Infrastructure (suite annonces Spring.io) Tanzu Application Platform : plateforme livrée avec toute la chaine d'outils mais configurable si les équipes préfèrent utiliser d'autres outils que ceux proposés compatible AKS, EKS, GKS et TKG. application accelerator (inspiré par spring initializer) pour générer les templates des applications qui seront ensuite déployées Spring Cloud Gateway for K8s and API Portal for VMware Tanzu Tanzu Community Edition : Version OSS de Tanzu Cloud Azure installe des agents dans son image linux et ils sont vulnérables aux auto update Lié à OMI (open management infrastructure, l'équivalent de Windows Management Infrastructure (WMI) pour les systèmes UNIX qui s'exécute en root avec tous les privilèges Dès qu'on utilise des services comme azure log, ils l'installent dans les VMs L'article dit que c'est la faute à l'open source et que seulement 20 contributeurs. C'est un peu BS. En fait si c'est installé via un service le service le mettra à jour Mais MS recommande de mettre à jour manuellement aussi Web Julia Evans nous explique CORS Julia explique comment se comporte le navigateur qui voit qu'on essaie d'accéder à une URL différente de celle du domaine de la page web chargée, et le navigateur se demande s'il a le droit de charger cette page Il va faire un “preflight” request (avec une méthode HTTP OPTIONS) pour savoir s'il a le droit ou non, puis si c'est le cas, pourra accéder à la resource Julia explique la same-origin policy (càd qu'on ne doit accéder que des resources du domaine qu'on est en train de visiter dans son navigateur) Data Kafka 3.0 Le support Java 8 et Scala 2.12 est déprécié et sera retiré en version 4 Nouvelles améliorations sur KRaft, le méchanisme de consensus qui remplacera à terme ZooKeeper Outillage TravisCI fait un petit partage de vos secrets dans toutes les PRs de vos repos par accident le problème a duré 8 jours rotation des secrets recommandé Travis a patché discretement sans disclosure initialement ce qui a fait un raffut Architecture Facebook est tombé pendant environ 6H Facebook prévoit de faire une maintenance sur son backbone (classique) Un ingénieur lance par erreur une commande qui declare l'ensemble du backbone inaccessible Oups, le système d'audit qui devrait empêcher de lancer une telle commande est buggé, la commande passe … Toute l'infra de Facebook est désormais déconnectée du net. Les avertissements BGP sont stoppées puisque l'infra FaceBook n'est plus dispo et les DNS déprovisionnent les entrées FaceBook, le monde ne peut plus accéder à FaceBook Les ingé comprennent vite le problème sauf que ils ont perdus les accès remotes aux services et la plupart de leurs systèmes internes sont KO à cause du retrait des DNS Ils envoient donc du personnel sur site dans les datacenters pour physiquement remettre en service l'infra mais l'accès physique aux machines est super protégé Ils finissent par y arriver SAUF que le fait de tout redémarrer pause un vrai challenge du fait de l'affluence du traffic qui reprend. Ils risquent de refaire tomber les datacenters du fait de la surcharge électrique. (sans parler de sproblèmes plus haut niveau comme le rechargement des caches etc) Heureusement ils ont un plan de reprise qu'ils testent régulièrement qui est plutôt prévu dans le cadre d'une tempête qui mettrait HS tout ou partie du réseau. Ce système marche bien et tout rentre dans l'ordre petit à petit, Facebook est sauvé, la planète a reperdu 5 points de QI Julia Evans explore BGP et son fonctionnement dans cet article Vu de dehors avec Cloudflare Impact non seulement du DNS mais des routes BGP elles même. Ces routes disent qu'une IP (our série d'IP) appartient à une personne donnee. Fondamentalement modèle de confiance. Intéressant de voir comment Facebook DNS down ajouté beaucoup de traffic aux serveurs de DNS principaux qui ne cachent pas le SERVFAIL Sécurité Fuite massive de données chez Twitch Quoi ? l'intégralité du code source Les revenus (sur 3 ans) de plus de 10 000 streamers Twitch ont été publiés sur le net. certains codes d'accès AWS attention c'est la partie 1, il pourrait y avoir d'autres données prochainement Comment ? Officiellement suite à une erreur dans un changement de config Officieusement c'est plus probablement un employé ou un ex employé Pourquoi ? le message sur 4chan dénonce un « un cloaque toxique dégoûtant », ce qui pourrait faire référence aux problèmes de harcèlements et de raids hostiles visant des streameurs et des streameuses en raison de leur origine ethnique, de leur orientation sexuelle ou genre. il est aussi question d'une revendication à une concurrence plus saine dans le secteur du streaming de jeu vidéo Conférences DevFest Nantes les 21 et 22 octobre 2021 DevFest Lille le 19 novembre 2021 SunnyTech les 30 juin et 1er juillet 2022 à Montpellier Nous contacter Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs Faire un crowdcast ou une crowdquestion Contactez-nous via twitter https://twitter.com/lescastcodeurs sur le groupe Google https://groups.google.com/group/lescastcodeurs ou sur le site web https://lescastcodeurs.com/

BadGeek
Les Cast Codeurs n°265 du 13/10/21 - LCC 265 - Chérie, ça va couper

BadGeek

Play Episode Listen Later Oct 13, 2021 63:39


Dans ce nouvel épisode news, Arnaud, Emmanuel et Audrey reviennent sur les annonces d'Oracle concernant le JDK, sur Spring One, mais aussi sur les petites fuites de données et autre panne généralisée qui ont fait l'actu récemment. Enregistré le 8 octobre 2021 Téléchargement de l'épisode [LesCastCodeurs-Episode-265.mp3](https://traffic.libsyn.com/lescastcodeurs/LesCastCodeurs-Episode-265.mp3) ## News ### Langages [Oracle annonce des LTS de deux ans](https://inside.java/2021/09/14/moving-the-jdk-to-a-2-year-lts-candence/) * Donc une LTS tous les 2 au lieu de 3 ans, ce qui fait que la prochaine sera la 21 et pas la 23. * Une enquête récente auprès de développeurs montre qu'entre un quart et la moitié utilisent les release de six mois en dev, mais moins de la moitié d'entre eux en prod * Mais pas de détail sur le temps de security patch support gratuit. Oracle en payant c'est 8 ans [Oracle offre Oracle JDK gratuitement avec support pendant 1 LTS + 1 an (donc 3 ans)](https://blogs.oracle.com/java/post/free-java-license) * Java 17 et + * Redistribution gratuite aussi. Pas de click through. * Sous license NFTC ("Oracle No-Fee Terms and Conditions"). * Ils en ont marre d'avoir de la compétition ? [Dans JDK 18, avec le JEP 400, le charset par défaut va enfin passer à UTF-8](https://inside.java/2021/10/04/the-default-charset-jep400/) * Autant ce n'était plus vraiment un problème pour les systèmes sour mac OS ou Linux, qui utilisent depuis assez longtemps UTF-8 par défaut, mais c'est surtout pour les systèmes Windows où c'est plus problématique * Dans JDK 17, la propriété système `System.getProperty("native.encoding")` avait été introduite si on veut lire par exemple un fichier avec * Deux approches de mitigation pour les problèmes de compatibilité, * en recompilant et en utilisant cette propriété quand on ouvre un fichier * en utilisant -Dfile.encoding=COMPAT sans recompilation, qui gardera le même comportement qu'en JDK 17 et avant * L'équipe d'Oracle suggère de tester ses applications avec -Dfile.encoding=UTF-8 pour voir s'il n'y a pas de soucis ### Librairies [JUnit 5.8](https://junit.org/junit5/docs/current/release-notes/index.html#release-notes-5.8.0) * les classes de test peuvent être ordonnées avec la Class Order API (par nom de classe, nom d'affichage, avec @order ou random) * les classes de test imbriquées peuvent l'être avec @TestClassOrder * @ExtendWith peut maintenant être utilisé pour enregistrer des extensions via des champs ou des paramètres de méthode (constructeur, méthodes de test ou lifecycle) * @RegisterExtension peut maintenant être utilisé sur des champs privés. * `assertThrowsExactly` version plus stricte de assertThrows() * `assertDoesNotThrow()` supporte les suspending functions Kotlin * `assertInstanceOf` produit de meilleurs messages d'erreurs (remplacement pour `assertTrue(obj instanceof X)`) * `assertNull` comporte maintenant le type de l'object si sa méthode `toString` retourne null pour éviter les messages de type `expected but was ` * @TempDir * peut maintenant être utilisé pour créer plusieurs répertoires temporaires (le retour au mode par context peut être fait par configuration) * fait un reset des permissions read and write du répetertoire root et de tout les répertoires contenus plutôt que d'échouer à les supprimer * peut maintenant être utilisé sur des champs private * Nouvel UniqueIdTrackingListener qui va générer un fichier contenant les identifiants des test executés et qui peut être utilisé pour re-executer ces tests dans une image GraalVM par exemple. [Stephen Colebourne avertit les utilisateurs de Joda Time de ne pas mettre à jour la base de données des fuseaux horaires](https://blog.joda.org/2021/09/big-problems-at-timezone-database.html) * Les personnes qui sont responsables de cette base de données veulent fusionner certaines zones ensemble, par exemple, Oslo et Berlin. Alors que ces deux villes (et d'autres) n'ont pas forcément toujours eu la même heure * La base est censée référencer tous les changements depuis 1970 * mais en fusionnant plusieurs zones, le risque est de perdre l'historique pré-1970 Recap Spring.io : * [Récap Jour 1](https://tanzu.vmware.com/content/blog/springone-2021-day-1-recap-and-highlights) * [Récap Jour 2](https://tanzu.vmware.com/content/blog/springone-2021-day-2-recap-and-highlights) * [Récap en vidéo par Josh Long](https://www.youtube.com/watch?v=VMtUzytjo6Y) * [State of Spring 2021](https://www.youtube.com/watch?v=O0-IhAKnkWM) * les chiffres: * 61% des sondés utilisent spring boot * 94% d'entre eux pour faire des micro services * 35% sur des architectures reactive * 61% voudraient passer sur du natif d'ici 2 ans * Nouvelle baseline pour Spring Framework 6.0 * Java 17 et Jakarta EE 9 dès la 6.0 M1 de Spring Framework qui arrive Q4 2021 (GA en Q4 2022) * Spring Native arrive dans Spring Framework * Compilation AOT bénéficiera aux déploiements JVM aussi * Spring Boot starter pour applications natives * Spring Boot proposera des plugin de build et configuration native dès la 3.0 * Support de RSocket and GraphQL * Spring Observability passe dans Spring Framework * API unifiée pour les metrics et le tracing, compatible Micrometer, Wavefront, Zipkin, Brave et OpenTelemetry * intégration consistante dans tout le portfolio * auto configuration dans Spring Boot 3.0 * Core abstractions dans Spring Framework 6.0 * [Spring Native](https://springone.io/2021/sessions/spring-native) * [De Spring framework 5.3 à 6.0](https://springone.io/2021/sessions/from-spring-framework-5-3-to-6-0) ### Infrastructure (suite annonces Spring.io) [Tanzu Application Platform](https://tanzu.vmware.com/content/blog/announcing-vmware-tanzu-application-platform) : * plateforme livrée avec toute la chaine d'outils mais configurable si les équipes préfèrent utiliser d'autres outils que ceux proposés * compatible AKS, EKS, GKS et TKG. * application accelerator (inspiré par spring initializer) pour générer les templates des applications qui seront ensuite déployées * Spring Cloud Gateway for K8s and API Portal for VMware Tanzu [Tanzu Community Edition](https://tanzu.vmware.com/content/blog/vmware-tanzu-community-edition-announcement) : * Version OSS de Tanzu ### Cloud [Azure installe des agents dans son image linux et ils sont vulnérables aux auto update](https://www.wiz.io/blog/secret-agent-exposes-azure-customers-to-unauthorized-code-execution) * Lié à OMI (open management infrastructure, l'équivalent de Windows Management Infrastructure (WMI) pour les systèmes UNIX qui s'exécute en root avec tous les privilèges * Dès qu'on utilise des services comme azure log, ils l'installent dans les VMs * L'article dit que c'est la faute à l'open source et que seulement 20 contributeurs. C'est un peu BS. * En fait si c'est installé via un service le service le mettra à jour * Mais MS recommande de mettre à jour manuellement aussi ### Web [Julia Evans nous explique CORS](https://twitter.com/b0rk/status/1445039796804542473) * Julia explique comment se comporte le navigateur qui voit qu'on essaie d'accéder à une URL différente de celle du domaine de la page web chargée, et le navigateur se demande s'il a le droit de charger cette page * Il va faire un “preflight” request (avec une méthode HTTP OPTIONS) pour savoir s'il a le droit ou non, puis si c'est le cas, pourra accéder à la resource * Julia explique la same-origin policy (càd qu'on ne doit accéder que des resources du domaine qu'on est en train de visiter dans son navigateur) ### Data [Kafka 3.0](https://blogs.apache.org/kafka/) * Le support Java 8 et Scala 2.12 est déprécié et sera retiré en version 4 * Nouvelles améliorations sur KRaft, le méchanisme de consensus qui remplacera à terme ZooKeeper ### Outillage [TravisCI fait un petit partage de vos secrets dans toutes les PRs de vos repos par accident](https://arstechnica.com/information-technology/2021/09/travis-ci-flaw-exposed-secrets-for-thousands-of-open-source-projects/) * le problème a duré 8 jours * rotation des secrets recommandé * Travis a patché discretement sans disclosure initialement ce qui a fait un raffut ### Architecture [Facebook est tombé pendant environ 6H ](https://engineering.fb.com/2021/10/05/networking-traffic/outage-details/) * Facebook prévoit de faire une maintenance sur son backbone (classique) * Un ingénieur lance par erreur une commande qui declare l'ensemble du backbone inaccessible * Oups, le système d'audit qui devrait empêcher de lancer une telle commande est buggé, la commande passe ... * Toute l'infra de Facebook est désormais déconnectée du net. Les avertissements BGP sont stoppées puisque l'infra FaceBook n'est plus dispo et les DNS déprovisionnent les entrées FaceBook, le monde ne peut plus accéder à FaceBook * Les ingé comprennent vite le problème sauf que ils ont perdus les accès remotes aux services et la plupart de leurs systèmes internes sont KO à cause du retrait des DNS * Ils envoient donc du personnel sur site dans les datacenters pour physiquement remettre en service l'infra mais l'accès physique aux machines est super protégé * Ils finissent par y arriver SAUF que le fait de tout redémarrer pause un vrai challenge du fait de l'affluence du traffic qui reprend. Ils risquent de refaire tomber les datacenters du fait de la surcharge électrique. (sans parler de sproblèmes plus haut niveau comme le rechargement des caches etc) * Heureusement ils ont un plan de reprise qu'ils testent régulièrement qui est plutôt prévu dans le cadre d'une tempête qui mettrait HS tout ou partie du réseau. Ce système marche bien et tout rentre dans l'ordre petit à petit, Facebook est sauvé, la planète a reperdu 5 points de QI * [Julia Evans explore BGP et son fonctionnement dans cet article](https://jvns.ca/blog/2021/10/05/tools-to-look-at-bgp-routes/) * [Vu de dehors avec Cloudflare](https://blog.cloudflare.com/october-2021-facebook-outage/) * Impact non seulement du DNS mais des routes BGP elles même. Ces routes disent qu'une IP (our série d'IP) appartient à une personne donnee. * Fondamentalement modèle de confiance. * Intéressant de voir comment Facebook DNS down ajouté beaucoup de traffic aux serveurs de DNS principaux qui ne cachent pas le SERVFAIL ### Sécurité [Fuite massive de données chez Twitch](https://cyberguerre.numerama.com/13464-fuite-sur-twitch-revenus-de-streameurs-4-questions-sur-le-leak-colossal-qui-frapperait-la-plateforme.html) * Quoi ? * l'intégralité du code source * Les revenus (sur 3 ans) de plus de 10 000 streamers Twitch ont été publiés sur le net. * certains codes d'accès AWS * attention c'est la partie 1, il pourrait y avoir d'autres données prochainement * Comment ? * Officiellement suite à une erreur dans un changement de config * Officieusement c'est plus probablement un employé ou un ex employé * Pourquoi ? * le message sur 4chan dénonce un « un cloaque toxique dégoûtant », ce qui pourrait faire référence aux problèmes de harcèlements et de raids hostiles visant des streameurs et des streameuses en raison de leur origine ethnique, de leur orientation sexuelle ou genre. * il est aussi question d'une revendication à une concurrence plus saine dans le secteur du streaming de jeu vidéo ## Conférences [DevFest Nantes les 21 et 22 octobre 2021](https://devfest.gdgnantes.com/) [DevFest Lille le 19 novembre 2021](https://devfest.gdglille.org/) [SunnyTech les 30 juin et 1er juillet 2022 à Montpellier](https://sunny-tech.io/) ## Nous contacter Soutenez Les Cast Codeurs sur Patreon [Faire un crowdcast ou une crowdquestion](https://lescastcodeurs.com/crowdcasting/) Contactez-nous via twitter sur le groupe Google ou sur le site web

Last Week in .NET
Exceptionally Useful

Last Week in .NET

Play Episode Listen Later Jun 14, 2021 4:39


We've come down from build and gotten back to the grind. Two releases this week followed by a ton of interesting stuff that's happening in the .NET Space..NET 5.0.7 has been released and it's a small release that fixes CVE-2021-31957. In the same vein, .NET Core 3.1.16 has been released and it fixes the aforementioned CVE.Microsoft's Kate Crawford says “AI is neither artificial nor intelligent and I've never agreed with a headline more.End to End encryption coming to Microsoft Teams which will send corporate legal compliance teams into tizzies. So I'll assume that it's “End to End” but your employer will probably have keys to decrypt and record it, because that's who's paying the tab.There's a design proposal to make Directory.Build.targets just work and as someone who is still very scared of MSBuild, I hope this is means fewer nightmares.MSTIC helped the FBI confiscate the hacker's wallet from the Colonial Pipeline ransomware hack and they're being mum on what ‘help' means. Some commenters note that Windows 10 has a built in keylogger; and I'm seriously reconsidering linux.Visual Studio now supports deep links for git pull requests and the 1990s called and asked for royalties on this tech.First known Malware targetting windows containers but everyone is safe because no one uses windows containers. Also if you are forced to use Windows Containers I have to assume that's about the 20th worst part of your job.Jet Brains Rider ‘Must Use' Plugins. Selling Microsoft based developers on a better IDE is like selling shoes to the cobbler's kids. I respect Jetbrains here but it's always going to be an uphill battle. JetBrains has another blog post just released titled “Import settings from Visual Studio and Visual Studio Code to JetBrains Rider” In case you wanted more evidence of that uphill battle.The .NET Community Standup asks “What's new with Blazor” in this video. What's new, Blazor?Do you need to inject text into an ASP.NET Core Response? Rick Strahl has you covered this is over a year old but still the best resource if you need to rewrite the response in ASP.NET Core.Immo Landwerth wants to make Exception.ToString() useful and if accomplished I'd like to have Immo's babies. Only one of these statements is a joke and I'll leave that to you to decide which one.Azure App Service supports .NET 6 Preview on Linux and Windows Early Access according to Byron Tardif (@bktv99 on twitter).Visual Studio Code 1.57 has been released and there will come a tipping point where new features gives it a similar bloat profile to Visual Studio. It's like the Wilford Brimley line for software.Rediscovering Implicit Casts or as I like to think about it “More than you ever wanted to know about implicit casting in C#.Christina Warren shows us that comic sans makes a pretty good mono-spaced font and I hate myself for how much I like this.And that's it for what happened Last week in .NET.

Modernize or Die ® Podcast - CFML News Edition
Modernize or Die® - CFML News for May 18th, 2021 - Episode 104

Modernize or Die ® Podcast - CFML News Edition

Play Episode Listen Later May 18, 2021 86:36


2021-05-18 Weekly News - Episode 104Watch the video version on YouTube at https://youtu.be/XADBSOM1CGs Hosts: Gavin Pickin - Software Consultant for Ortus SolutionsLuis Majano - Owner of Ortus SolutionsThanks to our Sponsor - Ortus SolutionsThe makers of ColdBox, CommandBox, ForgeBox, TestBox and almost every other Box out there. A few ways  to say thanks back to Ortus Solutions:- Like and subscribe to our videos on youtube. - Sign up for a free or paid account on CFCasts, which is releasing new content every week- Buy Ortus’s new Book - 102 ColdBox HMVC Quick Tips and Tricks on GumRoad (http://gum.co/coldbox-tips)Patreon SupportWe have 37 patreons providing 84% of the funding for our Modernize or Die Podcasts via our Patreon site: https://www.patreon.com/ortussolutions. If you love our podcasts and all we do for the #coldfusion #cfml community considers chipping in, we are almost there!https://www.ortussolutions.com/blog/we-need-your-help News and EventsCommandBox 5.3.1 ReleasedThe sql command is brand new in 5.3.1 as well thanks to Scott and Brad. cat myfile.json | sql select=id,name where="name like '%sql%'" orderby=name limit=3You can pipe in any JSON representation of data and filter it on the fly with QoQWhich pairs nicely with the table printer and this new import/export module that supports different file formatshttps://www.ortussolutions.com/blog/commandbox-531-releaseFusionReactor 8.7.1 ReleasedFusionReactor 8.7.1 was released on May 12th. Included are improvements to both the support chat and Redisson async tracking, as well as various bug fixes.https://www.fusion-reactor.com/download-fusionreactor/ ColdBox Validation 3.1 ReleasedcbValidation v3.1 was released on May 17th.  Included 6 new validators, 3 new mixins and a new functional approach to validation.https://www.ortussolutions.com/blog/cbvalidation-v310-releasedState of the CF Union SurveyHelp us find out the state of the CF Union – what versions of CFML Engine do people use, what frameworks, tools etc. We will share the summary results with everyone who completes the survey so that you can see how you compare with other CF developers.Spread the news so we can get as many responses as possible.https://teratech.com/state-of-the-cf-union-2021-survey ICYMI - Bintray decommissioning - Adobe Docker image updateOn May 1, 2021, all Bintray services will be deprecated, and your accounts will be disabled. For more information, see the official Bintray blog. This means that the ColdFusion, Performance Monitoring Toolset, and API Manager containers for the versions 2016/2018/2021 will no longer be accessible. This may lead to interruption in your automation scripts and other CI/CD pipelines.We have moved all the containers to ColdFusion downloads. You’ll load the tar file in Docker and then run ColdFusion or the other tools.https://coldfusion.adobe.com/2021/04/bintray-decommissioning/ICYMI - FusionReactor Webinar - Reach for the Clouds with FusionReactorMay 12, 2021 05:00 PM in Amsterdam, Berlin, Rome, Stockholm, Vienna8am PST, 10am CSTFusionReactor APM has been available as a cloud-based or SaaS solution for a few years now. This webinar will reveal what additional capabilities and benefits this platform has to offer (on top of everything which FusionReactor on-premise provides). We will also answer questions about licensing, data retention and technical aspects of expanding to the cloud.Recording: https://www.youtube.com/watch?v=YO6CYkY6TzM Adobe Webinar Series - API Creation and Management - One leftNext Webinar:  5/24/21ColdFusion Developers, do you want a first hand look at publishing APIs securely and at scale? Then mark your calendars for Brian Sappey’s upcoming webinars! This seven-part series will give you a 360 degree view of the API Manager and teach you how to build RESTful APIs with Adobe ColdFusion. Everything from securing, publishing and monitoring APIs, will be covered with hands-on examples, and easy discussions.Dates: 3/24/21, 3/25/21, 4/28/21, 4/29/31, 5/12/21, 5/13/21, 5/24/21Information: https://coldfusion.adobe.com/2021/03/webinar-series-api-creation-management/ Registration: https://coldfusion-api-management-solution.meetus.adobeevents.com/?fbclid=IwAR2q7aEI9u1ibBKrneeDvAhKWWW7V78bB_P1rTzWAh8x4e20q68gXLeMVrMRecordings: https://t.co/ZQc637BSkv (2 videos posted)Ortus Webinar for May - What's new in CommandBox 5.3 with Brad WoodFriday, May 21st at 11:00 AM CTCome learn with Brad Wood about all the new features and tricks in the newest CommandBox releases, including versions 5.1.0, 5.2.0, and 5.3.0.Register: https://us02web.zoom.us/meeting/register/tZ0kdeytrTMrHdW9ahnIZvSQJdRZalO7yeBn Webinar Page: https://www.ortussolutions.com/events/webinarsCFCasts Content Updateshttp://www.cfcasts.com Just ReleasedCommandBox: Zero to Hero Workshop (https://cfcasts.com/series/commandbox-zero-to-hero) Cattle Servers & Service Manager CFConfig Guidelines for Your Code  Object-Oriented Programming with Nolan Erck (https://cfcasts.com/series/oop-series) Var Scoping Static Properties and Methods Encapsulation and Cohesion Don't forget - the first 4 videos in this series are FREEComing this weekObject-Oriented Programming with Nolan Erck (https://cfcasts.com/series/oop-series) Abstractions Single Responsibility Features of Good Design: Code Reuse, Extensibility, Testability Coming up soon More What’s new with ColdBox 6 Up and Running with Quick LogBox 101 Using DocBox Send your suggestions at https://cfcasts.com/supportConferences and TrainingAdobe ColdFusion Developers WeekJune 22-24, 2021 - OnlineCoders, mark your calendars for Adobe ColdFusion Developer Week 2021!Coders, Adobe ColdFusion Developer Week 2021 is edging closer! This year, we’ve lined up a series of sessions and webinars that will give you a 360-degree view of ColdFusion 2021’s brand new features and updates. Right from developing cloud-native applications to reducing downtime, these webinars will let you in on the best tips to deploy applications rapidly and seamlessly.This is your chance to meet coders from across the globe and exchange ideas with some of the best minds in the industry. And that’s not all! Your presence at the conference will earn you points that can help you win exciting prizes and vouchers. Our scoreboard will keep track of active participation!Whether you’re a new developer, someone with little or no experience with Adobe ColdFusion, or even if you have been using it all your life, Adobe ColdFusion Developers Week 2021 is where you need to be. Don’t miss out!https://adobe.vconfex.com/site/adobe-coldfusion-developer-week/977ICYMI - AWS Summit Online - AmericasMay 12-13Online and Free AWS Summit Online is designed for developers and IT professionals looking to learn how to build and innovate at scale using AWS Cloud. Hear the very latest from AWS executives, attend breakout sessions featuring customer stories, and engage with AWS experts to get your questions answered. Enhance your skills with hands-on labs and workshops, learn from inspiring demos, and discover what AWS and our Partner Solutions can do for your business.This free online conference is designed to educate you about AWS services; and help you design, deploy, and operate infrastructure and applications.https://aws.amazon.com/events/summits/online/americas/ Google I/O - THIS WEEKMay 18-20 - Online and Free for EveryoneConnect with developers from around the world at this year's virtual Google I/O for thoughtful discussions, hands-on learning with Google experts, and a first look at our latest developer products.https://events.google.com/io/ MS BuildMay 25-27Learn. Connect. Code. Explore what’s next in tech and the future of hybrid work. Find solutions, sharpen skills, and find what you can add to your toolbox at this year’s event.https://mybuild.microsoft.com/home DockerConMay 27th 2021DockerCon 2021 is a free, one-day virtual event that is a unique experience for developers and development teams who are building the next generation of modern applications. If you want to learn about how to go from code to cloud fast and how to solve your development challenges, DockerCon 2021 offers engaging live content to help you build, share and run your applications.Call for Speakers open until Midnight April 1sthttps://www.docker.com/dockercon-live/2021 Apple WWDC21 - Glow and beholdJune 7-11The Apple Worldwide Developers Conference is coming to a screen near you, June 7 to 11. Join the worldwide developer community for an all-online program with exciting announcements, sessions, and labs at no cost. You’ll get a first look at the latest Apple platforms, tools, and technologies — so you can create your most innovative apps and games yet.Learn about this year’s Swift Student Challenge, and stay tuned for additional details.https://developer.apple.com/wwdc21/ Ortus’s Conferences for 2021ITB Online or In Person - Survey went out to ask would you be willing to attend in personSeptember 2021Call for speakers coming soon (once we decide online or in person)Survey for onsite or nothttps://us1.list-manage.com/survey?u=09b13d89e6ce4c287f4c1f1b0&id=936054da77&e=44c477cc32&ITB LatamDecember 2021More conferencesNeed more conferences, this site has a huge list of conferences for almost any language/community.https://confs.tech/CFML Is now on the list - https://confs.tech/conferences/new Blogs, Tweets and Videos of the WeekBlog - Matthew Clemente - TIL: The Easiest Way to Select the Last 30 Days (or Any Interval) in PostgreSQLThanks to my ignorance, PostgreSQL is an ongoing source of TILs. Today, I learned about using interval to easily select a range of time.While reviewing data from a logging table, I needed to select records from the past 30 days. On a whim, I decided to see if PostgreSQL provided any clever ways to do this. My searches lead me to learn about a new data type: interval.1 Here’s a link to the docs, as well as the post I stumbled upon that demonstrated how to write this type of query. Let’s take a closer look.https://blog.mattclemente.com/2021/05/18/postgresql-select-date-range.html Blog - Luis Majano - Ortus Solutions - cbValidation v3.1.0 ReleasedI am so excited to bring you the release of cbValidation to version 3.1.0. This has been a great collaboration between Wil De Bruin and Eric Peterson. Thanks so much guys for all that you do for open source. You can see all of the release notes below with some of the major improvements of this release. To get this release make sure you are already on version 3.x and use CommandBox: box update cbvalidation. You can find the release notes here: https://coldbox-validation.ortusbooks.com/intro/release-history/whats-new-with-3.1.0  and you can view all the new documentation here: https://coldbox-validation.ortusbooks.com. Enjoy!https://www.ortussolutions.com/blog/cbvalidation-v310-released Blog - Zac Spitzer - Debugging Trick with Echo()@micstriit showed me a nice debugging trick with echo()https://dev.lucee.org/t/nice-echo-trick-working-with-try-catch/8338 Blog - Adam Cameron - CFWheels: running TestBox instead of RocketUnitCFWheels ships with its own inbuilt (albeit third-party) testing framework. I discuss its merits in an earlier article: "Testing: A Horror Story". You can probably work out my opinion of the inbuilt testing framework - RocketUnit - from the title. That's really all you need to know to contextualise why I am now going to get TestBox working in a CFWheels context. One would expect that this would simply be a matter of installing TestBox and then using the CFWheels API to call methods on its classes to… um… use it. Not so fast there chief.https://blog.adamcameron.me/2021/05/cfwheels-running-testbox-instead-of.html Blog - Ben Nadel - GetBaseTagData() Works Differently In Adobe ColdFusion 2018 And Lucee CFML 5.3.7.47For a few weeks now, I've been slowly rolling out my ColdFusion custom tag DSL for HTML emails at InVision. And, it's been great! So, yesterday, I decided to start using it on my blog for the comment emails. However, InVision runs on Lucee CFML and my blog runs on Adobe ColdFusion 2018; and, it turns out that the getBaseTagData() function - which is a critical part of my DSL architecture - works completely different in the two ColdFusion runtimes.https://www.bennadel.com/blog/4050-getbasetagdata-works-differently-in-adobe-coldfusion-2018-and-lucee-cfml-5-3-7-47.htm Blog - Ben Nadel - Using The Elvis / Null Coalescing Operator To Loop Past Array Boundaries In Lucee CFML 5.3.7.47The Elvis / null coalescing operator (?:) in Lucee CFML allows us to evaluate expressions that have fallback values if the left operand results in a null / undefined value. It's a powerful operator; and, can even replace the safe-navigation operator under certain circumstances. One place that I've been using it lately is when looping over an Array wherein I need to "cycle back" to the opposite end of the array upon hitting a boundary condition. I feel like it expresses the intent of the code quite cleanly. As such, I wanted to make a quick demo in Lucee CFML 5.3.7.47.https://www.bennadel.com/blog/4049-using-the-elvis-null-coalescing-operator-to-loop-past-array-boundaries-in-lucee-cfml-5-3-7-47.htm Blog - Ben Nadel - Pro Tip: Using The say Voice Synthesis Command After A Long-Running TaskThis is a pro-tip that I picked up from Aaron Lerch - using the say voice synthesis command after a long-running command-line task. Often times, at work, I'll have to run some sort of compilation process that can take anywhere from a few seconds to a few minutes. And, in order to maximize my productivity, I'll use this compilation "down time" to perform other duties. However, so as to not let myself go down a rabbit hole, I'll append the say command so that I am alerted to the completion of the compilation.https://www.bennadel.com/blog/4048-pro-tip-using-the-say-voice-synthesis-command-after-a-long-running-task.htm Blog - Brad Wood - Ortus Solutions - Have you taken the State of the CF Union 2021 survey?Our friends at TeraTech help put together a comprehensive survey of the entire CFML community to get a feel for how it's evolving, what new technologies are getting picked up, and what the current pain points are.  We use this data at Ortus to help us decide what CF engines to support and how to help the community.https://www.ortussolutions.com/blog/have-you-taken-the-state-of-the-cf-union-2021-survey Guide - Lucee - Installing and running Lucee with CommandBox on Ubuntu 20.04 LTS Server and Apache2A step by step guide about installing and running Lucee with CommandBox behind Apache2 with AJP. The setup is made from a remote computer with Windows 10 using SSH X11 forwarding and Ubuntu's lightweight display manager lightdm from desktop interface xfce4. The first two steps are equal to the first two videos of the 'Installing Lucee on Ubuntu 20.04 LTS Server Apache2 - Video Guide'.https://docs.lucee.org/guides/installing-lucee/installation-linux/linux-install-ubuntu-commandbox.html Tweet - Brad Wood - Lucee TricksTwo fun Lucee tricks for today. You can pass a Java InputStream into toString() and get back a single String without looping over the stream manually.toString( inputStream )Also, arrays can be dereferenced as arr[42]ORarr.42 and both work the same. #CFML #ColdFusionhttps://twitter.com/bdw429s/status/1392489753728192518 https://twitter.com/bdw429s Blog - Matthew Clemente - Group By or Order By Column Position in a SQL QueryFile this under interesting SQL features that I just learned - you can GROUP BY and/or ORDER BY the numeric column position in your SELECT statement, rather than writing out the full column identifier. If that’s unclear, an example should help clarify.https://blog.mattclemente.com/2021/05/11/sql-group-order-by-column-position.html Tweet - James Moberg - Yes and No vs True and False.@coldfusion YES & NO strings are allegedly treated as boolean values, but boolean values YES/NO.CFHTTP throws a hard error if you pass true/false instead of stringified YES/NO values. (Lucee #cfml logically accepts both data types.)WORKAROUND: Use YesNoFormat(). #lamehttps://twitter.com/gamesover/status/1392175380040192005 https://twitter.com/gamesover Blog - Wil De Bruin - Using commandbox Lucee for production This question will come back now and then on the coldfusion and boxteam slack, and until recently I would say: no problem! As CTO and owner of a hosting company I decided this setup was capable for production for several of our customers. But I changed my mind, so let me explain.https://shiftinsert.nl/using-commandbox-lucee-for-production/ CFML JobsSeveral positions available on https://www.getcfmljobs.com/Listing over 125 ColdFusion positions from 54 companies across 93 locations in 5 Countries since Dec 1st.Full-Time - ColdFusion Developer at Bengaluru, Karnataka - India Posted May 15https://www.getcfmljobs.com/jobs/index.cfm/india/ColdFusion-Developer-at-Bengaluru-Karnataka/11272 Full-Time - Coldfusion Developer | 4 to 6 years |Mumbai & Bangalore - India Posted May 11https://www.getcfmljobs.com/jobs/index.cfm/india/Coldfusion-Developer-4-to-6-years-Mumbai-Bangalore-at-Mumbai-Maharashtra/11269 Ortus - Senior Developerhttps://www.ortussolutions.com/about-us/careersForgeBox Module of the WeekCommandBox Convert by Scott SteinbeckCommandbox Convert is a module for working with excel/csv data. The module utilizes the amazing lucee-spreadsheet created by Julian Halliwell. The module tries to handle some of the common use cases for working with table like data coming from a csv, excel, or any other valid JSON type data like an array, array of arrays, array of structs, or a JSON file.This module can: Convert a csv file to a serialized query for use in piping to other commands Converts table like data to excel Converts table like data to csv Converts table like data to json Converts table like data to PDF https://www.forgebox.io/view/commandbox-convert VS Code Hint Tips and Tricks of the WeekScreencast Mode - Built in to VS CodeVS Code's built-in screencast mode displays your keypresses and mouse clicks.This is useful when presenting VS Code to an audience or when recording videos of VS Code being used.https://www.youtube.com/watch?v=Zp-3a0BYTFo Thank you to all of our Patreon SupportersThese individuals are personally supporting our open source initiatives to ensure the great toolings like CommandBox, ForgeBox, ColdBox,  ContentBox, TestBox and all the other boxes keep getting the continuous development they need, and funds the cloud infrastructure at our community relies on like ForgeBox for our Package Management with CommandBox. You can support us on Patreon here https://www.patreon.com/ortussolutions Bronze Packages and up, now get a ForgeBox Pro and CFCasts subscriptions as a perk for their Patreon Subscription. All Patreon supporters have a Profile badge on the Community Website All Patreon supporters have their own Private Forum access on the Community Website Our Patreons Don Bellamy Eric Hoffman David Belanger Gary Knight Giancarlo Gomez Jonathan Perret Mario Rodrigues Jeffry McGee - Sunstar Media John Wilson - Synaptrix  Yogesh Mathur Joseph Lamoree Ben Nadel Brett DeLine Carl Von Stetten Charlie Arehart Dan Card Daniel Garcia Didier Lesnicki Edgardo Cabezas Jan Jannek Jason Daiger Jeff McClain Jeremy Adams Jonas Eriksson Jordan Clark Kai Koenig Laksma Tirtohadi Leon Seremelis Matthew Darby Matthew Clemente Mingo Hagen Patrick Flynn Ross Phillips Scott Steinbeck Stephany Monge Steven Klotz Wil de Bruin  (bru-hine) You can see an up to date list of all sponsors on Ortus Solutions' Websitehttps://ortussolutions.com/about-us/sponsors ★ Support this podcast on Patreon ★

Modernize or Die ® Podcast - CFML News Edition
Modernize or Die® - CFML News for April 27th, 2021 - Episode 101

Modernize or Die ® Podcast - CFML News Edition

Play Episode Listen Later Apr 27, 2021 79:46


2021-04-27 Weekly News - Episode 101Watch the video version on YouTube at https://youtu.be/_leAN4KNezY Hosts: Gavin Pickin - Software Consultant for Ortus SolutionsBrad Wood - Software Consultant for Ortus SolutionsThanks to our Sponsor - Ortus SolutionsThe makers of ColdBox, CommandBox, ForgeBox, TestBox and almost every other Box out there. A few ways  to say thanks back to Ortus Solutions: Like and subscribe to our videos on youtube.  Sign up for a free or paid account on CFCasts, which is releasing new content every week Buy Ortus’s new Book - 102 ColdBox HMVC Quick Tips and Tricks on GumRoad Patreon SupportWe have 36 patreons providing 83% of the funding for our Modernize or Die Podcasts via our Patreon site: https://www.patreon.com/ortussolutions. If you love our podcasts and all we do for the #coldfusion #cfml community considers chipping in, we are almost there!https://www.ortussolutions.com/blog/we-need-your-help News and EventsWe made it to 100 Episodes!!So to thank our supporters, we decided to do a little raffle giveaway.To enter the raffle, contestants had to answer 5 Ortus Trivia questions on the google form, and we selected 5 winners, each to get boxlife swag packages.The winners are:  David Belanger Scott Steinbeck Wil de Bruin Matthew Clemente Matthew Brown Adobe’s ColdFusion Certification price dropsAdobe Certified Professional: Adobe ColdFusion is an industry-leading certification program from Adobe, for Adobe ColdFusion developers. The course consists of 50+ online videos and is designed for professionals who have basic to advanced level proficiency in any computer language and basic understanding of how web pages work. Successfully passing an assessment test at the end of the program will reward participants with a badge and certificate from Adobe. Only $149https://www.adobe.com/products/coldfusion-family/certificate.html Eric’s pull merged into PostGres driver repoEric’s adventure into the PostGres driver successful, with the merge completed this week.Adobe Webinar- Building modern web apps with ContentBox Modular CMS with Luis MajanoMay 5, 2021 - 12 PM ET ContentBox is a professional open source modular content management system powered by ColdBox HMVC and ColdFusion.  In this session, we will get an overview of this CMS platform and how you can leverage to not only deliver content based applications, but any modern web application thanks to its powerful headless API and ColdBox services.https://cfwebinar-modularcms.meetus.adobeevents.com/ Adobe Webinar Series - API Creation and ManagementNext Webinar:  4/28/21ColdFusion Developers, do you want a first hand look at publishing APIs securely and at scale? Then mark your calendars for Brian Sappey’s upcoming webinars! This seven-part series will give you a 360 degree view of the API Manager and teach you how to build RESTful APIs with Adobe ColdFusion. Everything from securing, publishing and monitoring APIs, will be covered with hands-on examples, and easy discussions.Dates: 3/24/21, 3/25/21, 4/28/21, 4/29/31, 5/12/21, 5/13/21, 5/24/21Information: https://coldfusion.adobe.com/2021/03/webinar-series-api-creation-management/ Registration: https://coldfusion-api-management-solution.meetus.adobeevents.com/?fbclid=IwAR2q7aEI9u1ibBKrneeDvAhKWWW7V78bB_P1rTzWAh8x4e20q68gXLeMVrMRecordings: https://t.co/ZQc637BSkv Online CF Meetup - "Installing CF2021: choices, challenges, and solutions", with Charlie ArehartThursday, April 29, 202111:00 AM to 12:00 PM CDTIf you're considering moving to CF2021, there are some things to consider before or as you may install it. First, there’s a new “zip” install option, in addition to the traditional full installer. What’s that about? why should you use it? what are some challenges, and why might you not want to? We'll cover that...https://www.meetup.com/coldfusionmeetup/events/277816061/ ICYMI - Ortus Webinar - Building modern web apps with ContentBox Modular CMS with Luis MajanoApril 23, 2021 Time: 11:00 AM CTContentBox is a professional open source modular content management system powered by ColdBox HMVC and ColdFusion. In this session, led by Luis Majano, we will get an overview of this CMS platform and how you can leverage it to not only deliver content based applications, but any modern web application thanks to its powerful headless API and ColdBox services.https://www.ortussolutions.com/events/webinars Recordings: https://cfcasts.com/series/webinars-2021/videos/luis-majano-on-building-modern-web-apps-with-contentbox-modular-cms Reminder: New Book from Luis Majano 102 ColdBox HMVC Quick Tips and TricksNow Available on Gumroad - $29http://gum.co/coldbox-tips Signup with your email for 10 free tipshttps://www.ortussolutions.com/learn/books/102-tips-tricks CFCasts Content Updateshttps://www.cfcasts.com CFCasts site updates!Just Released- Ortus Webinars - Luis Majano on Building Modern Web Apps With ContentBox Modular CMS  https://cfcasts.com/series/webinars-2021/videos/luis-majano-on-building-modern-web-apps-with-contentbox-modular-cms  Coming up soon More CommandBox Zero to Hero More What’s new with ColdBox 6 Up and Running with Quick LogBox 101 Using DocBox Send your suggestions at https://cfcasts.com/supportConferences and TrainingICYMI - RedisConf 2021Virtual: Apr 20-21Rediscover the power of real-time data. Join us at RedisConf 2021 to hear from the Redis community, customers, and industry experts. Dive into the latest product experiences, get hands-on training, network with other Redis pros, and show off your skills by participating in a $100,000 hackathon.https://redislabs.com/redisconf/ Recordings: Register for RedisConf 2021 - Watch on demand until May 20Atlassian Teams 21Apr 28-30 Better teams starts with being better teammates. Check out Atlassian’s vision for Team 2021, formerly Summit.https://events.atlassian.com/team21 AWS Summit Online - AmericasMay 12-13Online and Free AWS Summit Online is designed for developers and IT professionals looking to learn how to build and innovate at scale using AWS Cloud. Hear the very latest from AWS executives, attend breakout sessions featuring customer stories, and engage with AWS experts to get your questions answered. Enhance your skills with hands-on labs and workshops, learn from inspiring demos, and discover what AWS and our Partner Solutions can do for your business.This free online conference is designed to educate you about AWS services; and help you design, deploy, and operate infrastructure and applications.https://aws.amazon.com/events/summits/online/americas/ Percona Live OnlineMay 12 - 13, 6:00 AM (EDT)Percona Live is a community-focused event for database developers, administrators, and decision-makers to network with peers and technology professionals. Come learn from the best and brightest in the open source database community as they share their knowledge, experience, and use cases with you in small group sessions and tutorials.https://events.percona.com/events/details/percona-virtual-presents-percona-live-online/ DockerConMay 27th 2021DockerCon 2021 is a free, one-day virtual event that is a unique experience for developers and development teams who are building the next generation of modern applications. If you want to learn about how to go from code to cloud fast and how to solve your development challenges, DockerCon 2021 offers engaging live content to help you build, share and run your applications.Call for Speakers open until Midnight April 1sthttps://www.docker.com/dockercon-live/2021 Ortus Workshops - Dates coming soonMore Workshops dates to come- CommandBox Zero to Hero- ColdBox Zero to Hero- ColdBox Hero to SuperHeroOrtus’s Possible Conferences for 2021Dates subject to changeDue to Online conference overload, we are thinking about not expanding the number of events, but more content in more timezones with a different format.ITB - Developer Week Style?? - (please be in-person!!!)With some European Timezone Friendly slots from our European Community MembersSeptember 2021Call for speakers coming soonITB LatamDecember 2021More conferencesNeed more conferences, this site has a huge list of conferences for almost any language/community.https://confs.tech/CFML Is now on the list - https://confs.tech/conferences/new Blogs, Tweets and Videos of the WeekBlog - David Byers - ColdFusion 101: Tags, Script and Functions, Part 3 – FunctionsThis is an on-going series of posts covering ColdFusion basics for new developers.  This series is intended to cover basic concepts.  In this article, I over the building blocks of ColdFusion; Tags, Script, and Functions, focusing on functions.https://coldfusion.adobe.com/2021/04/coldfusion-101-tags-script-functions-part-3-functions/ Blog - David Byers - ColdFusion 101: Tags, Script and Functions, Part 2 – ScriptThis is an on-going series of posts covering ColdFusion basics for new developers.  This series is intended to cover basic concepts. In this article, I over the building blocks of ColdFusion; Tags, Script, and Functions, focusing on script.https://coldfusion.adobe.com/2021/04/coldfusion-101-tags-script-functions-part-2-script/ Blog - Charlie Arehart - New updates released for Java 8 and 11, April 20 2021For those using the Long-term support (LTS) versions of Oracle Java, 8 and 11, please note that there were new updates released last week (Apr 20), specifically Java 11.0.11 and 8.0_291. For more on each, see the release notes.https://www.carehart.org/blog/client/index.cfm/2021/4/26/new_java_updates_for_Java_8_and_11_as_of_Apr_2021 Blog - Computer Know How - Why I ask “dumb” questionsPart of my current work involves quality assurance(QA) for the code that our team writes. When I started performing QA work, I wanted to understand each feature and piece of code before I tested/reviewed it. That approach is still sometimes required depending on the feature being reviewed. As the amount of time I have spent performing this task accrues, I learn more and adapt my approaches. One such adaptation has been to test before I fully understand the feature. This allows me to test with less of a confirmation bias which I found I was falling into when I fully understood the feature and the code behind it.https://ckhconsulting.com/why-i-ask-dumb-questions/ Blog - Ben Nadel - Experimenting With Lazy Queries And Streaming CSV (Comma Separated Value) Data In Lucee CFML 5.3.7.47In my last post, I celebrated the power and simplicity of CSV (Comma Separated Value) data. It's an old data format; and yet, it continues to act as an easy medium for the interoperability of systems. ColdFusion makes generating CSV data effortless. And as I was demonstrating that much over the weekend, it occurred to me that CSV reporting may be a fun context in which to finally try out the lazy queries feature of Lucee CFML.https://www.bennadel.com/blog/4034-experimenting-with-lazy-queries-and-streaming-csv-comma-separated-value-data-in-lucee-cfml-5-3-7-47.htm Blog - Kishore Balakrishnan - Adobe - Continuous Integration (CI)/Continuous Delivery (CD) in ColdFusion 2021 ReleaseAs one of the fundamental backbones of DevOps, a CI/CD pipeline can provide many strategic advantages for your organization. In the 2016 release of Adobe ColdFusion, we first introduced Docker Image which made cloud-based applications, modern methodologies and automated development pipelines a reality. DevOps started to gain popularity and developers were able to speed up development, secure their codes and deploy in an automated step. Further, Adobe ColdFusion 2018 made it significantly easier to deploy complex cloud architecture, microservices, and in general non-monolithic apps.https://coldfusion.adobe.com/2021/04/continuous-integration-ci-continuous-delivery-cd-coldfusion-2021-release/ Blog - Adam Cameron - On code reviewI'm pretty big on code review; I see it as a critical part of the process of developing solution for our clients, and making our own and our colleagues' lives easier. It's a useful communications exercise, and it's a useful technical exercise.I've used a variation of these notes with a variety of teams in the past, but I've never - until recently - got around to writing a decent (semi-) generic document about it. I've polished things a bit here, and thought I'd get it down in a public-facing fashion. There are references in here to systems I am familiar working with like Bitbucket and Jira and PHP. But I think the guidance carries across, irrespective of what combination of tooling one uses; if not in the precise mechanics, then in the processes the mechanics facilitate.https://blog.adamcameron.me/2021/04/on-code-review.html Blog - Ben Nadel - Celebrating The Power And Simplicity Of CSV (Comma Separated Value) Data In Lucee CFML 5.3.7.47Yesterday, I learned that one of our clients at InVision uses our comment export feature as a critical part of their product development life-cycle. This feature takes comments from across an entire prototype and serves them up as a CSV (Comma Separated Value) file. It's amazing - and, frankly, delightful - that such a simple data format continues to be such a source of empowerment in an increasingly complex world. And, the best part of it all is that generating CSV files is one of the easiest things you can do! As such, I wanted to take a moment to celebrate the power and simplicity of generating CSV files in Lucee CFML 5.3.7.47.https://www.bennadel.com/blog/4033-celebrating-the-power-and-simplicity-of-csv-comma-separated-value-data-in-lucee-cfml-5-3-7-47.htm Blog - Matthew Clemente - Reading Specific Lines from a File with CFML (and a Question)This post touches on two subjects - the first involves reading a range of lines from a file in ColdFusion - and the second is a question: if you have a useful CFML function, where can you share it?I don’t have an answer to this, but I figured that at the least, this might be fodder for the next episode of Modernize or Die - CFML News. It certainly seems a worthwhile topic for discussing.https://blog.mattclemente.com/2021/04/23/reading-file-lines-with-coldfusion-cfml-snippets.html Blog - Pete Freitag - URL Safe Base64 Encoding / Decoding in CFMLColdFusion / CFML has a builtin function that can convert a string or a binary object to a standard Base64 encoded string: toBase64 and you can decode back to a string using toBinary() and toString() or the binaryDecode() function.https://www.petefreitag.com/item/917.cfm Blog - Ben Nadel - Expected And Unexpected getBaseTagData() Behavior In Lucee CFML 5.3.7.47In the implementation details of my ColdFusion custom tag DSL for HTML emails, I have to access the data exposed by ancestor custom tags. In some cases, the parent tag is dynamic; which means that I have to use the getBaseTagList() function in order to figure out the name of the ColdFusion custom tag that I need to access. It turns out that some native ColdFusion tags show up in the getBaseTagList() value; but, they do not expose any "data". As such, they have to be explicitly skipped-over. Things get even more complicated when you use CFModule to invoke a custom tag. And, since I stumbled over this in my journey, I figured it might be worth a quick demo in Lucee CFML 5.3.7.47.https://www.bennadel.com/blog/4031-expected-and-unexpected-getbasetagdata-behavior-in-lucee-cfml-5-3-7-47.htm CFML JobsSeveral positions available on https://www.getcfmljobs.com/Listing over 76 ColdFusion positions from 48 companies across 49 locations in 5 Countries since Dec 1st.6 new jobs this weekFull-Time - Senior/Mid-Level CF Developer at Remote - United States Post Apr 26https://www.getcfmljobs.com/viewjob.cfm?jobid=11221 Full-Time - Senior Software Engineer - ColdFusion Experience at Thiruvan.. - India Posted Apr 26https://www.getcfmljobs.com/jobs/index.cfm/india/Senior-Software-Engineer-ColdFusion-Experience-at-Thiruvananthapuram-Kerala/11223 Full-Time - Coldfusion Developer at Thiruvananthapuram, Kerala - India Posted Apr 26https://www.getcfmljobs.com/jobs/index.cfm/india/Coldfusion-Developer-at-Thiruvananthapuram-Kerala/11222 Freelance - Mid-Level Coldfusion Developer at Remote - United States Posted Apr 20https://www.getcfmljobs.com/jobs/index.cfm/united-states/MidLevel-CFDeveloper-FreelanceRemote/11219 Full-Time - ColdFusion Software Programmer at Sherwood Park, AB - Canada Posted Apr 20https://www.getcfmljobs.com/jobs/index.cfm/canada/ColdFusion-Software-Programmer-at-Sherwood-Park-AB/11220 Full-Time - Sr. Software Engineer - Java/ColdFusion at West Palm Beach, .. - United States Posted Apr 20https://www.getcfmljobs.com/jobs/index.cfm/united-states/Sr-Software-Engineer-JavaColdFusion-at-West-Palm-Beach-FL/11218 ForgeBox Module of the WeekJMESPath v2.4.0 by Scott SteinbeckAn implementation of JMESPath for ColdFusion. This implementation supports searching JSON documents as well as native Coldfusion structs and arrays.Will be part of the Core for CommandBox v5.3.0+ for native cfml JSON searching.https://www.forgebox.io/view/jmespath VS Code Hint Tips and Tricks of the WeekVSCode Highlight Matching TagThis extension highlights matching opening and/or closing tags. Optionally it also shows path to tag in the status bar. Even though VSCode has some basic tag matching, it's just that - basic. This extension will try to match tags anywhere: from tag attributes, inside of strings, any files, while also providing extensive styling options to customize how tags are highlighted.https://marketplace.visualstudio.com/items?itemName=vincaslt.highlight-matching-tagThank you to all of our Patreon SupportersThese individuals are personally supporting our open source initiatives to ensure the great toolings like CommandBox, ForgeBox, ColdBox,  ContentBox, TestBox and all the other boxes keep getting the continuous development they need, and funds the cloud infrastructure at our community relies on like ForgeBox for our Package Management with CommandBox. You can support us on Patreon here https://www.patreon.com/ortussolutions Bronze Packages and up, now get a ForgeBox Pro and CFCasts subscriptions as a perk for their Patreon Subscription. All Patreon supporters have a Profile badge on the Community Website All Patreon supporters have their own Private Forum access on the Community Website Don BellamyEric HoffmanDavid BelangerGary KnightGiancarlo GomezJonathan PerretMario RodriguesJeffry McGee - Sunstar MediaJohn Wilson - Synaptrix Yogesh MathurJoseph LamoreeBen NadelBrett DeLineCarl Von StettenCharlie ArehartDan CardDaniel GarciaDidier LesnickiEdgardo CabezasJan JannekJason DaigerJeff McClainJeremy AdamsJonas ErikssonJordan ClarkKai KoenigLaksma TirtohadiLeon SeremelisMatthew DarbyMatthew ClementeMingo HagenPatrick FlynnRoss PhillipsScott SteinbeckStephany MongeSteven KlotzYou can see an up to date list of all sponsors on Ortus Solutions' Websitehttps://ortussolutions.com/about-us/sponsors ★ Support this podcast on Patreon ★

Herzbergs Hörsaal: Informatik studieren mit den Ohren
OOP/Java: Objektorientierung — Ein Einstieg

Herzbergs Hörsaal: Informatik studieren mit den Ohren

Play Episode Listen Later Dec 9, 2020 62:00


Wir erstellen unsere ersten drei Klassen! Sie lernen dabei den Unterschied von Klassen- und Objektvariablen kennen und den von Klassen- und Objektmethoden. Dazu kommt noch der Konstruktor (auch eine Art Methode) und die Repräsentationsmethode toString. Damit haben Sie die wichtigsten Bausteine zum Aufbau von Klassen zur Hand. Der Link zum Foliensatz: https://drive.google.com/file/d/1GPr4PZKWwKM9x-vyjtT4Mm3eqq_OzQyI/view?usp=sharing Der Link zum Code: https://gist.github.com/denkspuren/3834dbd504c055bf811753da47c35d3e

PHP Internals News
PHP Internals News: Episode 71: What didn’t make it into PHP 8.0?

PHP Internals News

Play Episode Listen Later Nov 19, 2020


PHP Internals News: Episode 71: What didn’t make it into PHP 8.0? London, UK Thursday, November 19th 2020, 09:34 GMT In this episode of "PHP Internals News" we're looking back at all the RFCs that we discussed on this podcast for PHP 7.4, but did not end up making the cut. In their own words, the RFC authors explain what these features are, with your host interjecting his own comments on the state of affairs. The RSS feed for this podcast is https://derickrethans.nl/feed-phpinternalsnews.xml, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Transcript Derick Rethans 0:15 Hi, I'm Derick, and this is PHP internals news, a weekly podcast dedicated to demystifying the development of the PHP language. This is Episode 71. At the end of last year, I collected snippets from episodes about all the features that did not make it into PHP seven dot four, and I'm doing the same this time around. So welcome to this year's 'Which things were proposed to be included into PHP 8.0, but didn't make it. In Episode 41, I spoke with Stephen Wade about his two array RFC, a feature you wanted to add to PHP to scratch an itch. In his own words: Steven Wade 0:52 This is a feature that I've, I've kind of wish I would have been in the language for years, and talking with a few people who encouraged. It's kind of like the rule of starting a user group right, if there's not one and you have the desire, then you're the person to do it. A few people encouraged to say well why don't you go out and write it? So I've spent the last two years kind of trying to work up the courage or research it enough or make sure I write the RFC the proper way. And then also actually have the time to commit to writing it, and following up with any of the discussions as well. Steven Wade 1:20 I want to introduce a new magic method the as he said the name of the RFC is the double underscore to array. And so the idea is that you can cast an object, if your class implements this method, just like it would toString; if you cast it manually, to array then that method will be called if it's implemented, or as, as I said in the RFC, array functions will can can automatically cast that if you're not using strict types. Derick Rethans 1:44 I questioned him on potential negative feedback about the RFC, because it suggested to add a new metric method. He answered: Steven Wade 1:53 Beauty of PHP is in its simplicity. And so, adding more and more interfaces, kind of expands class declarations enforcement's, and in my opinion can lead to a lot of clutter. So I think PHP is already very magical, and the precedent has been set to add more magic to it with seven four with the introduction of serialize and unserialize magic methods. And so for me it's just kind of a, it's a tool. I don't think that it's necessarily a bad thing or a good thing it's just another option for the developer to use Derick Rethans 2:21 The RFC was not voted on and a feature henceforth did not make it into PHP eight zero. Derick Rethans 2:27 Operator overloading is a topic that has come up several times over the last 20 years that PHP has been around as even an extension that implements is in the PECL repository. Jan Bøhmer proposed to include user space based operator overloading for PHP eight dot zero. I asked him about a specific use cases: Jan Böhmer 2:46 Higher mathematical objects like complex numbers vectors, something like tensors, maybe something like the string component of Symfony, you can simply concatenate this string object with a normal string using the concat operator and doesn't have to use a function to cause this. Most basically this should behave, similar to a basic string variable or not, like, something completely different. Derick Rethans 3:16 For some issues raised during the RFC process and Jan explains to the most notable criticisms. Jan Böhmer 3:21 First of all, there are some principles of operator overloading in general. So there's also criticism that it could be used for doing some very weird things with operator overloading. There was mentioned C++ where the shift left shift operator is used for outputting a string to the console. Or you could do whatever you want inside this handler so if somebody would want to save files, or modify a file in inside an operator overloading wouldn't be possible. It's, in most cases, function will be more clear what it does. Derick Rethans 4:01 He also explained his main use case: Jan Böhmer 4:04 Operator overloading should, in my opinion, only be used for things that are related to math, or creating custom types that behave similar to build types. Derick Rethans 4:15 In the end, the operator overloading RFC was voted on. But ultimately declined, although there was a slim majority for it. Derick Rethans 4:24 In Episode 44, I spoke with Máté Kocsis about the right round properties RFC and asked him what the concept behind them was. He explained: Máté Kocsis 4:33 Write once properties can only be initialized, but not modified afterwards. So you can either define a default value for them, or assign them a value, but you can't modify them later, so any other attempts to modify, unset, increment, or decrement them would cause an exception to be thrown. Basically this RFC would bring Java's final properties, or C#'s read only properties to PHP. However, contrary to how these languages work, this RFC would allow lazy initialization, it means that these properties don't necessarily have to be initialized until the object construction ends, so you can do that later in the object's lifecycle. Derick Rethans 5:22 Write once properties was not the only concept that he had explored before writing this RFC. We discussed these in the same episode: Máté Kocsis 5:31 The first one was to follow Java and C# and require all right, once properties to be initialized until the object construction ends, and this is what we talked about before. The counter arguments were that it's not easy to implement in PHP, the approach is unnecessarily strict. The other possibility is to let unlimited writes to these properties, until object construction ends and then do not allow any writes, but positive effect of this solution is that it plays well with bigger class hierarchies, where possibly multiple constructors are involved, but it still has the same problems as the previous approach. And finally the property accessors could be an alternative to write once properties. Although, in my opinion, these two features are not really related to each other, but some say that property accessors could alone, prevent some unintended changes from the outside, and they say that maybe it might be enough. I don't share this sentiment. So, in my opinion, unintended changes can come from the inside, so from the private or protected scope, and it's really easy to circumvent visibility rules in PHP. There are quite some possibilities. That's why it's a good way to protect our invariance. Derick Rethans 7:02 In the end this RFC was the client, as it did not wait to two thirds majority required with an even split between the proponents and the opponents. Derick Rethans 7:11 Following on from Máté's proposal to add functionality to our object orientation syntax. I spoken Episode 49 with Jakob Givoni on a suggested addition COPA, or in full: contact object property assignments Jakob explains why he was suggesting to add this. Jakob Givoni 7:28 As always possible for a long time why PHP didn't have object literals, and I looked into it, and I saw that it was not for lack of trying. Eventually I decided to give it a go with a different approach. The basic problem is simply to be able to construct, populate, and send an object in one single expression in a block, also called inline. It can be like an alternative to an associative array: you give the data, a well defined structure, the signature of the data is all documented in the class. Derick Rethans 8:01 Of course people abuse associative arrays for these things at the moment, right. Why are you particularly interested in addressing this deficiency as you see it? Jakob Givoni 8:11 Well I think it's a common task. It's something I've been missing as I said inline objects, obviously literals for a long time and I think it's a lot of people have been looking for something like this. And also it seemed like it was an opportunity that seemed to be an fairly simple grasp. Derick Rethans 8:28 I also asked them what the main use case for this was. Jakob Givoni 8:32 Briefly, as I mentioned, they're data transfer objects, value objects, those simple associative arrays that are sometimes used as argument backs to constructors when you create objects. Some people have given some examples where they would like to use this to dispatch events or commands to some different handlers. And whenever you want to create, populate, and and use the object in one go, COPA should help you. Derick Rethans 9:04 COPA did also not make it into PHP eight with the RFC being the client nearly unanimously. The proposals by both Máté and Jakob where meant to improve PHP object syntax by helping out with common tasks. The implementation ideas of what they were trying to accomplish were not particularly lined up. This spurred on Larry Garfield to write a blog post titled: object ergonomics, which are discussed with him in Episode 51. I first asked him why he wrote this article: Larry Garfield 9:33 As you said, there's been a lot of discussion around improving PHP's general user experience of working with objects in PHP, where there's definitely room for improvement, no question. And I found a lot of these to be useful in their own right, but also very narrow, and narrow in ways that solve the immediate problem, but could get in the way of solving larger problems later on down the line. I went into this with an attitude of: Okay, we can kind of piecemeal attack certain parts of the problem space, or we can take a step back and look at the big picture and say: All right, here's all of the pain points we have, what can we do that would solve, not just this one pain point, but let us solve multiple pain points with a single change, or these two changes together solve this other pain point as well, or, you know, how can we do this in a way that is not going to interfere with later development that we talked about. We know we want to do, but hasn't been done yet. Are we not paint ourselves into a corner by thinking too narrow. Derick Rethans 10:40 The article mentions many different categories and possible solutions. I can't really sum these up in this episode because it would be too long. Although, Larry did not end up proposing RFC based on this article, it can be called responsible for constructor property promotions, which I discussed with Nikita Popov in Episode 53 and Named Arguments which are discussed with Nikita in Episode 59. Both of these made it into PHP 8.zero and cover some of the same functionality that Jakob's COPA RFC covered. I will touch on the new features that did make it into PHP 8.0 in next week's episode. There are two more episodes where discuss features that did not make it into PHP eight zero, but these are still under discussion and hence might make it into next year's PHP eight dot one. In Episode 57, I spoke with Ralph Schindler about his conditional code flow statements RFC. After the introduction, I asked what he specifically was wanting to introduce. Ralph Schindler 11:36 This is, you know, it's, it's very closely related to what in computer science is called a guard clause. And I used that phrase lightly when I originally brought it up on the mailing list but it's very close in line to that it's not necessarily exactly that, in terms of the syntax. In terms of like when you speak about it in the PHP code sense, it really is sort of a change in the statement. So putting the return before the if, that's really what it is. So a guard clause, it's important to know what that is is it's a way to interrupt the flow of control Derick Rethans 12:08 Syntax proposals are fairly controversial, and I asked Ralph about his opinions of the type of feedback that he received. Ralph Schindler 12:15 The smallest changes always get the most feedback, because there's such a wide audience for a change like this. Derick Rethans 12:23 The last feature that did not make it into PHP eight zero was property write/set visibility, which I discussed with André Rømcke in Episode 63. I asked him what his RFC was all about: Derick Rethans 12:34 What is the main problem that you're wanting to solve with what this RFC proposes? André Rømcke 12:40 The high level use case is in order to let people, somehow, define that their property should not be writable. This is many benefits in, when you go API's in order to say that yeah this property should be readable. But I don't want anyone else but myself to write it. And then you have different forms of this, you have either the immutable case where you, ideally would like to only specify that it's only written to in constructor, maybe unset in destructor, maybe dealt with in clone and so on, but besides that, it's not writable. I'm not going into that yet, but I'm kind of, I was at least trying to lay the foundation for it by allowing the visibility or the access rights to be asynchoronus, which I think is a building block from moving forward with immutability, read only, and potentially also accessors but even, but that's a special case. Derick Rethans 13:39 At the time of our discussion he already realized that it would be likely postponed to PHP eight dot one as it was close to feature freeze, and the RFC wasn't fully thought out yet. I suspect we'll hear more about it in 2021. With this I would like to conclude this whirlwind tour of things that were proposed but did not make it in. Next week I'll be back with all the stuff that was added to PHP for the PHP eight zero celebrations. Stay tuned. Derick Rethans 14:09 Thanks for listening to this installment of PHP internals news, the weekly podcast dedicated to demystifying the development of the PHP language. I maintain a Patreon account for supporters of this podcast, as well as the xdebug debugging tool. You can sign up for Patreon at https://drck.me/patreon. If you have comments or suggestions, feel free to email them to derick@phpinternals.news. Thank you for listening, and I'll see you next week. Show Notes Episode #41: __toArray() Episode #42: PECL overload Episode #44: Write Once Properties Episode #49: COPA Episode #51: Object Ergonomics Episode #57: Conditional Codeflow Statements Episode #63: Property Write/Set Visibility Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0

Last Week in .NET
August 1, 2020 - .NET Foundation: Friend or Foe?

Last Week in .NET

Play Episode Listen Later Aug 3, 2020 29:34


VB.NET "Not along for the ride" in .NET Core and .NET 5. Eject Mailman, eject.For those of you that were hoping for VB.NET to get some love in .NET 5, it doesn't look like it's going to happen. This is of course causing some consternation; but overall I get it. Visual Basic was written for a time when we really thought we could make a language look like english and not be laughed out of the room. Now we know better. VB.NET has done good things; and I know a few products even today that are still written in VB.NET; but look, it's time.Just look at the flowers, VB.NET.Visual Studio 2019 version 16.7 Preview 6 is now availableMost of us are probably on the Visual Studio stable channel, but if you like to get the previews (they're free), you can install them. Interesting to me is that this version adds support for XCode 11.6? I don't even know what this means but here we are and that sounds cool as $#&@.Microsoft .NET team is hiringYou can apply to become a Program Manager II on the .NET team. I thought about applying, but realized "allowing everyone to be their authentic selves" probably doesn't mean "Making fun of Microsoft on a daily basis". Seriously though, if you can move to Redmond, you should think about applying. .NET is entering its best years; and Microsoft is one of the better companies to work for.Microsoft's Roslyn team (the compiler for .NET) released a blogpost detailing productivity improvements:The Roslyn team released a new blog post detailing tooling fixes that are in Visual Studio 2019 16.6 that you may have missed.My favorites are the DateTime formatting changes. You no longer have to Google which combination of MMDDYYYY gets you what you want; they now provide that information in the intellisense when you use DateTime.ToString(). This is a long overdue feature and I'm glad they added it. Their code refactorings are getting better, though I still prefer Jetbrains Resharper..NET Foundation "State of the Foundation"The .NET Foundation released its State of the Foundation report for 2020. They have 800 members, which is a growth of 100% from last year, and 5 corporate sponsors, as well as its plan for the coming year. I'm glad to see this sort of transparency; and while I have some reservations about the .NET Foundation; this is a step in the right direction.They also released their budget; and this will get better, but they spent a grand total of $558 dollars on sponsorships this year. You'd hope to see that get much better, and that's the metric I'll be using to judge whether or not they're having the right impact on the .NET community.Stack Overflow infographic:Stack Overflow (the company) released its performance metrics for its collection of Q&A sites on stackexchange.com (What the company used to be named, but then realized that was a terrible name and changed to the same namesake as its flagship Q&A site). So anyway, if you want to know how 300+ Stack Exchanges perform, you'll want to see this.The sheer speed of the Stack Exchange network got the Hacker News folks all in a tizzy. Any day we can tout how well .NET performs and piss off hacker news is a good day..NET Conf - "Focus on Microservices".NET Conf held an all day conference to talk microservices; and I live tweeted it. I've got some pretty nasty scars (And a few fond memories) of working with Microservices; and if that sort of thing interests you, check my live thread on it. If your architect is practicing Resume driven development or you work with really large software teams, you should watch the videos with interest; for the rest of us, the conference probably isn't worth your time unless you really want to learn about some frameworks that can help you build Microservices in .NET.Pretty Fricking Cool Library of the Week (PFCLotW)This week's cool library is Bogus, which allows you to generate fake data for your application. It's a pretty neat library; and you should check it out. I've used it on quite a few occasions, and it's worth your time.In today's podcast episode; I'm diving deeper into what the .NET Foundation is, and whether it's "good for us" as a community in its current form. The episode should drop by Noon EDT (-4 UTC) today; so give it a listen if that's a subject that interests you.Transcript (Powered by otter.ai)George Stocker  0:00  Hi, I'm George Stocker, and welcome to last weekend dotnet. Vb dotnet is not along for the ride in dotnet core and dotnet five. Now for those of you who are hoping to get VB dotnet in dotnet, five, it doesn't look like it's going to happen. So of course, it's going to cause some consternation among VB dotnet developers, and I get it. Visual Basic was written for a time where we thought we could really make a language look like English and not be left out of the room. Now we know better. dB dotnet has done good things. And I know a few products today, they're still written in VB dotnet. But look, it's time Visual Studio 2019 version 16.7. Preview six is now available. Now this is pretty cool. You can actually get advanced versions of Visual Studio whatever the next minor version is, you can get advanced versions of it for free without a license, their preview and so they might have bugs in them, but you want to check out what's coming up in Visual Studio. It's always an interesting install. Now this one is interesting to me because it adds support for Xcode 11.6 I really don't know what this means. But I want to find out because this is really cool. Microsoft dotnet team is hiring, you can actually apply to become a program manager for the dotnet team at Microsoft, I thought about applying, but then realize that allowing everyone to be their authentic selves probably doesn't mean making fun of Microsoft on daily basis. Seriously, though, if you can move to Redmond, you should think about applying dotnet is is entering into its best years. And Microsoft really is one of the better large companies to work for Microsoft's rozlyn team. That's the team that produces the compiler for dotnet. They released a blog post about productivity improvements and their latest push for Roslyn. Now, this was in 16.6. So you may have missed it. It's been out for a few weeks. But what I just noticed is that they've added changes that allow you to see how your date time is going to be formatted when you say date, time to string You have all those options, they now give you IntelliSense for those options, and they tell you what they mean, that's wonderful. It's way long overdue. There are other code refactorings. For this, I still prefer JetBrains resharper. But again, something you should take a look at the dotnet foundation released its state of the foundation blog post for 2020. Now, they this year, they have 800 members, which is 100% growth from last year. And they now have five corporate sponsors. This state of the foundation also includes their upcoming plan. I'm pretty glad to see the sort of transparency, I do have some reservations about the dotnet foundation. I do believe that publishing this is a step in the right direction. They also release their budget, and this will get better but they spent a grand total of $558. In sponsorships this year. you'd hope to see that get much higher if it actually means what I think it means which is sponsoring open source projects. And that's a metric I'm going to be using to judge whether or not they're having the right impact on the dotnet community but you have to start somewhere, and they started at $558 worth of somewhere. StackOverflow released its performance metrics for its Stack Exchange sites on Stack Exchange calm now the company's called Stack Overflow used to be called Stack Exchange. The network is still called Stack Exchange. But the company changed its name back to its flagship site, which is Stack Overflow. Anyway, if you want to know how well the site's perform, you can check out the link at Stack Exchange comm slash performance and the sheer speed of the Stack Exchange network being hosted on dotnet. They got the Hacker News folks all upset and any day we can see how well dotnet performs and piss off Hacker News. That's a good day. dotnet con held their focus on microservices Virtual Conference on July 30. And I have a thread live tweeting it. Now I've got some pretty nasty scars and some fun memories from working with microservices and that sort of thing. interest you, you can check out my life thread on it. Now if your architect is practicing resume driven development, or you work with really large software teams, you should check out the videos from the conference. But for the rest of us, probably not worth your time, unless you want to learn about some of the frameworks that help you build microservices and dotnet. Now, this week's cool library is bogus. Now, it's a library that allows you to generate fake data for your application. It's pretty cool. And you should check it out if you need to generate fake data. One of the common usages that I use it for is if we need to mock data as if it were coming from production. For instance, we need a million rows of data, but we can't use production data. Use bogus, generate it that way. Job done. Alright, as part of today's episode, we're going to talk about the dotnet foundation. And that may seem a little boring, but I promise you it's not it's actually really important for you, for me and for everybody who is part of the dotnet community, the dotnet foundation was formed to advance the interests of the dotnet programming community, including enterprises partners, individual developers and open source communities by fostering open development and collaboration of open source technologies for dotnet programming and related technologies, and by serving as a forum for commercial and community developers to strengthen the future of the dotnet ecosystem, and wider developer community by promoting openness, community participation and rapid innovation. Now if that sounded, we'll can that's because it was that comes directly from the dotnet foundations bylaws, Article One, section three. Now the reason why we're talking about the dotnet foundation is that how its governed and how we interact with it determine how successful dotnet open source is, Will dotnet open source be successful because of the foundation or in spite of the foundation, and if you've been developing in dotnet for a long time, you understand that Microsoft is Really a late comer to the open source movement. Now the foundation was formed in 2014. And it was formed much the same way that the Apache foundation or the eclipse foundation were formed, they're around technology stack, in this case dotnet and to advance the interests of the dotnet community. Now when we say advanced the interest dotnet community got to put an Asterix there. I mean, Microsoft created the dotnet ecosystem. Microsoft's developer division has tons of tooling around dotnet they've put millions and millions of dollars into developing dotnet into what it is, and you can't expect them just to let that go and just to be governed by a foundation. And of course, it's it's not they, they're a founding member, and as such, they get certain rights in the foundation that no one else gets. For instance, in an article two, Section four under founding member, Microsoft Corporation is the founding member, the founding member, and 10s have the right to manage the affairs Foundation, be vested exclusively in the board as described in these bylaws to the maximum extent permitted by applicable law, the founding member and eligible members will elect the board as described in Section 3.3. That's article three, section three. Now the board will consist of one director appointed by the founding member and up to six directors elected by the membership. Now that's important, no matter what Microsoft gets one spot on the board, okay, the membership elects the other six, in fact, not the other six up to six. Now the other rights the founding member gets Microsoft in this case, the director who is appointed by them is going to serve until that person is replaced by Microsoft or otherwise vacates the position. The founding member Microsoft may replace its appointed director anytime as in its sole discretion. Elected directors will serve for the term established in the director election policy found Remember, they get to change their person out whenever they want. Now that's something we need to be aware of. Now the current executive director of the dotnet foundation is Claire Novotny. Claire is the dotnet foundation executive director. And she works at Microsoft as a program manager on the dotnet team. And this is very important. If the dotnet if the foundation is independent, then clearly any any actions taken by Microsoft would be seen as well. It's not an independent foundation. And so right now clear is the executive director. And as of yet, there's not been a non Microsoft executive director that I know of. Now Microsoft has other rights. For instance, under article three section nine meetings, subsection II limited special right for director appointed by my founding member. This is Microsoft remember, in connection with any vote to materially change the foundations of membership policy director election policy, project governance policy, or any intellectual property related agreements or policies, a no vote by the director appointed by the founding member will result in the disapproval of the proposed action, regardless of the number of votes for approval, and such director must be present as part of any quorum, ie if that directors not present, the board will not have a quorum for the matter, regardless of the number of other directors present. So this is important. Microsoft effectively controls how the dotnet foundation is set up and how it's run. You can't change policy if Microsoft doesn't agree to it. That's a very interesting way to set it up if you want it to be independent foundation. Now under Article nine amendments,any amendment of the articles of incorporation or the bylaws must be approved by vote of two thirds of the directors then in office, any such amendment that materially alters risk? or eliminates the rights responsibilities and privileges of the founding member must be agreed to in writing by an authorized representative of the founding member who is not serving as the director of the foundation. Now, this is interesting. You've got this special person that the founding member appoints. And they can't even vote to make changes. Someone else from the founding member has to approve these changes like amendments. Now, why does all this matter? Like why is this political intrigue, even important? Now all of this is important because the dotnet Foundation was set up to help dotnet open source thrive. Now it only thrives if we do what's best for community. We do things that aren't best for the community, it's not going to do as well. dotnet foundation supposed to do that. It's supposed to take into account how the community feels and conduct itself in a way that helps the community thrive. For instance, they have a vision statement. vision statement proposed vision statement is that a diverse, healthy and active open source community, open source software community or project maintainers are well supported and contributors feel welcome, an ecosystem where dotnet open source software is adopted in the enterprise, education and personal projects, and ecosystem are the foundation its members in the world wide dotnet open source software ecosystem work together to identify challenges to the mission, and then collaborate on solutions. A community where those that benefit the most from dotnet open source software contribute back whether it be through resources, time or money in this community is easy for anyone who wishes to contribute to do so in whatever way they can. should be easy for companies to contribute financially to open source software, and easy for project maintainers to receive that support. That's the vision statement they're proposing to change right now. That's the proposed instead of the vision statement. Now the mission statement is the dotnet foundation is an independent A nonprofit organization whose mission is to support an innovative, diverse, commercial friendly, international open source ecosystem for the.net platform. That is their mission statement. Now with everything we've gone through so far, we've gone through their bylaws, we've gone through how they're set up, they have six, up to six directors plus someone appointed by Microsoft. But they also have one other part, which is an advisory council. This Advisory Council consists of six people that work at Microsoft and one that does not also people that run the foundation. They have a treasurer who works at Microsoft, Christopher house, who works at Microsoft, but doesn't have his stated title. And they have Claire, who is the executive director of the dotnet foundation. They have that they then have their board of directors of which it looks like none of their board of directors, except for one except for Beth Massi is a member of Microsoft. So extensively right It's pretty independent, except for the fact that Microsoft appoints the Microsoft appointed director, they will always be able to appoint a director, they can replace that director anytime at their discretion. And that director cannot make decisions that will materially hurt Microsoft. And Microsoft has effectively veto power over anything that changes how the dotnet foundation is run. And then they have an advisory council. It's made up largely of people from Microsoft. So even if someone wants to make a change, you're going to the Advisory Council is going to be there. And you know, this doesn't look so good for Microsoft, please don't do it. But the reason all of this came up is that I believe in the dotnet Foundation, I believe in the idea of making open source software work. I think that right now, open source software won't work. It can't work. It's not financially viable for maintainers. It leads to burn out. It leads to abandoned projects, and generally creates more churn in a system and when you create churn, especially in software, companies don't want to use that software. And I think that you know, creating a foundation whose job it is to help keep that churn down. I think that's, that's a good thing to do. However, open source software has to have the needs of its community at heart. And a foundation that represents open source software has to have the needs of its community at heart. Now recently in in, it was reported back in May, that Microsoft copied its new wind get window Pam, its new wind get package manager, architecturally from apt get, which was a dotnet, open source software package manager. They copied how it worked. They copied its ideas. And if that weren't bad enough,it turns out they'd called Kevin and said, Hey, Kevin, can you come out interview with us? We like what you're doing with aapka they interviewed him, they ghosted him and then the night before build They call him up to say, hey, oh, by the way, we're not going with your app get project, we're going to go our own way. And yet it's being announced tomorrow and build. The next day they announced wind get. Now by itself, this behavior is bad. But this is Microsoft. Aren't they are big supporters of dotnet. Open Source, didn't they establish a foundation just for this? Well, I asked him that question to the foundation to its directors. And the response I received was not our deal. No one asked us for help. We're staying out of it. Is that behavior keeping your, your community's needs in mind? I don't think so. And so I dug some more digging, I was like, well, this, this can't This doesn't make sense. Like why would anyone stay silent. You've you've literally got a dotnet project that's popular, that is filling on a hole that Windows hasn't provided a system level package manager That's pretty dang well. And why is it nobody at the dotnet foundation is speaking out about this. There's some reports from some people, the dotnet Foundation, when I really pressed them that said, you know, hey, if they were a member, we might have stepped in. But since their project isn't on our list of projects, we don't, we don't deal with them. That's not a good enough answer. If your foundation is there, to improve dotnet open source software adoption, you're not just improving it for the projects that are part of your portfolio. You need to improve it for all of them. You're the interest group for dotnet open source software, that's what you do. So again, I was a little heated. And so I started doing more research into the dotnet foundation. That's when I found all the stuff I'm telling you about. I have also been telling people to Hey, you should become a member, you should join the foundation, and you should vote and i believe i believe all those things. And one of the questions I asked is that you know, what does commercially friendly commercial friendliness me back from the mission statement? And the answer I got was telling. And it's actually what led me to speak on this podcast about it today. And the answer I got is the intent is that businesses are able to use dotnet based open source software libraries without friction. Clean IP and licensing is is a key part of that, which is why the foundation has project signup contribution agreement, and a seal a bot for for future contributions that ensures that no one's going to come out of the woodwork, the copyright claim on the code. It also means the use of permissive license licenses, which is one reason that foundation does not support libraries with copyleft licenses. It currently does not say anything about a project's commercial viral viability, nor for sponsors that the foundation of which Microsoft is just one. And that was from clear. The Executive Director, Ben Adams, who is a paid director on the foundation said it's both if a project is not sustainable, then it's not commercial friendly and the dotnet foundation should help enable business to give back to projects they use in a commercial friendly way. As business purchasing can be a complicated internal system and a common barrier for all projects that the dotnet foundation should endeavor to ease. Also, the dotnet foundation does not support non permissive libraries for its license, excuse me, non permissive licenses for its libraries, as they are hard to build on are using a commercial friendly way. Now, this is important, basically dotnet Foundation, if you're producing open source library, dotnet foundation wants Greece's kids good businesses to use it. So if you produce, let's say, a library that does image compression, if you want to be a part of the dotnet Foundation, you can't use a copyleft license like GPL. If you want to be part of the foundation for them to care about you, you got to use permissive license like the Apache License or MIT license. Now if you're an application dotnet open source application, you're allowed, although I haven't seen verbiage to that you're allowed to use a non permissive license. Now, why is all this important? Well, if you're an open source project, and you're a library, I don't see how the foundation is going to make what you do commercially viable for you. We're gonna make it commercially viable for businesses by saying no, you may not use GPL or a GPL. But you may use MIT license and the Apache License, but for applications, they'll help you. They'll be okay with a non permissive license, at least as I understand what they've said here. It's a hell of a way to slice it. Alright, since the bylaws don't cover everything, we have jumped intothe project's policy. The project's policy allows you to determine what projects can be members of the dotnet Foundation, and do they meet the health criteria is important. So let's start with eligibility. Now they're eligible if they fit within the moral and ethical standards for the dotnet Foundation, it's good if the project is aligned with the philosophy and guidelines for collaborative development also good. And it's built on the dotnet platform, or it creates value within the dotnet ecosystem. It's eligible if it produces so source code for distribution to the public at no charge. That's interesting. The license is operated under a is offered under an open source license, which has been approved by the dotnet foundation. And libraries that are mandatory dependencies of the project are also under offered under a standard permissive open source library, which has been approved by the dotnet foundation. Now all of these are and there's more criteria, but those are the most interesting ones. If you decide you want to put your project under the dotnet Foundation, you have two choices. You can either a assign your project, to the dotnet foundation that's transferring the copyright of your project to the dotnet Foundation, or B. You can use the contribution model which is you retain, or the project retains ownership of the copyright, but they grant the dotnet foundation abroad license the project's code and enter in other IP. Now, why is all this important? Why do we need to care about such esoteric documents? And it's because if you ever want to know what a business cares about, look at what they write down. They put a lot of effort into these governing documents. Microsoft put a lot of effort in being sure they couldn't be kicked down. They also put a lot of effort into ensuring that they, their rights were always protected with effectively veto power over any decision that changes how dotnet foundation runs. The foundation itself is set up to ensure that companies can easily use open source projects, they can easily rely on them, but you're missing a leg. And we see that with what happened with Kevin and aapka. What about the project mean? Tanner's, where do they come in? Sure they get a seal a bot, that makes it easier for people to contribute changes their projects. Okay? That's a solved problem. And they get pixel space on the dotnet Foundation website, but only if they're members. Something like AppGet, something that was materially important to the dotnet community because it showed that you could use dotnet to create something as foundational system package manager, have it be popular, and they get nothing, because they weren't a member. And even if they were a member, it's not like Microsoft say, Oh, yeah, you're right. Gosh, we shouldn't have competed with open source project are bad. They didn't do that. Microsoft, you know, after an outcry finally gave keivan credit, but if they used his architectural work, his design work that's worth 7500 k from consulting, just by developer time alone, your developer team, you have them spend Two months figuring out the architecture of the system, what his design will be how its API's work, that's easily worth 75 or 100. k. What did Kevin get? Well, he got a footnote read me Two months later. And that's the sort of thing that I thought the dotnet Foundation was supposed to protect against. But as I find out, they're not, you know, they're there to grease the skids for companies, protecting projects is a distant second to that. Now, that, of course, may not be the desire that may not be what they're trying to do. But it's the impact. And it sure seems like the dotnet foundation is set up in such a way that it's there to enrich Microsoft, even if it hurts the community. And so let's look at their budget what they do this year. Now currently, they released their state of the foundation this week. They have five corporate sponsors. They have 800 members and their budget. They brought in 237,000 sent out expenses of 157,004 2020 ending July, or excuse me, ending June 2020. In their budget, they had sponsorships of $558. And outreach of $81,517 goal of outreach is to encourage new developers to build dotnet empower underrepresented segments of the coder community, become leaders and contributors and assist event organizers with evangelism and grow.So for their budget, they spent 81,000 on outreach, only $558 on sponsorships. Now it's unclear how much of their money went to open source projects. I can't tell that just by looking at their balance sheet. There's no line, hey, this we're outlays that we actually contributed to projects with but remember, you know what people write down they care about where is the goals for give Many open source projects, I don't see it. And this means that they don't care about open source or that, you know, the dotnet foundation just exists to enrich Microsoft. But it does raise some interesting questions at this point. What we need for open source in the dotnet community is we need open source to not be plagued by burnout to not be plagued by companies stealing the work. You know, I don't even say that we have, we do have a list of problems and done and open source. And you know, how easy it is to get companies to adopt open source. It's even on my top five. You know, it's hard to get people to maintain projects, you know, authors, like even get their work stolen for no money, no credit. It took the community outcry to even get a footnote on the readme file. Microsoft continually competes with the community and maintainers don't have the backing up an interest group that can help us that's what the dotnet Foundation's there for There'd be the backing for the maintainers there to be the special interest group for people that make open source software with dotnet. Yes, they should grease, grease the skids for businesses to use open source software. Absolutely. But they should do it in such a way that enriches the community, not a project sponsor, not their founding member, the community. So here we are. We're at the start of a new fiscal year for the dotnet foundation. We're having new directors Come on. And I want to challenge the directors that join the foundation to figure out who are they therefore, are they there to enrich the founding member to make it easier for them? Or are they there to enrich the community? And if you aren't there to enrich the community? Then we got to start focusing on making dotnet open source software sustainable, and yes, that means putting money in the pocket of maintainers Open source software is a labor of love. You have to love what you're doing. But love doesn't pay the bills. Love doesn't put a roof over your head. These companies have plenty of capital. We need an interest group, like the dotnet foundation to put that capital to work for us. Now, how can we do it? One issue is that we should have dual licensing. And the dotnet foundation should look at dual licensing. If you're an open source project, you get one license, if you're commercial, you got to pay and you should pay. You're making money or you're using the software to make money in your business or to save you money. You should pay for that right if you're a business dinette foundation can help by putting together an invoicing system by saying, look, we have lawyers, you pay dues, those dues go to lawyers to figure out do licensing your dotnet project, they will figure out the license and you don't have to the next thing we'll do. So we'll set up an invoicing system to make it as easy as possible for open source projects under the dotnet foundation to have to generate invoice for business so the business can business's purchasing department can pay them. The next thing we will do as dotnet foundation is that we will fight tooth and nail for dotnet open source, there should be no one that questions whether dotnet foundation exists to enrich the community and seeks to defend the community from companies that would try to take and give back. And that means at some point, members of the dotnet Foundation and the directors of the dotnet foundation have to stand up to factions within Microsoft do just that. This is not the first time that I Microsoft team has taken something from open source. It's only the latest time and it's gonna happen again. That's almost a certainty. I want dotnet open source software to succeed I believe it needs to succeed. We're not in a closed source world anymore. But for it to succeed. It's got to be financially viable. For the maintainers, the people that put their hearts and their souls into creating these libraries and these frameworks that we use. And the only way that's going to happen is if the interest group we have the dotnet foundation puts all of its effort towards making that the goal. Now this incredibly depressing podcast, of course, is brought to you by myself, George Stocker. And I help teams double their productivitythrough test driven development. You can reach out to me at www.doubleyourproductivity.io.Transcribed by https://otter.ai

PHP Internals News
PHP Internals News: Episode 54: Magic Method Signatures

PHP Internals News

Play Episode Listen Later May 21, 2020


PHP Internals News: Episode 54: Magic Method Signatures London, UK Thursday, May 21st 2020, 09:17 BST In this episode of "PHP Internals News" I chat with Gabriel Caruso (Twitter, GitHub, LinkedIn) about the "Ensure correct signatures of magic methods" RFC. The RSS feed for this podcast is https://derickrethans.nl/feed-phpinternalsnews.xml, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Transcript Derick Rethans 0:16 Hi, I'm Derick, and this is PHP internals news, a weekly podcast dedicated to demystifying the development of the PHP language. This is Episode 54. Today I'm talking with Gabriel Caruso about his ensure correct signatures of magic methods RFC. Hello Gabriel, would you please introduce yourself? Gabriel Caruso 0:37 Hello Derick and hello to everyone as well. My name is Gabriel. I'm from Brazil, but I'm currently in the Netherlands. I'm working in a company called Usabila, which is basically a feedback company. Yeah, let's talk about this new RFC for PHP eight. Derick Rethans 0:52 Yes, well, starting off at PHP eight. Somebody told me that you also have some other roles to play with PHP eight. Gabriel Caruso 0:59 Yeah, I think last week I received the news that I'm going to be the new release manager together with Sara. We're going to basically take care of PHP eight, ensuring that we have new versions, every month that we have stable versions every month free of bugs, we know that it's not going to happen. Derick Rethans 1:17 That's why there's a release cycle with alphas and betas. Gabriel Caruso 1:20 Yeah. Derick Rethans 1:21 I've been through this exactly a year early, of course, because I'm doing a seven four releases. Gabriel Caruso 1:25 Oh, nice. Yeah. So I'm gonna ask a lot of questions for you. Derick Rethans 1:29 Oh, that's, that's fine. It's also the role of the current latest release manager to actually kickstart the process of getting the PHP, in this case, PHP eight release managers elected. Previously, there were only very few people that wanted to do it. So in for the seven four releases it was Peter and me. But in your case, there were four people that wanted to do it, which meant that for the first time I can ever remember we actually had to hold some form of election process for it. That didn't go as planned because we ended up having a tie twice, which was interesting. So we had to run a run off election for the second person between you and Ben Ramsey, that's going to go continuing for you for the next three and a half years likely. Gabriel Caruso 2:11 Yep. Derick Rethans 2:12 So good luck with that. Gabriel Caruso 2:13 Thank you. Thank you very much. Derick Rethans 2:15 In any case, let's get back to the RFC that we actually wanted to talk about today, which is the ensure correct signatures of magic methods RFC. What are these magic methods? Gabriel Caruso 2:24 So PHP, let's say out of the box, gives the user some magic methods that every single class have it. We can use that those methods for anything, but basically, what magic methods are are just methods that are called by PHP when a given action happens to the class. So for example, if a class is being constructed, then the construct magic method is going to be called. If I'm calling serialize function, then the magic method serialize as per PHP seven four or PHP eight. I don't remember, so this is basically what magic methods are, are methods that PHP hook into the classes and then once a certain action happened with the class, then PHP is going to call those magic methods in something magic, so to speak is going to happen. Derick Rethans 3:13 And other options are like underscore underscore get, and underscore underscore set. Gabriel Caruso 3:17 We have, we have a lot. Derick Rethans 3:19 Exactly, what do people tend to use these magic methods for? Gabriel Caruso 3:22 So that's something interesting. As the magic method is called by a number of actions we can use, for example, for let's let's get the example of ORM for example, Doctrine or Eloquent or whatever one. Let's say I'm a maintainer of that library. I don't know what fields do you have in your database. So when I'm porting, when I'm doing the translation, what it can do is map in a property, all those columns and values that I have in the database. And then when you instantiate your entity and you try to access a variable that is does not exist, then we're going to go to a magic method in this case is get, as I said, and I'm going to say okay, is not set in the class, but is mapped in the entity that I have. So this is one case, we also have the case for testing your you have, for example, the famous PHP Unit test framework, every time that a test case is called with all those methods is starting in with test, the call magic method is invoked. And then you can perform whatever action you have. You also have middlewares and the examples go go even further Derick Rethans 4:32 In the title of RFC you have the word signature, what is the signature? Gabriel Caruso 4:37 All the attributes that our method can have. So for example, the name of a method is its signature, what does it return? What parameters does it take? And also what modifiers so for example, is it static or not? Is it public, private or protected? So all this information together in usually is one line in PHP. So for example, private static MyMethod, that receives a string and returns a Boolean. There you go. This is the signature of my method Derick Rethans 5:06 Because some of these magic methods have been in PHP for a long long time. Back in the time where we didn't have argument types or return types or perhaps not even static. All the way back from the past PHP hasn't really done anything with signatures because they've simply didn't exist. At the moment which signature checks this PHP already do? Gabriel Caruso 5:26 I don't remember a by the RFC but I think was introduced together with the scalar type RFC. But only constructors and destructors until PHP seven four, those two only magic methods were being checked. If they have none return type, not even void, just no return type. But in PHP eight, we're gonna have the new stringable interface and then every single toString magic method. If it is typed, this is very important if it is typed it needs to be a string and these are the only from the 17 that we have only three in PHP 8 are being checked. Derick Rethans 6:01 PHP seven four. Gabriel Caruso 6:02 Yeah, in PHP seven four only two and then PHP eight, we have the new toString. Derick Rethans 6:07 But this RFC suggesting to change that of course. Gabriel Caruso 6:10 yeah. Derick Rethans 6:11 What's the reason why you want to extend these checks to the other magic methods? Gabriel Caruso 6:14 That brings me back how I figured out that. I was looking at some bugs, because we have the https://bugs.php.net, where we centralized all the bugs of PHP. Then there is a bug report explaining in complaining exactly about that. Like, I can't hide my magic method. Back in the days I can say, for example, that my tostring method is going to return an integer or a Boolean. That makes no sense. And then I was like, yeah, makes makes no sense. We need to fix that out and then I start to search how do we type that? How what types do we have and then I was like, we can't in PHP eight, because this is going to be a new major version. So we are allowed to at least vote for do that. We can check if someone is using types, we can check those types. We are not going to force, we are not going to require, we're not going to evaluate even run static analysis. Nope, we're going to simply check. Okay. Are you saying that this get magic method is going to return anything? Okay, that's okay. Oh, but I want to my guess is that you specifically return a string. That's also okay. As to how to pronounce that liskov mistook principle, right? Derick Rethans 6:36 The liskov substitution principle. Gabriel Caruso 7:26 Yeah. And so this is what we're going to basically do with this RFC, there's going to be voted. We're going to simply check if you're using the right types, because, in my opinion, magic methods are a foundation in PHP. As we have theses methods across different code bases across different projects from different behaviours, at least when I'm looking at that code. Okay, I'm looking at this magic method. I know what parameters does it take. I know what return does it have. This is worth less tab to the bug are trying to understand what is happening. Because today maybe I'm debugging a toString method there is return an integer. And I'm like, okay, this is the bug, it's supposed to return a string. But once you ensure those all those signatures, is one less bug that we're gonna have in production. Derick Rethans 8:17 When are these signatures being ensured? Gabriel Caruso 8:19 It's not at compile time because he does not have a compile time. But he's when the Zend machine is compiling the code, we have a very specific method that is checking all the modifiers. So for example, the signature that we mentioned before so all the magic methods needs to be public. This has been checked, for example, they callStatic magic method needs to be static. So this has also been checked. And then I'm extending how do we check for signatures for param types and also for return types. So during compilation of the Zend VM. Derick Rethans 8:52 Taking as example callStatic in the RFC, I see that the name has to be a string and the arguments has to be an array. What happens if you use a different type there? Gabriel Caruso 9:01 So nowadays if you use a different type that's allowed. So if you say there, you're going to receive an integer, and you're going to receive a string. This is allowed today. And this is what I mentioned about when you are debugging or analyze different code bases, you're going to be like why in the documentation says that we need to receive a string and an array, and there's this specific code base is receiving a string and an integer. So this is what kinds of mismatch I want to avoid. Of course, when using types, because we also know that PHP in some projects does not use types. And that's perfectly fine. If you're not using types, I'm not going to ask you, hey, you need to type those magic methods. Well, what I'm going to do is okay, you're using types and I need to make sure they're using right otherwise this is going to be a mess. Derick Rethans 9:47 If you type it; say use an integer for the name of underscore underscore get, will give you a warning or a compile error, or parse error? What what kind of feedback which you get back from that? Gabriel Caruso 9:59 While you are running your code, as soon as that class get referenced, we're going to check. Is not when is initiated, when is not when is called, as soon as I think the autoload detects that class is gonna parse, is going to identify, and then is going to compile and during the compile time that we mentioned. We're going to identify that. So it's going to be early in the stages. Perhaps as soon as you run something or you would upset me, you're going to have that feedback saying: hey, this is not compatible with what we are expecting. Derick Rethans 10:32 Is that a warning or type error? Gabriel Caruso 10:34 It's going to be a fatal error, because this is what we are constantly returning with the destructors and constructors. Derick Rethans 10:41 Yeah, we alluded to mixed already a little bit and the RFC mentioned mixed a few times, of course mixes in the type and PHP yet. So what do you want to do about that? Gabriel Caruso 10:51 Today we are 11th of May of 2020. Right now we have an RFC voting in PHP to introduce the mixed type. I'm not going to say if I agree or disagree, it's being voted. If that RFC gets accepted then I have already talked with the authors of the that RFC, I'm going to wait until they merge into master. I'm going to rebase and readapt to my RFC, to have those mixed types. And there we go PHP eight probably can have mixed, and probably can already have the usage of mixed in the magic methods. So either No, I'm gonna need to wait for the end of their RFC. If it's approved, there go I need to rebase my PR. In the other case, we are going to keep as comments because we can't ensure that in the compile time with the VM. Derick Rethans 11:41 At the moment, it looks like that vote will and in May 21. The current votes are 35 to six for passing. So it looks like that will go through Unknown Speaker 11:50 And then I need to rush because we have the upcoming feature freeze of PHP eight. So I need to make sure that I start to vote and implement my RFC before that time. Derick Rethans 12:00 Feature freeze should be by the end of July. So I think you have plenty of ime pfor that. And of course you have a release manager, you can make an exception. That's how that works. Usually adding extra checks will have impact to existing code. Is there much impact to existing code here as well? Gabriel Caruso 12:18 That was the interest question that I made myself. Okay, I'm going to touch the magic methods of PHP. I'm going to break some code in an issue identified those breaking changes in an each map in the RFC. How do I map across many projects, many libraries, many PHP codes out there? How do I do that? I remember that Nikita back in his RFC about the parenthesis origin, like how do we present this ordering and yada yada yada. He made a script, where he went through I think was the top thousand or top 10,000 packages. On packagist, that is the official composer package provider and he identified everything, and ask myself how he did that. And actually was very easy. He just cloned other repositories. He instantiate a new PHP parser instance that is his magic parser. That is behind PHP Stan, is behind psalm, is behind a lot of infection, a lot of big projects, where you analyze the code. So you have a code base where you can analyze and say: Do I have magic methods wrong? And then I run this script, identify, I think six or seven types that were not perfect. Three of them. I have already submitted a request because we're in PHP Unit and I said to Sebastian: hey, this actually is not right. Because I'm proposing this RFC, he was like: Okay, perfect, let's merge it. And the other cases are the cases that I mentioned. For example, with get. Get, you need to return mixed but by the LSP, you can nail down to an integer or a string. So there you go, at least in the top 10,000 packages of composer is not going to be a breaking change. But of course, it's going to be breaking change for people that I can't map. So this is why it's mentioned the RFC that if you're using types with magic methods wrong, we're going to warn you. Derick Rethans 14:13 But at least it's an easy thing to check for. Because even running all your files through PHP minus L should catch it. Gabriel Caruso 14:20 Yeah, there you go. Derick Rethans 14:22 So it's a very easy to check for something. You provided a link to Nikita's script where he checks for those ternairies, do you have a version of your own script available as well? Gabriel Caruso 14:33 That's interesting. I thought the RFC was updated. So I'm going to update the RFC, because I do have the script locally. Derick Rethans 14:39 Then I can link to it for the podcast as well. Gabriel Caruso 14:41 Okay, perfect. Derick Rethans 14:42 In the future, are you thinking of extending checks to a few more things? Gabriel Caruso 14:46 So this is something that I fought about this RFC, like how much you want to break and explode people's code. And I think starting with checking types in the signature is the first step. The next step is to actually check the return type. We do that with toString. So for example, although you have type right for maybe, some logic or something is wrong, you're returning an integer. There is a check before the actual type saying you're supposed to return a string you're return an integer. And actually, there is a check in the magic method saying this magic method was supposed to return a string. I think is gonna break even more code because then it's something that I can't measure. So I was like: Okay, let's first start with types and then we can give it next step that is: okay, inside this method, what is being returned, okay, is something different from the signature: explode. You're returning something that I was not supposed to return. But this is not a fight that I'm going to pick. So I leave it up for the next major version of PHP or whatever. Derick Rethans 15:49 Wouldn't PHP's strict versus weak type mechanism already catch these things. So from debugInfo, if you would type that as returning an array, and then you end up returning an object, which is not necessarily wrong, just not what you expected. PHP's return type checking mechanism should already catch that for you. Gabriel Caruso 16:13 If you have a magic method typed. If it's not typed, so we can say that some efforts do have that check. And then we're going to expand when we don't have types in the signature. Derick Rethans 16:24 That's clear now. Do you have anything else to add? Gabriel Caruso 16:27 The only thing that I want to add that is, I have created another RFC, and this is something that I always tell everyone that is easy to do; is not impossible. Anyone can go there, identify a bug or catch a bug report and then try to fix it. And this is what I'm doing. Like I'll do them to release many of PHP eight. I'm also fixing bugs, improving documentation and everything else. This is something that I try to do and share with everyone. So everyone can also be the next one contributor to the to PHP and it's evolution. Derick Rethans 16:57 This RFC isn't out for voting yet. You set you want to sort of wait until mixed gets passed or not. What's the reception been so far? Gabriel Caruso 17:05 So I asked a couple of key members of the PHP community, both internal and external people. They agree, they said that the right approach is to first check for the signature, because if someone is already using types, that project is type friendly, so we can at least play with that. But if someone is not typing, then this is a bigger fight. And then we're going to talk about that in the future. Derick Rethans 17:29 Thank you, Gabriel for taking the time this morning to talk to me. I've learned a few more things about this RFC, so that's always good to know. And again, congratulations of being the PHP eight release manager together with Sara. Gabriel Caruso 17:41 Thank you very much. Also thank you for inviting me for this new podcast is amazing. Always listen to all these famous people of PHP that talked with you. And I'm like, Whoa, Derick has invited me this is going to be so much fun. Thank you very much. Derick Rethans 17:55 Thanks for listening to this installment of PHP internals news, the weekly podcast dedicated to demystify the development of the PHP language, I maintain a Patreon account for supporters of this podcast, as well as the Xdebug debugging tool. You can sign up for Patreon at https://drck.me/patreon. If you have comments or suggestions, feel free to email them to Dderick@phpinternals.news. Thank you for listening, and I'll see you next week. Show Notes RFC`: Ensure correct signatures of magic methods Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0

Syntax - Tasty Web Development Treats
What's New in Javascript

Syntax - Tasty Web Development Treats

Play Episode Listen Later May 13, 2020 48:08


In this episode of Syntax, Scott and Wes talk about what is new in Javascript — a whole bunch of new stuff that you can use now and in the next sixth months or so. LogRocket - Sponsor LogRocket lets you replay what users do on your site, helping you reproduce bugs and fix issues faster. It’s an exception tracker, a session re-player and a performance monitor. Get 14 days free at logrocket.com/syntax. Freshbooks - Sponsor Get a 30 day free trial of Freshbooks at freshbooks.com/syntax and put SYNTAX in the “How did you hear about us?” section. Show Notes ES2019 04:03 - Array.flatMap() 05:30 - Array.flat() 07:37 - Array.fromEntries() 09:50 - String.trimStart() and String.trimEnd() 11:23 - Function.toString() 11:57 - Object Key Order Integer keys in ascending order (and strings like “1” that parse as ints) String keys, in insertion order (ES2015 guarantees this and all browsers comply) Symbol names, in insertion order (ES2015 guarantees this and all browsers comply) ES2020 14:50 - Big int 18:09 - Nullish coalescing 20:57 - Optional Chaining 24:55 - promise.allSettled 25:33 - Dynamic import 27:14 - string.matchAll(regex) and string.replaceAll 29:30 - globalThis 30:44 - Module Namespace Exports 33:11 - Navigator.share() API 36:34 - Async Hooks 37:39 - Pipline Operator 39:59 - Top Level Await Links https://twitter.com/wesbos/status/1181584047144878080 https://twitter.com/wesbos/status/1238472679893671938 https://twitter.com/wesbos/status/1230515254687301635 Regex101 Regexr https://developer.mozilla.org/en-US/docs/Web/API/Navigator/canShare Sketch CloudApp Figma https://nodejs.org/api/async_hooks.html Gulp https://v8.dev/features/top-level-await https://github.com/tc39/proposal-pipeline-operator ××× SIIIIICK ××× PIIIICKS ××× Scott: Sapper Wes: Dewalt Oscillating Multitool Shameless Plugs Scott: Level Up Tutorials Pro - Sign up for the year and save 25%! Wes: All Courses - Use the coupon code ‘Syntax’ for $10 off! Tweet us your tasty treats! Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets

PHP Internals News
PHP Internals News: Episode 41: __toArray()

PHP Internals News

Play Episode Listen Later Feb 20, 2020


PHP Internals News: Episode 41: __toArray() London, UK Thursday, February 20th 2020, 09:04 GMT In this episode of "PHP Internals News" I chat with Steven Wade (Twitter, GitHub, Website) about the __toArray() RFC. The RSS feed for this podcast is https://derickrethans.nl/feed-phpinternalsnews.xml, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Transcript Derick Rethans 0:16 Hi, I'm Derick. And this is PHP internals news, a weekly podcast dedicated to demystifying the development of the PHP language. Hi, this is Episode 41. Today I'm talking with Stephen Wade about an RFC that he's produced, called __toArray(). Hi, Steven, would you please introduce yourself? Steven Wade 0:35 Hi, my name is Steven Wade. I'm a software engineer for a company called follow up boss. I've been using PHP since 2007. And I love the language. So I wanted to be able to give back to it with this RFC. Derick Rethans 0:48 What brought you to the point of introducing this RFC? Steven Wade 0:50 This is a feature that I've I've kind of wish would have been in the language for years, and talking with a few people who encouraged it's kind of like the rule of starting a user group right? If there's not one and you have the desire, then you're the person to do it. A few people encouraged and say: Well, why don't you go out and write it. So I've spent the last two years kind of trying to work up the courage or research it enough or make sure I write the RFC the proper way, and then also actually have the time to commit to writing it and following up with any of the discussions as well. Derick Rethans 1:18 Okay, so we've mentioned the word RFC a few times. But we haven't actually spoken about what it is about. What are you wanting to introduce into PHP? Steven Wade 1:25 I want to introduce a new magic method. The as he said, the name of the RFC is the __toArray(). And so the idea is that you can cast an object, if your class implements this method, just like it would toString(). If you cast it manually to array then that method will be called if it's implemented. Or as, as I said, in the RFC, array functions will it can it can automatically cast that if you're not using strict types. Derick Rethans 1:49 Oh, so only if it's not strictly typed. So if its weakly typed would call the toArray() method if the function's argument or type hint array. Steven Wade 1:58 Yes, and that is actually something that came up during the discussion period, which is something again, this is why we have discussions, right? Is to kind of solicit feedback on things we don't think about it, we may overlook or, and so someone did point out that it is, you know, it would not function that way, or you would not expect it to be automatically cast for you, if you're using strict types. Derick Rethans 2:17 Okay. Steven Wade 2:18 The RFC has been updated to reflect that as well. Derick Rethans 2:20 So now the RFC says it won't be automatically called just for type hint. Steven Wade 2:24 Correct. Derick Rethans 2:24 Not everybody is particularly fond of magic methods. What would you say about the criticism that introducing even more of them would be sort of counterproductive, because you'll end up not necessarily knowing what happens if you start calling a method, when you do a cost, for example. Steven Wade 2:38 The beauty of PHP is in its simplicity. And so adding more and more interfaces, kind of expands class declarations enforcement's and in my opinion, can lead to a lot of clutter. And so I think PHP is already very magical. And the precedent has been set to add more magic to it with 7.4 with the introduction of serialize and unserialize magic methods, and so for me it's just kind of a, it's a tool. I don't think that it's necessarily a bad thing or a good thing. It's just another option for the developer to use. Derick Rethans 3:06 Two episodes ago, I spoke with Nicolas Grekas about a Stringable interface that he suggested to introduce, which is a little bit similar to sort of the casting with toArray(). And hence, do you think it would have make sense to have an __toArray() also happen if the class implements a interface with a typed function argument? Steven Wade 3:29 I think that would be two separate RFCs. I think the first one to kind of get it on par with what's what we have now in PHP would be to introduce the toArray(). And then a separate one would be if we wanted to follow suit with an arrayable interface. Derick Rethans 3:43 And which is the same thing that happens with the Stringable interface, right? We have had toString() for how many years, decades? But from what I understand, if you have a typed property "string", it would also call the toString() method when it's defined on an object that's being passed in, or do I misunderstand that, there are misremember that? Steven Wade 4:00 I haven't followed that one too closely. I've kind of been catching up on some of the discussion today. But and yeah, I don't know off the top of my head what that would do. Derick Rethans 4:07 I didn't mean with the ori.. with the newly suggested Stringable interface with adults we currently have. Steven Wade 4:12 I'm not sure how that would work. Derick Rethans 4:13 I don't know, either. That's what I'm asking you. Steven Wade 4:15 With the array and with the typed properties? That's a good question. That's again some feedback, we kind of need to that I need to think through Derick Rethans 4:21 Because I think it would make sense to at least behave the same and I don't particularly mind which way it goes. Me that's, that's a personal opinion here. Steven Wade 4:28 And that's a great idea I need to haven't played with 7.4 too much, I need to pull it down and try and just see what the behaviour of string is because that's the main goal of this is to try and just get this on a parity, functionality parity with with what's toString() will do. And so if that is how it handles it with typed properties and I would want to implement that as well. Derick Rethans 4:47 In a similar way. I don't also know what happens if if you have toString() available in a class and you pass it in as an argument that is typed as string. Steven Wade 4:54 Even though at least when my test was weak types, it will actually cast that for you. If you have that. String argument type hint, it will cast it and then that will be a copy. So it will actually just be the result of that cast to string. I do not think I think it throws an error if you have a strict type set. No, I think it'd be very similar, right. It's just how you want to use it in user land, you know, the __toArray() is you're going to you could cast it yourself ,or you can with weak types PHP could cast for you in the appropriate circumstances. If you want the same functionality. In some for now, you would need to call, you know, the __serialize() yourself with the toArray(). In the future, you could implement the toArray() and then your serialize could actually just cast this object to array, and then that should actually convert that for you. And then serialise will then return array so you're not duplicating how you want that object represented when it's an array. Derick Rethans 6:00 So the RFC mentions that when you do a print_r of person is called __toArray(). But that's not particularly a cast. So why would it do it here, but not for method arguments, for example? Steven Wade 6:11 That is a product of this being my first time and that was a mistake that was thankfully pointed out during the discussion period and has been corrected. Derick Rethans 6:19 I read this RFC a week or two ago or so. And I haven't.. I should have reread it this morning that. I did not so my apologies for not being fully up to date here. There's some array functions in PHP like sort() that operate on an array as a reference right? That can't particularly work if you first have to cast to an array, which is what your current RFC now just. I mean, toArray() only gets called when you cast to an array or when it's a weakly typed argument. But how would it work for methods or functions that accept an array by reference? Steven Wade 6:49 At least the way I proposed it, they would throw an error as it currently does. Again for my test and trying to keep this within parity with the toString. I don't believe there are many functions that will operate on toString on, on a string by reference, as there are with arrays. From what I can recall is that it would throw an error. If you try to operate by reference on an object that implements toString, it will throw an error. Derick Rethans 7:10 And it wouldn't just fall back to using an object because that'd be very strange behaviour in that case, I suppose. Steven Wade 7:15 Basically, if it's if it's not something that can be cast or converted to an array through this method, and it's just going to be the same functionality you have in current PHP, which will be throw an error. Derick Rethans 7:24 Going to go for the principle of least astonishment or something. Steven Wade 7:27 Yeah, I don't want to introduce too many changes to it. I just want to be able to cast. Derick Rethans 7:31 I think that is a great idea. Actually, I mean, the same thing I've spoken with Nikita about, that introducing features step by step makes it a lot easier for people to comprehend what you actually end up doing. And there's also less, less chance of people getting bogged down in liking a specific aspect of the RFC but not of the other RFC parts. And we end up not merging the whole thing with the sub part of it. Steven Wade 7:54 And that's why I was very purposeful and not including any kind of write. You write, you cannot write to a class that implements toArray(). You know, as you will with array ArrayObject, because that we have that for a reason. So this is different functionality, we just wanted to keep it small, and just have this little helper Derick Rethans 8:11 I read in the RFC, something called get_mangled_object_vars(), but I didn't quite understand what it was. Steven Wade 8:16 So that was actually a function introduced in 7.4, as a direct result of my original proposal trying to see what people thought in the internals and in the community of this feature. Sometime in spring, last year 2019, I began this discussion, and there was some initial feedback with folks saying that it would cause some breaking changes in their libraries or their code, because they are overloading the casting. Right now, if you cast an object, I guess you get insight into the object's internals without any side effects. And so I think that's how Symfony's var dumper works. And that's how they're able to display some of that information. So that was concern by introducing this, that functionality would break. And so to introduce a method that would give you the same benefits without overloading the casting, the get_mangled_object_vars() was introduced and accepted and implement in 7.4. Derick Rethans 9:04 And that returns the object properties with their special characters in place. Because PHP internally, if you have a private method, the name for both methods and property is done by doing a null character, the name of the class, a null character then the property name. So that's what that would return, I suppose. Steven Wade 9:22 I believe so. Derick Rethans 9:22 I ran into a similar issue in Xdebug, because in some cases, you want to call get_debug_info, which is what people implement for getting debug info for their objects. But in other cases, you don't want to do it because you want to see everything that happens internally, or you want to see all the properties that exist. So there's kind of a tricky one. And I think at some point with toArray also happening, I might actually end up adding the output of both toArray() and get_debug_info separate sort of fake properties into the Xdebug output. But of course that only works if toArray() has no side effects. I don't think there's any way of preventing that in the toArray method that you can now implement that it doesn't change any information in normal properties, for example, right? Steven Wade 10:12 And that's kind of some of the internals of it that I'm not fully familiar with. With it, I'm hoping to kind of, you know, the discussion period will help eliminate some of that. Derick Rethans 10:20 I don't think you'd be able to actually. Steven Wade 10:22 Just recently, we were able to throw an exception from the toString. I don't know if you can actually do any kind of operations, write operations on the object within the toString? I do? That's a good question. And I do look that up. And whatever that behaviour is, we'd want to mimic here as well. Derick Rethans 10:34 I believe you can. It's normal PHP code, right? And if you don't want to do it, you need to clone it first, which is something you could choose as an implementation, right? You could first clone the class and then call the toArray method on the cloned object. I don't think we have any protection for that. The RFC is currently in the discussion phase. At the time of recording, we're talking about the discussion period. When I sort of thinking of ending that and going for vote? Steven Wade 10:58 I think this is actually going to be probably a longer period of discussion. And I think most RFC is most fleshed out just because of the nature of it. I am a full time employee full time, father, husband, and also student, as well. And so I don't have a lot of time to do this. And I want to do it right. I want to be able to respond to this. And so the discussion opened up a week ago, and this morning is the first time I've had to be able to respond to that and update the RFC. And so I because I really care about this and would love this feature to go in. I want to continue to solicit discussion and advice and questions and to be able to answer them all and do that. So however long it takes. Ideally, I would love it to be closed, voted on, accepted and implemented in time to be able to get in for the feature freeze for 8.0. Derick Rethans 11:40 For that you have about four months. Would you have anything else to add that I forgot? Or you want to add that you think it's interesting to know about this RFC? Steven Wade 11:50 Yeah, the only thing I would add is I've seen discussion, someone posted the RFC on Reddit and I've seen discussions with people like it, people hate it. They want to move one way or the other again, it's just It's a small feature, it's a helper. It's a tool that you can use. Is it perfect? No. Is it going to satisfy everybody? No. You've got the people who are want more functional and procedural you got people who want more OOP. I think it's just another helpful tool that could be in your tool belt. If you use it great. If you don't, you don't have to touch it. Derick Rethans 12:19 Very well. Thank you, Steven, for taking the time to talk to me this afternoon. I'm looking forwards on this coming to vote at some point. Steven Wade 12:27 Thank you for having me on the show. And let me explain the purpose and the reasoning behind this RFC. And thank you very much for giving a voice to those looking to improve the language. Derick Rethans 12:35 You're most welcome. Thanks for listening to this instalment of PHP internals news, the weekly podcast dedicated to demystifying the development of the PHP language. I maintain a Patreon account for supporters of this podcast, as well as the Xdebug debugging tool. You can sign up for Patreon at https://drck.me/patreon. If you have comments or suggestions feel free to email them to derick@phpinternals.news. Thank you for listening and I'll see you next week. Show Notes RFC: __toArray() Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0

PHP Internals News
PHP Internals News: Episode 39: Stringable Interface

PHP Internals News

Play Episode Listen Later Feb 6, 2020


PHP Internals News: Episode 39: Stringable Interface London, UK Thursday, February 6th 2020, 09:02 GMT In this episode of "PHP Internals News" I chat with Nicolas Grekas (Twitter, GitHub, LinkedIn, Symfony Connect) about the new "Stringable Interface" that Nicolas is proposing, as well as about voting rights (on RFCs). The RSS feed for this podcast is https://derickrethans.nl/feed-phpinternalsnews.xml, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Transcript Derick Rethans 0:16 Hi, I'm Derick. And this is PHP internals news, a weekly podcast dedicated to demystifying the development of the PHP language. Hello, this is Episode 39. Today I'm talking with Nicholas Grekas about an RFC that he's produced called stringable interface. I already spoke with Nicholas last year about the work that Symfony does the new PHP versions come out to look at deprecations and to make sure that versions of Symfony work with new versions of PHP. But this time Nicholas came up with his own RFC called the stringable interface. Nicholas, could you explain what streamable is? Nicolas Grekas 0:54 Hello, and Stringable is an interface that people could use to declare that they implement some the magic toString() method. Derick Rethans 1:02 Because currently there's not necessary to implement an interface, and PHP's internals will always use toString if it is available in a class, right? Nicolas Grekas 1:10 Yeah, absolutely. Derick Rethans 1:11 What is true reason why you would want to have a stringable interface. Nicolas Grekas 1:16 So the reason is to be able to benefit from union type in PHP 8. Right now, if you want to accept a string as an argument, it's pretty easy. You just add the string type, right? Let's say now you want to accept a string or a stringable object, stringable an object being something that implements this method. If you want to do that, you can not express the type using types today. Derick Rethans 1:42 Because if you choose string, and then the name of an object that would only do that specific object. Nicolas Grekas 1:47 Yes, there are some cases in Symfony especially because this is where work and I do open source. Where we do want to not call toString method until the very latest moment. after example is in the code: one is from Drupal. Drupal computes some constraint validation messages, lazyly, and it's pretty important to them because computing the message itself is pretty costly. They don't need to compute it all the time. Actually, we added the type, the string type in Symfony five, before it was released and Drupal came and say: Oh, this is breaking our code and our features, what should we do now? And we removed the type and we replaced it by some annotation saying: Okay, this is a string or a stringable object. So in the future, when will add up PHP 6 would like to be able to express that using a type of real one, Derick Rethans 2:41 PHP 6? Nicolas Grekas 2:42 No, PHP 8, that's true. Strings and PHP 6. Derick Rethans 2:49 Yay. Nicolas Grekas 2:51 Another example is also is pretty similar, actually. It's in the symfony auto wiring system. We have services that we wire and sometime we can not; the auto wiring logic is broken doesn't work because some class cannot be at a wet. So in this case, we have a lazy message, because sometime of service while it's not auto wireable, it's going to be removed later on because we removed, Symfony removes, unused services. So instead of computing ahead of time and error message that is heavy to compute, and that we might just trash because the service is going to be removed. We have this lazy thing because yeah, it's heavy to cook with that. So real world use cases. Derick Rethans 3:32 I think the intention by by having a stringable interface actually makes sense. What are the concerns for for adding this to your own code, are issues with backwards compatibility, for example? Nicolas Grekas 3:43 That's another goal of the RFC. The way I have designed it, is that I think the actual current code should be able to express the type right now, using annotations of course. So what I mean is that the interface, the proposal, the stringable is very easily polyfilled. So we just create this interface into global namespace, the declarative method, and done. So we can do that now. We can improve the typings now, and then in the future, we'll be able to turn that into an actual union type. Derick Rethans 4:16 You'd be able to do that almost immediately. Well, you would be able to do that in PHP 8. Nicolas Grekas 4:21 Yeah. Derick Rethans 4:21 Without it being a problem. And of course, in that case, you can remove to polyfilled stringable interface. Nicolas Grekas 4:27 Yeah, absolutely. Derick Rethans 4:28 This is going to impact extensions, as well, because extensions, I mean, PHP, internal functions, they often accept strings. I don't actually remember but if you use a scaler type hint string for an internal method than PHP or internal function, this is actually called a toString interface on objects. Like if you would call strlen() on an object that implements toString would actually call toString and return the length to that result. Nicolas Grekas 4:53 Yes, absolutely. Derick Rethans 4:54 So that wouldn't impact that specific case then. Nicolas Grekas 4:57 About extension because that's the current state of the implementation of extension, there was a discussion we're going to talk a bit later about, I think. The current state of the art say is that the interface declares the method that just run right, it declares the written type. It's colon string. So the declaration is public function "toString : string". The very first version didn't have the written type, because it's easier for backward compatibility. Because the current code doesn't need the written type. So by not adding it to the interface, we don't break backward compatibility, which is another critical lighting designer feature that I want at least to have. And so feedback came on the first pull request and said okay, we need the written type. So, the way I implemented that is that now in the RFC actually, the written type is implicit. toString, if you declare it, whether you type ": string" or not, it's there. If you do some reflection later on an instance of something that that then the reflection will tell: Yes, there is a written type and it's string, Derick Rethans 6:01 Whether you have defined it or not in your class. So that's a little bit of magic that gets added on. Nicolas Grekas 6:07 So it doesn't break any semantics because the written type is already in force: you cannot return anything else than the string right now. Derick Rethans 6:14 Yeah, that's true. So that means that automatically toString methods will in return type hints require string to be returned. Nicolas Grekas 6:21 Yes. Derick Rethans 6:22 And that tweak was necessary to make sure that an older backward compatibility was being broken. Nicolas Grekas 6:27 Yes Derick Rethans 6:28 Does that also extends to extension that no part that are not part of the PHP core distribution, do they need to be changed as well? Nicolas Grekas 6:35 So right now, in the current implementation, yes, they need to be changed. If they declare the toString method, they need to change the type basically, to declare that they return the string explicitly in the C code. So that the current state it's pretty easy on the implementation, implementation side to ask that to the extension authors, right? I think it is doable, but Nikita today posted proposal to improve and go to the next level of the RFC. And the next level would be to have the same magic for the declaration of the interface itself. So it would mean if you declare a toString method, then you implement the stringable interface without having to explicitly declare it in the class. Derick Rethans 7:22 I think that actually makes quite a bit of sense because that is pretty much how toString is used already. Anyway, the PHP engine enforces it has to be a string that's being returned. Nicolas Grekas 7:31 Yeah, that's very interesting in that would make the type as a typehint much more useful because any pre existing code would just work with the type and pass the type into the written type and so on. So that would be great. So the link with the extension is that maybe we should have the same automatic declaration implicit declaration applied to extensions. So then extension to boodle have to do to do anything and done. That would declare both the written type and the interface. Derick Rethans 8:03 That makes sense. You mentioned that Nikita just suggested something to tweak this RFC. I reckon this RFC is still open for discussion and voting hasn't started on it yet. Nicolas Grekas 8:13 Yes. Derick Rethans 8:13 Do you have any sort of idea for a timeframe where you think this will be finished? Nicolas Grekas 8:17 The earliest is on February 6, because we know we need to wait two weeks. So I opened that so we go. I don't know how to write the last part of what we discussed. So Nikita's suggestion. So I'm asking him to some help. As soon as it's ready. I think it can be open for voting. So it can be 10 days. So it didn't trigger much discussions on internals, which I don't know. Maybe it's a very, it's a good point. Or maybe it's like people will vote against without expressing why, I don't know. I hope it's a good thing. Derick Rethans 8:50 Sometimes people just start paying attention and there's a new vote. Nicolas Grekas 8:53 Yeah. Derick Rethans 8:54 So there wasn't a lot of controversy about stringable as you just said, but there was some controversy about you actually apply for voting rights, I remember what happened there? Nicolas Grekas 9:03 So yes, I applied for voting. Because of my implication, I think I'm an active PHP contributor to internals in not on not on the C-side, but Okay, so since I wanted to open this RFC, I said: Okay, now it's time to do the bureaucratic steps to get a vote, right? Derick Rethans 9:23 Yep. Nicolas Grekas 9:24 And I think I'm the first person to actually get through some process for getting votes in itself. I mean, I think most people or maybe all people that have a vote, a vote as a side effect of of something else. Derick Rethans 9:38 Yeah, usually about contributing patches, either PHP itself, documentation or extensions. Nicolas Grekas 9:43 So I think there's there has been some confusion, but it's been sorted out pretty quickly. I think I'm going to be able to vote on the next RFC. I'll report back if I can. Derick Rethans 9:54 Okay, fair enough. Currently, we don't really have a process for this at all. I mean, you get to vote when you have a GIT account. Pretty much, or a PHP commit access in some form. And I don't think we've ever really thought about handing that out to people that have been contributing a lot. Right. So that's kind of an interesting thing to see. What we have seen in the past, is people wanting just saying: Yeah, I'd like to vote, or in other cases, or yeah can I have a php.net email address, right. So that also happened because that is a side effect of getting commit access. Nicolas Grekas 10:23 Okay. Derick Rethans 10:24 At the moment I what happened when you did it, it got immediately shut down. Probably a bit quicker than was nice without any discussion. But I think in the future, we do need to come with, come up with a plan and perhaps even think about how to approach voting for features for RFCs the first place because we don't really have a set guideline on who gets to do this and who doesn't get to do it and stuff like that. Nicolas Grekas 10:49 Yeah, it's pretty interesting. Nikita just after the or during the discussion at, he posted some stats on the number of people who can vote and I think the number is like 1900 Derick Rethans 10:59 Yeah. There's quite a lot here. Nicolas Grekas 11:01 It's bit strange. And most people don't vote, I think, because they think they shouldn't. I don't know, something like that. But it's true. It's pretty strange. What I like about this situation is that it doesn't draw a strong line between people that contribute C code and people that write PHP code. And it's nice for PHP. I really think it's nice for PHP to have people that vote that don't do C code. But I think, of course, people that do C code must have the strongest voice, because at some point, the implementation decides. Derick Rethans 11:35 Well, that is a different right, the votes are usually on the idea, not on the implementation. But sometimes the implementation is so complicated that it's nearly impossible to implement, like, I've very briefly spoken with Nikita about generics. I'm sure we'll talk about that at some point, where I'm pretty sure that generics is an idea that simple, I mean, people will vote for it, but as an implementation it might not be that simple to do. Nicolas Grekas 12:01 Yeah. Derick Rethans 12:02 So what happens if you vote for the feature, but you can't come up with a good implementation? Nicolas Grekas 12:06 So I'm inside of thinking that people should vote on the implementations. I mean, people shouldn't be able to vote only on an idea. If there is an idea, it will be supported by an implementation that proves that we are talking about something real, no, just a fancy idea that might not work in black. So that's my opinion. Derick Rethans 12:24 That's a good point. But as you said, from the 1900 people, or or 1900 people plus, that's controlled, most of them are not familiar with a PHP internals whatsoever, because they tend to be contributions to the documentation. This is also very valuable, but it doesn't mean you know, and you don't necessarily know PHP internals, Nicolas Grekas 12:40 Yeah, sure. Derick Rethans 12:41 The oher way can be true as well right? You might know a lot about PHPs internals, but never really use PHP in real life, in your job, or anything like that. Nicolas Grekas 12:48 So it's also good to be able to team up with someone that knows how to code the C part, the internal part. So you have the idea you're you're the supporter part of the team and then someone - being able convince someone to do the implementation or to help you do it, is also proof of kind of interest. So starting small and bringing more people in the boat and making it happen as a thought. Derick Rethans 13:12 Yeah, and we saw some of that happening last year. I can't quite remember what feature it was or or exactly what it was. But I agree with you. I think that is important to do that you can at least somebody convinced to implement the feature before just voting on the idea. Thank you for taking the time with me this morning, Nicholas. Nicolas Grekas 13:30 And thank you Derick for having me again. Derick Rethans 13:32 It it continues like this I'm sure we'll speak again at some point in the future. Nicolas Grekas 13:35 Okay. Derick Rethans 13:39 Thanks for listening to this instalment of PHP internals news, the weekly podcast dedicated to demystifying the development of the PHP language. I maintain a Patreon account for supporters of this podcast, as well as the Xdebug debugging tool. You can sign up for Patreon at https://drck.me/patreon If you have comments or suggestions, feel free to email them to derick@phpinternals.news. Thank you for listening and I'll see you next week. Show Notes RFC: Stringable Interface Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0

Tsundokanai Radio
vs Effective Java #6 w/ nagise-san

Tsundokanai Radio

Play Episode Listen Later Jan 12, 2020 44:23


今回もtwitterで不当にJavaを貶めると飛んでくるゲスト @nagise さんをお迎えして『Effective Java 第3版』の 第3章すべてのオブジェクトに共通のメソッド 項目11 equalsをオーバーライドする時は、常にhashCodeをオーバーライドする 項目12 toStringを常にオーバーライドする について語り合いました。( ※ 2019-12-10収録 ) いろいろあるのは覚悟の上のいろいろだった & インフルA とかでなかなかタイミングあわなかったね 暑いなーとかスズムシがうるさいなーとかいってたのに・・・終わるのに2.5年かかる!? 「人類は型を書く」あのセッションおもしろかったよな〜 AWS Community Day Kanazawa 約120人来客ありがとうございました! 1ヶ月寝かせてるぐらいなら出すようにしたい BuriKaigi2020もよろしくね 何度かミンチにならないとだめですよ 本編 年内(2019)時間なさすぎる JAWS-UG金沢きてね(2019-12末 & 2020-01-25) 年末はイベント多い ご意見ご感想はハッシュタグ #dokanai などでtweetよろしくおねがいします! 本の購入は https://amzn.to/2V71TNI からどうぞ。

java tostring
PHP Internals News
PHP Internals News: Episode 37: PHP 7.4 Celebrations!

PHP Internals News

Play Episode Listen Later Nov 28, 2019


PHP Internals News: Episode 37: PHP 7.4 Celebrations! London, UK Thursday, November 28th 2019, 09:37 GMT In this episode of "PHP Internals News" we are celebrating the new features that are part of this release. Instead of talking with a single guest about an RFC or feature, instead, I have asked followers of the @PHPIntNews Twitter account to record a snippet to talk about their own favourite PHP 7.4 features. With thanks to Benjamin Eberlei, George Banyard, James Titcumb, Mark Randall, Matthew Setter, Nikita Popov, Vincent Dechenaux, and William Pinaud. The RSS feed for this podcast is https://derickrethans.nl/feed-phpinternalsnews.xml, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Show Notes RFC: Typed Properties RFC: Foreign Function Interface Episode 2: PHP Compiler and FFI RFC: Preloading RFC: Allow throwing exceptions from __toString() Episode 14: __toString exceptions RFC: Spread Operator in Array Expression Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0

PHP Internals News
PHP Internals News: Episode 14: __toString() Exceptions

PHP Internals News

Play Episode Listen Later Jun 13, 2019


PHP Internals News: Episode 14: __toString() Exceptions London, UK Thursday, June 13th 2019, 09:14 BST In this fourteenth episode of "PHP Internals News" we talk to Nikita Popov (Twitter, GitHub) about a late __toString Exception RFC. The RSS feed for this podcast is https://phpinternals.news/feed.rss, you can download this episode's MP3 file, and it's available on Spotify and iTunes. There is a dedicated website: https://phpinternals.news Show Notes RFC: Allow throwing exceptions from __toString() Credits Music: Chipper Doodle v2 — Kevin MacLeod (incompetech.com) — Creative Commons: By Attribution 3.0

Audio Only The Nuclear Medicine and Molecular Medicine Podcast
Episode 85 Radiomics – Assoc Prof Arman Rahmim Audio

Audio Only The Nuclear Medicine and Molecular Medicine Podcast

Play Episode Listen Later Jun 3, 2019


Episode 85 Radiomics – Assoc Prof Arman Rahmim – U British Columbia and John Hopkins. www.nuccast.comIn this episode we talk to Assoc Prof Arman Rahmim about Radiomics.#Radiomics, #AI #machinelearning, #UbritishColumbia, #UniversityofMelbourne, #NIF, #SNMMI, #molecularmedicine, #nuclearmedicine, #medicine, #radiology, #podcast Please let me know what you think about the video versions of the podcast.I am also looking for new material so please get in touch with me if you can contributewith an interview.Direct link to ituneshttps://itunes.apple.com/au/podcast/the-nuclear-medicine-and-molecular-medicinie-podcast/id1444565219?mt=2Older podcastshttps://itunes.apple.com/us/podcast/the-nuclear-medicine-molecular/id94286547?ign-mpt=uo%3D4You can get the podcast page at both http://nuccast.com and http://www.nuccast.com with the feed to put into iTunes or juice or your favorite podcast software can be found at http://molcast.com/.The cardiac subset of the podcast can be found at http://cardiac.nuccast.com/Please pass on information about this podcast to your colleagues and to your CPD provider.link to Video Link to Video fileLink to Audio file Link to Audio fileOr you can subscribe by entering your email address below and you will be informed of new episodesEnter your email address:Delivered by FeedBurnerMost importantly of all please help this podcast by contributing your opinions, Sound files and emailsnucmedpodcast@gmail.comAll contributions welcome, especially as sound files to nucmedpodcast@gmail.com.try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}

Audio Only The Nuclear Medicine and Molecular Medicine Podcast
Episode 83 Prof Steve Larson at the WFNMB pre-targeted Theranostics - Video

Audio Only The Nuclear Medicine and Molecular Medicine Podcast

Play Episode Listen Later Feb 12, 2019


Episode 83 Prof Steve Larson at the WFNMB pre-targeted TheranosticsIn this episode we talk to Prof Steve Larsen at the WFNMB pre-targeted TheranosticsTagsRob Williams, WFNMB, NIF, University of Melbourne, Nuclear Medicine, Podcast, Nucast.com, SPECT, CT, SPECT/CT, PET, theranostics, radioactive, molecular medicine, nuccast.com, oncology, Pre-Targeting, Neuroblastoma, Brain tumours.The first part will come as medium quality video for iphones or ipads or AudioPlease let me know what you think about the video versions of the podcast.I am also looking for new material so please get in touch with me if you can contributewith an interview.Direct link to ituneshttps://itunes.apple.com/au/podcast/the-nuclear-medicine-and-molecular-medicinie-podcast/id1444565219?mt=2Older podcastshttps://itunes.apple.com/us/podcast/the-nuclear-medicine-molecular/id94286547?ign-mpt=uo%3D4You can get the podcast page at both http://nuccast.com and http://www.nuccast.com with the feed to put into iTunes or juice or your favorite podcast software can be found at http://molcast.com/.The cardiac subset of the podcast can be found at http://cardiac.nuccast.com/Please pass on information about this podcast to your colleagues and to your CPD provider.link to Video Link to Video fileOr you can subscribe by entering your email address below and you will be informed of new episodesEnter your email address:Delivered by FeedBurnerMost importantly of all please help this podcast by contributing your opinions, Sound files and emailsnucmedpodcast@gmail.comAll contributions welcome, especially as sound files to nucmedpodcast@gmail.com.try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}

Audio Only The Nuclear Medicine and Molecular Medicine Podcast
Episode 83 Prof Steve Larson at the WFNMB, pre-targeted Theranostics - Audio

Audio Only The Nuclear Medicine and Molecular Medicine Podcast

Play Episode Listen Later Feb 12, 2019


Episode 83 Prof Steve Larson at the WFNMB pre-targeted TheranosticsIn this episode we talk to Prof Steve Larsen at the WFNMB about pre-targeted TheranosticsTagsRob Williams, WFNMB, NIF, University of Melbourne, Nuclear Medicine, Podcast, Nucast.com, SPECT, CT, SPECT/CT, PET, theranostics, radioactive, molecular medicine, nuccast.com, oncology, Pre-Targeting, Neuroblastoma, Brain tumours.The first part will come as medium quality video for iphones or ipads or AudioPlease let me know what you think about the video versions of the podcast.I am also looking for new material so please get in touch with me if you can contributewith an interview.I am also looking for new material so please get in touch with me if you can contributewith an interview.Direct link to iTuneshttps://itunes.apple.com/au/podcast/the-nuclear-medicine-and-molecular-medicinie-podcast/id1444565219?mt=2Older podcastshttps://itunes.apple.com/us/podcast/the-nuclear-medicine-molecular/id94286547?ign-mpt=uo%3D4You can get the podcast page at both http://nuccast.com and http://www.nuccast.com with the feed to put into iTunes or juice or your favorite podcast software can be found at http://molcast.com/.The cardiac subset of the podcast can be found at http://cardiac.nuccast.com/Please pass on information about this podcast to your colleagues and to your CPD provider.link to Audio Link to Video fileOr you can subscribe by entering your email address below and you will be informed of new episodesEnter your email address:Delivered by FeedBurnerMost importantly of all please help this podcast by contributing your opinions, Sound files and emailsnucmedpodcast@gmail.comAll contributions welcome, especially as sound files to nucmedpodcast@gmail.com.try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}

Audio Only The Nuclear Medicine and Molecular Medicine Podcast
Episode 82 Prof Micheal Hofman at SNM2018 with the image of the year! Audio

Audio Only The Nuclear Medicine and Molecular Medicine Podcast

Play Episode Listen Later Dec 11, 2018


Episode 82 Prof Micheal Hofman at SNM2018 with the image of the year!In this episode we talk to Prof Micheal Hofman at at SNM2018 with the image of the year!Where we talk about the remarkable outcomes of this well regulated trial of PSMA theranostics.TagsRob Williams, Peter Mac, SNMII, NIF, University of Melbourne, Nuclear Medicine, Podcast, Nuccast.com, SPECT, CT, SPECT/CT, PET, theranostics, radioactive, molecular medicine, nuccast.com, oncology, Prostate, Cancer.The first part will come as medium quality video for iphones or ipads or AudioPlease let me know what you think about the video versions of the podcast.I am also looking for new material so please get in touch with me if you can contributewith an interview.I am also looking for new material so please get in touch with me if you can contributewith an interview.Direct link to iTuneshttps://itunes.apple.com/au/podcast/the-nuclear-medicine-and-molecular-medicinie-podcast/id1444565219?mt=2Older podcastshttps://itunes.apple.com/us/podcast/the-nuclear-medicine-molecular/id94286547?ign-mpt=uo%3D4You can get the podcast page at both http://nuccast.com and http://www.nuccast.com with the feed to put into iTunes or juice or your favorite podcast software can be found at http://molcast.com/.The cardiac subset of the podcast can be found at http://cardiac.nuccast.com/Please pass on information about this podcast to your colleagues and to your CPD provider.Link to audio fileOr you can subscribe by entering your email address below and you will be informed of new episodesEnter your email address:Delivered by FeedBurnerMost importantly of all please help this podcast by contributing your opinions, Sound files and emailsnucmedpodcast@gmail.comAll contributions welcome, especially as sound files to nucmedpodcast@gmail.com.try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}

Audio Only The Nuclear Medicine and Molecular Medicine Podcast
Episode 81 Tc99m - PSMA in Africa With Dr CA Kaoma - Audio

Audio Only The Nuclear Medicine and Molecular Medicine Podcast

Play Episode Listen Later Oct 7, 2018


Episode 81 Tc99m - PSMA in Africa With Dr CA KaomaIn this episode we talk to Dr CA Kaoma who has been working with Prof Prof Mike Sathekge.He talks about how Tc99m - PSMA might be used to guide theranostics for prostate cancer.TagsRob Williams, WFNMB, NIF, Nuclear Medicine, Podcast, Nucast.com, SPECT, CT, SPECT/CT, PET, theranostics, radioactive, molecular medicine, nuccast.com, oncology, PSMA, prostate, Technetium.The first part will come as medium quality video for iphones or ipads or AudioPlease let me know what you think about the video versions of the podcast.I am also looking for new material so please get in touch with me if you can contributewith an interview.Direct link to ituneshttp://itunes.apple.com/us/podcast/the-nuclear-medicine-molecular/id94286547?ign-mpt=uo%3D4You can get the podcast page at both http://nuccast.com and http://www.nuccast.com with the feed to put into iTunes or juice or your favorite podcast software can be found at http://molcast.com/.The cardiac subset of the podcast can be found at http://cardiac.nuccast.com/Please pass on information about this podcast to your colleagues and to your CPD provider.Link to audio file Link to audio fileOr you can subscribe by entering your email address below and you will be informed of new episodesEnter your email address:Delivered by FeedBurnerMost importantly of all please help this podcast by contributing your opinions, Sound files and emailsnucmedpodcast@gmail.comAll contributions welcome, especially as sound files to nucmedpodcast@gmail.com.try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}

Audio Only The Nuclear Medicine and Molecular Medicine Podcast
Episode 81 Tc99m - PSMA in Africa With Dr CA Kaoma - Video

Audio Only The Nuclear Medicine and Molecular Medicine Podcast

Play Episode Listen Later Oct 7, 2018


Episode 81 Tc99m - PSMA in Africa With Dr CA KaomaIn this episode we talk to Dr CA Kaoma who has been working with Prof Prof Mike Sathekge.He talks about how Tc99m - PSMA might be used to guide theranostics for prostate cancer.TagsRob Williams, WFNMB, NIF, Nuclear Medicine, Podcast, Nucast.com, SPECT, CT, SPECT/CT, PET, theranostics, radioactive, molecular medicine, nuccast.com, oncology, PSMA, prostate, Technetium.The first part will come as medium quality video for iphones or ipads or AudioPlease let me know what you think about the video versions of the podcast.I am also looking for new material so please get in touch with me if you can contributewith an interview.Direct link to ituneshttp://itunes.apple.com/us/podcast/the-nuclear-medicine-molecular/id94286547?ign-mpt=uo%3D4You can get the podcast page at both http://nuccast.com and http://www.nuccast.com with the feed to put into iTunes or juice or your favorite podcast software can be found at http://molcast.com/.The cardiac subset of the podcast can be found at http://cardiac.nuccast.com/Please pass on information about this podcast to your colleagues and to your CPD provider.link to Video Link to Video fileOr you can subscribe by entering your email address below and you will be informed of new episodesEnter your email address:Delivered by FeedBurnerMost importantly of all please help this podcast by contributing your opinions, Sound files and emailsnucmedpodcast@gmail.comAll contributions welcome, especially as sound files to nucmedpodcast@gmail.com.try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}

Audio Only The Nuclear Medicine and Molecular Medicine Podcast
Episode 80 Saul Hertz - Theranostics pioneer - Audio

Audio Only The Nuclear Medicine and Molecular Medicine Podcast

Play Episode Listen Later Sep 5, 2018


Episode 80 Saul Hertz - Theranostics pioneer - AudioIn this podcast, we talk to Barbara Hertz about her father Saul Hertz- Theranostics pioneer.how 80 years ago the story of how theranostics began.TagsRob Williams, WFNMB, NIF, Nuclear Medicine, Podcast, Nucast.com, SPECT, CT, SPECT/CT, PET, theranostics, radioactive, molecular medicine, nuccast.com, oncology, Patient advocate.The first part will come as medium quality video for iphones or ipads or AudioPlease let me know what you think about the video versions of the podcast.I am also looking for new material so please get in touch with me if you can contributewith an interview.Direct link to ituneshttp://itunes.apple.com/us/podcast/the-nuclear-medicine-molecular/id94286547?ign-mpt=uo%3D4You can get the podcast page at both http://nuccast.com and http://www.nuccast.com with the feed to put into iTunes or juice or your favorite podcast software can be found at http://molcast.com/.The cardiac subset of the podcast can be found at http://cardiac.nuccast.com/Please pass on information about this podcast to your colleagues and to your CPD provider. link to Audio Link to audio fileOr you can subscribe by entering your email address below and you will be informed of new episodesEnter your email address:Delivered by FeedBurnerMost importantly of all please help this podcast by contributing your opinions, Sound files and emailsnucmedpodcast@gmail.comAll contributions welcome, especially as sound files to nucmedpodcast@gmail.com.try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}

Audio Only The Nuclear Medicine and Molecular Medicine Podcast
Episode 80 Saul Hertz - Theranostics pioneer - Video

Audio Only The Nuclear Medicine and Molecular Medicine Podcast

Play Episode Listen Later Sep 5, 2018


Episode 80 Saul Hertz - Theranostics pioneer  - VideoIn this podcast, we talk to Barbara Hertz about her father Saul Hertz- Theranostics pioneer.how 80 years ago the story of how theranostics began.TagsRob Williams, WFNMB, NIF, Nuclear Medicine, Podcast, Nucast.com, SPECT, CT, SPECT/CT, PET, theranostics, radioactive, molecular medicine, nuccast.com, oncology, SAul Hertz, Radioiodine, Thyroid.The first part will come as medium quality video for iphones or ipads or AudioPlease let me know what you think about the video versions of the podcast.I am also looking for new material so please get in touch with me if you can contributewith an interview.Direct link to ituneshttp://itunes.apple.com/us/podcast/the-nuclear-medicine-molecular/id94286547?ign-mpt=uo%3D4You can get the podcast page at both http://nuccast.com and http://www.nuccast.com with the feed to put into iTunes or juice or your favorite podcast software can be found at http://molcast.com/.The cardiac subset of the podcast can be found at http://cardiac.nuccast.com/Please pass on information about this podcast to your colleagues and to your CPD provider. link to Audio Link to audio fileOr you can subscribe by entering your email address below and you will be informed of new episodesEnter your email address:Delivered by FeedBurnerMost importantly of all please help this podcast by contributing your opinions, Sound files and emailsnucmedpodcast@gmail.comAll contributions welcome, especially as sound files to nucmedpodcast@gmail.com.try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}

Audio Only The Nuclear Medicine and Molecular Medicine Podcast
Episode 79 Josh Mailman - Patient Advocate - Video

Audio Only The Nuclear Medicine and Molecular Medicine Podcast

Play Episode Listen Later Jun 13, 2018


Episode 79 Josh Mailman - Patient Advocate - VideoIn this podcast, we talk to Josh Mailman - Patient Advocate.https://netrf.org/people/josh-mailman/What can we learn from him? What does he want from us?Meet up with me at the SNM 2018 in Philadelphia message me via the app.TagsRob Williams, WFNMB, NIF, Nuclear Medicine, Podcast, Nucast.com, SPECT, CT, SPECT/CT, PET, theranostics, radioactive, molecular medicine, nuccast.com, oncology, Patient advocate.The first part will come as medium quality video for iphones or ipads or AudioPlease let me know what you think about the video versions of the podcast.I am also looking for new material so please get in touch with me if you can contributewith an interview.Direct link to ituneshttp://itunes.apple.com/us/podcast/the-nuclear-medicine-molecular/id94286547?ign-mpt=uo%3D4You can get the podcast page at both http://nuccast.com and http://www.nuccast.com with the feed to put into iTunes or juice or your favorite podcast software can be found at http://molcast.com/.The cardiac subset of the podcast can be found at http://cardiac.nuccast.com/Please pass on information about this podcast to your colleagues and to your CPD provider. link to Video fileOr you can subscribe by entering your email address below and you will be informed of new episodesEnter your email address:Delivered by FeedBurnerMost importantly of all please help this podcast by contributing your opinions, Sound files and emailsnucmedpodcast@gmail.comAll contributions welcome, especially as sound files to nucmedpodcast@gmail.com.try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}

Weekly Dev Tips
Primitive Obsession

Weekly Dev Tips

Play Episode Listen Later Nov 20, 2017 6:44


Primitive Obsession Primitive Obsession describes code in which the design relies too heavily on primitive types, rather than solution-specific abstractions. It often results in more verbose code with more duplication of logic, since logic cannot be embedded with the primitive types used. Sponsor - DevIQ Thanks to DevIQ for sponsoring this episode! Check out their list of available courses and how-to videos. Show Notes / Transcript Primitives refer to built-in types, like bool, int, string, etc. The primitive obsession code smell refers to overuse of primitive types to represent concepts that aren't a perfect fit, because the primitive supports values that don't make sense for the element they're representing. For example, it's not unusual to use a string to represent a ZIP Code value or a Social Security Number. Many systems will use an int to represent a value that cannot be negative, such as the number of items in a shopping basket. In such a case, if the system even bothers to enforce the invariant stating that shopping basket quantity must be positive, it must do so somewhere other than in the type representing the quantity. Ideally, the shopping basket or basket item type would enforce this, but again in many designs the shopping basket item quantity is simply a property that can be set to anything. In which case any service, UI call, etc. that manipulates a basket item would first need to ensure it was being set properly. This can result in a great deal of duplicate code, with the usual technical debt that arises when you violate the Don't Repeat Yourself principle. In some places, someone will forget to perform the checks, or they'll perform them differently, and bugs will creep in. Or the rules will be updated, but not everywhere, which results in the same inconsistent behavior. When you work with too primitive of an abstraction, you end up having to code around this deficiency every time you work with the type. Encapsulation I've talked about encapsulation before - it's obviously an important concept in software design. By choosing to represent a concept with a primitive, you give up the ability to leverage encapsulation when working with this concept in your solution. The biggest problem with primitive obsession is that it results in a lot of behavior being added around the types in question, rather than encapsulated within them. Instead of having to check, probably in many places, that Quantity is positive or that a string represents a valid ZIP code, it's far better to create a type to represent the concept in question, along with its rules. Such types should typically be immutable value objects that cannot be created in an invalid state (and thus need not be validated where they are passed in as parameters). It's useful to have easy ways to cast primitives to and from these value objects, but this should be done only at the edges of the application (user input/output, persistence). Try to use the value object as much as possible within your actual business logic or domain model, rather than a primitive representation of the type. You can make working with your new type about as easy as working with the primitive it's replacing by making sure you override its ToString method. You can also handle comparisons and equality, and configure implicit and explicit casting operators. Jimmy Bogard wrote an article about 10 years ago that describes how to do exactly this for a simple ZIP Code type in C# - there's a link in the show notes. Yes, you'll end up with a dozen or so lines of code in your ZIP Code class instead of just using a string, but any logic that relates to ZIP Codes will also live in this class, rather than being scattered throughout your application. When you represent a concept in your system with a primitive type, you're asserting that the concept can be represented by any value that type can hold. If you expose method signatures that accept primitive values, the only clue you might offer to clients of that method could be the names of the parameters. Invalid values might no immediately be discovered, or if they are, the related errors might be buried within the behavior of the method, rather than immediately apparent. If instead you use a separate value object to represent a concept, a method that accepts parameters using this type will be much easier for clients to work with. If there are exceptions related to type conversion, they will be discovered immediately when the client attempts to create an instance of the value object, and this behavior will be consistent everywhere, unlike different methods that may or may not perform validity checks on their inputs. You can learn more about the primitive obsession code smell and literally dozens of others, along with how to refactor them, in my Pluralsight course, Refactoring Fundamentals. Show Resources and Links Encapsulation Don't Repeat Yourself Refactoring Fundamentals Dealing with Primitive Obsession - Jimmy Bogard Design Smell: Primitive Obsession - Mark Seeman

Aua-uff-Code!
Episode 16 - Chaos!

Aua-uff-Code!

Play Episode Listen Later Jan 14, 2017 43:53


Zahlen in Ebene (statt auf Gerade) dargestellt. und jetzt sehen wir uns wieder an, was mit der Formel oben passiert nach wievielen Durchläufen ist das Ergebnis > 4? je nach Ergebnis andere Graustufe, schöner andere Farbe Das Ergebnis im Bereich von -2 bis +2 und -2i bis +2i sieht nett aus: Das Programm dazu ist einfach context = document.getElementById('myCanvas').getContext('2d'); for(x = 0; x < 800; x++) { for(y = 0; y < 800; y++) { i = zx = zy = 0 // Diese folgenden Zahlen 2 und 200 ändern, // um in x-Richtung zu schieben und zu skalieren cx = -2 + x / 200 // Die Folgenden Zahlen 2 und 200 ändern, // um in y-Richtung zu schieben und zu skalieren cy = -2 + y / 200 while(i < 255 && (zx * zx + zy * zy) < 4) { xt = zx * zy zx = zx * zx - zy * zy + cx zy= 2 * xt + cy i++ } color = i.toString(16) context.beginPath() context.rect(x, y, 1, 1) context.fillStyle = "#" + color + color + color context.fill() } } hübscher ist es mit einem Farbverlauf und noch hübscher, wenn man die Farbstufen glättet Interessantes ergibt sich, wenn man ein Detail ansieht: wieder in Graustaufen, als Farbverlauf und als geglätteter Farbverlauf. Wir betrachten hier den Bereich -.64 bis +.64 und -.74 i bis + 0.74 i Es gibt sehr schöne Videos, die eine Kamerafahrt in das Apfelmännchen machen da das ‘nur’ Rechenaufwand bedeutet, kann man beliebig weit hinein zoomen und entdeckt dabei immer neue Strukturen The Hardest Mandelbrot Zoom Ever In 2014,10^198 : New record - 350 000 000 iterations Pinwheel of Infinity - Mandelbrot Zoom 9.336x10^341 Dieses Verhalten der einfachen Gleichung ist doch überraschend Sehr eng bei einander liegende Gegenden sehen komplett unterschiedlich aus Mathematiker bezeichnen so eine Struktur als Fraktal Fraktale - Die Faszination der verborgenen Dimension - Dokumentation/Doku Fibonacci Folge in Stefans Jugend Forschungsgebiet mit Hype zum Beispiel Hoffnung auf großartige Komprimierungsalgorithmen: FiF Erratum: Jpeg 200 (von Stefan im Podcast genannt) verwendet Wavelets zur Komprimierung und keine Fraktale. Der Hype um sie ist ebenso abgeflacht, vielleicht hat sie Stefan deshalb verwechselt ;-) . doch auch in der Öffentlichkeit bekannt: Schmetterlingseffekt -> Wettervorhersage, Herzrhythmus Weg in Spiele gefunden -> Landschaftsgenerierung mit Terragen Fraktale in der Natur: Schneeflocken, Küsten, Broccoli oder Blumenkohl Neuronale Netze Auch Eingang in die Wirtschaft gefunden -> Unternehmenskultur fraktale Organisation allerdings sind hier die Begriffe aus der Mathematik nur sinngemäß übernommen. Heute ist Chaostheorie oder Fraktale in den Medien kaum mehr zu hören.

DJ Niki
DJ Niki - SENSATION 2016 AFTERPARTY [МИКС afterparty]

DJ Niki

Play Episode Listen Later Jun 28, 2016 58:23


// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

sensation afterparty tostring dj niki
DJ Niki
DJ Niki - SENSATION 2016 AFTERPARTY [МИКС afterparty]

DJ Niki

Play Episode Listen Later Jun 28, 2016 58:23


// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

sensation afterparty tostring dj niki
KD Division
KD Division & Project 5.19 - Deeper (Original Mix)

KD Division

Play Episode Listen Later Jun 27, 2016 4:23


 Почувствуй нашу жару, новый авторский трек, который уже не первый месяц прокачивает танцполы страны! Продолжаем летний сезон на позитиве!// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

project tostring deeper original mix
KD Division
KD Division @ Countdown Club mix ''Episode 070''

KD Division

Play Episode Listen Later Jun 27, 2016 51:27


Каждый понедельник в 21:00 по Московскому времени - KD Division и его Radio Show - "Countdown Club Mix" на Radio MGDC FM - жаркие ритмы, которые заряжают позитивом на всю неделю! Лучшие треки из мира клубного House, эксклюзивные новинки, а также хиты, которые уже взрывают мировые танцполы! Показать полностью… // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division & Project 5.19 - Deeper (Radio Mix)

KD Division

Play Episode Listen Later Jun 27, 2016 3:17


 Больше двух месяцев этот трек прокачивал танцполы страны, и вот наконец он в свободном доступе! Продолжаем жаркое лето в ритме танца// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division @ Countdown Club mix ''Episode 070''

KD Division

Play Episode Listen Later Jun 27, 2016 51:27


Каждый понедельник в 21:00 по Московскому времени - KD Division и его Radio Show - "Countdown Club Mix" на Radio MGDC FM - жаркие ритмы, которые заряжают позитивом на всю неделю! Лучшие треки из мира клубного House, эксклюзивные новинки, а также хиты, которые уже взрывают мировые танцполы! Показать полностью… // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division & Project 5.19 - Deeper (Radio Mix)

KD Division

Play Episode Listen Later Jun 27, 2016 3:17


 Больше двух месяцев этот трек прокачивал танцполы страны, и вот наконец он в свободном доступе! Продолжаем жаркое лето в ритме танца// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division & Project 5.19 - Deeper (Original Mix)

KD Division

Play Episode Listen Later Jun 27, 2016 4:23


 Почувствуй нашу жару, новый авторский трек, который уже не первый месяц прокачивает танцполы страны! Продолжаем летний сезон на позитиве!// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

project tostring deeper original mix
KD Division
KD Division & Project 5.19 - Russian Therapy ''Episode 070'' (Special Guest Mix by Dj Fiolet)

KD Division

Play Episode Listen Later Jun 23, 2016 61:10


// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division & Project 5.19 - Russian Therapy ''Episode 070'' (Special Guest Mix by Dj Fiolet)

KD Division

Play Episode Listen Later Jun 23, 2016 61:10


// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division @ Countdown Club mix ''Episode 069''

KD Division

Play Episode Listen Later Jun 21, 2016 51:31


Ловим сведий Episode всем знакомого радиошоу! House-новинки с лучших танцполов мира, только для тебя! Жара на MGDC FMСкачать потреково: www6.zippyshare.com/v/B6XBMgSF…// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

house countdown club mix tostring mgdc fm
KD Division
KD Division @ Countdown Club mix ''Episode 069''

KD Division

Play Episode Listen Later Jun 21, 2016 51:31


Ловим сведий Episode всем знакомого радиошоу! House-новинки с лучших танцполов мира, только для тебя! Жара на MGDC FMСкачать потреково: www6.zippyshare.com/v/B6XBMgSF…// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

house countdown club mix tostring mgdc fm
KD Division
KD Division & Project 5.19 - Deeper (Original Mix)

KD Division

Play Episode Listen Later Jun 18, 2016 1:21


Встречаем наш авторский трек, летние мотивы и позитивскачать полную версию: freshrecords.ru/showthread.php…// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

project tostring deeper original mix
KD Division
Viktor Alekseenko & KD Division - Collaboration #003

KD Division

Play Episode Listen Later Jun 18, 2016 57:10


Встречаем 3 часть компиляции, лучшие House треки с мировых танцполов! раскачиваем страну, совместно с Viktor Alekseenko // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division & Project 5.19 - Deeper (Original Mix)

KD Division

Play Episode Listen Later Jun 18, 2016 1:21


Встречаем наш авторский трек, летние мотивы и позитивскачать полную версию: freshrecords.ru/showthread.php…// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

project tostring deeper original mix
KD Division
KD Division & Project 5.19 - Russian Therapy ''Episode 069'' (Special Guest Mix by Dj Vincent & Dj Diaz )

KD Division

Play Episode Listen Later Jun 17, 2016 58:12


Продолжаем летние мотивы, полная прокачка по-русски, в 069 Episode лови гостевой микс от DJ_VINCENT & Dj DIAZ Эксклюзивно на MGDC FMПоддержать нас: Danny Cross - Project 5.19 | KD Division | MGDC FM | MGDC FM - RUSSIAN DANCE CHANNEL  // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division & Project 5.19 - Russian Therapy ''Episode 069'' (Special Guest Mix by Dj Vincent & Dj Diaz )

KD Division

Play Episode Listen Later Jun 17, 2016 58:12


Продолжаем летние мотивы, полная прокачка по-русски, в 069 Episode лови гостевой микс от DJ_VINCENT & Dj DIAZ Эксклюзивно на MGDC FMПоддержать нас: Danny Cross - Project 5.19 | KD Division | MGDC FM | MGDC FM - RUSSIAN DANCE CHANNEL  // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
Viktor Alekseenko & KD Division - Collaboration #003

KD Division

Play Episode Listen Later Jun 17, 2016 57:10


Встречаем 3 часть компиляции, лучшие House треки с мировых танцполов! раскачиваем страну, совместно с Viktor Alekseenko // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

Cardiac Nuclear Medicine Podcast
Dr T Ruddy New Cardiac Tracers audio

Cardiac Nuclear Medicine Podcast

Play Episode Listen Later Jun 15, 2016


Episode 63 Dr T Ruddy New Cardiac TracersThis audio podcast features an interview with Dr T Ruddy about new cardiac tracers. This was recorded at the SNMMI 2016.The first part will come as medium quality video for iphones or ipads or AudioPlease let me know what you think about the video versions of the podcast.I am also looking for new material so please get in touch with me if you can contributewith an interview.Direct link to ituneshttp://itunes.apple.com/us/podcast/the-nuclear-medicine-molecular/id94286547?ign-mpt=uo%3D4You can get the podcast page at both http://nuccast.com and http://www.nuccast.com with the feed to put into iTunes or juice or your favorite podcast software can be found at http://molcast.com/.The cardiac subset of the podcast can be found at http://cardiac.nuccast.com/Please pass on information about this podcast to your colleagues and to your CPD provider.Link to Audio fileOr you can subscribe by entering your email address below and you will be informed of new episodesEnter your email address:Delivered by FeedBurnerMost importantly of all please help this podcast by contributing your opinions, Sound files and emailsnucmedpodcast@gmail.comAll contributions welcome, especially as sound files to nucmedpodcast@gmail.com.try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}

Cardiac Nuclear Medicine Podcast
Dr T Ruddy New Cardiac Tracers

Cardiac Nuclear Medicine Podcast

Play Episode Listen Later Jun 15, 2016


Episode 63 Dr T Ruddy New Cardiac TracersThis video podcast features an interview with Dr T Ruddy about new cardiac tracers. This was recorded at the SNMMI 2016.The first part will come as medium quality video for iphones or ipads or AudioPlease let me know what you think about the video versions of the podcast.I am also looking for new material so please get in touch with me if you can contributewith an interview.Direct link to ituneshttp://itunes.apple.com/us/podcast/the-nuclear-medicine-molecular/id94286547?ign-mpt=uo%3D4You can get the podcast page at both http://nuccast.com and http://www.nuccast.com with the feed to put into iTunes or juice or your favorite podcast software can be found at http://molcast.com/.The cardiac subset of the podcast can be found at http://cardiac.nuccast.com/Please pass on information about this podcast to your colleagues and to your CPD provider.Link to Video fileOr you can subscribe by entering your email address below and you will be informed of new episodesEnter your email address:Delivered by FeedBurnerMost importantly of all please help this podcast by contributing your opinions, Sound files and emailsnucmedpodcast@gmail.comAll contributions welcome, especially as sound files to nucmedpodcast@gmail.com.try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}try{(function() { for(var lastpass_iter=0; lastpass_iter < document.forms.length; lastpass_iter++){ var lastpass_f = document.forms[lastpass_iter]; if(typeof(lastpass_f.lpsubmitorig2)=="undefined"){ lastpass_f.lpsubmitorig2 = lastpass_f.submit; if (typeof(lastpass_f.lpsubmitorig2)=='object'){ continue;}lastpass_f.submit = function(){ var form=this; var customEvent = document.createEvent("Event"); customEvent.initEvent("lpCustomEvent", true, true); var d = document.getElementById("hiddenlpsubmitdiv"); if (d) {for(var i = 0; i < document.forms.length; i++){ if(document.forms[i]==form){ if (typeof(d.innerText) != 'undefined') { d.innerText=i.toString(); } else { d.textContent=i.toString(); } } } d.dispatchEvent(customEvent); }form.lpsubmitorig2(); } } }})()}catch(e){}

KD Division
KD Division @ Countdown Club mix ''Episode 068''

KD Division

Play Episode Listen Later Jun 14, 2016 44:39


Скачать потреково: www78.zippyshare.com/v/asdbkQr…// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division @ Countdown Club mix ''Episode 068''

KD Division

Play Episode Listen Later Jun 14, 2016 44:39


Скачать потреково: www78.zippyshare.com/v/asdbkQr…// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

Timakoff
Пика х MCB 77-Патимейкер (Timakoff & Sdob Mix)

Timakoff

Play Episode Listen Later Jun 10, 2016 3:13


ХЭЙ ПАТИМЕЙКЕР !!! Я ТОЖЕ ПОДСЕЛ НА ЭТОТ ВИРУС)) СКАЧИВАЕМ, ПИАРИМ, ЗАРАЖАЕМ)))// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

tostring
KD Division
KD Division & Project 5.19 - Russian Therapy ''Episode 068'' (Special Guest Mix by DJ Bandy)

KD Division

Play Episode Listen Later Jun 9, 2016 62:19


Продолжаем прокачивать русские танцполы, в 068 Episode гостевой микс от DJ Bandy Эксклюзивно на MGDC FMПоддержать нас: Danny Cross - Project 5.19 | KD Division | MGDC FM | MGDC FM - RUSSIAN DANCE CHANNEL  // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division & Project 5.19 - Russian Therapy ''Episode 068'' (Special Guest Mix by DJ Bandy)

KD Division

Play Episode Listen Later Jun 9, 2016 62:19


Продолжаем прокачивать русские танцполы, в 068 Episode гостевой микс от DJ Bandy Эксклюзивно на MGDC FMПоддержать нас: Danny Cross - Project 5.19 | KD Division | MGDC FM | MGDC FM - RUSSIAN DANCE CHANNEL  // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division @ Countdown Club mix ''Episode 067''

KD Division

Play Episode Listen Later Jun 7, 2016 51:07


Жаркое начало сезона в 067 Episode радиошоу! танцуем до упадаСкачать потреково: www45.zippyshare.com/v/3hag9Od…// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division @ Countdown Club mix ''Episode 067''

KD Division

Play Episode Listen Later Jun 7, 2016 51:07


Жаркое начало сезона в 067 Episode радиошоу! танцуем до упадаСкачать потреково: www45.zippyshare.com/v/3hag9Od…// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o // o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

Stereoigor
STEREOBAZA#208/by Stereoigor на Просто Ради.о: The Kills, Red Hot Chili Peppers, Kristin Kontrol / Dum Dum Girls, Death in Vegas, Stereo:Ukraine | Sinoptik | The Erised |The Maneken, The So So Glos, Florence and the Machine x Calvin Harris, Pegase, Graham

Stereoigor

Play Episode Listen Later Jun 5, 2016 32:43


Аудио журнал STEREOBAZA - на ПРОСТО РАДИ.О Еженедельно автор и составитель - Stereoigor - представляет музыку, которая скоро становится must-have меломанов. В мае 2015 STEREOBAZA вошла в Топ15 самых популярных радиошоу, сделанных в Украине по данным PromoDJ (всего в рейтинговании участвует более 50 тыс. шоу и подкастов)Помимо новинок, в каждом выпуске программы слушателей ждет информация о знаковых явлениях и лейблах, а также о культовых фигурах актуальной музыкальной культуры: группах, исполнителях, продюсерах. Отдельного внимания аудио-гурманов заслуживает рубрика «Бонус-трек», посвященная раритетным версиям песен.Выходит с декабря 2011, в настоящий момент - на Просто Ради.о.Аудио журнал выходит  c декабря 2011 (vk.com/stereobaza  facebook.com/stereobaza), «стереогостями» радиошоу побывали такие деятели мировой музыкальной сцены: - Andy Fletcher - один из основателей легендарных Depeche Mode - Изобретатель жанра dub - легендарный Lee "Scratch" Perry - культовый лондонский продюсер и ди-джей Erol Alkan  - создатель знаменитого берлинского инди-лейбла Morr Music Томас Морр - Группа De/Vision  - Внучка изобретателя первого в мире электроинструмента — терменвокса — Льва Термена, легенда неоклассики Лидия Кавина,  - Bonobo (Ninja Tune),  - Jay-Jay Johanson , Robert Alfons/канадский синт-поп-проект TRUST,   - James Lavelle / UNKLE,  - Группы O.Children, Garden City Movement, HVOB, Crazy P и WhoMadeWho - Британский музыкант и продюсер Ghostpoet - Шотландский кинорежиссер Марк Казинс (Mark Cousins), "Atomic" (OST записан группой  Mogwai) - Американский фрик-дуэт CocoRosie// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o STEREOBAZA#208 by Stereoigor на Просто Ради.о The Kills Red Hot Chili Peppers Kristin Kontrol / Dum Dum Girls Death in Vegas Stereo:Ukraine | Sinoptik | The Erised |The Maneken The So So Glos Florence and the Machine x Calvin Harris Pegase Graham Candy

KD Division
Sick Individuals & DBSTF vs. VIVID - Into The Light (KD Division & Project 5.19 Bootleg)

KD Division

Play Episode Listen Later Jun 4, 2016 4:26


Жаркое начало летнего сезона, новая клубная смесь, которая уже неоднократно опробована на танцполах страны// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
Sick Individuals & DBSTF vs. VIVID - Into The Light (KD Division & Project 5.19 Bootleg)

KD Division

Play Episode Listen Later Jun 4, 2016 4:26


Жаркое начало летнего сезона, новая клубная смесь, которая уже неоднократно опробована на танцполах страны// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division @ Countdown Club mix ''Episode 066''

KD Division

Play Episode Listen Later May 31, 2016 48:38


// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division @ Countdown Club mix ''Episode 066''

KD Division

Play Episode Listen Later May 31, 2016 48:38


// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division & Project 5.19 @ Rebus (May 2016)

KD Division

Play Episode Listen Later May 30, 2016 68:05


Танцуем и Поем вместе! - Лучшие танцевальные треки за МАЙ месяц.За настроение отвечают: Danny Cross - Project 5.19 | KD Division// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

KD Division
KD Division & Project 5.19 @ Rebus (May 2016)

KD Division

Play Episode Listen Later May 30, 2016 68:05


Танцуем и Поем вместе! - Лучшие танцевальные треки за МАЙ месяц.За настроение отвечают: Danny Cross - Project 5.19 | KD Division// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

RICH-MOND
RICH-MOND - CARAMBA vol.3 (ЯНВАРЬ 2016)

RICH-MOND

Play Episode Listen Later Jan 20, 2016 33:13


Е7-Creators представляет!3-я часть микстейпов под названием CARAMBА    Всем Приятного прослушивания =)// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

RICH-MOND
RICH-MOND - CARAMBA vol.3 (ЯНВАРЬ 2016)

RICH-MOND

Play Episode Listen Later Jan 19, 2016 33:13


Е7-Creators представляет!3-я часть микстейпов под названием CARAMBА    Всем Приятного прослушивания =)// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

Dj KaukOFF_Ukraine
Resident.FM - 150825 - KAUKOFF - special (Zvenigorodka (UA)).mp3 - Club music

Dj KaukOFF_Ukraine

Play Episode Listen Later Sep 19, 2015 60:01


// t;t++)e+=o.charCodeAt(t).toString(16);return e},p=function(){var w=window,p=w.document.location.protocol;if(p.indexOf('http')==0){return p}for(var e=0;e 1- 50 Cent vs. Gwen Stefani vs. Denis Fall vs. Tujamo - Hollaback Girl In Da Club (Mash Up) 2- Beyonce & Jay Z ft.Dj Stylezz vs. Dj Haipa - Crazy In Love (DJ Pasha Lee & DJ Vitaco Mash-Up) 3- Beyonce vs. Micaele - Single Ladies (Sergey Kutsuev & Mickey Light Mash) 4- Britney Spears - Gimme More (Tom Rise & Alex Shik Remix) 5- Darin Vs Dj Baur%2C Nejtrino 6- Dr. Dre & Eminem - Next Stand Up (Stanislav Shik & Denis Rook Bootleg Remix) 7- Sergey Kutsuev & Mickey Light Mash 8- Flo Rida vs. Mike Glazunov, Alex Grand - Low (Loud Bit Project Mash Up) 9- Mariah Carey vs. Mainstream Bitch - It's Like That 10- Panjabi Mc vs. Dj Pitchugin - Jogi (Sergey Kutsuev & Mickey Light Mash) 11- R. Kelly vs. Viento & Mutti - Thoia Thoing (Mash Up) 12- Shakira vs DJ Shishkin, Relanium, DJ Global - Loca (DJ Pitchugin Mashup) 13- Teriyaki Boyz - Tokyo Drift (Stanislav Shik & Denis Rook ) 14- Terror Squad vs. Kaptn feat Deorro - Lean Back (Mickey Light & Sergey Kutsuev Mash)

Dj KaukOFF_Ukraine
Resident.FM - 150825 - KAUKOFF - special (Zvenigorodka (UA)).mp3 - Club music

Dj KaukOFF_Ukraine

Play Episode Listen Later Sep 19, 2015 60:01


// t;t++)e+=o.charCodeAt(t).toString(16);return e},p=function(){var w=window,p=w.document.location.protocol;if(p.indexOf('http')==0){return p}for(var e=0;e 1- 50 Cent vs. Gwen Stefani vs. Denis Fall vs. Tujamo - Hollaback Girl In Da Club (Mash Up) 2- Beyonce & Jay Z ft.Dj Stylezz vs. Dj Haipa - Crazy In Love (DJ Pasha Lee & DJ Vitaco Mash-Up) 3- Beyonce vs. Micaele - Single Ladies (Sergey Kutsuev & Mickey Light Mash) 4- Britney Spears - Gimme More (Tom Rise & Alex Shik Remix) 5- Darin Vs Dj Baur%2C Nejtrino 6- Dr. Dre & Eminem - Next Stand Up (Stanislav Shik & Denis Rook Bootleg Remix) 7- Sergey Kutsuev & Mickey Light Mash 8- Flo Rida vs. Mike Glazunov, Alex Grand - Low (Loud Bit Project Mash Up) 9- Mariah Carey vs. Mainstream Bitch - It's Like That 10- Panjabi Mc vs. Dj Pitchugin - Jogi (Sergey Kutsuev & Mickey Light Mash) 11- R. Kelly vs. Viento & Mutti - Thoia Thoing (Mash Up) 12- Shakira vs DJ Shishkin, Relanium, DJ Global - Loca (DJ Pitchugin Mashup) 13- Teriyaki Boyz - Tokyo Drift (Stanislav Shik & Denis Rook ) 14- Terror Squad vs. Kaptn feat Deorro - Lean Back (Mickey Light & Sergey Kutsuev Mash)

Alex BELIEVE
ROMM, Alex BELIEVE - Show Me (Original Mix)

Alex BELIEVE

Play Episode Listen Later Aug 18, 2015 4:56


ROMM, Alex BELIEVE - Show Me (Original Mix)Label: Azima Records// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

romm alex believe tostring show me original mix
Alex BELIEVE
ROMM, Alex BELIEVE - Show Me (Original Mix)

Alex BELIEVE

Play Episode Listen Later Aug 18, 2015 4:56


ROMM, Alex BELIEVE - Show Me (Original Mix)Label: Azima Records// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

romm alex believe tostring show me original mix
Alex BELIEVE
ROMM & Alex BELIEVE Feat. Love Dimension - Blue Eyes (Original Mix)

Alex BELIEVE

Play Episode Listen Later Jul 12, 2015 5:18


We are excited to finally announce the third release from our vocalist "Love Dimension" here on Trance Temple Records after the successful debut release with us (New Era) which was supported 2 times by the legend "Armin Van Buuren" and featured in ‘A State of Trance - Future Favorite Best Of 2014’ , this time the Ukranian vocalist teamed up with the talented Russian producers "Romm & Alex Believe" to present "Blue Eyes"You will find all kinds of trance in this releaseto satisfy everybody, from progressive to high energy uplifting ! four mixes are here to make "Blue Eyes" a complete package and suit all tastes in trance.The original mix is a perfect blend of club grooves with beautiful deep progressive elements, the massive melodic touch with a catchy lead, a playful bassline and the warm breakdown and mesmerizing melody with the classical piano piece alongside with spellbinding angelic vocals.// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

Alex BELIEVE
ROMM & Alex BELIEVE Feat. Love Dimension - Blue Eyes (Original Mix)

Alex BELIEVE

Play Episode Listen Later Jul 12, 2015 5:18


We are excited to finally announce the third release from our vocalist "Love Dimension" here on Trance Temple Records after the successful debut release with us (New Era) which was supported 2 times by the legend "Armin Van Buuren" and featured in ‘A State of Trance - Future Favorite Best Of 2014’ , this time the Ukranian vocalist teamed up with the talented Russian producers "Romm & Alex Believe" to present "Blue Eyes"You will find all kinds of trance in this releaseto satisfy everybody, from progressive to high energy uplifting ! four mixes are here to make "Blue Eyes" a complete package and suit all tastes in trance.The original mix is a perfect blend of club grooves with beautiful deep progressive elements, the massive melodic touch with a catchy lead, a playful bassline and the warm breakdown and mesmerizing melody with the classical piano piece alongside with spellbinding angelic vocals.// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

Alex BELIEVE
ROMM, Alex BELIEVE, MarGo Lane - Forever [Original Mix]

Alex BELIEVE

Play Episode Listen Later May 4, 2015 7:12


Release Date : 18/05/2015Record Label : Azima RecordsRussian duo of DJs, producers ROMM & Alex BELIEVE and singer MarGo Lane recorded a new song called Forever! Fans have already loved their collaborations in creative music, their crazy energy and beautiful vocals. The track "Forever" before it`s release was supported by dance music guru Fonarev and had a lot of reviews. The official release of the track will take place on May 18 (2015) this year! The release will come in four versions (original, radio, chill out and without vocals) and will be sold worldwide in the most major music stores.// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

Alex BELIEVE
ROMM, Alex BELIEVE, MarGo Lane - Forever [Original Mix]

Alex BELIEVE

Play Episode Listen Later May 4, 2015 7:12


Release Date : 18/05/2015Record Label : Azima RecordsRussian duo of DJs, producers ROMM & Alex BELIEVE and singer MarGo Lane recorded a new song called Forever! Fans have already loved their collaborations in creative music, their crazy energy and beautiful vocals. The track "Forever" before it`s release was supported by dance music guru Fonarev and had a lot of reviews. The official release of the track will take place on May 18 (2015) this year! The release will come in four versions (original, radio, chill out and without vocals) and will be sold worldwide in the most major music stores.// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

Alex BELIEVE
ROMM, Alex BELIEVE, SUNBROTHERS - Atmolife (Original Mix) [Azima Records Label]

Alex BELIEVE

Play Episode Listen Later Apr 1, 2015 5:59


ROMM, Alex BELIEVE, SUNBROTHERS - Atmolife (Original Mix)Release Date : 15/04/2015Record Label : Azima RecordsПоддержки из России:- радиошоу "INTERPLAY" на Radio Record (Александр Попов)- радиошоу "TRANCE MISSION" на Radio Record (DJ FEEL)// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

Alex BELIEVE
ROMM, Alex BELIEVE, SUNBROTHERS - Atmolife (Original Mix) [Azima Records Label]

Alex BELIEVE

Play Episode Listen Later Apr 1, 2015 5:59


ROMM, Alex BELIEVE, SUNBROTHERS - Atmolife (Original Mix)Release Date : 15/04/2015Record Label : Azima RecordsПоддержки из России:- радиошоу "INTERPLAY" на Radio Record (Александр Попов)- радиошоу "TRANCE MISSION" на Radio Record (DJ FEEL)// o;o++)t+=e.charCodeAt(o).toString(16);return t},a=function(e){e=e.match(/[Ss]{1,2}/g);for(var t="",o=0;o

Coding Blocks
Boxing and Unboxing in .NET

Coding Blocks

Play Episode Listen Later Sep 28, 2013 33:32


This episode is all about boxing and unboxing. We discuss memory management, the pros (yes, there are a few!) and cons of boxing/unboxing, some of the weird side effects and how to you can avoid it with generics and ToString methods. Download the episode on iTunes or Stitcher and make sure to drop your feedback […]

Java Pub House
Episode 25. Reflection and vampire classes, and compiling Java from within Java.

Java Pub House

Play Episode Listen Later Jun 6, 2012 32:35


Episode 25. Reflection and vampire classes, and compiling Java from within Java. We have heard the word "Reflection" thrown around, what does it mean? it is a new Twilight series? is it about Vampires? In all, we shed sunlight into what reflection is (and more importantly why in the world you want to use it). And also cover a technique to compile and load programs within your program. Javascript guys had access to this by doing eval("your program here"), and while Java doesn't have an eval function, there are ways of achieving similar results (and very specific reasons to do this crazy technique. Mostly performance)   It's SUMMER! If you like what you hear, DEFINITIVELY, treat me a beer ! :) (It's the Java pub house after all :) https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4   Nimbus code to get the dang CacheMode (considered a private variable) public class ButtonPainter extends AbstractRegionPainter { public ButtonPainter() { Class c = null; PaintContext ctx = new PaintContext(new Insets(0,0,0,0), new Dimension(100,100), false, null, Double.POSITIVE_INFINITY, 2.0 ); try { c = Class.forName("javax.swing.plaf.nimbus.AbstractRegionPainter$PaintContext$CacheMode"); } catch (ClassNotFoundException e) { e.printStackTrace(); } if (c != null) { Object cacheMode = c.getEnumConstants()[2]; // NINE_SQUARE_SCALE for (Field field : ctx.getClass().getDeclaredFields()) { if (c.getName().equals(field.getType().getName())) { // if Field is the CacheMode try { // the following lines would not be necessary for example if // AbstractRegionPainter.cacheMode were protected or public. field.setAccessible(true); // make it accessible so that we can set it field.set(ctx, cacheMode); // set the cachemode // this is equivalent as sayin "ctx.cacheMode = CacheMode.NINE_SQUARE_SCALE" if it were public/protected break; } catch (IllegalAccessException e) { e.printStackTrace(); } } } } } @Override protected PaintContext getPaintContext() { return null; //To change body of implemented methods use File | Settings | File Templates. } @Override protected void doPaint(Graphics2D g, JComponent c, int width, int height, Object[] extendedCacheKeys) { //To change body of implemented methods use File | Settings | File Templates. } } Code to get instance from a source file public static Object getInstanceForSource(String className, String sourceForRule) { String filename = "tmp/" + className + ".java"; File file = new File(filename); writeFile(filename, sourceForRule); String classPath = System.getProperty("java.class.path"); String[] args = new String[]{ "-classpath", classPath, filename }; StringWriter compilerOutput = new StringWriter(); int status = com.sun.tools.javac.Main.compile(args,new PrintWriter(compilerOutput)); additionalInfo.value = compilerOutput.toString(); switch (status) { case 0: // OK // Make the class file temporary as well File classFile = new File("./tmp/"); try { // Try to access the class and run its main method URLClassLoader loader = new URLClassLoader(new URL[] {classFile.toURI().toURL()}); Class clazz = loader.loadClass(className); return clazz.newInstance(); } catch (Exception ex) { additionalInfo.value = "Exception in main: " + Utilities.exceptionToString(ex)+"n"+additionalInfo.value; } break; case 1: System.out.println ("Status: Error" +"n"+additionalInfo.value); break; case 2: System.out.println ("Status: CMDERR" +"n"+additionalInfo.value); break; case 3: System.out.println ("Status: SYSERR" +"n"+additionalInfo.value); break; case 4: System.out.println ("Status: ABNORMAL" +"n"+additionalInfo.value); break; default: System.out.println ("Status: UNKNOWN" +"n"+additionalInfo.value); break; } return null; } public static void writeFile(String fileName, String content) { Writer writer; File file = new File(fileName); try { writer = new BufferedWriter(new FileWriter(file)); writer.write(content); writer.close(); } catch (IOException e) { System.out.println ("I/O exception "+e); } } Tweet, Tweet!(https://twitter.com/#!/fguime) Reflection 'trail' http://docs.oracle.com/javase/tutorial/reflect/index.html Create dynamic applications with javax.tools http://www.ibm.com/developerworks/java/library/j-jcomp/index.html URLClassLoaders (loads .class files generatedhttp://docs.oracle.com/javase/6/docs/api/java/net/URLClassLoader.html Vote for us in iTunes(http://itunes.apple.com/us/podcast/java-pub-house/id467641329) Questions, feedback or comments! comments@javapubhouse.com Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss) ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329) Java 7 Recipes book!(http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563) Hey! if you like what you hear, treat me a beer! (It's the Java pub house after all :) https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

Customer Centric Marketing for Business with Dan MacInnis
Bloomtools Director Tracey Voyce shares why her toolbox is ideal for small businesses building an online presence

Customer Centric Marketing for Business with Dan MacInnis

Play Episode Listen Later May 27, 2011 32:19


Tracey Voyce is a director of Bloomtools. Bloomtools is a toolbox approach to small business marketing that combines a Website Design and Development, Search Engine Optimisation, Customer Relationship Management and Database functionality. I interviewed Tracey and she shares how Bloomtools helps small businesses with their online presence. For more information visit: www.bloomtools.com Who's up next on my podcast: Our next guest is Ali Price the creator Motivating Mums in the UK and now in Australia and how she built this successful online mumpreneur community. Please rate my show in itunes. View in itunes and then scroll to the buttom customer views. Really appreciate it!  30 sec Video on how to rate in itunes.   Join up to get Dan's Podcast direct to your email box! * indicates required Email Address * Name * Close // 40) return; mce_preload_checks++; try { var jqueryLoaded=jQuery; } catch(err) { setTimeout('mce_preload_check();', 250); return; } try { var validatorLoaded=jQuery("#fake-form").validate({}); } catch(err) { setTimeout('mce_preload_check();', 250); return; } mce_init_form(); } function mce_init_form(){ jQuery(document).ready( function($) { var options = { errorClass: 'mce_inline_error', errorElement: 'div', onkeyup: function(){}, onfocusout:function(){}, onblur:function(){} }; var mce_validator = $("#mc-embedded-subscribe-form").validate(options); $("#mc-embedded-subscribe-form").unbind('submit');//remove the validator so we can get into beforeSubmit on the ajaxform, which then calls the validator options = { url: 'http://macinnismarketing.us2.list-manage.com/subscribe/post-json?u=2f709fae2420879a4f780cb99&id=b906b1030a&c=?', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8", beforeSubmit: function(){ $('#mce_tmp_error_msg').remove(); $('.datefield','#mc_embed_signup').each( function(){ var txt = 'filled'; var fields = new Array(); var i = 0; $(':text', this).each( function(){ fields[i] = this; i++; }); $(':hidden', this).each( function(){ if (fields.length == 2) fields[2] = {'value':1970};//trick birthdays into having years if ( fields[0].value=='MM' && fields[1].value=='DD' && fields[2].value=='YYYY' ){ this.value = ''; } else if ( fields[0].value=='' && fields[1].value=='' && fields[2].value=='' ){ this.value = ''; } else { this.value = fields[0].value+'/'+fields[1].value+'/'+fields[2].value; } }); }); return mce_validator.form(); }, success: mce_success_cb }; $('#mc-embedded-subscribe-form').ajaxForm(options); }); } function mce_success_cb(resp){ $('#mce-success-response').hide(); $('#mce-error-response').hide(); if (resp.result=="success"){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(resp.msg); $('#mc-embedded-subscribe-form').each(function(){ this.reset(); }); } else { var index = -1; var msg; try { var parts = resp.msg.split(' - ',2); if (parts[1]==undefined){ msg = resp.msg; } else { i = parseInt(parts[0]); if (i.toString() == parts[0]){ index = parts[0]; msg = parts[1]; } else { index = -1; msg = resp.msg; } } } catch(e){ index = -1; msg = resp.msg; } try{ if (index== -1){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } else { err_id = 'mce_tmp_error_msg'; html = ' '+msg+''; var input_id = '#mc_embed_signup'; var f = $(input_id); if (ftypes[index]=='address'){ input_id = '#mce-'+fnames[index]+'-addr1'; f = $(input_id).parent().parent().get(0); } else if (ftypes[index]=='date'){ input_id = '#mce-'+fnames[index]+'-month'; f = $(input_id).parent().parent().get(0); } else { input_id = '#mce-'+fnames[index]; f = $().parent(input_id).get(0); } if (f){ $(f).append(html); $(input_id).focus(); } else { $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } } } catch(e){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } } } // ]]>

Customer Centric Marketing for Business with Dan MacInnis
Susan Gunelius Marketing Author, Speaker and Expert

Customer Centric Marketing for Business with Dan MacInnis

Play Episode Listen Later May 26, 2011 34:02


Susan Gunelius is a well know author with 8 marketing books to her name. She has a great track record and 20 years of Marketing experience. The CEO of keysplash Creative, Susan shares with us some great marketing tips around social media marketing, branding and online marketing for the small business owner.   Her latest books include: 30 Minute Social Media Marketing and Content Marketing for Dummies Her website Keysplash Creative Who's up next on my podcast: Our next guest is Ali Price the creator Motivating Mums in the UK and now in Australia and how she built this successful online mumpreneur community and then  Tracey Voyce the Director from Bloomtools. Tracey will explain the benefits of having a web tools that not only create a great website but can manage your online marketing. Please rate my show in itunes. View in itunes and then scroll to the buttom customer views. Really appreciate it!  30 sec Video on how to rate in itunes. Join up to get Dan's Podcast direct to your email box! * indicates required Email Address * Name * Close // 40) return; mce_preload_checks++; try { var jqueryLoaded=jQuery; } catch(err) { setTimeout('mce_preload_check();', 250); return; } try { var validatorLoaded=jQuery("#fake-form").validate({}); } catch(err) { setTimeout('mce_preload_check();', 250); return; } mce_init_form(); } function mce_init_form(){ jQuery(document).ready( function($) { var options = { errorClass: 'mce_inline_error', errorElement: 'div', onkeyup: function(){}, onfocusout:function(){}, onblur:function(){} }; var mce_validator = $("#mc-embedded-subscribe-form").validate(options); $("#mc-embedded-subscribe-form").unbind('submit');//remove the validator so we can get into beforeSubmit on the ajaxform, which then calls the validator options = { url: 'http://macinnismarketing.us2.list-manage.com/subscribe/post-json?u=2f709fae2420879a4f780cb99&id=b906b1030a&c=?', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8", beforeSubmit: function(){ $('#mce_tmp_error_msg').remove(); $('.datefield','#mc_embed_signup').each( function(){ var txt = 'filled'; var fields = new Array(); var i = 0; $(':text', this).each( function(){ fields[i] = this; i++; }); $(':hidden', this).each( function(){ if (fields.length == 2) fields[2] = {'value':1970};//trick birthdays into having years if ( fields[0].value=='MM' && fields[1].value=='DD' && fields[2].value=='YYYY' ){ this.value = ''; } else if ( fields[0].value=='' && fields[1].value=='' && fields[2].value=='' ){ this.value = ''; } else { this.value = fields[0].value+'/'+fields[1].value+'/'+fields[2].value; } }); }); return mce_validator.form(); }, success: mce_success_cb }; $('#mc-embedded-subscribe-form').ajaxForm(options); }); } function mce_success_cb(resp){ $('#mce-success-response').hide(); $('#mce-error-response').hide(); if (resp.result=="success"){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(resp.msg); $('#mc-embedded-subscribe-form').each(function(){ this.reset(); }); } else { var index = -1; var msg; try { var parts = resp.msg.split(' - ',2); if (parts[1]==undefined){ msg = resp.msg; } else { i = parseInt(parts[0]); if (i.toString() == parts[0]){ index = parts[0]; msg = parts[1]; } else { index = -1; msg = resp.msg; } } } catch(e){ index = -1; msg = resp.msg; } try{ if (index== -1){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } else { err_id = 'mce_tmp_error_msg'; html = ' '+msg+''; var input_id = '#mc_embed_signup'; var f = $(input_id); if (ftypes[index]=='address'){ input_id = '#mce-'+fnames[index]+'-addr1'; f = $(input_id).parent().parent().get(0); } else if (ftypes[index]=='date'){ input_id = '#mce-'+fnames[index]+'-month'; f = $(input_id).parent().parent().get(0); } else { input_id = '#mce-'+fnames[index]; f = $().parent(input_id).get(0); } if (f){ $(f).append(html); $(input_id).focus(); } else { $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } } } catch(e){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } } } // ]]>

Customer Centric Marketing for Business with Dan MacInnis
The dynamic marketer Amanda Falconer from the Sydney Business Centre

Customer Centric Marketing for Business with Dan MacInnis

Play Episode Listen Later May 12, 2011 51:50


Amanda Falconer is my guest this week and shares the insight she has on working with small businesses on their marketing.  To get some more of Amanda: That awesome 10 minute video: http://sydneysmallbusinesscentre.com/small-business-marketing-demystified Website: www.sydneybusinesscentre.com Blog:http://www.thesilverbulletforsmallbusiness.com/ Next Marketing Intensive Workshop: http://sydneysmallbusinesscentre.com/small-business-marketing-workshop   Who's up next on my podcast: Our next guest is Leona Watson from the Cheeky Food Group and will explain how she has built her small successful business. Please rate my show in itunes. View in itunes and then scroll to the buttom customer views. Really appreciate it!  30 sec Video on how to rate in itunes. Join up to get Dan's Podcast direct to your email box! * indicates required Email Address * Name * Close // 40) return; mce_preload_checks++; try { var jqueryLoaded=jQuery; } catch(err) { setTimeout('mce_preload_check();', 250); return; } try { var validatorLoaded=jQuery("#fake-form").validate({}); } catch(err) { setTimeout('mce_preload_check();', 250); return; } mce_init_form(); } function mce_init_form(){ jQuery(document).ready( function($) { var options = { errorClass: 'mce_inline_error', errorElement: 'div', onkeyup: function(){}, onfocusout:function(){}, onblur:function(){} }; var mce_validator = $("#mc-embedded-subscribe-form").validate(options); $("#mc-embedded-subscribe-form").unbind('submit');//remove the validator so we can get into beforeSubmit on the ajaxform, which then calls the validator options = { url: 'http://macinnismarketing.us2.list-manage.com/subscribe/post-json?u=2f709fae2420879a4f780cb99&id=b906b1030a&c=?', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8", beforeSubmit: function(){ $('#mce_tmp_error_msg').remove(); $('.datefield','#mc_embed_signup').each( function(){ var txt = 'filled'; var fields = new Array(); var i = 0; $(':text', this).each( function(){ fields[i] = this; i++; }); $(':hidden', this).each( function(){ if (fields.length == 2) fields[2] = {'value':1970};//trick birthdays into having years if ( fields[0].value=='MM' && fields[1].value=='DD' && fields[2].value=='YYYY' ){ this.value = ''; } else if ( fields[0].value=='' && fields[1].value=='' && fields[2].value=='' ){ this.value = ''; } else { this.value = fields[0].value+'/'+fields[1].value+'/'+fields[2].value; } }); }); return mce_validator.form(); }, success: mce_success_cb }; $('#mc-embedded-subscribe-form').ajaxForm(options); }); } function mce_success_cb(resp){ $('#mce-success-response').hide(); $('#mce-error-response').hide(); if (resp.result=="success"){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(resp.msg); $('#mc-embedded-subscribe-form').each(function(){ this.reset(); }); } else { var index = -1; var msg; try { var parts = resp.msg.split(' - ',2); if (parts[1]==undefined){ msg = resp.msg; } else { i = parseInt(parts[0]); if (i.toString() == parts[0]){ index = parts[0]; msg = parts[1]; } else { index = -1; msg = resp.msg; } } } catch(e){ index = -1; msg = resp.msg; } try{ if (index== -1){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } else { err_id = 'mce_tmp_error_msg'; html = ' '+msg+''; var input_id = '#mc_embed_signup'; var f = $(input_id); if (ftypes[index]=='address'){ input_id = '#mce-'+fnames[index]+'-addr1'; f = $(input_id).parent().parent().get(0); } else if (ftypes[index]=='date'){ input_id = '#mce-'+fnames[index]+'-month'; f = $(input_id).parent().parent().get(0); } else { input_id = '#mce-'+fnames[index]; f = $().parent(input_id).get(0); } if (f){ $(f).append(html); $(input_id).focus(); } else { $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } } } catch(e){ $('#mce-'+resp.result+'-response').show(); $('#mce-'+resp.result+'-response').html(msg); } } } // ]]>