The document discusses unit testing and functional programming concepts. It provides examples of testing AMQP (Advanced Message Queuing Protocol) code in a functional style by separating pure and impure code. Functions are defined to construct arguments for the queue_declare method in a testable way. This allows testing each part in isolation and combining them to test full functionality.
We've been told many times that we should write unit tests for our code. We have read the theory and we have applied automatic testing to our projects, sometimes successfully but often times not so.
Why it seems to be so hard to test our code? However we look at it, automatic testing doesn't work like a "plug & play" peripheral. It just doesn't seem to fit with our project. A dependency is missing here; we have a hard to mock object there; and so on.
What is _that_ thing we might be doing wrong but we fail to notice?
In this talk we will argue that the problem lays in our code, in its structure, in the way we pass data around and even how we write for loops!
This won't be your everyday "code quality" tech talk, since we are going to attack the problem of code quality from different points of view and paradigms like Functional Programming and the Unix philosophy of simplicity and reuse.
A realtime infrastructure for Android apps: Firebase may be what you need..an...Alessandro Martellucci
Growing up as Cloud Database, today supported by Google, it presents itself as a powerful platform for mobile and web applications.
These slides give you an overview and an introduction to the Firebase NoSQL database, how to integrate it into your Android app and how to put it into a realtime context!
This presentation is consists of an introduction to MVP pattern on Android platform. We will see how can we use MVP pattern to write unit testable code while developing an Android app. We also used a demo android app to perform TDD which you can find over here.
https://github.com/jainsahab/TDD_Geeknight_MVP
Explanation of Android MVP Architecture Pattern. This slide deck is used to explain the principles behind the pattern. It has a companion github repository which helps demonstrate the pattern.
https://github.com/jpotts18/android-mvp
We've been told many times that we should write unit tests for our code. We have read the theory and we have applied automatic testing to our projects, sometimes successfully but often times not so.
Why it seems to be so hard to test our code? However we look at it, automatic testing doesn't work like a "plug & play" peripheral. It just doesn't seem to fit with our project. A dependency is missing here; we have a hard to mock object there; and so on.
What is _that_ thing we might be doing wrong but we fail to notice?
In this talk we will argue that the problem lays in our code, in its structure, in the way we pass data around and even how we write for loops!
This won't be your everyday "code quality" tech talk, since we are going to attack the problem of code quality from different points of view and paradigms like Functional Programming and the Unix philosophy of simplicity and reuse.
A realtime infrastructure for Android apps: Firebase may be what you need..an...Alessandro Martellucci
Growing up as Cloud Database, today supported by Google, it presents itself as a powerful platform for mobile and web applications.
These slides give you an overview and an introduction to the Firebase NoSQL database, how to integrate it into your Android app and how to put it into a realtime context!
This presentation is consists of an introduction to MVP pattern on Android platform. We will see how can we use MVP pattern to write unit testable code while developing an Android app. We also used a demo android app to perform TDD which you can find over here.
https://github.com/jainsahab/TDD_Geeknight_MVP
Explanation of Android MVP Architecture Pattern. This slide deck is used to explain the principles behind the pattern. It has a companion github repository which helps demonstrate the pattern.
https://github.com/jpotts18/android-mvp
What do you mean, backwards compatibility?Trisha Gee
The Java driver for MongoDB has been around almost as long as the NoSQL database itself. It was designed without some of the modern Java features we now take for granted, and the API might be easier with features like lambdas.
The existing Java driver is extensively used, which leads to a tricky question: how do you create a new API that uses modern development patterns whilst retaining backwards compatibility? Your users are fundamental to the success of your business, you do not want to alienate them, break their systems or make it hard for them to migrate to the New World Order.
In this presentation Trisha will share some of the pain experienced and solutions tried while creating a new Java driver for MongoDB.
DevOps as a buzzword has had a lot of attention recently. This presentation is my take on the origins and essence of the matter, as well as an introduction to how Chef, the open source configuration management software, can help to solve one of the problems an Operations team faces as it moves towards the DevOps goals.
This talk was prepared for and presented to the NYC Web Design Meetup. It covers how to do identify core app functionality, an approach acceptance testing, and some ways the UI can be built more intelligently.
Disposable Testing Environments: There's Nothing Like Production Except Produ...Atlassian
Application environment and content are both critical to practical and useful test environments. Running your Confluence or JIRA instance in a VM allows for easy creation of sandboxes, or copies, of your production environment. Done correctly, having a snapshot copy of your environment opens up many possibilities - such as testing upgrades, testing plugins, or running 'what-if' scenarios. Your servlet container, attachments directory, database, and plugin configurations are all important to your instance and must be considered when creating a copy of production. Eyefinity will also share a real-life report of the ease, and unexpected consequences, of exporting users and content from one instance of Confluence and importing them in to another instance of Confluence when VM copying may not be available or desired. Expect to hear: - Real-life examples - Gotchas - Steps anyone can follow - Considerations important to most Confluence instances.
Show an Open Source Project Some Love and Start Using Travis-CIJoel Byler
Lots of us are looking for an open source project to help with, but sometimes it is hard to find a way to contribute. I'd like to recommend that folks start to consider using Travis-CI and adding Travis-CI scripts to projects that don't already have them. Lets look at what it takes to build a project using Travis and the benefits that a project can take advantage of if they use the service.
This was originally presented at CodeMash v2.0.1.4 in Sandusky, Ohio on January 10, 2014
Scaling applications with RabbitMQ at SunshinePHPAlvaro Videla
Do you need to process thousands of images in the background for your web app?
Do you need to share data across multiple applications, probably written in different languages and sitting at different servers?
Your real time data feed is becoming slow because you are polling the database constantly for new data updates?
Do you need to scale information processing during peek times?
What about deploying new features with zero downtime? If any of these problems sound familiar then you probably need to use messaging in your application.
In this talk I will introduce RabbitMQ, a messaging and queue server that can help us tackle those problems. We will learn the benefits of a Queue Server and see how to integrate messaging into our applications. With this talk we hope that the term 'decoupling' gets a new, broader, meaning.
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.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
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
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.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
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.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
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.
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.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
8. No Soy
• Gurú del testeo de aplicaciones
Saturday, June 16, 12
9. No Soy
• Guru del testeo de aplicaciones
• Abogado del TDD
Saturday, June 16, 12
10. Unit Testing
The goal of unit testing is to isolate
each part of the program and show
that the individual parts are
correct.
http://en.wikipedia.org/wiki/Unit_testing
Saturday, June 16, 12
11. Unit Tests
Por definición, sólo prueban las unidades
por sí solas. Por lo tanto, no descubrirán
errores de integración, problemas de
rendimiento y otros problemas que afectan a
todo el sistema en su conjunto.
http://es.wikipedia.org/wiki/Prueba_unitaria
Saturday, June 16, 12
16. "I get paid for code that works, not
for tests, so my philosophy is to test
as little as possible to reach a given
level of confidence"
– Kent Beck
http://stackoverflow.com/questions/153234/how-deep-are-your-unit-tests/153565#153565
Saturday, June 16, 12
28. Funciones Puras
• Devuelven datos en bases a los parámetros
que aceptan
Saturday, June 16, 12
29. Funciones Puras
• Devuelven datos en bases a los parámetros
que aceptan
• No modifican estado externo
Saturday, June 16, 12
30. Funciones Puras
• Devuelven datos en bases a los parámetros
que aceptan
• No modifican estado externo
• No producen efectos secundarios
Saturday, June 16, 12
31. ¿Qué tiene de malo este código?
if($player->getScore() > 0) {
$player->setSwizzle(7);
} else {
$player->setSwizzle(
$player->getSwizzle() + 1
);
}
http://dl.dropbox.com/u/7810909/docs/what-does-fp-mean/what-does-fp-mean/chunk-html/ar01s05.html
Saturday, June 16, 12
32. Version que no mezcla modificaciones de estado
$newScore = $player->getScore() > 0
? 7
: $player->getSwizzle() + 1;
$player->setSwizzle($newScore);
http://dl.dropbox.com/u/7810909/docs/what-does-fp-mean/what-does-fp-mean/chunk-html/ar01s05.html
Saturday, June 16, 12
33. El cálculo del Score se
puede extraer a una
función
Saturday, June 16, 12
34. El cálculo del Score se
puede testear
Saturday, June 16, 12
41. “Many UNIX programs do
quite trivial tasks in
isolation, but, combined
with other programs,
become general and useful
tools.”
http://math.albany.edu/math/pers/hammond/unixphil.html
Saturday, June 16, 12
42. Number of open connections per IP
netstat -ntu | awk '{print $5}' |
cut -d: -f1 | sort | uniq -c | sort -n
http://www.commandlinefu.com/commands/view/1767/number-of-open-connections-per-ip.
Saturday, June 16, 12
43. ¿Por qué no programar
código de esa forma?
Saturday, June 16, 12
46. “Writing unit tests is
reinventing
functional
programming
in non-functional
languages”
http://noss.github.com/2009/02/25/writing-unit-tests-is-reinventing-functional-programming-in-non-functional-languages.html
Saturday, June 16, 12
47. ¿Qué nos enseña la
programación
funcional?
Saturday, June 16, 12
64. ¿Cómo aplico esto al
mundo real?
• Ver la charla de Ricard “Servicios en
Symfony2”
Saturday, June 16, 12
65. ¿Cómo aplico esto al
mundo real?
• Ver la charla de Ricard “Servicios en
Symfony2”
• Muchos servicios especializados y
desacoplados
Saturday, June 16, 12
66. ¿Cómo aplico esto al
mundo real?
• Ver la charla de Ricard “Servicios en
Symfony2”
• Muchos servicios especializados y
desacoplados
• Clases que cumplen sólo una función
Saturday, June 16, 12
67. “Inside every well-
written large
program
is a well-written
small program”
http://www.linfo.org/q_programming.html
Saturday, June 16, 12