As Douglas Crockford said, JavaScript is one of the most misunderstood languages. Also if the new standardizations brought to a more cohesive lingo, there are still development habits that create unpredictable effects and unreadable code. During this session, we'll dive in those habits discussing how the most recent versions of ECMA script help to write a cleaner and more sustainable JavaScript.
This the slide stack for the two videos on Data types in my YouTube series on JavaScript. The videos are at https://www.youtube.com/watch?v=UAtJXkGggOU and https://www.youtube.com/watch?v=H2sjsGZyYaw
There are several JavaScript libraries available in the world of web programming. And, as the usage and complexity is increasing day by day, sometimes it becomes very difficult and confusing to understand and create modules using those libraries, especially for those having strong background of Object Oriented Languages.
So this one hour session will make an effort to go into the very basics of JavaScript and put a base for writing modular JavaScript code.
This the slide stack for the two videos on Data types in my YouTube series on JavaScript. The videos are at https://www.youtube.com/watch?v=UAtJXkGggOU and https://www.youtube.com/watch?v=H2sjsGZyYaw
There are several JavaScript libraries available in the world of web programming. And, as the usage and complexity is increasing day by day, sometimes it becomes very difficult and confusing to understand and create modules using those libraries, especially for those having strong background of Object Oriented Languages.
So this one hour session will make an effort to go into the very basics of JavaScript and put a base for writing modular JavaScript code.
Cleaner Code: How Clean Code is Functional CodeDave Fancher
Since 2008 Bob Martin's seminal work "Clean Code" has been teaching developers a series of guidelines for writing maintainable code and improving software quality. While several of the guidelines such as naming conventions and comment style are highly subjective, the astute reader will notice that the remaining guidelines are actually quite objective. All too often, following the Clean Code guidelines is mostly a matter of developer discipline. Let's discuss how those objective guidelines improve code quality, how they often naturally arise when programming in a functional style, and how many functional languages actively enforce them thus eliminating the need to rely on discipline and naturally eliminate the complexities they address.
JavaScript language plays a very important role in Web 2.0 application development. JavaScript has its own characteristics different than object-oriented languages and it's not easy for developers to understand.
This presentation covers major advanced topics in JavaScript languages, including prototype chain, identifier resolving, "this" keyword, "new" operator, execution context and scope chain and closure. Besides that, it also covers best practices when using JavaScript.
SOLID
From Wikipedia, the free encyclopedia
===============================
SOLID Principles :
Single responsibility
Open/closed
Liskov substitution
Interface segregation
Dependency inversion
In object-oriented computer programming, SOLID is a mnemonic acronym for five design principles intended to make software designs more understandable, flexible and maintainable.
The Qt Kinetic project is an initiative to provide powerful frameworks to create dynamic, beautiful graphical user interfaces in Qt. As an extension of this effort, the next generation of Qt's item views framework is being designed with animated user interfaces in mind. This talk will give an introduction to the Item Views NG project and the new architecture that is being proposed.
Presentation by Marius Bugge Monsen held during Qt Developer Days 2009.
http://qt.nokia.com/developer/learning/elearning
An overview of the Qt Model View architecture and practical examples of how to use this architecture for presenting large data sets in your application user interface.
Presented at the Bossa'10 conference in Manaus, Brazil. The presentation talks about the direction in which the Qt widgets are being developed and introduces the idea of Controls to Qt and QML.
Improving Correctness With Type - Goto Con BerlinIain Hull
A talk I gave at Goto Con Berlin in December 2015
http://workday.github.io/scala/2015/12/03
This talk is aimed at Scala developers with a background in object oriented programming who want to learn new ways to use types to improve the correctness of their code. It introduces the topic in a practical fashion, concentrating on the “easy wins” developers can apply to their code today.
A talk I gave at Scala Days San Francisco March 2015
http://workday.github.io/scala/2015/03/17/scala-days-improving-correctness-with-types/
This talk is aimed at Scala developers with a background in object oriented programming who want to learn new ways to use types to improve the correctness of their code. It introduces the topic in a practical fashion, concentrating on the “easy wins” developers can apply to their code today.
http://event.scaladays.org/scaladays-sanfran-2015#!#schedulePopupExtras-6553
Improperly architected applications may work, may perform well, and may meet the acceptance criteria, but the ability to maintain them degrades over time. This presentation will show some of the common mistakes made when building large web applications, how to be aware of them, correct them, and hopefully prevent them.
Cleaner Code: How Clean Code is Functional CodeDave Fancher
Since 2008 Bob Martin's seminal work "Clean Code" has been teaching developers a series of guidelines for writing maintainable code and improving software quality. While several of the guidelines such as naming conventions and comment style are highly subjective, the astute reader will notice that the remaining guidelines are actually quite objective. All too often, following the Clean Code guidelines is mostly a matter of developer discipline. Let's discuss how those objective guidelines improve code quality, how they often naturally arise when programming in a functional style, and how many functional languages actively enforce them thus eliminating the need to rely on discipline and naturally eliminate the complexities they address.
JavaScript language plays a very important role in Web 2.0 application development. JavaScript has its own characteristics different than object-oriented languages and it's not easy for developers to understand.
This presentation covers major advanced topics in JavaScript languages, including prototype chain, identifier resolving, "this" keyword, "new" operator, execution context and scope chain and closure. Besides that, it also covers best practices when using JavaScript.
SOLID
From Wikipedia, the free encyclopedia
===============================
SOLID Principles :
Single responsibility
Open/closed
Liskov substitution
Interface segregation
Dependency inversion
In object-oriented computer programming, SOLID is a mnemonic acronym for five design principles intended to make software designs more understandable, flexible and maintainable.
The Qt Kinetic project is an initiative to provide powerful frameworks to create dynamic, beautiful graphical user interfaces in Qt. As an extension of this effort, the next generation of Qt's item views framework is being designed with animated user interfaces in mind. This talk will give an introduction to the Item Views NG project and the new architecture that is being proposed.
Presentation by Marius Bugge Monsen held during Qt Developer Days 2009.
http://qt.nokia.com/developer/learning/elearning
An overview of the Qt Model View architecture and practical examples of how to use this architecture for presenting large data sets in your application user interface.
Presented at the Bossa'10 conference in Manaus, Brazil. The presentation talks about the direction in which the Qt widgets are being developed and introduces the idea of Controls to Qt and QML.
Improving Correctness With Type - Goto Con BerlinIain Hull
A talk I gave at Goto Con Berlin in December 2015
http://workday.github.io/scala/2015/12/03
This talk is aimed at Scala developers with a background in object oriented programming who want to learn new ways to use types to improve the correctness of their code. It introduces the topic in a practical fashion, concentrating on the “easy wins” developers can apply to their code today.
A talk I gave at Scala Days San Francisco March 2015
http://workday.github.io/scala/2015/03/17/scala-days-improving-correctness-with-types/
This talk is aimed at Scala developers with a background in object oriented programming who want to learn new ways to use types to improve the correctness of their code. It introduces the topic in a practical fashion, concentrating on the “easy wins” developers can apply to their code today.
http://event.scaladays.org/scaladays-sanfran-2015#!#schedulePopupExtras-6553
Improperly architected applications may work, may perform well, and may meet the acceptance criteria, but the ability to maintain them degrades over time. This presentation will show some of the common mistakes made when building large web applications, how to be aware of them, correct them, and hopefully prevent them.
Headache from using mathematical softwarePVS-Studio
It so happened that during some period of time I was discussing on the Internet, one would think, different topics: free alternatives of Matlab for universities and students, and finding errors in algorithms with the help of static code analysis. All these discussions were brought together by the terrible quality of the code of modern programs. In particular, it is about quality of software for mathematicians and scientists. Immediately there arises the question of the credibility to the calculations and studies conducted with the help of such programs. We will try to reflect on this topic and look for the errors.
JavaScript is scripting/programming language. File Extension of JavaScript is ".js”. This extension can be catched by a number of applications including Windows Script Host, Dreamweaver MX, Notepad, Netscape Navigator, PavScrip, UltraEdit.
Esta charla comprende las lecciones aprendidas convirtiendo la app de Android de Teambox (una app repleta de deuda técnica y con un alto nivel de acoplamiento entre clases), en la versión actual de Redbooth, que intenta cumplir la arquitectura Hexagonal y los principios SOLID. Durante la exposición explicaremos como fuimos desenredando el código paso a paso; como aplicamos por partes los conceptos de la arquitectura hexagonal; como dejamos de lado componentes del framework de Android que dificultaban el mantenimiento de la app; y que errores cometimos, como los solucionamos y como se podrían haber evitado.
The "Top 54 JavaScript Interview Questions" PDF covers a comprehensive set of JavaScript topics, including data types, object creation, functions, cookies, variable scopes, the 'this' keyword, closures, arrow functions, debugging, and more. It provides detailed insights into JavaScript concepts through questions and answers. You can access the full document for an in-depth understanding of these essential JavaScript interview topics.
1. What do you understand about JavaScript?
2. What’s the difference between JavaScript and Java?
3. What are the different types of data available in JavaScript?
4. What are the features of JavaScript?
5. What benefits does JavaScript offer compared to other web technologies?
6. How can an object be created in JavaScript?
7. How can an array be created in JavaScript?
8. What are some of the pre-existing methods available in JavaScript?
9. What are the scopes of a variable in JavaScript?
10. What is the ‘this’ keyword in JavaScript?
11. What are the conventions of naming a variable in JavaScript?
12. What is Callback in JavaScript?
13. How do you debug a JavaScript code?
14. What distinguishes a Function declaration and Function expression?
15. How can you include JavaScript code in an HTML file?
16. What do you understand about cookies?
17. How would you create a cookie?
18. How would you read a cookie?
19. How would you delete a cookie?
20. What’s the difference between let and var?
21. What are Closures in JavaScript?
22. What are the arrow functions in JavaScript?
23. What are the various methods to access an HTML element in JavaScript code?
24. What are the methods for defining a variable in JavaScript?
25. What are Imports and Exports in JavaScript?
26. What is the differences between Document and Window in JavaScript?
27. What are some of the JavaScript frameworks and their purposes?
28. What is the difference between Undefined and Undeclared in JavaScript?
29. What is the differences between Undefined and Null in JavaScript?
30. What is the difference between Session storage and Local storage?
31. What are the different data types that exist in JavaScript?
32. What is the ‘this’ keyword in JavaScript?
33. What is the difference between Call and Apply? (explain in detail with examples)
34. What are the scopes of a variable in JavaScript?
35. What are the arrow functions in JavaScript?
36. Explain Hoisting in JavaScript. (with examples)
37. Difference between “==” and “===” operators (with examples)
38. Difference between var and let keyword
39. Implicit Type Coercion in JavaScript (in detail with examples)
40. Is JavaScript a statically typed or a dynamically typed language?
41. NaN property in JavaScript
42. Passed by value and passed by reference
43. Immediately Invoked Function in JavaScript
44. Characteristics of JavaScript strict mode
45. Higher Order Functions (with examples)
#JavaScriptInterviewQuestions #JavaScriptCoding #WebDevelopment #JavaScriptBasics
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
Increased complexity makes it very hard and time-consuming to keep your software bug-free and secure. We introduce fuzz-testing as a method for automatically and continuously discovering vulnerabilities hidden in your code. The talk will explain how fuzzing works and how to integrate fuzz-testing into your Software Development Life Cycle to increase your code’s security.
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
It was 1993 when we decided to venture in a beat'em up game for Amiga. The Catalypse's success story pushed me and my comrade to create something astonishing for this incredible game machine... but things went harder, assumptions were slightly different, and italian competitors appeared out of nowhere... the project died in 1996. Story ended? Probably not...
Il Commodore 65 è un prototipo di personal computer che Commodore avrebbe dovuto mettere in commercio quale successore del Commodore 64. Purtroppo la sua realizzazione si fermò appunto allo stadio prototipale. Racconterò l'affascinante storia del suo sviluppo ed il perchè della soppressione del progetto ormai ad un passo dalla immissione in commercio.
Rivivere l'ebbrezza di progettare un vecchio computer o una consolle da bar è oggi possibile sfruttando le FPGA, ovvero logiche programmabili che consentono a chiunque di progettare il proprio hardware o di ricrearne uno del passato. In questa sessione si racconta come dal reverse engineering dell'hardware di vecchie glorie come il Commodore 64 e lo ZX Spectrum sia stato possibile farle rivivere attraverso tecnologie oggi alla portata di tutti.
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
There's a lot of talk about blockchain, but how does the technology behind it actually work? For developers, getting some hands-on experience is the fastest way to get familiair with new technologies. So let's build a blockchain, then! In this session, we're going to build one in plain old Java, and have it working in 40 minutes. We'll cover key concepts of a blockchain: transactions, blocks, mining, proof-of-work, and reaching consensus in the blockchain network. After this session, you'll have a better understanding of core aspects of blockchain technology.
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
When was the last time you were truly lost? Thanks to the maps and location technology in our phones, a whole generation has now grown up in a world where getting lost is truly a thing of the past. Location technology goes far beyond maps in the palm of our hand, however. In this talk, we will explore how a ridesharing app works. How do we discover our destination?How do we find the closest driver? How do we display this information on a map? How do we find the best route?To answer these questions,we will be learning about a variety of location APIs, including Maps, Positioning, Geocoding etc.
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
Eward Driehuis, SecureLink's research chief, will guide you through the bumpy ride we call the cyber threat landscape. As the industry has over a decade of experience of dealing with increasingly sophisticated attacks, you might be surprised to hear more attacks slip through the cracks than ever. From analyzing 20.000 of them in 2018, backed by a quarter of a million security events and over ten trillion data points, Eward will outline why this happens, how attacks are changing, and why it doesn't matter how neatly or securely you code.
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
IoT revolution is ended. Thanks to hardware improvement, building an intelligent ecosystem is easier than never before for both startups and large-scale enterprises. The real challenge is now to connect, process, store and analyze data: in the cloud, but also, at the edge. We’ll give a quick look on frameworks that aggregate dispersed devices data into a single global optimized system allowing to improve operational efficiency, to predict maintenance, to track asset in real-time, to secure cloud-connected devices and much more.
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
What if Virtual Reality glasses could transform your environment into a three-dimensional work of art in realtime in the style of a painting from Van Gogh? One of the many interesting developments in the field of Deep Learning is the so called "Style Transfer". It describes a possibility to create a patchwork (or pastiche) from two images. While one of these images defines the the artistic style of the result picture, the other one is used for extracting the image content. A team from TNG Technology Consulting managed to build an AI showcase using OpenCV and Tensorflow to realize such goggles.
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
Blockchain (and Cryptocurrency) is an evolution of 20-year old research from scientists like Chaum, Lamport, and Castro & Liskov. Due to the current hype, it's hard to distinguish beneficial aspects of the technology from a desire for a "silver bullet" for device security, verifiable logistics, or "saving democracy". The problem: blockchain introduces new security challenges - and blind adoption without understanding reduces overall security. In this talk, Melanie Rieback and Klaus Kursawe explain the pitfalls and limits of blockchain, so you can avoid making your applications LESS secure.
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
Networking is a core part of computing in the digital world we inhabit. But, how well do you know how it works? Do you understand all the moving parts of the OSI stack inside your computer, and how the network is actually put together? How can this ever work? This guided safari of layers, standards, protocols, and happenstance will bring us close to the copper wire, and up through the layers of CDMA/CD, ARP, routing and HTTP. We will make a few excursions through patchworks that still work forty years later, and cleverly designed mechanisms that show that simplicity is the only way to last.
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
Performance tests are not only an important instrument for understanding a system and its runtime environment. It is also essential in order to check stability and scalability – non-functional requirements that might be decisive for success. But won't my cloud hosting service scale for me as long as I can afford it? Yes, but… It only operates and scales resources. It won't automatically make your system fast, stable and scalable. This talk shows how such and comparable questions can be clarified with performance tests and how DevOps teams benefit from regular test practise.
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
Sascha will demonstrate the opportunities and challenges of Conversational AI learned from the practice. Both Technology and User Experience will be covered introducing a process finding micro-moments, writing happy paths, gathering intents, designing the conversational flow, and finally publishing on almost all channels including Voice Services and Chatbots. Valuable for enterprises, developers, and designers. All live on stage in just minutes and with almost no code.
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
A key challenge we face at Pacmed is quickly calibrating and deploying our tools for clinical decision support in different hospitals, where data formats may vary greatly. Using Intensive Care Units as a case study, I’ll delve into our scalable Python pipeline, which leverages Pandas’ split-apply-combine approach to perform complex feature engineering and automatic quality checks on large time-varying data, e.g. vital signs. I’ll show how we use the resulting flexible and interpretable dataframes to quickly (re)train our models to predict mortality, discharge, and medical complications.
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
Coolblue is a proud Dutch company, with a large internal development department; one that truly takes CI/CD to heart. Empowerment through automation is at the heart of these development teams, and with more than 1000 deployments a day, we think it's working out quite well. In this session, Pat Hermens (a Development Managers) will step you through what enables us to move so quickly, which tools we use, and most importantly, the mindset that is required to enable development teams to deliver at such a rapid pace.
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
Quantum computers can use all of the possible pathways generated by quantum decisions to solve problems that will forever remain intractable to classical compute power. As the mega players vie for quantum supremacy and Rigetti announces its $1M "quantum advantage" prize, we live in exciting times. IBM-Q and Microsoft Q# are two ways you can learn to program quantum computers so that you're ready when the quantum revolution comes. I'll demonstrate some quantum solutions to problems that will forever be out of reach of classical, including organic chemistry and large number factorisation.
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
Chinese food exploded across America in the early 20th century, rapidly adapting to local tastes while also spreading like wildfire. How was it able to spread so fast? The GY6 is a family of scooter engines that has achieved near total ubiquity in Europe. It is reliable and cheap to manufacture, and it's made in factories across China. How are these factories able to remain afloat? Chinese-American food and the GY6 are both riveting studies in product-market fit, and both are the product of a distributed open source-like development model. What lessons can we learn for open source software?
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
The design space has exploded in size within the last few years and Sketch is one of the most important milestones to represent the phenomenon. But behind the scenes of this growing reality there is a remote team that revolutionizes the design space all without leaving the home office. This talk will present how Sketch has grown to become a modern, product designer's tool.
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
Would you fly in a plane designed by a craftsman or would you prefer your aircraft to be designed by engineers? We are learning that science and empiricism works in software development, maybe now is the time to redefine what “Software Engineering” really means. Software isn't bridge-building, it is not car or aircraft development either, but then neither is Chemical Engineering. Engineering is different in different disciplines. Maybe it is time for us to begin thinking about retrieving the term "Software Engineering" maybe it is time to define what our "Engineering" discipline should be.
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
What is the job of a CTO and how does it change as a startup grows in size and scale? As a CTO, where should you spend your focus? As an engineer aspiring to be a CTO, what skills should you pursue? In this inspiring and personal talk, I describe my journey from early Red Hat engineer to CTO at Bloomon. I will share my view on what it means to be a CTO, and ultimately answer the question: Should the CTO be coding?
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
2. UnethicalJavaScript
IMAGE
2
@giorgionatili
On paper, Giorgio Natili is an engineering lead
at Akamai Technologies where he spearheads
the implementation of the new web apps for the
security products line of Akamai
On the job, Giorgio is a strong proponent of
agile development practices whose passion for
usable, maintainable and testable code is only
surpassed by his determination to make things
work.
3. @giorgionatiliUnethical JavaScript3
Agenda
Review the knowledge base that is behind
this presentation
Definitions
An overview of the hidden gems of JavaScript
and V8
Misconceptions
A couple of recommendations to write
effective and maintainable JavaScript
Conclusions
An overview of effective plain JavaScript code
style and techniques
Ethical JavaScript
5. @giorgionatiliUnethical JavaScript5
Topics
General definition and how it
is applicable to the context of
JavaScript
Unethical
U The main principles of
maintainable code, and how to
apply them in JavaScript
Maintainable Code
M Readable code is the main
key to write scalable softwares
Readability
R
6. @giorgionatiliUnethical JavaScript6
Unethical
Lacking moral principles; unwilling to adhere to proper rules of conduct
General Definition
Not conforming to approved standards of social or professional behavior
More in Context
Corrupt, illegal, improper, unfair, unprofessional, unscrupulous, wrong, etc.
Synonyms
7. Which is the first step to make
JavaScript Ethical?
8. @giorgionatiliUnethical JavaScript8
Maintainable Code
Code should not be rigid and not easy to change, even more, changes should be predictable
Not Rigid
Maintainability is inversely proportional to the amount of time it takes a developer to make a change and the risk that change
will break something
Measurable
At the heart of maintainability is carefully constructed code that is easy to read
Long Story Short
9. @giorgionatiliUnethical JavaScript9
Readability Principles
Give your objects and methods names that truly reflect the concept they are modeling, any nontechnical member of the team
should be able to understand the object
Intention-Revealing Interfaces
Calling a function should have a single outcome that is predictable due to the object’s Intention-Revealing Interface
Side-Effect-Free Functions
Avoid to modify the same data structures from different parts of the code, try to minimize race conditions
Immutability
Standalone objects are ideal because they are not coupled to any other code and they can be understood in isolation
Standalone Objects
15. @giorgionatiliUnethical JavaScript15
Topics
JavaScript is a language
designed in few days and with
different goals, hereby there
are design flaws
Design Flaws
D The dynamic nature of the
language creates interesting
side effects when types get
converted
Types Conversion
T A deep dive into one of the
most ambiguous “data type”
ever invented
Truthy & Falsy
W
Operator overloading can be
dangerous, the + operator in
JavaScript is a clear
demonstration
The Plus (+) Operator
P How the value of the this
keyword changes, it is a
reference to the object that
“owns” the executing code
Execution Context
EDifferences, similarities and
gotchas of the two most
important JavaScript’s data
structures
Objects & Arrays
O
16. @giorgionatiliUnethical JavaScript16
Design Flaws
If someone forgets to declare a variable as local before using it, subtle gremlins can pop up in a program
Variables are global unless declared local
Types are coerced unexpectedly by smart and fast run times
Messy Type Handling
Null belongs to a kind of object [Object], mean the object is empty; undefined is a data type, that is not defined
null and undefined
17. @giorgionatiliUnethical JavaScript17
Type Conversion
Type conversion behaves differently according to the type the interpreter is expecting and to the operator in the expression
Automatic Type Conversion
Most arithmetic operators in Javascript convert their arguments to numbers, the exception is the plus operator
Addictive Overload
19. @giorgionatiliUnethical JavaScript19
Truthy & Falsy
Like most computer languages, JavaScript supports Boolean data types
Boolean Data Types
In addition, everything in JavaScript has an inherent Boolean value, generally known as either truthy or falsy
JavaScript Madeness
When a value is truthy or falsy in JavaScript, it doesn’t mean that the value is true or false; it means that the value coerces to
true or false when evaluated in a boolean context
Practically Speaking
25. @giorgionatiliUnethical JavaScript25
The Plus (+) Operator
This operator is used to concatenate strings or sum the numbers
Concatenate and Sum
Considering that only strings and numbers can be added, the runtime apply data type conversions to keep the values around
the operator consistent
Automatic Conversion
26. @giorgionatiliUnethical JavaScript26
Automatic Conversion
let a = "12";
+a; // -> Number(a) -> 12
a + "hello"; // -> String(a) + "hello" -> 12hello
"hello" + a; // -> "hello" + String(b)
a + 6; // -> Number(a) + 6
6 + a; // -> 6 + Number(b)
let b = "wtf";
a + b; // -> ToPrimitive(a) + ToPrimitive(b) -> 12wtf
29. @giorgionatiliUnethical JavaScript29
Where is this?
let obj = {
name: 'giorgio',
sayHi: function(msg) {
console.log(`Hi, I'm ${this.name}`, msg);
}
}, otherObject = { name: 'mario' };
let speak = obj.sayHi;
speak('nice to meet you'); // -> Hi, I'm nice to meet you
speak.call(otherObject, 'nice to meet you'); // -> Hi, I'm mario nice to meet you
speak.apply(obj, ['nice to meet you']); // -> Hi, I'm giorgio nice to meet you
30. @giorgionatiliUnethical JavaScript30
Object and Array
Every object in JavaScript is an associative array whose keys are strings; when an object other than a string is used as a key
in JavaScript, no error occurs
Objects are Associative Arrays
Arrays are a type of object (off course!) for storing multiple values in a single variable where each value gets numeric index
Arrays
Array-like objects look like arrays, they have various numbered elements and a length property; but that’s where the
similarity stops (aka document.forms)
Array-like Objects
36. @giorgionatiliUnethical JavaScript36
Hash Tables
In JavaScript, all non-scalar objects behave as associative arrays; the object can use other objects or strings as keys
Hash Tables in JavaScript
The truth is that hash tables don’t exist in JavaScript because an object by default inherits the methods of the Object data
type
Inheritance Issue
Creating an object with a null prototype is a solution to mitigate the inheritance issue
Mitigation
37. @giorgionatiliUnethical JavaScript37
Objects Based Hash Tables
let hash = {};
hash['name'] = 'giorgio';
hash['surname'] = 'natili';
for(let i in hash) {
console.log(`${i} ${hash[i]}`);
}
console.log(typeof hash); // -> object
console.log(hash.hasOwnProperty('surname')); // -> true
console.log(!!hash['surname']); // -> true
38. @giorgionatiliUnethical JavaScript38
ES6 Hash Tables (Map)
let map = new Map()
map.set('name', 'giorgio');
map.set('surname', 'natili');
map.forEach((item) => { console.log(item); })
console.log(map.get('name')); // -> giorgio
console.log(map.get('surname')); // -> natili
41. Jenniffer W. DoeMinimal X Template41
Map & Set
There is a strong symmetry between Map and
Set, but these data structures should be used
in the right scenario
Same same, but different
Map and Set constructors and methods are
both chainable
Chainable
Both Map and Set are available in a weak
flavor that facilitate garbage collection and
prevent potential memory leaks
Weak Collections
Both Map and Set get designed with the
iteration use case in mind, the entries()
and values() methods represent the
standard way to iterate over collections
Iterable
42. Hash Tables still not exist, but at least
collections are predictable
43. @giorgionatiliUnethical JavaScript43
Arrays
In JavaScript, there isn’t an Array datatype, the result of the comparison typeof [] == 'object' is true
Existence
The numeric keys used to access the elements of an Array are strings
Keys
The length property is not read only, by incrementing or decrementing it, you actually change the data structure
Length
45. @giorgionatiliUnethical JavaScript45
Looping and Iterating
The for-in statement by itself is not a "bad practice", however it can be mis-used, for example, to iterate over arrays or
array-like objects data rather than on their properties
Looping Over Properties
The for-of is the most concise, direct syntax for looping through array and array-like objects elements; it avoids all the
pitfalls of for–in and works with break, continue, and return
Looping Over Data
The map(), filter(), and reduce() methods are a key element to get a cleaner syntax to filter data structures
Mapping and Filtering
46. @giorgionatiliUnethical JavaScript46
The for-in & for-of
let array = ['First', 'Second', 'Third'];
array.name = "Cool!";
for (let p in array) {
console.log(p); // -> 0, 1, 2, name
}
for (let p of array) {
console.log(p); // -> "First", "Second", "Third"
}
49. @giorgionatiliUnethical JavaScript49
Topics
Poor variable names are one
of the root causes of bugs and
regressions
Variables
V A function is an action, poor
function names make your
code difficult to understand
Functions
F Classes try to group traits and
behaviors of a software, poor
naming brings to
unmaintainable models
Classes
C
Modules are another tool to
group reusable code, poor
modules naming seriously
impact code readability
Modules
M
50. @giorgionatiliUnethical JavaScript50
Variables
let data = ['First', 'Second', 'Third'];
let total = data.length;
let that = this;
let e1, e2;
e1 = document.getElementById('value1').innerHTML;
e1 = document.getElementById('value2').innerHTML;
if (e1 > e2) {
// Do something
}
56. @giorgionatiliUnethical JavaScript56
Topics
Review in practice how to
master the execution context
of JavaScript
Execution Context
M
Rethink how use a function,
return always a value and
minimize side effects
Functional
F
Evolve the code base to have
a more manageable software
ESNext API
A Code readability starts with
good names, and a clean
syntax
Clean Syntax
D
A quick overview of a couple
of libraries that can help
improving your JavaScript
Libraries
L
57. @giorgionatiliUnethical JavaScript57
Mastering Execution Context
Never pass the context around by trapping it in variables that get enclosed in a closure, use the Function and Reflect API
instead
Take Advantage of the Context
Be accurate when passing arguments to functions executed within a different context, avoid null values proliferating around
the code base
Arguments
58. @giorgionatiliUnethical JavaScript58
Execution Context
let func = () => {
return arguments.length;
}
func.apply(void 0, null); // -> 0
Reflect.apply(func, void 0, null); // -> TypeError
let obj = document.createElement('object');
typeof obj; // -> "function", can be called
obj.apply; // -> undefined, no Function.prototype
Reflect.apply(obj, thisArg, argList); // -> works properly
59. @giorgionatiliUnethical JavaScript59
Reflect vs Object
The Reflect module is a more natural place for many of the reflection methods previously defined on Object
Reflection
Many operations in Reflect are similar to ES5 operations defined on Object, such as
Reflect.getOwnPropertyDescriptor and Reflect.defineProperty; anyway, the return value is usually more
meaningful
Return Values
60. @giorgionatiliUnethical JavaScript60
Clean Syntax
Never pass the context around by trapping it in variables that get enclosed in a closure, use the Function and Reflect API
instead
Use the Context
Be accurate when passing arguments to functions executed within a different context, avoid null values proliferating around
the code base
Arguments
The map(), filter(), and reduce() methods are a key element to get a cleaner syntax to filter data structures
Mapping and Filtering
61. @giorgionatiliUnethical JavaScript61
Parens, Braces, Linebreaks
// Examples of really cramped syntax
if(condition) doSomething();
while(condition) iterating++;
for(var i=0;i<100;i++) someIterativeFn();
// Use whitespace to promote readability
if ( condition ) {
// statements
}
while ( condition ) {
// statements
}
for ( var i = 0; i < 100; i++ ) {
// statements
}
62. @giorgionatiliUnethical JavaScript62
Assignments, Declarations, Function
// Bad
var foo = "",
bar = "";
var qux;
function foo() {
// some statements here
var bar = "",
qux;
}
// Good
var foo = "";
var bar = "";
var qux;
function foo() {
var bar = "",
qux;
// all statements after the variables declarations.
}
65. @giorgionatiliUnethical JavaScript65
Be Functional
It’s not a buzzword, it’s a true different way to think about data structures and functions
Buzzword
Functions are side effects free and always return a value
Functions
Threat your model as a single source of truth
Immutability
67. @giorgionatiliUnethical JavaScript67
RxJS
RxJS is an implementation of the Observer pattern on steroids, it hides the complexity of loops and observing / subscribing
Hide Complexity
It provides built in operators to debounce, take, throttle, etc. data streams
Built-in Operators
By hiding the complexity, RxJS provide a pragmatic approach to declarative programming
Declarative Approach
68. @giorgionatiliUnethical JavaScript68
Declarative Programming
const task_stream =
// Makes a stream of all the tasks in the database
getTasks().
// Get tasks only for this user
filter((task) => task.user_id == user_id).
// Get tasks that are uncompleted
filter((task) => !task.completed).
// Only get name of task
map((task) => task.name)
76. @giorgionatiliUnethical JavaScript76
Thanks!
Write Ethical JS Modern API Track the Tech Debt Remove Unneeded Code
There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the
other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult..
-C.A.R. Hoare