When Java 8 hit the streets, a lot of people were either excited or confused about the two biggest language changes that were introduced: lambdas and streams. While these two things might seem to be “just another syntax” for doing what we can already do, it turns out that these two programming techniques are very powerful because of the WAY they work. Even if you’re not using Java 8 just yet, this session will show you the potential of using these new language features.
A presentation by Julian Robichaux (panagenda)
Cracking JWT tokens: a tale of magic, Node.JS and parallel computingLuciano Mammino
Learn how you can use some JavaScript/Node.js black magic to crack JWT tokens and impersonate other users or escalate privileges. Just add a pinch of ZeroMQ, a dose of parallel computing, a 4 leaf clover, mix everything applying some brute force and you'll get a powerful JWT cracking potion!
4Developers 2015: Programowanie synchroniczne i asynchroniczne - dwa światy k...PROIDEA
Łukasz Nawojczyk
Language: Polish
Jakie są podejścia do programowania równoległego w Javie? Czy programowanie asynchroniczne musi być trudne w kodowaniu i debugowaniu? Czy można pisać współbieżny kod, który będzie łatwo testowalny? Czy asynchroniczność zawsze oznacza wielowątkowość?
W ramach wykładu zostaną przedstawione przykłady różnych podejść do wielowątkowości oraz wyniki analizy ogólnodostępnych rozwiązań, m.in. RxJava, JDeferred, Awaitility. Dodatkowo będzie omówione podejście do pisania wydajnych aplikacji internetowych w oparciu Vert.x i jego model obsługi współbieżności sterowany zdarzeniami.
Salesforce provides an interface for testing callouts named HttpCalloutMock used to cover remote callouts. While adequate for simple callouts, in the real world you often need something more flexible, as in the case of multiple and varying responses from the same or varying endpoints. More precise testing and coverage can be obtained by extending the standard interface. Join us as we demonstrate a solution to use to enable the flexibility required for complex integration and synchronization apps.
This presentation deals with a complex approach to application testing in back end and front end parts, tests writing and common mistakes. It also includes a short overview of libraries and frameworks for creation of tests, as well as practical examples of code.
Presentation by Pavlo Iuriichuk, Lead Software Engineer, GlobalLogic, Kyiv), delivered at an open techtalk on December 11, 2014.
More details - http://globallogic.com.ua/report-web-testing-techtalk-2014
A presentation of what are JavaScript Promises, what problems they solve and how to use them. Dissects some Bluebird features, the most complete Promise library available for NodeJS and browser.
Even for JavaScript software developers well-versed in Agile practices, using test-driven development in Node.js and Express can be challenging. In this presentation, I identify solutions to some of the most significant challenges to using TDD with Express, including mocking data in MongoDB / Mongoose, using promises to control asynchronous testing in Mocha with Chai, and separating concerns to write robust and enduring test suites.
Cracking JWT tokens: a tale of magic, Node.JS and parallel computingLuciano Mammino
Learn how you can use some JavaScript/Node.js black magic to crack JWT tokens and impersonate other users or escalate privileges. Just add a pinch of ZeroMQ, a dose of parallel computing, a 4 leaf clover, mix everything applying some brute force and you'll get a powerful JWT cracking potion!
4Developers 2015: Programowanie synchroniczne i asynchroniczne - dwa światy k...PROIDEA
Łukasz Nawojczyk
Language: Polish
Jakie są podejścia do programowania równoległego w Javie? Czy programowanie asynchroniczne musi być trudne w kodowaniu i debugowaniu? Czy można pisać współbieżny kod, który będzie łatwo testowalny? Czy asynchroniczność zawsze oznacza wielowątkowość?
W ramach wykładu zostaną przedstawione przykłady różnych podejść do wielowątkowości oraz wyniki analizy ogólnodostępnych rozwiązań, m.in. RxJava, JDeferred, Awaitility. Dodatkowo będzie omówione podejście do pisania wydajnych aplikacji internetowych w oparciu Vert.x i jego model obsługi współbieżności sterowany zdarzeniami.
Salesforce provides an interface for testing callouts named HttpCalloutMock used to cover remote callouts. While adequate for simple callouts, in the real world you often need something more flexible, as in the case of multiple and varying responses from the same or varying endpoints. More precise testing and coverage can be obtained by extending the standard interface. Join us as we demonstrate a solution to use to enable the flexibility required for complex integration and synchronization apps.
This presentation deals with a complex approach to application testing in back end and front end parts, tests writing and common mistakes. It also includes a short overview of libraries and frameworks for creation of tests, as well as practical examples of code.
Presentation by Pavlo Iuriichuk, Lead Software Engineer, GlobalLogic, Kyiv), delivered at an open techtalk on December 11, 2014.
More details - http://globallogic.com.ua/report-web-testing-techtalk-2014
A presentation of what are JavaScript Promises, what problems they solve and how to use them. Dissects some Bluebird features, the most complete Promise library available for NodeJS and browser.
Even for JavaScript software developers well-versed in Agile practices, using test-driven development in Node.js and Express can be challenging. In this presentation, I identify solutions to some of the most significant challenges to using TDD with Express, including mocking data in MongoDB / Mongoose, using promises to control asynchronous testing in Mocha with Chai, and separating concerns to write robust and enduring test suites.
Lucio Grenzi - Building serverless applications on the Apache OpenWhisk platf...Codemotion
Apache OpenWhisk provides a powerful and flexible environment for deploying cloud-native applications driven by data, message, and API call events. We will show how and why we integrated Apache OpenWhisk and GitHub to make deployment as easy and transparent as `git push`. We will also discuss the benefit of using an open source cloud platform and explain how serverless allows developers to focus on writing value-adding code.
Unit testing is now considered a mainstream practice, but that does not mean it is as common, pervasive or as well understood as it could or should be. Many programmers struggle with the quality of their tests and with the focus of their code. In this session we’ll learn how to write good unit testing code.
Unit testing patterns for concurrent codeDror Helper
Getting started with unit testing is not hard, the only problem is that most programs are more than a simple calculator with two parameters and a returns value that is easy to verify.
Writing unit tests for multi-threaded code is harder still.
Over the years I discovered useful patterns that helped me to test multi-threaded and asynchronous code and enabled the creation of deterministic, simple and robust unit tests.
Come learn how to test code that uses concurrency and parallelism – so that the excuses of not writing unit tests for such code would become as obsolete as a single core processors.
DataStax: Making Cassandra Fail (for effective testing)DataStax Academy
Interacting with a distributed database is inherently more complex than with a single server database. Add in a few datacenters and some network issues and things get even more hairy.
I'm a firm believer in automated tests, functionality of software that is not covered by an automated test is nothing more than a rumor.
If we want to build fault tolerant applications with Cassandra we better start testing the faults. The first step is to understand them, so we'll go through in detail:
- Read timeouts
- Write timeouts
- Unavailable
- Connectivity issues between the driver and the coordinator
Understanding these scenarios lets you decide when you should be re-trying your queries. Then how do we test our application under these scenarios? I'll go through three approaches you can use:
- Inserting a proxy between the driver and the cluster to drop traffic
- Getting into the Cassandra code and overriding the QueryHandler to inject faults (see https://github.com/chbatey/cassandra-killr)
- Stubbing Cassandra out at the protocol level (http://www.scassandra.org/)
You should leave this talk with an appreciation of the failures you can get from the driver and what you should do about them, and hopefully you'll be inspired to test all these scenarios.
Unit Testing Express and Koa Middleware in ES2015Morris Singer
Even for JavaScript software developers well-versed in Agile practices, using test-driven development in the development of Node.js-based webservers can be challenging. In this presentation, I identify solutions to some of the most significant challenges to using TDD to build middleware stacks, with a focus on Express and Koa.
Enhanced Web Service Testing: A Better Mock StructureCRMScienceKirk
Salesforce provides an interface for testing callouts named HttpCalloutMock used to cover remote callouts. While adequate for simple callouts, in the real world you often need something more flexible, as in the case of multiple and varying responses from the same or varying endpoints. More precise testing and coverage can be obtained by extending the standard interface. Join us as we demonstrate a solution to use to enable the flexibility required for complex integration and synchronization apps.
Advanced Jasmine - Front-End JavaScript Unit TestingLars Thorup
Code: https://github.com/larsthorup/jasmine-demo-advanced
Video: https://www.youtube.com/watch?v=g4eQplHxU18
Audio: https://www.youtube.com/watch?v=8FUwc3gZDMw
Unit testing front-end JavaScript presents its own unique set of challenges. In this session we will look at number of different techniques to tackle these challenges and make our JavaScript unit tests fast and robust. We plan to cover the following subjects:
* Mocking and spy techniques to avoid dependencies on
- Functions, methods and constructor functions
- Time (new Date())
- Timers (setTimeout, setInterval)
- Ajax requests
- The DOM
- Events
* Expressive matchers
- Jasmine-jQuery
* Structuring tests for reuse and readability
* Testing browser-specific behaviour
DEV-1185: IBM Notes Performance Boost - Reloaded – IBM Connect 2017panagenda
Maximizing IBM Notes client to performance doesn’t have to be complicated! Reloaded for the latest IBM Notes 9 version, join Chris and find out what can be tuned – and how to resolve it. Learn how to debug your client, deal with outdated ODS, network latency and application performance issues and the measurable benefit that provides to users. Gather best practices on how to streamline location and connection documents and why the catalog.nsf is so important. Improve your IBM Notes client installations to provide a better experience for happier administration and happier end users! As a special bonus, Chris will show you how to increase the startup time of virtualized IBM Notes Clients (Citrix / vmware / etc) up to 70%!
A presentation by Christoph Adler
Lucio Grenzi - Building serverless applications on the Apache OpenWhisk platf...Codemotion
Apache OpenWhisk provides a powerful and flexible environment for deploying cloud-native applications driven by data, message, and API call events. We will show how and why we integrated Apache OpenWhisk and GitHub to make deployment as easy and transparent as `git push`. We will also discuss the benefit of using an open source cloud platform and explain how serverless allows developers to focus on writing value-adding code.
Unit testing is now considered a mainstream practice, but that does not mean it is as common, pervasive or as well understood as it could or should be. Many programmers struggle with the quality of their tests and with the focus of their code. In this session we’ll learn how to write good unit testing code.
Unit testing patterns for concurrent codeDror Helper
Getting started with unit testing is not hard, the only problem is that most programs are more than a simple calculator with two parameters and a returns value that is easy to verify.
Writing unit tests for multi-threaded code is harder still.
Over the years I discovered useful patterns that helped me to test multi-threaded and asynchronous code and enabled the creation of deterministic, simple and robust unit tests.
Come learn how to test code that uses concurrency and parallelism – so that the excuses of not writing unit tests for such code would become as obsolete as a single core processors.
DataStax: Making Cassandra Fail (for effective testing)DataStax Academy
Interacting with a distributed database is inherently more complex than with a single server database. Add in a few datacenters and some network issues and things get even more hairy.
I'm a firm believer in automated tests, functionality of software that is not covered by an automated test is nothing more than a rumor.
If we want to build fault tolerant applications with Cassandra we better start testing the faults. The first step is to understand them, so we'll go through in detail:
- Read timeouts
- Write timeouts
- Unavailable
- Connectivity issues between the driver and the coordinator
Understanding these scenarios lets you decide when you should be re-trying your queries. Then how do we test our application under these scenarios? I'll go through three approaches you can use:
- Inserting a proxy between the driver and the cluster to drop traffic
- Getting into the Cassandra code and overriding the QueryHandler to inject faults (see https://github.com/chbatey/cassandra-killr)
- Stubbing Cassandra out at the protocol level (http://www.scassandra.org/)
You should leave this talk with an appreciation of the failures you can get from the driver and what you should do about them, and hopefully you'll be inspired to test all these scenarios.
Unit Testing Express and Koa Middleware in ES2015Morris Singer
Even for JavaScript software developers well-versed in Agile practices, using test-driven development in the development of Node.js-based webservers can be challenging. In this presentation, I identify solutions to some of the most significant challenges to using TDD to build middleware stacks, with a focus on Express and Koa.
Enhanced Web Service Testing: A Better Mock StructureCRMScienceKirk
Salesforce provides an interface for testing callouts named HttpCalloutMock used to cover remote callouts. While adequate for simple callouts, in the real world you often need something more flexible, as in the case of multiple and varying responses from the same or varying endpoints. More precise testing and coverage can be obtained by extending the standard interface. Join us as we demonstrate a solution to use to enable the flexibility required for complex integration and synchronization apps.
Advanced Jasmine - Front-End JavaScript Unit TestingLars Thorup
Code: https://github.com/larsthorup/jasmine-demo-advanced
Video: https://www.youtube.com/watch?v=g4eQplHxU18
Audio: https://www.youtube.com/watch?v=8FUwc3gZDMw
Unit testing front-end JavaScript presents its own unique set of challenges. In this session we will look at number of different techniques to tackle these challenges and make our JavaScript unit tests fast and robust. We plan to cover the following subjects:
* Mocking and spy techniques to avoid dependencies on
- Functions, methods and constructor functions
- Time (new Date())
- Timers (setTimeout, setInterval)
- Ajax requests
- The DOM
- Events
* Expressive matchers
- Jasmine-jQuery
* Structuring tests for reuse and readability
* Testing browser-specific behaviour
DEV-1185: IBM Notes Performance Boost - Reloaded – IBM Connect 2017panagenda
Maximizing IBM Notes client to performance doesn’t have to be complicated! Reloaded for the latest IBM Notes 9 version, join Chris and find out what can be tuned – and how to resolve it. Learn how to debug your client, deal with outdated ODS, network latency and application performance issues and the measurable benefit that provides to users. Gather best practices on how to streamline location and connection documents and why the catalog.nsf is so important. Improve your IBM Notes client installations to provide a better experience for happier administration and happier end users! As a special bonus, Chris will show you how to increase the startup time of virtualized IBM Notes Clients (Citrix / vmware / etc) up to 70%!
A presentation by Christoph Adler
IBM Connect 2017: Refresh and Extend IBM Domino ApplicationsEd Brill
This session covered new capabilities such as additional REST APIs coming in future feature packs of IBM Domino; IBM's partnership with Panagenda ApplicationInsights; and partners such as Darwino, We4IT's Aveedo, and Sapho that provide tools to modernize corporate and situational applications.
DEV-1268: IBM Connections Adminblast – IBM Connect 2017panagenda
Buckle up, join Christoph and Nico and get ready to learn 50 tips and tricks you can implement right away to improve your IBM Connections environment. Your users will thank you as they too benefit from this best practice list gathered from real-World projects while deploying and administering IBM Connections On-premises. Walk away with knowledge covering anything from Cognos integration, docs, CCM and Forms Experience Builder to the backend and DB2, TDI and SSO.
A presentation by Nico Meisenzahl (panagenda Consulting) and Christoph Stoettner (panagenda Consulting)
Connect 2017 DEV-1420 - Blue Mix and Domino – Complementing SmartcloudMatteo Bisi
This was our slides for IBM Connect 2017 in San Francisco. The best part was the live demo were we showed our "gateway" running inside a Docker container running on IBM Blue Mix. Our gateway is running with IBM Domino, WebSphere Liberty, CrossWorlds and a kind of magic.
DEV-1223: Socialytics: Accelerating IBM Connections Adoption with Watson Anal...panagenda
Social adoption is a challenge for many companies. What is the effective utilization of the environment? Who is using which resources, what in the environment is dormant or orphaned? Where should efforts focus in order to improve adoption? All of these questions can be diffcult to answer and there is no “one size fits all” solution as each organization has their own unique needs. Join Femke Goedhart and Franz Walder and learn how to tackle this topic using IBM Connections and Watson. Starting out with IBM Bluemix Data Connect to collect and combine data from relevant sources, they use the cognitive power of IBM Watson Analytics to answer those tricky questions and provide solutions to real World adoption challenges. Enable users by combining the power of Watson cognititve analytics with IBM Connections social capabilities in “Socialytics”!
A presentation by Femke Goedhart (panagenda) and Franz Walder (panagenda)
IBM Connect 2017:
What do IBM Watson, Bluemix, LinkedIn, Facebook, Twitter, Wal-Mart, Match.com, eBay, eHarmony, and Amazon all have in common? They all have billions of records; and they all use Graph technology to manage those records. Graph excels at quickly processing huge numbers of records. Even if don't fully understand how Graph databases work, you will want to attend this session to learn how their amazing capabilities that are already built into the OpenNTF Domino API (ODA) can EASILY deliver unique solutions for your own Notes/Domino environment. This session will introduce the fundamentals of Graph, explain how Graph can be applied to NSF data using the ODA, and demonstrate some techniques to implement Graph on your next project.
Your App Deserves More – The Art of App ModernizationKlaus Bild
Make your data sustainable and enhance the value of your applications. Your application and your work deserve it! We use applications everywhere but unfortunately a lot of them are old and monolithic. They are heavily used by your business but adding new functions to catch up with the business needs is almost impossible. We, a developer and an admin, will show you how you can transform your monolithic applications into modern apps using a smart architecture. Learn how you can leverage IBM Bluemix, Docker and suchlike to bring cognitive services to your applications. We will show you a live example to illustrate how we extended IBM Verse using IBM cloud technology to fulfill an urgent business need.
Domino, Exchange, O365: Ihre Email Daten sind Gold wert - Kinoforum 2016panagenda
In dieser Session erfahren Sie, wie Sie Ihren Emaildaten Antworten auf Fragen rund um Compliance, Security, Arbeitsvorschriften, Kundenbindung, Kernprozesse, Social Adoption und mehr entlocken.
Präsentiert von Florian Vogler
DEV-1269: Best and Worst Practices for Deploying IBM Connections – IBM Conne...panagenda
It’s back. For the 3rd year in a row. Depending on deployment size, operating system and security considerations you have different options to configure IBM Connections. This session will show good and bad examples on how to do it from multiple customer deployments. We will describe things we found and how you can optimize your systems. Main topics include simple (documented) tasks that should be applied, missing documentation, automated user synchronization, TDI solutions and user synchronization, performance tuning, security optimizing and planning SSO. This is valuable information that will help you to be successful in your next IBM Connections deployment project. Don’t miss it.
A presentation by Christoph Stoettner (panagenda Consulting)
DEV-1129 How Watson, Bluemix, Cloudant, and XPages Can Work Together In A Rea...Frank van der Linden
The role of a human resources employee can be hard work when it comes to filtering hundreds or thousands of job applications. Often, the cover letters are submitted in unstructured formats, making data organization and identification of interesting job applications difficult. In this session, we will share a look behind the scenes of the award-winning HR Assistant application, which uses a combination of IBM Bluemix, Watson and a Cloudant database to improve the recruitment process. See how we integrate these different technologies and display the content graphically using XPages, along with how the development progressed and the challenges we faced.
Socialytics: Accelerating IBM Connections Adoption with Watson AnalyticsFemke Goedhart
Session delivered at IBM Connect 2017 on Feb 21st 2017 by Femke Goedhart & Franz Walder - panagenda
Abstract: Social adoption is a challenge for many companies. What is the most effective utilization of the environment? Who is using which resources, what in the environment is dormant or orphaned? Where should efforts focus in order to improve adoption? All of these questions can be difficult to answer and there is no "one size fits all" solution as each organization has their own unique needs. Join Femke Goedhart and Franz Walder and learn how to tackle this topic using IBM Connections and Watson. Starting out with IBM Bluemix Data Connect to collect and combine data from relevant sources, they use the cognitive power of IBM Watson Analytics to answer those tricky questions and provide solutions to real-world adoption challenges.
On premises, private, public, hybrid ... welche Möglichkeiten gibt es, wie trifft man die richtigen Entscheidungen und wie bereiten Sie sich am besten auf die Wolke - oder auch mehrere Wolken - vor?
Von IBM Notes und Domino, über Verse, das IBM Notes Browser Plugin, IBM Sametime und IBM Connections, bis hin zu SoftLayer machen wir einen Streifzug durch verschiedene Optionen und was es zu beachten gibt.
Technisches Niveau / Zielgruppe:
Administratoren / IT Entscheider
Erwartete Vorkenntnisse:
Grundlagen Notes/Domino Administration
präsentiert von Christoph Adler
SI1692: When Lightning Strikes Collaboration - IBM Connect 2016panagenda
What do virtualization, cloud, social adoption and upgrades have in common? Christoph Adler finds out about those and other great ideas to evolve collaboration! Learn how to get blazing fast clients in virtualized environments or how to pull off seamless cloud on boarding without disrupting users. Buckle up in this fastpaced session and learn how other companies deal with accelerating Social Adoption and more!
A presentation from Christoph Adler (panagenda).
Next Generation DevOps in Drupal: DrupalCamp London 2014Barney Hanlon
In this talk, Barney will be discussing and demonstrating how to:
- Use nginx, Varnish and Apache together in a "SPDY sandwich" to support HTTP 2.0
- Setting up SSL properly to mitigate against attack vectors
- Performance improvements with mod_pagespeed and nginx
- Deploying Drupal sites with Docker containers
Barney is a Technical Team Leader at Inviqa, a Drupal Association member and writes for Techportal on using technologies to improve website performance. He first started using PHP professionally in 2003, and has over seventeen years experience in software development. He is an advocate of Scrum methodology and has an interest in performance optimization, researching and speaking on various techniques to improve user experience through faster load times.
Altitude San Francisco 2018: Testing with Fastly WorkshopFastly
A crucial step for continuous integration and continuous delivery with Fastly is testing the service configuration to provide confidence in changes. This workshop will cover unit-testing VCL, component testing a service as a black box, systems testing a service end-to-end and stakeholder acceptance testing.
"It’s open source. It’s highly opinionated.
Build greenfield microservices and decompose your Java EE monolith like a boss."
Lightbend (formerly Typesafe) has come up with their own framework, Lagom, for architecting microservices based systems. With Lagom, Lightbend wants to take up the competition with the Spring Cloud stack.
Lagom is built upon Akka and Play and focuses on reactive and message-driven APIs, distributed persistence with Event Sourcing and CQRS and high developer productivity. On the 10th of March a first MVP version has been released with a Java API, the Scala API is being worked on.
This workshop acts as an introduction to Lagom during which we will have a look at developing and deploying Lagom microservices.
As a warm-up, you could check out the newest blogpost on the JWorks Tech Blog: https://ordina-jworks.github.io/microservices/2016/04/22/Lagom-First-Impressions-and-Initial-Comparison-to-Spring-Cloud.html.
Github repo with presentation: https://github.com/yannickdeturck/lagom-shop
Blogpost Lagom: First Impressions and Initial Comparison to Spring Cloud: https://ordina-jworks.github.io/microservices/2016/04/22/Lagom-First-Impressions-and-Initial-Comparison-to-Spring-Cloud.html
Podcast Lightbend Podcast Ep. 09: Andreas Evers test drives Lagom in comparison with Spring Cloud: https://www.lightbend.com/blog/lightbend-podcast-ep-09-andreas-evers-test-drives-lagom-in-comparison-with-spring-cloud
Spring Boot Revisited with KoFu and JaFuVMware Tanzu
SpringOne 2020
Spring Boot Revisited with KoFu and JaFu
Audrey Neveu, Software Engineer on Reactor at VMware
Sébastien Deleuze, Spring Framework Committer at VMware
Node.js vs Play Framework (with Japanese subtitles)Yevgeniy Brikman
Video: http://www.nicovideo.jp/watch/1410857293
Here's the showdown you've been waiting for: Node.js vs Play Framework. Both are popular open source web frameworks that are built for developer productivity, asynchronous I/O, and the real time web. But which one is easier to learn, test, deploy, debug, and scale? Should you pick Javascript or Scala? The Google v8 engine or the JVM? NPM or Ivy? Grunt or SBT? Two frameworks enter, one framework leaves.
This version of the presentation has Japanese subtitles. For the English only version, see http://www.slideshare.net/brikis98/nodejs-vs-play-framework
During past years, the requirements for modern applications have increased from gigabytes of data to terabytes, from thousands of requests per second to millions, from seconds of response time to milliseconds, and this list can be continued. Until now, most of these problems have been solved using the Microservices architecture, but what's next? What next approach should we apply where Microservices fail? In this presentation, we will overview modern approaches to application development with Reactive and Distributed architecture and see how Vert.x help to implement such solutions.
Video: https://www.youtube.com/watch?v=b6yLwvNSDck
Here's the showdown you've been waiting for: Node.js vs Play Framework. Both are popular open source web frameworks that are built for developer productivity, asynchronous I/O, and the real time web. But which one is easier to learn, test, deploy, debug, and scale? Should you pick Javascript or Scala? The Google v8 engine or the JVM? NPM or Ivy? Grunt or SBT? Two frameworks enter, one framework leaves.
This is the English version of the presentation. For the version with Japanese subtitles, see http://www.slideshare.net/brikis98/nodejs-vs-play-framework-with-japanese-subtitles
Session from GIDS 2014, showing how to do automated Web testing using a variety of JavaScript frameworks, including QUnit, Jasmine, Protractor, Selenium, and PhantomJS
What's new in Java EE 7? From HTML5 to JMS 2.0Bruno Borges
Discover the new capabilities that Java EE 7 has to offer for you to build HTML5 applications. See some of the changes JMS brought to increase your Productivity!
These slides were presented at JBoss Users and Developers Conference, JUDCon Brazil 2013, on April 19th.
Easier, Faster, and More Powerful – Notes Document Properties Reimaginedpanagenda
Webinar Recording: https://www.panagenda.com/webinars/easier-faster-and-more-powerful-notes-document-properties-reimagined/
Have you ever felt frustrated by the small properties dialog in Notes? Had to create an agent or button to quickly change a field? Searched endlessly for the field you wanted to compare each time you selected a new document? Wished you could just make the damned thing bigger? Luckily, there is a solution – and you probably already have it installed! With the free panagenda Document Properties (Pro) you get the properties dialog you always needed. Big, resizable, full-text searchable. View multiple documents at once or compare them with a diff viewer. Modify any field, and finally have an easy way to handle profile documents for all users. Join HCL Lifetime Ambassador Julian Robichaux to discover how Document Properties can simplify your work and assist you daily when using Domino applications – in the client or the designer. You will never look back!
Key takeaways from this session
- What Document Properties is, which editions there are, and how you can find it in Notes and Domino Designer
- How you can search for and edit any field, compare documents, or CSV export all data
- How to find, edit, and even delete profile documents
- Which configuration settings are available to customize feature
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...panagenda
Webinar Recording: https://www.panagenda.com/webinars/alles-neu-macht-der-mai-wir-durchleuchten-den-verbesserten-notes-eigenschaftendialog/
Haben Sie sich schon einmal über den zu kleinen Eigenschaftendialog in Notes geärgert? Mussten Sie einen Agenten oder eine Aktion erstellen, um schnell mal ein Feld zu ändern? Haben Sie jedes mal endlos nach dem zu vergleichenden Feld gesucht, nachdem Sie ein neues Dokument ausgewählt haben? Wollten Sie das verdammte Ding einfach nur größer machen? Zum Glück gibt es dafür eine Lösung – und sie ist wahrscheinlich bereits installiert! Mit dem kostenlosen panagenda Document Properties (Pro) erhalten Sie den Eigenschaftendialog, den Sie schon immer haben wollten. Größer, anpassbar, und im Volltext durchsuchbar. Sehen Sie mehrere Dokumente gleichzeitig oder vergleichen Sie mit einem Diff-Viewer. Ändern Sie beliebige Felder und haben Sie endlich eine einfache Möglichkeit, Profildokumente für alle Benutzer zu verwalten. Entdecken Sie mit HCL Ambassador Marc Thomas, wie Document Properties Ihre Arbeit vereinfachen und Sie bei der täglichen Verwendung
von Domino-Anwendungen unterstützen kann – im Client oder im Designer.
Sie werden es nicht bereuen!
Für Sie in diesem Webinar
- Was Document Properties ist, welche Editionen es gibt und wo es in Notes
und Domino Designer zu finden ist
- Wie Sie nach einem beliebigen Feld suchen und es bearbeiten,
Dokumente vergleichen oder alle Daten per CSV exportieren können
- Suchen, Bearbeiten und auch Löschen von Profildokumenten
- Welche Konfigurationseinstellungen verfügbar sind, um Funktionen anzupassen
- Wie Ihre Endbenutzer davon profitieren
- Sehen Sie alles in einer Live-Demo
Why Teams call analytics are critical to your entire businesspanagenda
Webinar Recording: https://www.panagenda.com/webinars/why-teams-call-analytics-is-critical-to-your-entire-business
Nothing is as frustrating and noticeable as being in an important call and being unable to see or hear the other person. Not surprising then, that issues with Teams calls are among the most common problems users call their helpdesk for. Having in depth insight into everything relevant going on at the user’s device, local network, ISP and Microsoft itself during the call is crucial for good Microsoft Teams Call quality support. To ensure a quick and adequate solution and to ensure your users get the most out of their Microsoft 365.
But did you know that ‘bad calls’ are also an excellent indicator of other problems arising? Precisely because it is so noticeable!? Like the canary in the mine, bad calls can be early indicators of problems. Problems that might otherwise not have been noticed for a while but can have a big impact on productivity and satisfaction.
Join this session by Christoph Adler to learn how true Microsoft Teams call quality analytics helped other organizations troubleshoot bad calls and identify and fix problems that impacted Teams calls or the use of Microsoft365 in general.
See what it can do to keep your users happy and productive!
In this session we will cover
- Why CQD data alone is not enough to troubleshoot call problems
- The importance of attributing call problems to the right call participant
- What call quality analytics can do to help you quickly find, fix-, and prevent problems
- Why having retrospective detailed insights matters
- Real life examples of how others have used Microsoft Teams call quality monitoring to problem shoot problems with their ISP, network, device health and more.
Conference: Engage 2024 in Antwerp
Type: Development – Session
Speakers: Julian Robichaux
Title: How to Prepare Applications for Notes 64-bit Clients
Abstract:
Why 64-bit? Do you need it? Is it painful to switch? Will your applications stop working? Do you have to rewrite everything? Will the new Java 17 break things? We have the answers to these questions and more!
Spoiler warning: 64-bit clients are here, and your applications are not ready. But not to worry; everything is fixable.
Join this session with Julian Robichaux from panagenda to find out how. He will guide you through this journey and give you all the tools, tips, and tricks you need to outmaneuver any dangers and pitfalls. Get started today!
Dive into these 64-bit topics:
+ HCL guidelines for updating applications
+ LotusScript: known issues, patterns to look for, debugger bugs, compiling with older Designers
+ API calls: parameters, dealing with structs, NotesSession.UseDoubleAsPointer
+ Java: Java 17, added/removed functionalities, compiler settings, XPages
+ Eclipse plugins
Conference: Engage 2024 in Antwerp
Type: Commercial – Session
Speakers: Henning Kunz
Title: Notes/Domino Licensing: Understand and Optimize DLAU results with panagenda solutions
Abstract:
panagenda is renowned for its robust and tested solutions designed to enhance and manage the Notes Client. Our offerings extend to proactively monitoring Domino infrastructures and analyzing the Domino-based application landscape. This includes comprehensive assessments of application inventory, usage, design similarities, and content. In this engaging session, we aim to illuminate a different aspect – the HCL Notes/Domino Licenses.
The community has been buzzing with excitement about HCL's new streamlined licensing model for Notes/Domino. As many of you are aware, HCL provides a tool called DLAU, which is crucial for determining the licenses associated with your Notes/Domino infrastructure. During our sponsored session, we will delve into how our two flagship panagenda products, iDNA for Applications (IFA) and Security Insider (SI), can play a pivotal role in comprehending, validating, and optimizing the results obtained through DLAU. Join us to discover how these tools can empower you in navigating the complexities of HCL Notes/Domino licensing.
Conference: Engage 2024 in Antwerp
Type: Administration & Development – Session
Speakers: Christoph Adler
Title: Navigating HCL Notes 14 Upgrades: A Comprehensive Guide for Conquering Challenges
Abstract:
In this session Christoph Adler will guide you systematically through the intricate process of mastering every challenge encountered in an HCL Notes 14 Upgrade project. Numerous changes from 32 to 64-bit architecture necessitate careful consideration and resolution within the upgrade package itself. This includes tasks such as uninstallation (incl. nice.exe in 32- and 64-bit), cleanup procedures (addressing old program and shareddata folders and more), migration the data folder and the very important notes.ini file, and meticulous installation practices (sorting order, command lines, parsing logs, etc.).
The session will also delve into pre-configuration essentials for new users, covering elements like the common folder, stub notes.ini, config file and others to ensure a seamless onboarding process. Emphasizing the impact of changes in bitness and folder locations in Notes 14, the discussion will explore considerations for Anti-Virus, DEP, AppBlocker and Security Software, highlighting their potential as game-changers for end-user performance.
Having thoroughly examined the aforementioned aspects, the session will conclude with an objective and candid comparison of various Notes upgrade methods, enabling participants to make informed decisions tailored to their specific project requirements.
Conference: Engage2024 in Antwerp
Type: Workshop
Speakers: Florian Vogler, Henning Kunz, Christoph Adler
Title: Navigating the Future with The Hitchhiker's Guide to Notes and Domino 14
Abstract:
Embark on an exhilarating journey with industry trailblazers Florian Vogler, Henning Kunz, and Christoph Adler in this not-to-be-missed workshop at the forefront of the tech universe.
Get ready for a thrilling kick-off as we navigate the current state of the HCL universe, setting the stage for an exploration of the groundbreaking Notes and Domino 14. Discover the latest enhancements and revolutionary features that will redefine your experience.
In this interactive session, unlock a treasure trove of tips and tricks to elevate your utilization of version 14, both with and without the game-changing panagenda MarvelClient. Brace yourself for also diving into Nomad, Nomad Web, and VoltMX, expanding your horizons in the expansive HCL landscape.
Be a part of this exclusive opportunity to stay ahead in the ever-evolving world of HCL technologies. Your journey to mastering Notes and Domino 14 begins here.
And remember, in the spirit of intergalactic exploration, don't forget to bring your towel!
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
Webinar Recording: https://www.panagenda.com/webinars/modern-roaming-for-notes-and-nomad-cheaper-faster-better-stronger/
Users want a seamless user experience across devices or after a reinstall. They don’t want to waste time finding and setting up all their configuration and applications again every time. What if they change or lose their device? Have multiple computers? Are on VDI/Citrix? Get a client update? Reset their device? An end-user should always have their UI and configuration exactly as they had it before.
In this webinar, HCL Ambassador Christoph Adler will show you how to easily solve these problems. Create roaming configurations that include all the UI elements and settings you need. Meet and exceed your users’ and organization’s expectations, with low network and disk impact, starting tomorrow!
What you will learn
- Using roaming to sync Notes configurations across different client versions and platforms
- How roaming can improve performance and reliability, especially on VDI/Citrix
- How to do a one-time migration of client configurations to Nomad
- Setting up continuous roaming for Nomad (both on mobile and web versions)
- Recovering previous client configurations on demand
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
Webinar Recording: https://www.panagenda.com/webinars/so-einfach-geht-modernes-roaming-fur-notes-und-nomad/
Wenn Nutzer mehrere Geräte nutzen oder ihr Gerät wechseln, neu installieren oder verlieren, wollen sie ihre Anwendungen, Benutzeroberfläche und Konfiguration nicht jedes Mal erneut anpassen. Das kostet Zeit und Nerven. Manche Nutzer verwenden auch mehrere Computer oder sind auf VDI/Citrix unterwegs. Wie kann ein Endbenutzer seine individuellen Einstellungen und Anwendungen in obigen Szenarien beibehalten?
In diesem Webinar erklärt Ihnen HCL Ambassador Marc Thomas, wie Sie solche Herausforderungen einfach meistern können. Erstellen Sie Roaming-Konfigurationen, die alle notwendigen Elemente und Einstellungen der Benutzeroberfläche enthalten. Erreichen und übertreffen Sie die Anforderungen Ihrer Nutzer und Ihres Unternehmens mit minimalem Netzwerk- und Festplattenaufwand – schon ab morgen!
Was Sie lernen werden
- Roaming zum Abgleichen von Notes-Konfigurationen über verschiedene Client-Versionen und -Plattformen nutzen
- Wie Roaming die Performance und Zuverlässigkeit steigern kann, vor allem bei VDI/Citrix
- So migrieren Sie einmalig Client-Konfigurationen zu Nomad
- Kontinuierliches Roaming für Nomad einrichten (für mobile und Web-Versionen)
- Bei Bedarf frühere Client-Einstellungen wiederherstellen
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
Webinar Recording: https://www.panagenda.com/webinars/why-device-wifi-and-isp-insights-are-crucial-to-supporting-remote-microsoft-365-users/
In an era dominated by users working remotely from home or other different settings, understanding the intricacies of the user’s “last mile” – with what device, what peripheral equipment and HOW they connect to the office network or Microsoft 365 services – is critical for optimizing user experiences. Knowing that it’s the CPU being overloaded when your CEO is having trouble during that important Teams Call or that the accountant’s failure to connect to his files is caused by his home router, and not Microsoft 365 is crucial. In this webinar Christoph Adler delves into the significance of comprehending the entire remote user journey and the impact device health, local/home/remote networking have on the users experience and quality of service. Join us to learn how User Experience monitoring can help you be more effective and successful in supporting remote workers.
In this session we will talk about
- How device Health and what’s going on on the remote devices directly influences user experience and overall productivity.
- What you should know about the impact that diverse home networks, bandwidth, latency, network stability and ISP can have on successful remote connectivity.
- The importance of the User’s Context: Understand why, with cloud, the only way to truly say anything about a user’s experience is if it’s done from the exact user context and location.
- Real-life examples of Impactful Insights: Explore real-world examples showcasing the need for hardware replacements based on user requirements, efficient software/driver installations, and the challenges posed by high volatility in local/home/remote networks and environments.
Why you need monitoring to keep your Microsoft 365 journey successfulpanagenda
Webinar Recording: https://www.panagenda.com/webinars/why-you-need-monitoring-to-keep-your-microsoft-365-journey-successful/
"Why should you even care about end-to-end monitoring and User Experience Monitoring?” Spoiler alert, you should!
In a world where Microsoft 365 and hybrid/remote work are becoming the norm, not the exception, you should be able to support your users end-to-end. Wherever they are and at whatever time. But with services in the cloud and users constantly moving around between home / remote networks as well as company-controlled infrastructure, traditional methods often struggle. Leaving out important factors that can impact your user’s ‘journey’ and giving you false or incomplete pictures of what’s really going on.
Join this 30min session by Christop Adler with real-life examples to learn more about what User Experience end-to-end monitoring really is, why it’s not the same as what traditional monitoring solutions offer and, most importantly, why it matters and what you should expect from it.
In this session we will talk about
- Traditional monitoring techniques vs modern
- ‘Expected normal’ vs industry benchmark monitoring.
- How User Experience Monitoring can help ensure quality of service, lift user satisfaction and drive productivity.
- Why other companies who started using it, can’t do without anymore.
- How you can greatly increase your user’s satisfaction rates and overall Microsoft 365 cloud success.
Developer Special: How to Prepare Applications for Notes 64-bit Clientspanagenda
Webinar Recording: https://www.panagenda.com/webinars/developer-special-how-to-prepare-applications-for-notes-64-bit-clients/
Why 64-bit? Do you need it? Is it painful to switch? Will your applications stop working? Do you have to rewrite everything? Will the new Java 17 break things? We have the answers to these questions and more!
Spoiler warning: 64-bit clients are coming, and your applications are not ready. But not to worry; everything is fixable.
Join this webinar special with Notes development legend and HCL Lifetime Ambassador Julian Robichaux to find out. He will guide you through this journey and give you all the tools, tips, and tricks you need to outmaneuver any dangers and pitfalls. Get started today!
Dive into these 64-bit topics
- HCL guidelines for updating applications
- LotusScript: known issues, patterns to look for, debugger bugs, compiling with older Designers
- API calls: parameters, dealing with structs, NotesSession.UseDoubleAsPointer
- Java: Java 17, added/removed functionalities, compiler settings, XPages
- Eclipse plugins
Everything You Need to Know About HCL Notes 14panagenda
Webinar Recording: https://www.panagenda.com/webinars/everything-you-need-to-know-about-hcl-notes-14/
The release of Notes 14 is not too far away. By the time you are joining this webinar it might even be out already. An exciting time! And there’s so much to consider: A new JVM, an updated Eclipse version, and the client is now exclusively 64-bit – just for a start. It’s the perfect time to consider if, when, and how you want to upgrade, and we have all the facts you need right here.
Join this webinar with HCL Ambassador and leading expert Christoph Adler to get the complete rundown of everything you need to know and do. Whether you have already started to plan your upgrade or are just considering the pros and cons, this is the session for you.
Get answers on questions like
- What’s new in Notes 14
- Is Notes 14 right for you (yet), or is Notes 12 a better choice
- What do you need to consider before upgrading
- What challenges come with 64-bit clients
- What are the know issues and workarounds
- What are the best tweaks to get the most out of Notes 14
Alles was Sie über HCL Notes 14 wissen müssenpanagenda
Webinar Recording: https://www.panagenda.com/webinars/alles-was-sie-uber-hcl-notes-14-wissen-mussen/
Die Release von HCL Notes 14 ist immer noch in aller Munde. Wenn Sie an diesem Webinar teilnehmen, könnte die Version sogar schon verfügbar sein. Aufregend! Es gibt viel zu bestaunen: neue Version der JVM, neue Eclipse-Version, und der Client ist nur noch als 64-Bit-Version verfügbar – um nur einige Highlights zu nennen. Ein guter Zeitpunkt, um darüber nachzudenken, ob, wie und wann der Umstieg auf Notes 14 sinnvoll sein könnte. Seien Sie versichert, dass alle Antworten, die Sie brauchen, in diesem Webinar bekommen werden.
Nehmen Sie an unserem Webinar mit dem HCL-Botschafter und führenden Experten Marc Thomas teil. Sie erhalten einen umfassenden Überblick und können den geschäftlichen Nutzen, aber auch die Kosten einer Umstellung besser einschätzen. Alles, was Sie wissen müssen und tun sollten, egal ob Sie bereits mitten im Upgrade sind oder noch die Vor- und Nachteile abwägen.
Was Sie lernen werden
- Was ist neu in HCL Notes 14?
- Ist HCL Notes 14 die richtige Wahl für Sie oder ist Notes 12 besser?
- Was ist vor einem Upgrade zu beachten?
- Welche Herausforderungen bringen 64-bit Notes Clients mit sich?
- Welche Probleme sind bekannt und welche Lösungen gibt es?
- Tipps und Tricks, um das Meiste aus Notes 14 herauszuholen
Workshop: HCL Notes 14 Upgrades einfach gemacht – von A bis Zpanagenda
Webinar Recording: https://www.panagenda.com/webinars/workshop-hcl-notes-14-upgrades-einfach-gemacht-von-a-bis-z/
Die Zeit ist fast gekommen: Notes 14 steht vor der Tür und bringt eine Fülle von neuen Funktionen mit sich. Mit dem sich abzeichnenden Ende des Produktsupports für HCL Notes 9 & 10 im Jahr 2024 ist es höchste Zeit, über ein Upgrade nachzudenken. Bisher haben Sie vielleicht gezögert, weil Upgrade-Projekte in der Regel langwierig, anstrengend und voller Stolpersteine sind. Aber das muss nicht sein. Erstinstallation oder Upgrade, Laptop oder virtuelle Infrastruktur – Sie können Upgrades in wenigen Minuten durchführen, ohne die Benutzer bei ihrer Arbeit zu stören. Sehen Sie wie!
In diesem spannenden Hands-On Workshop unter der Leitung des HCL Ambassador Marc Thomas erhalten Sie aus erster Hand Tipps und Anleitungen zur Konfiguration, Vorbereitung und Durchführung von blitzschnellen Installationen von HCL Notes 14 mit MarvelClient Upgrade. Auch für bestehende Anwender von MarvelClient Upgrade ist dies eine gute Auffrischungsveranstaltung mit Fokus auf Notes 14 – denn es wird unter anderem gezeigt, wie Sie bestehende Upgrade-Konfigurationen wiederverwenden können, um noch schneller zu werden.
Und das Beste: Wenn Sie MarvelClient Upgrade noch nicht kennen, können Sie mit unserer kostenlosen Version sofort loslegen und Ihr neu erworbenes Wissen in die Praxis umsetzen!
Was Sie lernen werden
- Upgrade von Notes-Clients von beliebiger Ausgangsversion/-konfiguration auf die gewünschte Zielversion und -konfiguration
- Upgradepakete konfigurieren und vorbereiten, inkl. Spezialbehandlung von Themen rund um Notes 14, wie zum Beispiel der Wechsel von 32-bit auf 64-bit
- Ausrollen und Durchführen der Upgrades mit MarvelClient ohne Endbenutzer zu stören oder Softwaredeployment verwenden zu müssen
- Pakete für die Erstinstallation auf neuen PCs schnüren
- Pakete für virtualle Umgebungen wie Citrix oder VDI, inklusive aller nötigen Optimierungen und Leistungsverbesserungen
How to Perform HCL Notes 14 Upgrades Smoothlypanagenda
Webinar Recording: https://www.panagenda.com/webinars/how-to-perform-hcl-notes-14-upgrades-smoothly/
HCL Notes 14 is coming out soon with many new features. Combine this with the fact that HCL will end their support for Notes 9 and 10 in 2024, and it is time to finally consider moving to a newer version.
You may have been hesitant so far because upgrades seem like long and arduous projects with many pitfalls. But it doesn’t have to be like that. Whether it is a fresh install or an upgrade, whether it is on a laptop, PC, or some virtual infrastructure – you can get upgrades done in minutes without disrupting users. Come and see how!
In this live, hands-on workshop HCL Ambassador Christoph Adler will show you in detail how you can use MarvelClient Upgrade to configure, prepare, and run the smoothest and fastest HCL Notes 14 installations ever. Even if you are already using MC Upgrade, it is a good refresher with a focus on what’s changed for Notes 14 and how you can re-use what you already have to be even faster.
The best part: if you don’t yet have MarvelClient Upgrade, you can immediately start using what you learn here, with our free version!
You will learn how to use MarvelClient Upgrade to
- Upgrade from any current Notes client configuration or version to your desired target configuration and version in a single, seamless step
- Configure and prepare upgrade packages and deal with Notes 14 specific issues, like the switch from 32-bit to 64-bit
- Deploy and run upgrade packages using MarvelClient without disrupting users or need for software deployment
- Create self-contained packages for initial installation of Notes 14 on new PCs
- Create packages for easy installation of Notes 14 on virtual platforms like Citrix and VDI including all needed optimizations and performance tweaks
The Ultimate Administrator’s Guide to HCL Nomad Webpanagenda
Webinar Recording: https://www.panagenda.com/webinars/the-ultimate-administrators-guide-to-hcl-nomad-web/
HCL Nomad Web is THE talk around the watercooler. More and more companies are looking into supplementing or outright replacing their Notes clients with this new browser based HCL solution. But doing so is a daunting prospect, given the many new technologies in play. To help you out, we went and collected everything you need to know in one place. Getting HCL Nomad Web up and running – start to finish, with live demos – only here!
Join HCL Ambassador Christoph Adler in this unmissable event for HCL administrators. Everything you see here you can put to good use immediately, as all tools are available with your HCL CCB license or are even free to use. Whether you already are using it, have just decided to start your HCL Nomad journey, or only want to see what it would mean to go down this path: if you don’t want to be left in the past, you must not miss this webinar!
What you will learn
- Understanding requirements, benefits, and limitations of HCL Nomad Web
- Installing HCL Nomad Web on the server (with or without HCL SafeLinx)
- Performing initial setup for end-users while preserving the workspace from their Notes clients
- Dealing with virtual infrastructures such as Citrix, VMWare, TS, and VDI
- Operating, optimizing, and troubleshooting on servers and clients
Die ultimative Anleitung für HCL Nomad Web Administratorenpanagenda
Webinar Recording: https://www.panagenda.com/webinars/die-ultimative-anleitung-fur-hcl-nomad-web-administratoren/
HCL Nomad Web ist DAS heiße Thema in der Notes-Welt. Immer mehr Unternehmen erwägen, ihre HCL Notes-Landschaft mit Nomad Web zu ergänzen oder sogar komplett zu ersetzen. Es ist verständlich, dass die Veränderungen und neuen Technologien überwältigend wirken können. Um dem entgegenzuwirken, erfahren Sie in diesem Webinar alles, was Sie über Nomad wissen müssen – angefangen von den ersten Schritten bis hin zum endgültigen Rollout bei den Anwendern. Alles praxisnah und leicht verständlich erklärt.
Verpassen Sie auf keinen Fall dieses aufschlussreiche Webinar mit dem renommierten HCL Ambassador Marc Thomas. Gewinnen Sie wertvolle Erkenntnisse, die Sie sofort in die Tat umsetzen können, denn alles, was Sie brauchen, ist in Ihrer HCL CCB-Lizenz bereits enthalten oder kostenlos erhältlich. Egal, ob Sie bereits in die Welt von HCL Nomad Web eingetaucht sind, den Einstieg planen oder einfach nur neugierig sind, ob die Lösung auch für Sie geeignet ist – wenn Sie nicht in der Vergangenheit stecken bleiben wollen, sollten Sie dieses Webinar nicht verpassen!
Was Sie lernen werden
- Anforderungen, Vorteile, und Beschränkungen von HCL Nomad Web
- Installation auf dem Server (mit und ohne HCL SafeLinx)
- Initiales Setup für Endbenutzer inkl. Übernahme des bestehenden Notes Client Arbeitsbereiches
- Umgang mit virtuellen Infrastrukturen wie Citrix, VMWare, TS und VDI
- Betrieb, Optimierung und Fehlerbehebung auf Server und Client
Bring the Modern and Seamless User Experience You Deserve to HCL Nomadpanagenda
Webinar Recording: https://www.panagenda.com/webinars/bring-the-modern-and-seamless-user-experience-to-hcl-nomad/
HCL Nomad is the future and is expected to give a modern, seamless user experience. But you don’t achieve that out of the box. The UI can be a bit of a pain, some Domino Applications aren’t ready for it, and the annoying realities of roaming, BYOD, browsers, and multiple devices rear their ugly heads.
Join this hands-on webinar on June 06 where one of the authorities in the field, Christoph Adler, demonstrates how to provide a modern user experience that is as seamless as your workforce expects it to be. Be among the first to achieve Nomad clients that give your users what they need, work without breaking down, follow compliance guidelines, and reduce the workload of IT and support – today!
What you will learn:
- Stay on top of all devices and users in one place with automatic discovery.
- Understand Recent Applications and Workspaces in Nomad – and master them.
- Manage replication for mobile use cases and block unwanted or incompatible applications from opening on Nomad.
- How to configure Nomad for a smooth experience that honors compliance needs.
- Give users a roaming configuration that moves with them across devices, no matter what happens.
Wie man HCL Nomad eine moderne User Experience verschafftpanagenda
Webinar Recording: https://www.panagenda.com/webinars/wie-man-hcl-nomad-eine-moderne-user-experience-verschafft/
HCL Nomad ist die Zukunft des Clients. Sie erwarten sich eine moderne, nahtlose User Experience, aber stellen schnell fest, dass dies nicht einfach von selbst passiert. Die Benutzeroberfläche kann mühsam sein, einige Ihrer Domino-Anwendungen sind (noch) nicht auf Nomad ausgelegt, und die anstrengenden Realitäten von Roaming, BYOD, Browsern und mehreren Geräten kommt immer wieder zum Vorschein. Es gibt viel zu tun.
Nehmen Sie an diesem praxisnahen Webinar am 6. Juni teil, in dem einer der führenden Experten auf diesem Fachgebiet, Marc Thomas, demonstriert, wie Sie eine moderne, nahtlose User Experience schaffen, die die Erwartungen Ihrer Mitarbeiter:innen übertrifft. Sie können ganz vorne dabei sein, wenn es um Nomad Clients geht, die einfach funktionieren, Compliance-Richtlinien erfüllen, und Ihren Arbeitsaufwand verringern!
Dabei gehen wir besonders auf die folgenden Themen ein:
- Behalten Sie den Überblick über alle Geräte und Anwender:innen an einem Ort dank automatischer Inventur.
- Erfahren Sie mehr über Recent Applications und Workspaces in Nomad – und lernen Sie, diese zu meistern.
- Verwalten Sie Replikation für mobile Anwendungsfälle und verhindern Sie, dass unerwünschte oder inkompatible Anwendungen auf Nomad geöffnet werden.
- Konfigurieren Sie Nomad so, dass es reibungslos funktioniert und die Compliance-Anforderungen erfüllt.
- Geben Sie Anwender:innen eine Roaming-Konfiguration, die sie auf allen Geräten begleitet, egal was passiert.
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfJay Das
With the advent of artificial intelligence or AI tools, project management processes are undergoing a transformative shift. By using tools like ChatGPT, and Bard organizations can empower their leaders and managers to plan, execute, and monitor projects more effectively.
top nidhi software solution freedownloadvrstrong314
This presentation emphasizes the importance of data security and legal compliance for Nidhi companies in India. It highlights how online Nidhi software solutions, like Vector Nidhi Software, offer advanced features tailored to these needs. Key aspects include encryption, access controls, and audit trails to ensure data security. The software complies with regulatory guidelines from the MCA and RBI and adheres to Nidhi Rules, 2014. With customizable, user-friendly interfaces and real-time features, these Nidhi software solutions enhance efficiency, support growth, and provide exceptional member services. The presentation concludes with contact information for further inquiries.
2. Who am I?
• Julian Robichaux
– Programmer and product manager at panagenda
– Developing applications using IBM products since mid-90’s
– Several open-source projects on OpenNTF
– “Learn Java by Example” video course
on lynda.com (LinkedIn Learning)
– IBM Champion since 2011
– nsftools.com (old stuff)
– @jrobichaux
2
3. Why are we here?
• To talk about Java 8!
– specifically lambdas and streams
– syntax, gotchas, and “why change?”
• Assuming that everyone in the room is a Java programmer
– you don’t have to be an expert
– any version is fine, we will start with Java 6
– we will also touch on Java 7, just in case
• What to do if you’re still on a Java 6 platform
3
4. Example Code
• Connect to a web server via HTTPS, and report the key size and expiration
date of the SSL certificate
– check servers for vulnerabilities due to old/weak keys
– tell your admins it’s time to renew the certificate
4
URL url = new URL( "https://my.server" );
checkSSLCertificate(url);
5. public static void checkSSLCertificate(URL url) {
HttpsURLConnection con = null;
try {
con = (HttpsURLConnection) url.openConnection();
con.setSSLSocketFactory( fakeSocketFactory() );
con.setHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true; // trust everyone!
}
});
con.connect();
Certificate[] certs = con.getServerCertificates();
for (Certificate cert : certs) {
System.out.println( "Valid until: " + ((X509Certificate)cert).getNotAfter());
System.out.println( "Server key bit length: " +
((RSAPublicKey)cert.getPublicKey()).getModulus().bitLength() );
}
} catch (IOException e) {
e.printStackTrace();
} catch (GeneralSecurityException e) {
e.printStackTrace();
} finally {
con.disconnect();
}
}
Example Code (Java 6)
create an HTTPS connection
tell it that self-signed and
expired certificates are okay
report the expiration date and
RSA key length of each SSL
certificate on the server
Exception handling!
6. Example Code (Java 6)
/**
* Creates an SSLSocketFactory that doesn't check certificates at all
* DO NOT USE THIS IN REAL LIFE
*/
private static SSLSocketFactory fakeSocketFactory() throws GeneralSecurityException {
TrustManager trustEveryone = new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() { return null; }
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {}
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {}
};
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, new TrustManager[] { trustEveryone }, new SecureRandom());
return sslContext.getSocketFactory();
}
7. A Few Words About Java 7
because you’ll see this stuff in Java 8
8. Catch Multiple Exceptions
• Try-catch blocks can catch multiple exceptions in one statement
HttpsURLConnection con = null;
try {
con = (HttpsURLConnection) url.openConnection();
// do stuff..
} catch (IOException e) {
e.printStackTrace();
} catch (GeneralSecurityException e) {
e.printStackTrace();
} finally {
con.disconnect();
}
HttpsURLConnection con = null;
try {
con = (HttpsURLConnection) url.openConnection();
// do stuff..
} catch (IOException | GeneralSecurityException e) {
e.printStackTrace();
} finally {
con.disconnect();
}
9. Try-with-resources
• Classes that implement the AutoCloseable interface can be automatically
closed by a try-catch block
HttpsURLConnection con = null;
try {
con = (HttpsURLConnection) url.openConnection();
// do stuff..
} catch (IOException | GeneralSecurityException e) {
e.printStackTrace();
} finally {
con.disconnect();
}
try (CloseableURLConnection closeableCon = new CloseableURLConnection(url)) {
HttpsURLConnection con = closeableCon.getHttpsConnection();
// do stuff..
} catch (IOException | GeneralSecurityException e) {
e.printStackTrace();
}
*
*
*
10. Creating a Closeable Class
static class CloseableURLConnection implements AutoCloseable {
URLConnection con;
public CloseableURLConnection(URL url) throws IOException {
con = url.openConnection();
}
public HttpsURLConnection getHttpsConnection() {
return (HttpsURLConnection)con;
}
@Override
public void close() {
getHttpsConnection().disconnect();
}
}
implement AutoCloseable
create a close() method
11. Closeable Classes
• Several standard Java classes are now AutoClosable
– InputStream
– OutputStream
– Reader
– Writer
– java.sql.Connection, Statement, and ResultSet
• You no longer have to declare your streams outside the try/catch block, or
remember to close them when you’re done!
• Like a finally clause, try-with-resources objects get closed even if an
Exception is thrown
11
12. A Few Other Java 7 Goodies
• New and/or improved classes
– java.nio.file, updated XML libraries, new/enhanced cryptography providers
• Binary literals and underscores in numeric literals
– int byteNum = 0b00100001;
– int phoneNum = 555_1212;
• Type inference for generics
– Map<String, List<String>> map = new HashMap<>();
• Switch statements operate on Strings
• http://docs.oracle.com/javase/8/docs/technotes/guides/language/enhancements.html
http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html
14. The Code in Java 7…
public static void checkSSLCertificate(URL url) {
try (CloseableURLConnection closeableCon = new CloseableURLConnection(url)) {
HttpsURLConnection con = closeableCon.getHttpsConnection();
con.setSSLSocketFactory( fakeSocketFactory() );
con.setHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true; // trust everyone!
}
});
con.connect();
Certificate[] certs = con.getServerCertificates();
for (Certificate cert : certs) {
System.out.println( "Valid until: " + ((X509Certificate)cert).getNotAfter());
System.out.println( "Server key bit length: " +
((RSAPublicKey)cert.getPublicKey()).getModulus().bitLength() );
}
} catch (IOException | GeneralSecurityException e) {
e.printStackTrace();
}
}
anonymous class
loop through an array
15. The Code in Java 8
public static void checkSSLCertificate(URL url) {
try (CloseableURLConnection closeableCon = new CloseableURLConnection(url)) {
HttpsURLConnection con = closeableCon.getHttpsConnection();
con.setSSLSocketFactory( fakeSocketFactory() );
con.setHostnameVerifier( (hostname, session) -> true );
con.connect();
Certificate[] certs = con.getServerCertificates();
Arrays.asList(certs)
.stream()
.map ( cert -> (X509Certificate)cert )
.peek( cert -> System.out.println("Valid until: " + cert.getNotAfter()) )
.map ( cert -> ((RSAPublicKey)cert.getPublicKey()).getModulus().bitLength() )
.forEach( i -> System.out.println("Server key bit length: " + i) );
} catch (IOException | GeneralSecurityException e) {
e.printStackTrace();
}
}
lambda hostname verifier
read the array as a stream,
not a loop
16. What’s a Lambda?
• Simplified syntax for writing single-method classes
• You are effectively passing a function as a parameter to a method
16
con.setHostnameVerifier( (hostname, session) -> true );
(parameters)
arrow
expression
17. How Does that Lambda Work?
con.setHostnameVerifier( new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
con.setHostnameVerifier( (hostname, session) -> true );
?
18. How Does that Lambda Work?
con.setHostnameVerifier( new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
con.setHostnameVerifier( (hostname, session) -> true );
?
19. How Does that Lambda Work?
con.setHostnameVerifier( new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
con.setHostnameVerifier( (hostname, session) -> true );
?
20. How Does that Lambda Work?
con.setHostnameVerifier( new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
con.setHostnameVerifier( (hostname, session) -> true );
?
21. How Does that Lambda Work?
con.setHostnameVerifier( new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
con.setHostnameVerifier( (hostname, session) -> true );
!
22. Functional Interfaces
• Lambdas rely on “functional interfaces” to work
– an interface with only one abstract method
– also called a “single abstract method” or SAM interface
– there can be only one! <insert highlander joke here>
• If there’s only one method, the compiler knows which one you will call
• If you know the method, and the compiler knows the method, we don’t
have to talk about the method
– everyone already knows!
– skip the obvious stuff
22
23. Functional Interfaces
con.setHostnameVerifier( new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
con.setHostnameVerifier( (hostname, session) -> true );
the class MUST be a HostnameVerifier, and the
method MUST be verify(String, SSLSession)
therefore… throw away everything obvious
25. Method References
• There is an alternative syntax called “Method References”
– for a lambda that only calls a single method of the parameter, or a single
static method that uses the parameter, or creates a single new Object
object.method( s -> s.getLength() );
object.method( String::getLength );
http://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html
26. Another Example: Sandwiches!
static enum Sandwich {
PB_J ("Peanut butter & jelly", 500),
SUB ("Sub", 500),
HOTDOG ("Hot dog", 900),
TACO ("Taco", 500),
PIZZA ("Pizza", 900);
private String name;
private int calories;
private Sandwich(String name, int calories) {
this.name = name;
this.calories = calories;
}
public String getName() { return name; }
public int getCalories() { return calories; }
public String toString() { return "n" + calories +
" caloriest" + name; }
}
27. List the Sandwiches in Order of Calories
List<Sandwich> sandwiches = Arrays.asList( Sandwich.values() );
Collections.sort(sandwiches, new Comparator<Sandwich>() {
public int compare(Sandwich s1, Sandwich s2) {
return Integer.compare(s1.getCalories(), s2.getCalories());
}
});
System.out.println(sandwiches);
PB_J ("Peanut butter & jelly", 500),
SUB ("Sub", 500),
HOTDOG ("Hot dog", 900),
TACO ("Taco", 500),
PIZZA ("Pizza", 900);
500 calories Peanut butter & jelly,
500 calories Sub,
500 calories Taco,
900 calories Hot dog,
900 calories Pizza
28. List the Sandwiches in Order of Calories
List<Sandwich> sandwiches = Arrays.asList( Sandwich.values() );
/*
Collections.sort(sandwiches, new Comparator<Sandwich>() {
public int compare(Sandwich s1, Sandwich s2) {
return Integer.compare(s1.getCalories(), s2.getCalories());
}
});
*/
Collections.sort(sandwiches,
(s1, s2) -> Integer.compare(s1.getCalories(), s2.getCalories()) );
System.out.println(sandwiches);
PB_J ("Peanut butter & jelly", 500),
SUB ("Sub", 500),
HOTDOG ("Hot dog", 900),
TACO ("Taco", 500),
PIZZA ("Pizza", 900);
500 calories Peanut butter & jelly,
500 calories Sub,
500 calories Taco,
900 calories Hot dog,
900 calories Pizza
29. List the Sandwiches in Order of Calories
List<Sandwich> sandwiches = Arrays.asList( Sandwich.values() );
/*
Collections.sort(sandwiches, new Comparator<Sandwich>() {
public int compare(Sandwich s1, Sandwich s2) {
return Integer.compare(s1.getCalories(), s2.getCalories());
}
});
*/
Collections.sort(sandwiches,
Comparator.comparing( sandwich -> sandwich.getCalories() ) );
System.out.println(sandwiches);
PB_J ("Peanut butter & jelly", 500),
SUB ("Sub", 500),
HOTDOG ("Hot dog", 900),
TACO ("Taco", 500),
PIZZA ("Pizza", 900);
500 calories Peanut butter & jelly,
500 calories Sub,
500 calories Taco,
900 calories Hot dog,
900 calories Pizza
30. List the Sandwiches in Order of Calories
List<Sandwich> sandwiches = Arrays.asList( Sandwich.values() );
/*
Collections.sort(sandwiches, new Comparator<Sandwich>() {
public int compare(Sandwich s1, Sandwich s2) {
return Integer.compare(s1.getCalories(), s2.getCalories());
}
});
*/
Collections.sort(sandwiches,
Comparator.comparing( Sandwich::getCalories ) );
System.out.println(sandwiches);
PB_J ("Peanut butter & jelly", 500),
SUB ("Sub", 500),
HOTDOG ("Hot dog", 900),
TACO ("Taco", 500),
PIZZA ("Pizza", 900);
500 calories Peanut butter & jelly,
500 calories Sub,
500 calories Taco,
900 calories Hot dog,
900 calories Pizza
31. All These are the Same Comparator
Collections.sort(sandwiches, new Comparator<Sandwich>() {
public int compare(Sandwich s1, Sandwich s2) {
return Integer.compare(s1.getCalories(), s2.getCalories());
}
});
Collections.sort(sandwiches,
(s1, s2) -> Integer.compare(s1.getCalories(), s2.getCalories()) );
Collections.sort(sandwiches,
Comparator.comparing( sandwich -> sandwich.getCalories() ) );
Collections.sort(sandwiches,
Comparator.comparing( Sandwich::getCalories ) );
33. But Really, What’s the Point?
• This all seems like needless tomfoolery
– after all, the old code still works!
• Two major advantages:
1. Forces (or strongly encourages) you to write functional code
2. Less visual noise makes code easier to read and understand
33
Collections.sort(sandwiches, new Comparator<Sandwich>() {
public int compare(Sandwich s1, Sandwich s2) {
return Integer.compare(s1.getCalories(), s2.getCalories());
}
});
Collections.sort(sandwiches,
Comparator.comparing( Sandwich::getCalories ) );
35. Dealing with Exceptions
Collections.sort(sandwiches,
Comparator.comparing( Sandwich::getCalories )
.thenComparing( Sandwich::getName )
.reversed() );
NULLWICH (null, 500),
PB_J ("Peanut butter & jelly", 500),
SUB ("Sub", 500),
HOTDOG ("Hot dog", 900),
TACO ("Taco", 500),
PIZZA ("Pizza", 900);
Exception in thread "main" java.lang.NullPointerException
at java.util.Comparator.lambda$comparing$77a9974f$1(Comparator.java:469)
at java.util.Comparator.lambda$thenComparing$36697e65$1(Comparator.java:217)
at java.util.Collections$ReverseComparator2.compare(Collections.java:5178)
at java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
at java.util.TimSort.sort(TimSort.java:220)
at java.util.Arrays.sort(Arrays.java:1438)
at java.util.Arrays$ArrayList.sort(Arrays.java:3895)
at java.util.Collections.sort(Collections.java:175)
at com.panagenda.ssltest.MoreJava8Examples.main(MoreJava8Examples.java:52)
36. Dealing with Exceptions
• It’s not always obvious what caused the Exception
• It’s cumbersome to add a try/catch to a lambda
– same with adding logging
• If an Exception is possible, maybe better to call out to a method instead
36
Collections.sort(sandwiches,
Comparator.comparing( sandwich -> getCalories(sandwich) )
.thenComparing( sandwich -> getName(sandwich) )
.reversed() );
37. A Few More Examples
// process all the keys and values of a HashMap
Map<String, Integer> myHashMap = new HashMap<>();
myHashMap.forEach( (key, value) -> System.out.println(key + "; " + value) );
// remove all the null elements in a List
List<String> myArrayList = new ArrayList<>();
myArrayList.removeIf( s -> s == null );
// get all the JPG files in a directory
File photoDir = new File("c:/photos");
File[] docFiles = photoDir.listFiles( file -> file.getName().endsWith("jpg") );
// run some code in a thread
new Thread( () -> doSomething() ).start();
38. Under the Hood
• If you’re really curious about how all this works…
– http://cr.openjdk.java.net/~briangoetz/lambda/lambda-translation.html
• It’s all Function and Predicate objects
– https://docs.oracle.com/javase/8/docs/api/java/util/function/package-
summary.html
– Closures? By some definitions.
38
Function<Sandwich, Integer> caloryCompare = sandwich -> sandwich.getCalories();
41. What Does that Loop Actually Do?
41
Certificate[] certs = con.getServerCertificates();
for (Certificate cert : certs) {
System.out.println( "Valid until: " + ((X509Certificate)cert).getNotAfter());
System.out.println( "Server key bit length: " +
((RSAPublicKey)cert.getPublicKey()).getModulus().bitLength() );
}
print the information
get something from the objectprint the information
get something from the object
42. How Does the Stream Work?
Certificate[] certs = con.getServerCertificates();
Arrays.asList(certs)
.stream()
.map ( cert -> (X509Certificate)cert )
.peek( cert -> System.out.println("Valid until: " + cert.getNotAfter()) )
.map ( cert -> ((RSAPublicKey)cert.getPublicKey()).getModulus().bitLength() )
.forEach( i -> System.out.println("Server key bit length: " + i) );
start with an array,
convert it to a List
convert the List to a stream
TIP: this could also be just
Arrays.stream(certs)
}
change the stream
do something to each item
change the stream
do something to each item
43. Breaking Down the Example
Certificate[] certs = con.getServerCertificates();
Arrays.asList(certs)
.stream()
.map ( cert -> (X509Certificate)cert )
.peek( cert -> System.out.println("Valid until: " + cert.getNotAfter()) )
.map ( cert -> ((RSAPublicKey)cert.getPublicKey()).getModulus().bitLength() )
.forEach( i -> System.out.println("Server key bit length: " + i) );
map() converts each item by
casting it to X509Certificate,
then returns a Stream of
X509Certificate objects
map() gets an int value from
each item, then returns a
Stream of int values
start with an array of
Certificates
44. Breaking Down the Example
Certificate[] certs = con.getServerCertificates();
Arrays.asList(certs)
.stream()
.map ( cert -> (X509Certificate)cert )
.peek( cert -> System.out.println("Valid until: " + cert.getNotAfter()) )
.map ( cert -> ((RSAPublicKey)cert.getPublicKey()).getModulus().bitLength() )
.forEach( i -> System.out.println("Server key bit length: " + i) );
peek() is an intermediate
operation: it does something
with each item and returns
the original Stream
forEach() is a terminal
operation: it does something
with each item and stops
45. What’s a Stream?
• Allows you to perform operations on a collection of data
– multiple operations can be combined in a pipeline
• Has the following properties
– uses functional arguments (lambdas!) to process data
– does not store data
– pipeline operations are optimized for laziness
– optionally process in parallel (multi-threaded) with no extra code
45
46. Is a Stream Better than a Loop?
Certificate[] certs = con.getServerCertificates();
for (Certificate cert : certs) {
System.out.println( "Valid until: " + ((X509Certificate)cert).getNotAfter());
System.out.println( "Server key bit length: " +
((RSAPublicKey)cert.getPublicKey()).getModulus().bitLength() );
}
Certificate[] certs = con.getServerCertificates();
Arrays.asList(certs)
.stream()
.map ( cert -> (X509Certificate)cert )
.peek( cert -> System.out.println("Valid until: " + cert.getNotAfter()) )
.map ( cert -> ((RSAPublicKey)cert.getPublicKey()).getModulus().bitLength() )
.forEach( i -> System.out.println("Server key bit length: " + i) );
!Stream version is more
descriptive of the behavior
of the code
Stream version can easily be
turned into multi-threaded
code
47. Multi-threaded You Say?
Arrays.asList(certs)
.stream()
.parallel()
.map ( cert -> (X509Certificate)cert )
.peek( cert -> System.out.println("Valid until: " + cert.getNotAfter()) )
.map ( cert -> ((RSAPublicKey)cert.getPublicKey()).getModulus().bitLength() )
.forEach( i -> System.out.println("Server key bit length: " + i) );
DANGER: The forEach() and peek()
output might be out-of-order!
48. Adding Numbers in a Loop
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
45
int sum = 0;
for (int i : new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9}) {
sum += i;
}
return sum;
50. Adding Numbers with Reduce
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
1 + 2 3 + 4 + 5 6 + 8 7 + 9
3 + 14 12 + 16
45
By abstracting away the very concept
of looping, you can implement looping
any way you want, including
implementing it in a way that scales
nicely with extra hardware.
Joel Spolsky
https://www.joelonsoftware.com/2006/08/01/
can-your-programming-language-do-this
each computation could be on a separate processor core… or a separate machine!
51. Other Things to Know About Streams
• Normally get them from Collections or arrays
– List.stream(), Map.entrySet().stream(), Arrays.stream(Object[])
– also other fun places, like BufferedReader.lines() or Files.list()
• Some operations will short circuit instead of processing each item
– built-in optimizations
• Stream operations should be stateless
– for example, don’t update Lists as part of a stream operation
– items could process out of order, and might not be thread-safe
– collect the results at the end instead
51
52. Other Things to Know About Streams
• Operations on Streams should be associative when possible
– (a + b + c) == (c + b + a) == b + (a + c)
– if order of operations does matter, make sure you:
• start with an ordered set of data, like a List
• use forEachOrdered() instead of forEach()
• don’t use reduce()
• For reference:
– https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-
summary.html
52
53. Under the Hood
• If you’re really curious about how all this works…
– http://www.ibm.com/developerworks/java/library/j-java-streams-1-brian-
goetz
• Read about java.util.function
– https://docs.oracle.com/javase/8/docs/api/java/util/function/package-
summary.html
– Predicate, Consumer, and Supplier interfaces
53
55. Java 8 API Changes (partial list)
• Streams
– in its own package
– throughout Collections, Files, etc.
• Functional classes in java.util.function
• Brand new Date-Time package and classes
– http://docs.oracle.com/javase/tutorial/datetime
• JavaFX for GUIs
• http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html
http://docs.oracle.com/javase/8/docs/technotes/guides/language/lambda_api_jdk8.html
55
Function<Sandwich, Integer> caloryCompare =
sandwich -> sandwich.getCalories();
56. Compiling to Earlier Versions
• Java can compile for previous versions, but…
– you can’t use any of the new APIs (classes or methods)
– you can’t use any of the new language features
• What happens if you use a Java 8 JAR in a Java 6 environment?
– it won’t work
– the JRE checks the JAR file for a version number first
– if the version number is too high, you get errors
• Some tools can convert bytecode to earlier versions
– but new APIs still won’t work
56
57. Options for Backwards Compatibility
• If you don’t want to use new language features at all
– set “Source compatibility” and “Generated .class files compatibility” to your
desired older Java version
– use a tool to make sure you didn’t use new APIs
Animal Sniffer: http://www.mojohaus.org/animal-sniffer
57
58. Options for Backwards Compatibility
• If you only want to use lambdas and try-with-resources
– compile as Java 8, then use RetroLambda to backport your JAR file
https://github.com/orfjackal/retrolambda
– you still have to make sure you didn’t use new APIs: AnimalSniffer again
• You might be able to backport Streams too (mixed results)
– http://sourceforge.net/projects/streamsupport
58
59. Is It Worth It?
• Backporting? Maybe, but probably not regularly
– Risky: even if it seems to work, hard to test if it really worked
– make sure you have great unit tests to run against the backported code
• Learning? Absolutely!
– even if you can’t use Java 8 now, you will later
– functional programming can be much “safer”
– teaches you good coding habits
– helps you understand code examples on StackOverflow ;)
59
62. Articles and Musings
• State of the lambda (Brian Goetz)
– http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-final.html
• IBM DeveloperWorks articles by Brian Goetz
– http://www.ibm.com/developerworks/java/library/j-java-streams-1-brian-goetz
– http://www.ibm.com/developerworks/java/library/j-java-streams-2-brian-goetz
– http://www.ibm.com/developerworks/java/library/j-java-streams-3-brian-goetz
– http://www.ibm.com/developerworks/java/library/j-java-streams-4-brian-goetz
– http://www.ibm.com/developerworks/java/library/j-java-streams-5-brian-goetz
• Joel Spolsky on MapReduce
– https://www.joelonsoftware.com/2006/08/01/can-your-programming-language-
do-this
62
63. Books (!)
• Java 8 in Action
– Raoul-Gabriel Urma
Manning Press
• Mastering Lambdas:
Java Programming in
a Multicore World
– Maurice Naftalin
Oracle Press
65. Notices and
disclaimers
continued
Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other
publicly available sources. IBM has not tested those products in connection with this publication and cannot confirm the accuracy of
performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should
be addressed to the suppliers of those products. IBM does not warrant the quality of any third-party products, or the ability of any such
third-party products to interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR
IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE.
The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents,
copyrights, trademarks or other intellectual property right.
IBM, the IBM logo, ibm.com, Aspera®, Bluemix, Blueworks Live, CICS, Clearcase, Cognos®, DOORS®, Emptoris®, Enterprise
Document Management System™, FASP®, FileNet®, Global Business Services ®, Global Technology Services ®, IBM
ExperienceOne™, IBM SmartCloud®, IBM Social Business®, Information on Demand, ILOG, Maximo®, MQIntegrator®, MQSeries®,
Netcool®, OMEGAMON, OpenPower, PureAnalytics™, PureApplication®, pureCluster™, PureCoverage®, PureData®,
PureExperience®, PureFlex®, pureQuery®, pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, Smarter Commerce®,
SoDA, SPSS, Sterling Commerce®, StoredIQ, Tealeaf®, Tivoli®, Trusteer®, Unica®, urban{code}®, Watson, WebSphere®, Worklight®,
X-Force® and System z® Z/OS, are trademarks of International Business Machines Corporation, registered in many jurisdictions
worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is
available on the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.
65