Small lightning talk with some practical advice on how we integrated a Phoenix application in our general application landscape with a rails monolith and some frontend clients.
Slides from my talk at Rails Underground. Video from the guys as SkillsMatter will follow.
License: Creative Commons Attribution-Noncommercial-Share Alike 3.0
If you want to use my presentation in some way prohibited by this license, please get in touch with me and get my permission.
DBAs are known to be grumpy... Let's try to figure out why, so we can be sure to push all their buttons to enjoy a really grumpy DBA at work!
In this talk, we will explain how to twist a database into a horrible thing that can give any DBA nightmares for the rest of his·her life. Fun, isn't it ?
Filip Rakowski "Web Performance in modern JavaScript world"Fwdays
In mobile-first era where network connectivity is not always stable and low-end devices are widely used it’s extremely important to keep your web applications smooth and optimized. During the talk we’ll take a look at the performance challenges we are facing every day and how modern JavaScript technologies such as PWA and AMP can help solving them. We will investigate how to optimize our app loading time, make JavaScript parsing faster, how to deliver reliable waiting experience to our users and much more.
Blending django, Sockjs, Twisted, Celery, FTP and some magic sauce into a bla...frog32
This document discusses the architecture for building an interactive radio station website that streams playlists and tracks in real-time to users. It will use Django for the backend, Twisted for the websocket server, SockJS for browser compatibility, and Celery to process tasks asynchronously like fetching album art. The radio station API exports playlists as XML files that will be uploaded to an FTP server and parsed by Django to populate the websocket stream.
This document compares and contrasts JavaScript and Ruby on Rails (RoR) fullstack frameworks for web development. It discusses the evolution of fullstack frameworks and provides overviews of RoR and common JavaScript fullstack frameworks like MEAN and MERN. It concludes that both JavaScript and RoR frameworks are good options to learn, depending on personal preferences and project needs, and recommends learning how REST works.
Security Asterisk or FreePBX with APIBANFred Posner
This document summarizes APIBAN, a service that provides IP reputation data via API to help secure VoIP systems like Asterisk and FreePBX from abuse. It discusses how APIBAN works, including how it maintains an active list of banned IPs for 7 days using globally deployed honeypots. It also provides examples of how to integrate APIBAN using its API or open source clients to block IPs in IPTABLES. The document encourages attendees to try out APIBAN for free and ask any questions.
KotlinConf - Kotlin and Spring Boot, a match made in heavenNicolas Fränkel
Despite being quite "new", Spring Boot has seen a spectacular start as an amazing kickstarter for Spring-based application.
You can now start your project in a matter of minutes, not days!
On the other hand, you're using magic that read annotations and run the code in obscure way.
Wouldn’t it be great if we could use a language and API that make this magic explicit?
In this talk, I’ll live migrate a Spring Boot "traditional" application to Kotlin DSL.
Come discover how you can now cut through all the mystery and take back control of your code.
This document appears to be slides from a presentation on Rails 5. It provides an overview of some of the new features in Rails 5, including Action Cable for real-time functionality, attributes API for custom data types, ActiveRecord relation changes like #or and #in_batches, and has_secure_token for authentication. It also discusses upgrading applications to Rails 5, including needing Ruby 2.2.2 and the importance of writing tests during the upgrade process.
Slides from my talk at Rails Underground. Video from the guys as SkillsMatter will follow.
License: Creative Commons Attribution-Noncommercial-Share Alike 3.0
If you want to use my presentation in some way prohibited by this license, please get in touch with me and get my permission.
DBAs are known to be grumpy... Let's try to figure out why, so we can be sure to push all their buttons to enjoy a really grumpy DBA at work!
In this talk, we will explain how to twist a database into a horrible thing that can give any DBA nightmares for the rest of his·her life. Fun, isn't it ?
Filip Rakowski "Web Performance in modern JavaScript world"Fwdays
In mobile-first era where network connectivity is not always stable and low-end devices are widely used it’s extremely important to keep your web applications smooth and optimized. During the talk we’ll take a look at the performance challenges we are facing every day and how modern JavaScript technologies such as PWA and AMP can help solving them. We will investigate how to optimize our app loading time, make JavaScript parsing faster, how to deliver reliable waiting experience to our users and much more.
Blending django, Sockjs, Twisted, Celery, FTP and some magic sauce into a bla...frog32
This document discusses the architecture for building an interactive radio station website that streams playlists and tracks in real-time to users. It will use Django for the backend, Twisted for the websocket server, SockJS for browser compatibility, and Celery to process tasks asynchronously like fetching album art. The radio station API exports playlists as XML files that will be uploaded to an FTP server and parsed by Django to populate the websocket stream.
This document compares and contrasts JavaScript and Ruby on Rails (RoR) fullstack frameworks for web development. It discusses the evolution of fullstack frameworks and provides overviews of RoR and common JavaScript fullstack frameworks like MEAN and MERN. It concludes that both JavaScript and RoR frameworks are good options to learn, depending on personal preferences and project needs, and recommends learning how REST works.
Security Asterisk or FreePBX with APIBANFred Posner
This document summarizes APIBAN, a service that provides IP reputation data via API to help secure VoIP systems like Asterisk and FreePBX from abuse. It discusses how APIBAN works, including how it maintains an active list of banned IPs for 7 days using globally deployed honeypots. It also provides examples of how to integrate APIBAN using its API or open source clients to block IPs in IPTABLES. The document encourages attendees to try out APIBAN for free and ask any questions.
KotlinConf - Kotlin and Spring Boot, a match made in heavenNicolas Fränkel
Despite being quite "new", Spring Boot has seen a spectacular start as an amazing kickstarter for Spring-based application.
You can now start your project in a matter of minutes, not days!
On the other hand, you're using magic that read annotations and run the code in obscure way.
Wouldn’t it be great if we could use a language and API that make this magic explicit?
In this talk, I’ll live migrate a Spring Boot "traditional" application to Kotlin DSL.
Come discover how you can now cut through all the mystery and take back control of your code.
This document appears to be slides from a presentation on Rails 5. It provides an overview of some of the new features in Rails 5, including Action Cable for real-time functionality, attributes API for custom data types, ActiveRecord relation changes like #or and #in_batches, and has_secure_token for authentication. It also discusses upgrading applications to Rails 5, including needing Ruby 2.2.2 and the importance of writing tests during the upgrade process.
Elixir & Phoenix – fast, concurrent and explicitTobias Pfeiffer
Elixir and Phoenix are known for their speed, but that’s far from their only benefit. Elixir isn’t just a fast Ruby and Phoenix isn’t just Rails for Elixir. Through pattern matching, immutable data structures and new idioms your programs can not only become faster but more understandable and maintainable. This talk will take a look at what’s great, what you might miss and augment it with production experience and advice.
Elixir & Phoenix – fast, concurrent and explicitTobias Pfeiffer
Elixir and Phoenix are known for their speed, but that’s far from their only benefit. Elixir isn’t just a fast Ruby and Phoenix isn’t just Rails for Elixir. Through pattern matching, immutable data structures and new idioms your programs can not only become faster but more understandable and maintainable. This talk will take a look at what’s great, what you might miss and augment it with production experience and advice.
What did AlphaGo do to beat the strongest human Go player?Tobias Pfeiffer
This year AlphaGo shocked the world by decisively beating the strongest human Go player, Lee Sedol. An accomplishment that wasn't expected for years to come. How did AlphaGo do this? What algorithms did it use? What advances in AI made it possible? This talk will briefly introduce the game of Go, followed by the techniques and algorithms used by AlphaGo to answer these questions.
How fast ist it really? Benchmarking in practiceTobias Pfeiffer
“What’s the fastest way of doing this?” - you might ask yourself during development. Sure, you can guess what’s fastest or how long something will take, but do you know? How long does it take to sort a list of 1 Million elements? Are tail-recursive functions always the fastest?
Benchmarking is here to answer these questions. However, there are many pitfalls around setting up a good benchmark and interpreting the results. This talk will guide you through, introduce best practices and show you some surprising benchmarking results along the way.
Semantic search aims to improve search results by understanding the meaning of words, but language poses challenges due to its dynamic and ambiguous nature. Truevert addresses this by learning word meanings from their usage contexts using machine learning models trained on different subject areas, allowing it to deliver personalized results tailored to individual interests. Unlike ontologies, Truevert does not restrict thinking to predefined categories but learns meanings dynamically from language use.
Northern Valley Soccer Club parent meeting 2015NVSC
The document discusses plans to launch a new premier soccer program for the NVSC club. It will have elite teams at U10, U12, and U14 that will train together 3 times per week. The goal is to improve player development and feed into the high school program. One experienced coach, Andy Meaney, will oversee the 3 premier teams and work with the club trainers. Frequently asked questions are addressed, such as team selection process, impacts on other club teams, and dual rostering policies.
PromptWorks Talk Tuesdays: Ray Zane 1/17/17 "Elixir Is Cool"PromptWorks
The document shows examples of pattern matching, case expressions, macros, and queries in Elixir. It demonstrates matching on different data types like lists, maps, tuples, and structs. It also shows examples of macros, case expressions, queries, and defining functions with pattern matching.
The document discusses CPU caches and cache coherence. It covers direct mapping and N-way mapping of CPU caches. It also discusses cache replacement policies like LRU and techniques like write-back. It introduces the MESI protocol for maintaining cache coherence across CPUs and cache line states like dirty valid. It provides examples of Java programs to demonstrate CPU cache misses and false sharing and ways to address it like using the @Contended annotation.
This document introduces Phoenix, an Elixir web framework. It compares Phoenix to Ruby on Rails, noting they are both MVC frameworks but Phoenix emphasizes less magic. The core idea of Phoenix is that a web application is a function that takes a URL as input and returns HTML. It outlines how routes, controllers, models, views, and channels work in Phoenix, using Ecto as the ORM. Pattern matching and OTP behaviors like GenServer are also highlighted.
This document provides an overview of test driven development (TDD), including what TDD is, an example unit test, the TDD process, benefits of TDD such as more maintainable code and fewer bugs, and resources for learning and practicing TDD such as books and training courses. TDD involves writing automated tests before implementation code to help ensure code quality and catch errors early. The process involves writing a test, seeing it fail, then writing just enough code to make it pass and refactoring as needed.
This document discusses test-driven development (TDD) and behavior-driven development (BDD). It covers the core principles and rules of TDD, including writing failing tests first and then code to pass the tests. The benefits of TDD are described, such as improved design, documentation, and catching errors earlier. Challenges with TDD are acknowledged, but it is argued that with experience writing clean code and following design best practices, TDD can help developers write higher quality code. Tools for writing tests like Hamcrest and AssertJ are also mentioned.
This document introduces Elixir, an open-source, functional, concurrent, and dynamic language that runs on the Erlang virtual machine. It discusses key features of Elixir like its Ruby-like syntax, support for distributed and fault-tolerant systems, actor model, macros, protocols, and tools. It also provides examples of functional programming, pattern matching, actors, GenServers, supervisors, macros, protocols, and sigils in Elixir.
Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014Greg Vaughn
The document discusses OTP (Open Telecom Platform) and Elixir. It provides an overview of OTP including that it is mature, battle tested for 16-18 years, and uses actors, object orientation, and design patterns. It then discusses behaviors and callback modules in OTP, the importance of initialization steps and parameter/return value contracts, using supervisors and strategies, and handling failures in Elixir applications. Code examples are provided for GenServers and supervisors.
What did AlphaGo do to beat the strongest human Go player?Tobias Pfeiffer
This year AlphaGo shocked the world by decisively beating the strongest human Go player, Lee Sedol. An accomplishment that wasn't expected for years to come. How did AlphaGo do this? What algorithms did it use? What advances in AI made it possible? This talk will answer these questions.
This document summarizes Erlang processes and scheduling in Erlang. It discusses the process control block, stack and heap, message passing, the scheduler, workload balancing across schedulers, and garbage collection. The scheduler prioritizes ports, maximum, high and normal/low priority queues. It will consume all reductions for a process or pause it waiting for a message. The garbage collector uses copying collection for process heaps and reference counting for shared binaries.
Bottleneck in Elixir Application - Alexey Osipenko Elixir Club
This document appears to be a presentation in a foreign language (not English) about performance bottlenecks in Elixir applications. It introduces the presenter, Alexey, and mentions that while Elixir has advantages over JavaScript for asynchronous programming, high loads can still cause performance problems. It concludes by thanking the audience and providing Alexey's contact information.
This document provides an overview of the Elixir programming language. It discusses Elixir's functional, concurrent, and fault-tolerant features. It also summarizes basic Elixir tools like IEx and Mix, concepts like pattern matching and immutability, and language constructs including types, operators, functions, lists, maps, strings, and control flow. The document aims to introduce fundamental Elixir basics.
(please download and use libreoffice, the slides look slightly messed up here)
An introduction to the Shoes GUI toolkit for Ruby. These slides are from a talk I gave at the Ruby User Group Berlin (rug-b) on the 5th of July 2012.
So what is so special about Shoes? It is simple and inspired by the web, go check it out! =)
Shoes on!
This document discusses using Rails as a backend for iOS applications. It covers using Rails to provide an API that iOS apps can access via HTTP requests. The key points are:
1) Rails apps can provide RESTful JSON APIs for iOS apps to retrieve and manipulate data.
2) Authentication can be handled using cookies like a regular web app.
3) Models and ORM libraries exist to help manage data on iOS similar to ActiveRecord.
4) Push notifications can be scheduled from Rails using services like Apple Push Notification to send messages to iOS devices.
This document discusses Flex Builder and integrating Flex with Ruby on Rails using REST. It provides instructions for setting up a Rails project with authentication and generating a scaffold for messages. It also describes creating a Flex client to call the Rails REST API and display the messages. The document recommends using frameworks like RestfulX to simplify the REST integration between Rails and Flex applications.
Elixir & Phoenix – fast, concurrent and explicitTobias Pfeiffer
Elixir and Phoenix are known for their speed, but that’s far from their only benefit. Elixir isn’t just a fast Ruby and Phoenix isn’t just Rails for Elixir. Through pattern matching, immutable data structures and new idioms your programs can not only become faster but more understandable and maintainable. This talk will take a look at what’s great, what you might miss and augment it with production experience and advice.
Elixir & Phoenix – fast, concurrent and explicitTobias Pfeiffer
Elixir and Phoenix are known for their speed, but that’s far from their only benefit. Elixir isn’t just a fast Ruby and Phoenix isn’t just Rails for Elixir. Through pattern matching, immutable data structures and new idioms your programs can not only become faster but more understandable and maintainable. This talk will take a look at what’s great, what you might miss and augment it with production experience and advice.
What did AlphaGo do to beat the strongest human Go player?Tobias Pfeiffer
This year AlphaGo shocked the world by decisively beating the strongest human Go player, Lee Sedol. An accomplishment that wasn't expected for years to come. How did AlphaGo do this? What algorithms did it use? What advances in AI made it possible? This talk will briefly introduce the game of Go, followed by the techniques and algorithms used by AlphaGo to answer these questions.
How fast ist it really? Benchmarking in practiceTobias Pfeiffer
“What’s the fastest way of doing this?” - you might ask yourself during development. Sure, you can guess what’s fastest or how long something will take, but do you know? How long does it take to sort a list of 1 Million elements? Are tail-recursive functions always the fastest?
Benchmarking is here to answer these questions. However, there are many pitfalls around setting up a good benchmark and interpreting the results. This talk will guide you through, introduce best practices and show you some surprising benchmarking results along the way.
Semantic search aims to improve search results by understanding the meaning of words, but language poses challenges due to its dynamic and ambiguous nature. Truevert addresses this by learning word meanings from their usage contexts using machine learning models trained on different subject areas, allowing it to deliver personalized results tailored to individual interests. Unlike ontologies, Truevert does not restrict thinking to predefined categories but learns meanings dynamically from language use.
Northern Valley Soccer Club parent meeting 2015NVSC
The document discusses plans to launch a new premier soccer program for the NVSC club. It will have elite teams at U10, U12, and U14 that will train together 3 times per week. The goal is to improve player development and feed into the high school program. One experienced coach, Andy Meaney, will oversee the 3 premier teams and work with the club trainers. Frequently asked questions are addressed, such as team selection process, impacts on other club teams, and dual rostering policies.
PromptWorks Talk Tuesdays: Ray Zane 1/17/17 "Elixir Is Cool"PromptWorks
The document shows examples of pattern matching, case expressions, macros, and queries in Elixir. It demonstrates matching on different data types like lists, maps, tuples, and structs. It also shows examples of macros, case expressions, queries, and defining functions with pattern matching.
The document discusses CPU caches and cache coherence. It covers direct mapping and N-way mapping of CPU caches. It also discusses cache replacement policies like LRU and techniques like write-back. It introduces the MESI protocol for maintaining cache coherence across CPUs and cache line states like dirty valid. It provides examples of Java programs to demonstrate CPU cache misses and false sharing and ways to address it like using the @Contended annotation.
This document introduces Phoenix, an Elixir web framework. It compares Phoenix to Ruby on Rails, noting they are both MVC frameworks but Phoenix emphasizes less magic. The core idea of Phoenix is that a web application is a function that takes a URL as input and returns HTML. It outlines how routes, controllers, models, views, and channels work in Phoenix, using Ecto as the ORM. Pattern matching and OTP behaviors like GenServer are also highlighted.
This document provides an overview of test driven development (TDD), including what TDD is, an example unit test, the TDD process, benefits of TDD such as more maintainable code and fewer bugs, and resources for learning and practicing TDD such as books and training courses. TDD involves writing automated tests before implementation code to help ensure code quality and catch errors early. The process involves writing a test, seeing it fail, then writing just enough code to make it pass and refactoring as needed.
This document discusses test-driven development (TDD) and behavior-driven development (BDD). It covers the core principles and rules of TDD, including writing failing tests first and then code to pass the tests. The benefits of TDD are described, such as improved design, documentation, and catching errors earlier. Challenges with TDD are acknowledged, but it is argued that with experience writing clean code and following design best practices, TDD can help developers write higher quality code. Tools for writing tests like Hamcrest and AssertJ are also mentioned.
This document introduces Elixir, an open-source, functional, concurrent, and dynamic language that runs on the Erlang virtual machine. It discusses key features of Elixir like its Ruby-like syntax, support for distributed and fault-tolerant systems, actor model, macros, protocols, and tools. It also provides examples of functional programming, pattern matching, actors, GenServers, supervisors, macros, protocols, and sigils in Elixir.
Elixir Elevated: The Ups and Downs of OTP at ElixirConf2014Greg Vaughn
The document discusses OTP (Open Telecom Platform) and Elixir. It provides an overview of OTP including that it is mature, battle tested for 16-18 years, and uses actors, object orientation, and design patterns. It then discusses behaviors and callback modules in OTP, the importance of initialization steps and parameter/return value contracts, using supervisors and strategies, and handling failures in Elixir applications. Code examples are provided for GenServers and supervisors.
What did AlphaGo do to beat the strongest human Go player?Tobias Pfeiffer
This year AlphaGo shocked the world by decisively beating the strongest human Go player, Lee Sedol. An accomplishment that wasn't expected for years to come. How did AlphaGo do this? What algorithms did it use? What advances in AI made it possible? This talk will answer these questions.
This document summarizes Erlang processes and scheduling in Erlang. It discusses the process control block, stack and heap, message passing, the scheduler, workload balancing across schedulers, and garbage collection. The scheduler prioritizes ports, maximum, high and normal/low priority queues. It will consume all reductions for a process or pause it waiting for a message. The garbage collector uses copying collection for process heaps and reference counting for shared binaries.
Bottleneck in Elixir Application - Alexey Osipenko Elixir Club
This document appears to be a presentation in a foreign language (not English) about performance bottlenecks in Elixir applications. It introduces the presenter, Alexey, and mentions that while Elixir has advantages over JavaScript for asynchronous programming, high loads can still cause performance problems. It concludes by thanking the audience and providing Alexey's contact information.
This document provides an overview of the Elixir programming language. It discusses Elixir's functional, concurrent, and fault-tolerant features. It also summarizes basic Elixir tools like IEx and Mix, concepts like pattern matching and immutability, and language constructs including types, operators, functions, lists, maps, strings, and control flow. The document aims to introduce fundamental Elixir basics.
(please download and use libreoffice, the slides look slightly messed up here)
An introduction to the Shoes GUI toolkit for Ruby. These slides are from a talk I gave at the Ruby User Group Berlin (rug-b) on the 5th of July 2012.
So what is so special about Shoes? It is simple and inspired by the web, go check it out! =)
Shoes on!
This document discusses using Rails as a backend for iOS applications. It covers using Rails to provide an API that iOS apps can access via HTTP requests. The key points are:
1) Rails apps can provide RESTful JSON APIs for iOS apps to retrieve and manipulate data.
2) Authentication can be handled using cookies like a regular web app.
3) Models and ORM libraries exist to help manage data on iOS similar to ActiveRecord.
4) Push notifications can be scheduled from Rails using services like Apple Push Notification to send messages to iOS devices.
This document discusses Flex Builder and integrating Flex with Ruby on Rails using REST. It provides instructions for setting up a Rails project with authentication and generating a scaffold for messages. It also describes creating a Flex client to call the Rails REST API and display the messages. The document recommends using frameworks like RestfulX to simplify the REST integration between Rails and Flex applications.
The document discusses the "Browser Wars" between Internet Explorer and Netscape in the 1990s which was won by Internet Explorer. It then discusses how standards have struck back in the "Browser Wars 2" with a movement towards more open and standardized web development. The document advocates for developing sites according to open web standards to ensure compatibility across different browsers and devices rather than targeting a single browser through proprietary technologies. It provides examples of how some government and bank sites in countries like South Korea and India broke in non-Internet Explorer browsers due to their reliance on proprietary technologies of IE.
Living in a Multi-lingual World: Internationalization in Web and Desktop Appl...adunne
Internationalizing Web 2.0 applications presents new challenges compared to traditional websites. Web 2.0 apps use multiple technologies like JavaScript, Flash, and desktop apps in addition to traditional websites. This multiplies the internationalization problem. The document recommends consolidating i18n by keeping all data in one place and automatically extracting strings from different app parts. It also discusses challenges like translating user-generated content and graphical text, and provides examples of how one company internationalized an app using a common i18n database format.
IronRuby is a Ruby implementation that compiles Ruby code to .NET Intermediate Language. It allows Ruby code to run on the .NET Common Language Runtime and interoperate with .NET libraries. IronRuby was started by Microsoft but is now an open source project. It enables Ruby developers to build applications that integrate with existing .NET systems and libraries. However, IronRuby is still missing support for some Ruby standards like OpenSSL and has a lower test passing rate than MRI Ruby.
Living in a multiligual world: Internationalization for Web 2.0 ApplicationsLars Trieloff
The document discusses internationalization challenges for Web 2.0 applications and proposes solutions. It notes that Web 2.0 applications use various technologies like JavaScript, Flash, and desktop applications that each have their own internationalization frameworks. It recommends consolidating internationalization by keeping all translation data in a common format and database, and allowing applications to access translations from this single source. The document also addresses challenges of translating user-generated content and graphical text, and suggests structuring content and generating graphics dynamically on the server to improve translatability.
Eric Lubow gave a presentation on how SimpleReach fixed problems with their MongoDB implementation. They implemented a sharded replica set architecture across availability zones for high availability and speed. They improved data accuracy by separating databases and enforcing consistent access patterns. SimpleReach also implemented a controlled data flow using NSQ to batch and route data between MongoDB, Cassandra, Vertica, and other tools for analytics and real-time usage. Their architecture provides redundancy, minimal downtime for changes, and monitors performance using tools like Nagios, Statsd and Cloudwatch.
WebRTC has come a long way in 5 years. It now has strong browser support, open source signaling servers, modules to simplify implementation, and production-ready platforms. While early adoption was challenging due to complexity, the WebRTC community has addressed issues through documentation, plugins, and internal improvements. WebRTC is ready for developers to build real-time communication into applications and help humanity.
WebRTC has come a long way in 5 years. It now has strong browser support, open source signaling servers, modules to simplify implementation, and production-ready platforms. While early adoption was challenging due to complexity, the WebRTC community has addressed issues through documentation, code samples, and plugins. WebRTC is now ready for developers to build real-time communication into web and mobile apps.
The quest for the perfect cross-platform solution has been like the quest for the Holy Grail. It’s been going on a long time, there are a myriad of perceived benefits, and every time someone claims to have found it, it’s never the right one. Many people ask, “Should I go with a cross-platform solution, or a native solution?” but the reality is the quest is bringing us closer to a solution where there isn’t a meaningful difference.
React Native wasn’t the first to show a solution could be both cross-platform and native, but it has certainly convinced a lot of people. As many of those early converts are discovering the limitations, they are beginning to fall back into either-or thinking. Maybe they just have the wrong assumptions.
Kotlin Multiplatform makes some new assumptions and, although it wasn’t the first to do so, is gaining in popularity very quickly. Is Kotlin Multiplatform the holy grail of cross-platform? Probably not. But it does bring cross-platform and native closer than ever before.
----
Presented at https://newyork2019.theleaddeveloper.com/
Video: https://www.youtube.com/watch?v=sA_JIqqj9js
Thank you https://touchlab.co/ for supporting me and the future of mobile.
MTC Spring 2013 - crossplatform woes - robert virkus - 2013-03-13Enough Software
Cross-platform mobile app development faces many challenges including differences in programming languages, features, monetization options, and user interface paradigms across platforms. Native development for each platform offers the best integration and reach but requires the most effort. Cross-platform tools provide easier multi-platform development but with limitations in native features and user experience consistency. Choosing the right strategy depends on an app's goals, target platforms and audiences, and a developer's technical skills and resources. While cross-platform tools improve, fully native apps still have advantages for high-quality experiences.
How and why we got Prometheus working with Docker SwarmLuke Marsden
The document discusses different approaches to integrating Prometheus monitoring with Docker Swarm. Version 1 used a "prom-wrapper" container but had issues with services and networks being dynamically added. Version 2 used Prometheus in federated mode with "prom-proxy" containers, but was too complex. Version 3 dynamically adds Prometheus to networks using the prom-wrapper, allowing monitoring of services in Swarm. The implementation is available on GitHub and allows using Weave Cloud's hosted Prometheus for Docker Swarm.
There is something about JavaScript - Choose Forum 2014jbandi
JavaScript has evolved from being seen as a joke to becoming a serious programming language used to build large web applications. It started as a scripting language for web browsers but is now used widely on both the client-side and server-side. The JavaScript ecosystem is very active with many libraries, frameworks, and tools available to help developers build and test applications.
This document provides an introduction to web applications and their components. It discusses what a web application is, how it is made up of front-end and back-end parts, and how Ruby on Rails is a framework that helps develop web applications. It then demonstrates Ruby programming concepts through interactive examples in IRB, covering basic operations, variables, methods, classes and objects. The document aims to give a high-level overview of web applications and introduce Ruby programming.
Local development environment for micro services with dockerLINE Corporation
- The document discusses using Docker for local development of microservices. It outlines some of the problems with traditional development workflows, such as long setup times and dependencies between services.
- It proposes using Docker to package each microservice into a container image for local development. This allows developers to quickly setup a consistent environment with all dependencies and have full working environments on their computers.
- Docker Compose is recommended to define and run multi-container applications locally. Individual services can be built from local code or pulled from a registry. This allows each developer to have their own isolated environments to develop and test microservices.
The document discusses whether JavaScript can be elegant. It notes that new JavaScript frameworks aim to simplify complex browser-side programming. It also includes quotes from different people discussing how enterprises view JavaScript developers and whether JavaScript needs to be replaced.
This document discusses the future of HTML5 and the web. It covers how HTML5 enables revolutionary technologies like graphics, fast JavaScript, background processing, and capabilities beyond desktop browsers. HTML5 provides features previously requiring plugins like geolocation, drag and drop. HTML5 is now available on mobile devices and provides high fidelity rendering without plugins or bridges. Debugging tools like Firebug, WebKit Inspector, and JavaScript profiling help develop HTML5 applications. The web platform is poised to break through sandbox limitations and provide an extensive yet open development environment across devices.
What's up with becoming a Staff Engineer? What does it mean? Is it just for people who want to keep coding? How do you become a Staff Engineer and what does the work entail? What if I told you, that being a Staff engineer actually required a lot of communication and collaboration skills?
In this talk, let's answer all those questions - as it's still quite fuzzy what a Staff engineer actually is.
What’s it like to work on Open Source projects? They’re all the same aren’t they? No, they’re not - the longer I worked on Open Source the more I realize how different the experience is for each one of them. Walk with me through some stories that happened to me in Open Source and let’s see what we can take away.
Metaphors are everywhere: Ideas to Improve Software Development Tobias Pfeiffer
Let’s embark on a journey together - a journey in which we’ll weave together the realms of basketball, fiction writing, game development and trading card games to explore how these seemingly unrelated domains surprisingly intersect with the world of software development, offering fresh perspectives and insights.
Discover how concepts, strategies, and principles from these diverse domains can enhance your software development skills and creativity. Let’s celebrate the power of interdisciplinary thinking, revealing how diverse interests can invigorate your approach to software development.
The document discusses various topics related to open source software including welcoming and helping users, releasing software early and often, treating open source software as a hobby rather than work, using micro libraries, benchmarking code performance, learning as you go, co-maintaining projects, reporting and fixing issues, being polite, discussing ideas for improvements, considering how software may be used, making open source more diverse and sustainable, and enjoying participating in open source projects.
Elixir & Phoenix – Fast, Concurrent and ExplicitTobias Pfeiffer
Key takeaways
What are Elixir and Phoenix? What makes them standout among programming languages and frameworks?
Why would I want to use Functional Programming, what are the benefits and why does it work so well for the web?
How capable is Erlang (Whatsapp example) performance and reliability wise and why would I consider it for a project?
How does explicitness help in system design?
Elixir and Phoenix are known for their speed, but that’s far from their only benefit. Elixir isn’t just a fast Ruby and Phoenix isn’t just Rails for Elixir. Through pattern matching, immutable data structures and new idioms your programs can not only become faster but more understandable and maintainable. This talk will take a look at what’s great, what you might miss and augment it with production experience and advice.
In the development world most people are striving for technical excellence: better code, faster run times, more convenient interfaces, better databases… But is that really what helps us create better software?
In the end software development is done by groups of people creating products together. To do that communication and collaboration are essential. You can be the best programmer ever, but if you can’t efficiently work with others what good does it do you?
This talk will introduce you to relevant, easy to grasp concepts of collaboration and communication as well as give you food for thought.
In the development world most people are striving for technical excellence: better code, faster run times, more convenient interfaces, better databases… But is that really what helps us create better software?
In the end software development is done by groups of people creating products together. To do that communication and collaboration are essential. You can be the best programmer ever, but if you can’t efficiently work with others what good does it do you?
This talk will introduce you to relevant, easy to grasp concepts of collaboration and communication as well as give you food for thought.
Do You Need That Validation? Let Me Call You Back About ItTobias Pfeiffer
Rails apps start nice and cute. Fast forward a year and business logic and view logic are entangled in our validations and callbacks - getting in our way at every turn. Wasn’t this supposed to be easy?
Let’s explore different approaches to improve the situation and untangle the web.
Elixir is great, so clearly we'll all rewrite our applications in Elixir. Mostly, you can't and shouldn't do that. This presentation will show you another path. You’ll see how at Liefery, we started with small steps instead of rewriting everything. This allowed us to reap the benefits earlier and get comfortable before getting deeper into it. We’ll examine in detail the tactics we used to create two Elixir apps for new requirements, and how we integrated them with our existing Rails code base.
Join us on our tale of adopting Elixir and Phoenix and see what we learned, what we loved, and what bumps we hit along the road
Stop Guessing and Start Measuring - Benchmarking in Practice (Lambdadays)Tobias Pfeiffer
“What’s the fastest way of doing this?” - you might ask yourself during development. Sure, you can guess - but how do you know? How long would that function take with a million elements? Is that tail-recursive function always faster?
Benchmarking is here to give you the answers, but there are many pitfalls in setting up a good benchmark and analyzing the results. This talk will guide you through, introduce best practices, and surprise you with some results along the way. You didn’t think that the order of arguments could influence its performance...or did you?
Many Rubyists branch out and take a look at other languages. What are similarities between those languages and ruby? What are differences? How does Ruby influence these languages?
In the development world most people are striving for technical excellence: better code, faster run times, more convenient interfaces, better databases, faster deployments… But is that really what makes us better at developing software?
In the end software development is done by groups of people creating products together. To do that communication and collaboration between humans is essential - you can be the best programmer ever, if you can’t efficiently work with others what good does it do you?
This talk will give you a primer and food for further thought.
Stop Guessing and Start Measuring - Benchmarking Practice (Poly Version)Tobias Pfeiffer
This is the Polyconf version of the talk, including a little MJIT vs. GraalVM rebuttal, JavaScript, SQL, Ruby and Elixir to be truly Poly.
“What’s the fastest way of doing this?” - you might ask yourself during development. Sure, you can guess, your intuition might be correct - but how do you know? Benchmarking is here to give you the answers, but there are many pitfalls in setting up a good benchmark and analyzing the results. This talk will guide you through, introduce best practices, and surprise you with some unexpected benchmarking results. You didn’t think that the order of arguments could influence its performance...or did you?
How fast is it really? Benchmarking in Practice (Ruby Version)Tobias Pfeiffer
The document describes various benchmarks performed to compare the performance of different Ruby implementations and algorithms for sorting arrays. The benchmarks show that:
1) CRuby generally outperforms JRuby in sorting performance, with CRuby sorting arrays 2-3 times faster than JRuby in the benchmarks.
2) The ".sort.reverse" approach is the fastest method for reversing a sorted array, performing up to 7 times faster than using a sorting block.
3) Using "sort_by" with a transformation is generally faster than a sorting block but slower than ".sort.reverse".
What did AlphaGo do to beat the strongest human Go player? (Strange Group Ver...Tobias Pfeiffer
This year AlphaGo shocked the world by decisively beating the strongest human Go player, Lee Sedol. An accomplishment that wasn't expected for years to come. How did AlphaGo do this? What algorithms did it use? What advances in AI made it possible? This talk will answer these questions.
Ruby to Elixir - what's great and what you might missTobias Pfeiffer
The document discusses some of the key features of Elixir compared to Ruby including pattern matching, explicit preloading of associations, immutable data, and metaprogramming. It notes some things Ruby developers may miss like dirtiness, magic metaprogramming, and a smaller ecosystem. Overall it presents Elixir as having many advantages for functional programming while acknowledging some aspects of Ruby are not directly replicated.
Elixir & Phoenix - fast, concurrent and explicitTobias Pfeiffer
Elixir and Phoenix are all the hype lately - what's great about them? Is there more to them than "just" fast, concurrent and reliable?
This talk will give a short intro into both Elixir and Phoenix, highlighting strengths, differences from Ruby/Rails and weaknesses.
Go is a board game that is more than 2,500 years old (yes, this is not about the programming language!) and it is fascinating from multiple viewpoints. For instance, go bots still can’t beat professional players, unlike in chess.
This talk will show you what is so special about Go that computers still can’t beat humans. We will take a look at the most popular underlying algorithm and show you how the Monte Carlo method, basically random simulation, plays a vital role in conquering Go's complexity and creating the strong Go bots of today.
What do software engineers do all day long? Write code? Of course! But what about reading code, about understanding what’s happening? Aren’t we doing that even more? I believe we do. Because of that code should be as readable as possible! But what does that even mean? How do we achieve readable code? This talk will introduce you to coding principles and techniques that will help you write more readable code, be more productive and have more fun!
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxSitimaJohn
Ocean Lotus cyber threat actors represent a sophisticated, persistent, and politically motivated group that poses a significant risk to organizations and individuals in the Southeast Asian region. Their continuous evolution and adaptability underscore the need for robust cybersecurity measures and international cooperation to identify and mitigate the threats posed by such advanced persistent threat groups.
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
“An Outlook of the Ongoing and Future Relationship between Blockchain Technologies and Process-aware Information Systems.” Invited talk at the joint workshop on Blockchain for Information Systems (BC4IS) and Blockchain for Trusted Data Sharing (B4TDS), co-located with with the 36th International Conference on Advanced Information Systems Engineering (CAiSE), 3 June 2024, Limassol, Cyprus.
Things to Consider When Choosing a Website Developer for your Website | FODUUFODUU
Choosing the right website developer is crucial for your business. This article covers essential factors to consider, including experience, portfolio, technical skills, communication, pricing, reputation & reviews, cost and budget considerations and post-launch support. Make an informed decision to ensure your website meets your business goals.
Programming Foundation Models with DSPy - Meetup SlidesZilliz
Prompting language models is hard, while programming language models is easy. In this talk, I will discuss the state-of-the-art framework DSPy for programming foundation models with its powerful optimizers and runtime constraint system.
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdfTechgropse Pvt.Ltd.
In this blog post, we'll delve into the intersection of AI and app development in Saudi Arabia, focusing on the food delivery sector. We'll explore how AI is revolutionizing the way Saudi consumers order food, how restaurants manage their operations, and how delivery partners navigate the bustling streets of cities like Riyadh, Jeddah, and Dammam. Through real-world case studies, we'll showcase how leading Saudi food delivery apps are leveraging AI to redefine convenience, personalization, and efficiency.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
OpenID AuthZEN Interop Read Out - AuthorizationDavid Brossard
During Identiverse 2024 and EIC 2024, members of the OpenID AuthZEN WG got together and demoed their authorization endpoints conforming to the AuthZEN API