A presentation delivered to the Ruby on Rails Oceania Melbourne group's October meet up.
Covers how to cleaning organise controller code with object proxying to play well with fragment caching in the views
(QCon London, 2007)
"One of the most important and useful aspects of the Rails framework is it's ability to be extended using plugins. Thanks to the flexibility and power of Ruby, almost any aspect of Rails can be altered to suit the needs of a particular application.
"This presentation will help give developers the boost that's often required to get up to speed developing plugins. We'll cover the hooks that Rails' plugin mechanism makes available, and how to put them to best use in practice with practical examples.
"Once we've covered the groundwork, we'll start to look at more advanced programming techniques for sharing code (and other files) between Rails applications. With a few key programming techniques under our belt, we can use plugins to alter and enhance the Rails framework itself."
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.
Alessandro (cirpo) Cinelli - Dear JavaScript - Codemotion Berlin 2018Codemotion
This is the story of Cirpo's journey with JavaScript. It’s about the things that he wishes he knew since the beginning, his “ah-ah that’s how it works! moments that guided him to coding in a more expressive and declarative way. It's a love letter for this powerful language, a talk that bounces between the technical and the personal perspectives. Cirpo's hope is that everyone in the room, even experienced developers, will learn a bit more about writing more idiomatic and consistent JS code, learning from the mistakes he made and that he still witness every time he sees other devs start using it.
(QCon London, 2007)
"One of the most important and useful aspects of the Rails framework is it's ability to be extended using plugins. Thanks to the flexibility and power of Ruby, almost any aspect of Rails can be altered to suit the needs of a particular application.
"This presentation will help give developers the boost that's often required to get up to speed developing plugins. We'll cover the hooks that Rails' plugin mechanism makes available, and how to put them to best use in practice with practical examples.
"Once we've covered the groundwork, we'll start to look at more advanced programming techniques for sharing code (and other files) between Rails applications. With a few key programming techniques under our belt, we can use plugins to alter and enhance the Rails framework itself."
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.
Alessandro (cirpo) Cinelli - Dear JavaScript - Codemotion Berlin 2018Codemotion
This is the story of Cirpo's journey with JavaScript. It’s about the things that he wishes he knew since the beginning, his “ah-ah that’s how it works! moments that guided him to coding in a more expressive and declarative way. It's a love letter for this powerful language, a talk that bounces between the technical and the personal perspectives. Cirpo's hope is that everyone in the room, even experienced developers, will learn a bit more about writing more idiomatic and consistent JS code, learning from the mistakes he made and that he still witness every time he sees other devs start using it.
Random Ruby Tips - Ruby Meetup 27 Jun 2018Kenneth Teh
My presentation from the Ruby Meetup in Singapore on the 27th of June 2018. I spoke about things that I've learned while reading and writing production code in the context of being a recent graduate of a programming bootcamp (Alpha Camp).
Plusieurs frameworks permettent de mettre en place facilement des microservices. Vert.x ou Sprint Cloud sont souvent cités. Venez découvrir comment Akka permet, grâce au modèle acteur, de construire des systèmes distribués complexes, résilient et scalable.
Nous verrons aussi les grands principes d'architecture à respecter pour tirer pleinement parti de cette technologie prometteuse.
Par Xavier Bucchiotthy et Fabian Guttierez
How can you advance your career as a software developer? How can you assess your team as a team leader / technical lead / manager?
I created a simple model to answer these questions based upon the most common need in modern software applications: the need to add features fast.
All models are wrong, but some are useful. I found this model useful and I hope you will too.
Webscale for the rest of us ruby conf 2013John Barton
My talk on "webscale" for the rest of us (ie. everyone not running a Twitter, Groupon, or Braintree, etc) as delivered at RubyConf AU 2013
Video of the talk is available at http://vimeo.com/61342269
Minimum Viable Architecture For Web AppsJohn Barton
A guest lecture I gave at the RMIT Systems Architecture course.
A bit of a grab bag of things I thought I wish I knew back when I was at uni with regards to architecting web apps.
Describes the overview process and technique of lazy loading javascript from external 3rd parties or your own in-house stuff and provides a simple example with the possible benefits for large javascript applications.
A presentation made for the AngularJS-IL meetup group that took place in jan 2014 at Google TLV Campus.
its a demonstration of how to integrate requireJS with AngularJS to achieve lazy loading and registration of angular components after bootstrap.
this slideshow contain a link for a working demo
Rails Antipatterns | Open Session with Chad Pytel Engine Yard
As developers worldwide have adopted the Ruby on Rails web framework, many have fallen victim to common mistakes that reduce code quality, performance, reliability, stability, scalability, and maintainability. Even experienced developers will find that they can reevaluate the work they've done and make it better.
In this session, Chad Pytel will provide an overview of some of these common mistakes as well as take questions from the audience and provide real-world advice. Bring your issues and get expert advice on how to bring your code in line with today's best practices.
Random Ruby Tips - Ruby Meetup 27 Jun 2018Kenneth Teh
My presentation from the Ruby Meetup in Singapore on the 27th of June 2018. I spoke about things that I've learned while reading and writing production code in the context of being a recent graduate of a programming bootcamp (Alpha Camp).
Plusieurs frameworks permettent de mettre en place facilement des microservices. Vert.x ou Sprint Cloud sont souvent cités. Venez découvrir comment Akka permet, grâce au modèle acteur, de construire des systèmes distribués complexes, résilient et scalable.
Nous verrons aussi les grands principes d'architecture à respecter pour tirer pleinement parti de cette technologie prometteuse.
Par Xavier Bucchiotthy et Fabian Guttierez
How can you advance your career as a software developer? How can you assess your team as a team leader / technical lead / manager?
I created a simple model to answer these questions based upon the most common need in modern software applications: the need to add features fast.
All models are wrong, but some are useful. I found this model useful and I hope you will too.
Webscale for the rest of us ruby conf 2013John Barton
My talk on "webscale" for the rest of us (ie. everyone not running a Twitter, Groupon, or Braintree, etc) as delivered at RubyConf AU 2013
Video of the talk is available at http://vimeo.com/61342269
Minimum Viable Architecture For Web AppsJohn Barton
A guest lecture I gave at the RMIT Systems Architecture course.
A bit of a grab bag of things I thought I wish I knew back when I was at uni with regards to architecting web apps.
Describes the overview process and technique of lazy loading javascript from external 3rd parties or your own in-house stuff and provides a simple example with the possible benefits for large javascript applications.
A presentation made for the AngularJS-IL meetup group that took place in jan 2014 at Google TLV Campus.
its a demonstration of how to integrate requireJS with AngularJS to achieve lazy loading and registration of angular components after bootstrap.
this slideshow contain a link for a working demo
Rails Antipatterns | Open Session with Chad Pytel Engine Yard
As developers worldwide have adopted the Ruby on Rails web framework, many have fallen victim to common mistakes that reduce code quality, performance, reliability, stability, scalability, and maintainability. Even experienced developers will find that they can reevaluate the work they've done and make it better.
In this session, Chad Pytel will provide an overview of some of these common mistakes as well as take questions from the audience and provide real-world advice. Bring your issues and get expert advice on how to bring your code in line with today's best practices.
A year ago, I was a committed VPS and dedicated-machine deployer. I thought the cloud imposed silly restrictions - how dare you take away my shell account! Whaddya mean I can't save files locally? Since then, I've had some interesting experiences. I've worked on big cloud-deployed systems, and certain large traditionally-deployed systems, and I've seen how a lot of the decisions that you're ... encouraged to make when designing an app to run in the cloud. Most interestingly, I've discovered how those same decisions can make for a much better app regardless of where it'll end up. In this talk, I'll share those architectural patterns with you, and show why they work. Hopefully, I'll convince all of you to build cloud castles -- even if you've got your foundation firmly on the ground.
Fluency is "what you can say without having to think about how to say it." "Refactoring" is a language that describes ways to make your code better. I want to inspire you to learn more of that language, so you can make your code better without having to think about it.
I'll walk you through the process of reworking a 50-line controller action that's hard to comprehend, let alone refactor. We'll tease apart fiendishly intertwined structures, embrace duplication, use dirty tricks to our advantage, and uncover responsibilities—and bugs!—that weren't obvious at first glance.
At the Melbourne Ruby users group we held a session to introduce people to Ruby and Rails. This is my presentation which gave the rough overview of Rails.
I presented my ruby on rails web app, alltimetop5.com as part of webjam which was running as a part of the microsoft remix conference @ crown in melbourne
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
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.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
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.
Welcome to the first live UiPath Community Day Dubai! Join us for this unique occasion to meet our local and global UiPath Community and leaders. You will get a full view of the MEA region's automation landscape and the AI Powered automation technology capabilities of UiPath. Also, hosted by our local partners Marc Ellis, you will enjoy a half-day packed with industry insights and automation peers networking.
📕 Curious on our agenda? Wait no more!
10:00 Welcome note - UiPath Community in Dubai
Lovely Sinha, UiPath Community Chapter Leader, UiPath MVPx3, Hyper-automation Consultant, First Abu Dhabi Bank
10:20 A UiPath cross-region MEA overview
Ashraf El Zarka, VP and Managing Director MEA, UiPath
10:35: Customer Success Journey
Deepthi Deepak, Head of Intelligent Automation CoE, First Abu Dhabi Bank
11:15 The UiPath approach to GenAI with our three principles: improve accuracy, supercharge productivity, and automate more
Boris Krumrey, Global VP, Automation Innovation, UiPath
12:15 To discover how Marc Ellis leverages tech-driven solutions in recruitment and managed services.
Brendan Lingam, Director of Sales and Business Development, Marc Ellis
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
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.
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.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
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.
22. class LazyLoader
instance_methods.each { |m| undef_method m unless m =~ /^__/ }
def initialize(&block)
@_initializer = block
end
protected
# pass everything to _target
def method_missing(method, *args, &block)
_target.send method, *args, &block
end
private
# on first call will instantiate itself with _initializer
block
def _target
@_target ||= @_initializer.call
end
end
24. ... or when I realised I
wanted to be a
Smalltalk programmer
25. class PostController < ApplicationController
def show
@post = Post.find(params[:id])
end
end
<% if @post %>
<%= @post.title %>
<% end %>
26. class PostController < ApplicationController
def show
@post = lazy_load { Post.find(params[:id]) }
end
end
<% cache 'slow_post' do %>
<% if @post %>
<%= @post.title %>
<% end %>
<% end %>
29. Ruby’s boolean operators don’t ask
the objects for their truthyness
Word on the street is Smalltalk has that covered*
* I don’t know Smalltalk so hopefully I’m not full of shit right here
30. a = lazy_load { nil }
# this is fine
nil.nil? # => true
a.nil? # => true
# this is broken but.....
# i can fix it by opening up NilClass
a == nil # => true
nil == a # => false
# but what do i do about these?
!!nil # => false
!!a # => true
if a
puts "blah!"
end # => "blah!"