In this workshop, Naresh Jain explains what are the core techniques one should master to effectively practice evolutionary design while solving real-world problems. To summarize:
1. Eliminate Noise - Distill down the crux of the problem
2. Divide and Conquer to prioritize and focus on the most important part
3. Add constraints to future simplify the problem
4. Come up with a simple design to incrementally build your solution
5. Refactor: Pause, look for a much simpler alternative
6. Be ready to throw away your solution & start again
Numerical Methods with Computer ProgrammingUtsav Patel
This report includes computer programming of some of the basic numerical methods. The programming language used is C++. Outputs of the programs are attached in the form of a screenshot. It can be helpful in the assignments on programming.
Accelerating Local Search with PostgreSQL (KNN-Search)Jonathan Katz
KNN-GiST indexes were added in PostgreSQL 9.1 and greatly accelerate some common queries in the geospatial and textual search realms. This presentation will demonstrate the power of KNN-GiST indexes on geospatial and text searching queries, but also their present limitations through some of my experimentations. I will also discuss some of the theory behind KNN (k-nearest neighbor) as well as some of the applications this feature can be applied too.
To see a version of the talk given at PostgresOpen 2011, please visit http://www.youtube.com/watch?v=N-MD08QqGEM
Entity System Architecture with Unity - Unite Europe 2015Simon Schmid
Entity System Architecture with Unity - Unite Europe 2015
Entitas - open source Entity Component System for C# and Unity: https://github.com/sschmid/Entitas-CSharp
What Have The Properties Ever Done For UsMiklós Martin
This talk focuses on property-based testing in Scala, using the ScalaCheck library. It shares a story of a major refactoring, which attempts to briefly answer questions like 'How does it work?', 'How is it different?', 'Why it pays off?', 'What are some drawbacks?' or even 'What happens when there's a polymorphic effect type in play?'.
Weather of the Century: Design and PerformanceMongoDB
This talk walks you through how you can use MongoDB to store and analyze worldwide weather data from the entire 20th century in a graphical application.
Refactoring can either completely disrupt your project or make you go faster. This presentation will help you to avoid some pitfalls.
It also demonstrates refactorings that you could apply straight away to make your code better.
Numerical Methods with Computer ProgrammingUtsav Patel
This report includes computer programming of some of the basic numerical methods. The programming language used is C++. Outputs of the programs are attached in the form of a screenshot. It can be helpful in the assignments on programming.
Accelerating Local Search with PostgreSQL (KNN-Search)Jonathan Katz
KNN-GiST indexes were added in PostgreSQL 9.1 and greatly accelerate some common queries in the geospatial and textual search realms. This presentation will demonstrate the power of KNN-GiST indexes on geospatial and text searching queries, but also their present limitations through some of my experimentations. I will also discuss some of the theory behind KNN (k-nearest neighbor) as well as some of the applications this feature can be applied too.
To see a version of the talk given at PostgresOpen 2011, please visit http://www.youtube.com/watch?v=N-MD08QqGEM
Entity System Architecture with Unity - Unite Europe 2015Simon Schmid
Entity System Architecture with Unity - Unite Europe 2015
Entitas - open source Entity Component System for C# and Unity: https://github.com/sschmid/Entitas-CSharp
What Have The Properties Ever Done For UsMiklós Martin
This talk focuses on property-based testing in Scala, using the ScalaCheck library. It shares a story of a major refactoring, which attempts to briefly answer questions like 'How does it work?', 'How is it different?', 'Why it pays off?', 'What are some drawbacks?' or even 'What happens when there's a polymorphic effect type in play?'.
Weather of the Century: Design and PerformanceMongoDB
This talk walks you through how you can use MongoDB to store and analyze worldwide weather data from the entire 20th century in a graphical application.
Refactoring can either completely disrupt your project or make you go faster. This presentation will help you to avoid some pitfalls.
It also demonstrates refactorings that you could apply straight away to make your code better.
PVS-Studio is a tool for detecting bugs and security weaknesses in the source code of programs, written in C, C++, C# and Java. It works under 64-bit systems in Windows, Linux and macOS environments, and can analyze source code intended for 32-bit, 64-bit and embedded ARM platforms.
How Data Flow analysis works in a static code analyzerAndrey Karpov
Data flow analysis is a technology for source code analysis, widely used in various development tools: compilers, linters, IDE. We'll talk about it exemplifying with design of a static analyzer. The talk covers classification and various kinds of data flow analysis, neighbouring technologies supporting each other, obstacles arising during development, surprises from C++ language when one tries to analyze the code. In this talk, some errors, detected in real projects using this technology, are shown in detail.
From Trill to Quill: Pushing the Envelope of Functionality and ScaleBadrish Chandramouli
In this talk, I overview Trill, describe two projects that expand Trill's functionality, and describe Quill, a new multi-node offline analytics system I have been working on at MSR.
Implement a function in c++ which takes in a vector of integers and .pdffeelingspaldi
Implement a function in c++ which takes in a vector of integers and also takes in another integer
d which we will refer to as depth. The function will recursively call quicksort while
decrementing depth until the depth has reached 0. Thenpoithe algorithm will switch over to
heapsort to finish the sorting of the vector. For this problem also comment in the code what the
value of d needs to with respect to the size of the vector n for the algorithm to have worst case
run time of O(n log(n)).
#include
#include
using namespace std;
void quicksort(vector & items)
{
if(items.size() > 1)
{
vector small;
vector same;
vector large;
int pivot = items[0];
for(int i = 1; i < items.size(); i++)
{
if(items[i] < pivot)
small.push_back(items[i]);
else if(items[i] > pivot)
large.push_back(items[i]);
else
same.push_back(items[i]);
}
quicksort(small);
quicksort(large);
std::move(begin(small),end(small),begin(items)); //moving the piece of memory that is
small to the items memory
std::move(begin(same),end(same),begin(items) + small.size());
std::move(begin(large),end(large),end(items) - large.size());
}
else
{
//Do nothing
}
}
int leftChild(int i)
{
return 2*i + 1;
}
void percDown(vector & v, int i, int n)
{
int child;
//int leftChild;
int temp;
for(temp = v[i]; leftChild(i) < n; i = child)
{
child = leftChild(i);
if(child != n-1 && v[child] < v[child + 1]) //compare children
{
child++; //We want our right child
}
if(temp < v[child])
{
v[i] = v[child]; //Swapping
v[child] = temp;
}
else
{
break;
}
}
}
void heapsort(vector & v)
{
for(int i = v.size() /2 -1; i >= 0; --i)
{
percDown(v, i, v.size()); //Build Heap
}
for(int j = v.size() - 1; j > 0; --j)
{
swap(v[0],v[j]);
percDown(v, 0, j); //Remove max
}
}
int main()
{
int a[] = {1,10,3,2,5,8};
vector v(a,a + sizeof(a)/sizeof(int));
for(int i = 0; i < v.size(); i++)
{
cout << v[i] << \" \";
}
cout << endl;
cout << \"Sorted \" << endl;
quicksort(v);
for(int i = 0; i < v.size(); i++)
{
cout << v[i] << \" \";
}
cout << endl;
heapsort(v);
for(int i = 0; i < v.size(); i++)
{
cout << v[i] << endl;
}
mixSort(v)
for(int i = 0 i < v.size(); i++)
{
cout < }
int x;
cin >> x;
}
Solution
#include
#include
using namespace std;
void quicksort(vector & items)
{
if(items.size() > 1)
{
vector small;
vector same;
vector large;
int pivot = items[0];
for(int i = 1; i < items.size(); i++)
{
if(items[i] < pivot)
small.push_back(items[i]);
else if(items[i] > pivot)
large.push_back(items[i]);
else
same.push_back(items[i]);
}
quicksort(small);
quicksort(large);
std::move(begin(small),end(small),begin(items)); //moving the piece of memory that is
small to the items memory
std::move(begin(same),end(same),begin(items) + small.size());
std::move(begin(large),end(large),end(items) - large.size());
}
else
{
//Do nothing
}
}
int leftChild(int i)
{
return 2*i + 1;
}
//comment this method for your solution.....
void percDown(vector & v, int i, int n)
{
int child;
//int leftChild;
int temp;
for(temp = v[i]; leftChild(i) < n; i = child)
{
child = leftC.
C++ code is fraught with perils and pitfalls. That's why a thorough and meticulous code review is very important. The purpose of this talk is to (hopefully) improve your ability to take on such a task. We'll take a look at some error patterns easily overlooked. In all honesty, many people just don't know about them. Meet a dangerous emplace_back, an unexpected integer overflow, a skipped memset, perils of noexcept functions, and so on.
Yuri is a C++ developer at PVS-Studio. Currently working on the core features of the C++ static analyser made by the company.
YouTube: https://youtu.be/f1_Iwh33f9I
This is a motivational talk about practicing programming skills as a professional programmer. I gave the talk many times in many conferences and companies.
You can find the video of me giving the talk on this here (in Chinese): http://v.youku.com/v_show/id_XMzI3OTI1MDQw.html
I did the talk in English as well, but there's no video online.
Planet-HTML5-Game-Engine is HTML5 Game Engine for Mobile Devices. This slide presents a few V8 Javascript engine specific techniques to get better performance for this game engine on mobile chrome browser.
Yes, you read it correctly, we are jumping from 5.7 to 8.0 (that sounds familiar, doesn't it?). The new version doesn't only change the number but also changes how you write SQL. Recursive queries will allow you to generate series and work with hierarchical data. New JSON functions and performance improvements were also added to 8.0 to help you work on non-relational data. Expect to see what is new and improved in this talk to power up your application even more.
Technology: A Means to an End with Thibault ImbertFITC
Technology: A Means to an End
with Thibault Imbert
Technology is fascinating, but should this be what drives us? What are the things you can do to differentiate yourself today? With all that noise, what are things you should be looking at?
In this talk, Thibault Imbert will look at the different technologies available today to build amazing experiences and what’s coming tomorrow. He will focus on the importance of learning, crafting and getting out of your comfort zone and most importantly, to never be religious about a technology.
Presented at FITC Toronto 2014 on April 27-29, 2014
More info at www.FITC.ca
Similar to Problem Solving Techniques For Evolutionary Design (20)
Agile India 2019 Conference Welcome NoteNaresh Jain
We are super excited to announce the 15th edition of Agile India 2019, Asia's Largest and Premier International conference on Leading Edge Software Development Methods. Agile India is hosted by Agile Alliance and organized by Agile Software Community of India, a non-profit registered society founded in 2004 with a vision to evangelize new, better ways of building products & services that delight the users.
Over the last 15 years, we've organized 57 conferences across 13 cities in India. We've hosted 1,000+ speakers from 38 countries, who have delivered 1,200+ sessions to 10,000+ attendees. We continue to be a non-profit, volunteer-run community conference.
Agenda
* Agile Coach Camp - March 17th
* Pre-Conference Workshops – March 18th
* Conference Days
** Agile Mindset Day - March 19th
** Business Agility Day - March 20th
** Design Innovation Day - March 21st
** Continuous Delivery and DevOps Day - March 22nd
* Post-Conference Workshops – March 23rd and 24th
More details: https://2019.agileindia.org
A resilient organizational can not only adapt and respond to incremental change but more importantly, can respond to sudden disruptions and also, be the source of disruption in order to prosper and flourish.
The traditional risk management approach focuses too much on defensive (stopping bad things happen) thinking versus a more progressive (making good things happen) thinking. Being defensive requires consistency across the organization and this is where methodologies like Plan-Do-Check-Act (PDCA) come in. However, PDCA approach does not bake in the required progressive thinking and flexibility required for a fast company organization which operates in a volatile environment.
Professor David Denyer of Cranfield University has recently published a very interesting research report on Organizational Resilience. He has identified the following four quadrants across to help us think about organizational resilience:
* preventative control (defensive consistency)
* mindful action (defensive flexibility)
* performance optimization (progressive consistency)
* adaptive innovation (progressive flexibility)
In this talk, I'll share my personal experience of using this thinking to help an organization to scale their product to Millions of users. I've dive deep into how we structured our organization for Structural Agility and how we set-up a very lightweight governance model using OKRs to drive the necessary flexible and progressive thinking.
More details: https://confengine.com/agile-india-2019/proposal/8216/organisational-resilience-design-your-organisation-to-flourish-not-merely-survive
Conference Link: https://2019.agileindia.org
Looking to move to Continuous Delivery? Worried about the quality of your the code? Helping your developers understand clean-code practices and getting the right testing strategy in place can take a while. What should you do to control the quality of the incoming code till then? This talk shares our experience of using PRRiskAdvisor to gradually educate and influence developers to write better code and also help the code reviewer to be more effective at their reviews.
Every time a developer raises a pull-request, PRRiskAdvisor analyzes the files that were changed and publishes a report on the pull request itself with the overall risk associated with this pull request and also risk associated with each file. It also runs static code analysis using SonarQube and publishes the configured violations as comments on the pull request. This way the reviewer just has to look at the pull request to get a decent idea of what it means to review this pull request. If there are too many violations, then PRRiskAdvisor can also automatically reject the pull request.
By doing this, we saw our developers starting paying more attention to clean code practices and hence the overall quality of the incoming code improved, while we worked on putting the right engineering practices and testing strategy in place.
More details: https://confengine.com/last-conference-canberra-2018/proposal/7294/improving-the-quality-of-incoming-code
Conference Link: https://2019.agileindia.org
Here is a quick summary of Agile India 2018 Conference, Asia's Largest and Premier Conference on Business Agility, Design Innovation, Digital Transformation, Continuous Delivery, DevOps, Agile, Scrum, eXtreme Programming, Lean, Kanban, Enterprise Agile, Lean Startup, Research, and Patterns. Get to meet pioneers and expert practitioners from around the world on Agile Mindset, Scaling Agility, Lean Product Discovery, Continuous Delivery and DevOps. 4 - 11 March 2018 at Taj West End, Bangalore. More details: https://2018.agileindia.org
We are very excited to announce the 14th edition of Agile India Conference (https://2018.agileindia.org/) with brand new themes and a fabulous lineup of speakers. Agile India is Asia's Largest & Premier International conference on Leading Edge Software Development Methods.
Meet:
* Alan Cooper - The Father of Visual Basic, Creator of Goal-directed Design methodology and inventor of the Persona concept
* Steve Denning - Author of several books on Management, Leadership, Innovation and Organizational Storytelling
* Linda Rising - Author of four books, most recently the Fearless Change
* Gregor Hohpe - Author of Enterprise Integration Patterns. Technical Director at Google Cloud Computing
* James Stewart - Co-founder of the Government Digital Service and x-Deputy CTO of the UK Government
* Bjarte Bogsnes - Author of Implementing Beyond Budgeting, Chairman of Beyond Budgeting Roundtable and Senior Advisor Performance Framework at Statoil
* Dr. Denis Bauer - Team Leader and Research Scientist in Cloud Computing in Transformational Bioinformatics at CSIRO
* Jeff Patton - Author of User Story Mapping and the person responsible for bringing user-centered design thinking to Agile world
* Peter Jacobs - Chief Information Officer and board member of ING Bank Netherlands
* Nils Kappeyne - VP & CIO for Integrated Gas & New Energies at Shell
* And 70 more thought leaders from 16 countries - https://2018.agileindia.org/speakers/
The program spreads across 8 days (March 4-11th 2018, Bengaluru) with two pre-conference plus two post-conference workshop days and four days of conferences in between:
* March 4-5th: Pre-Conference Workshops from our international experts
* March 6th: Business Agility Day - Hosted by Agile Alliance
* March 7th: Design Innovation Day - Hosted by Cooper
* March 8th: Digital Transformation Day
* March 9th: DevOps and Continuous Delivery Day - Hosted by Red Hat
* March 10-11th: Post-Conference Workshops from our international experts
Schedule
========
Check out conference schedule for the lineup of workshops and speakers. https://confengine.com/agile-india-2018/schedule
Tickets
=======
Conference registration is now open and Smart Price offers are going away soon. Register now for best deals!! https://confengine.com/agile-india-2018/register
Check out the exciting offers for bulk registrations - https://2018.agileindia.org/agile-india-2018-bulk-booking-offers/.
Sponsors
========
We thank Agile Alliance, Cooper, RedHat, Scrum.org, Shell, AddTeq/Atlassian, Scaled Agile, ICAgile and Scrum Alliance for sponsoring the conference. If your organization wants to support this non-profit, volunteer-run conference, please check out sponsorship options https://confengine.com/agile-india-2018/sponsor#guide
Agile India 2018 Conference is Asia's Largest and Premier Conference on Business Agility, Design Innovation, Digital Transformation, Continuous Delivery, DevOps, Agile, Scrum, eXtreme Programming, Lean, Kanban, Enterprise Agile, Lean Startup, Research, and Patterns. Get to meet pioneers and expert practitioners from around the world on Agile Mindset, Scaling Agility, Lean Product Discovery, Continuous Delivery and DevOps. 4 - 11 March 2018 at Taj West End, Bangalore. More details: https://2018.agileindia.org
Agile India 2018 Conference is Asia's Largest and Premier Conference on Business Agility, Design Innovation, Digital Transformation, Continuous Delivery, DevOps, Agile, Scrum, eXtreme Programming, Lean, Kanban, Enterprise Agile, Lean Startup, Research, and Patterns. Get to meet pioneers and expert practitioners from around the world on Agile Mindset, Scaling Agility, Lean Product Discovery, Continuous Delivery and DevOps. 4 - 11 March 2018 at Taj West End, Bangalore. More details: https://2018.agileindia.org
Pilgrim's Progress to the Promised Land by Robert VirdingNaresh Jain
When migrating to Elixir/OTP from other languages and systems a number of issues will always crop up. The trick is to make sure that these issues don't become problems. This talk will look at some of the more common ones and what to do about them to make sure they don't become problems.
More details: https://confengine.com/functional-conf-2017/proposal/5138/pilgrims-progress-to-the-promised-land
Conference: https://functionalconf.com
Concurrent languages are Functional by Francesco CesariniNaresh Jain
The functional paradigm has been influencing mainstream languages for decades, making developers more efficient whilst helping reduce software maintenance costs. As we are faced with a programming model that needs to scale on multi-core architectures, concurrency becomes critical. In these concurrency models, the functional programming paradigm will become even more evident. To quote Simon Peyton Jones, future concurrent languages will be functional; they might not be called functional, but the features will be.
Using his 20 years of programming and teaching Erlang/OTP, Francesco will walk through the functional programming features that make implementations of the actor model viable in the Erlang ecosystem. These are features we might take for granted or do not think about, but have laid the foundation of multi-core and distributed programming, influencing programming languages, old and new.
More details: https://confengine.com/functional-conf-2017/proposal/4774/concurrent-languages-are-functional
Erlang from behing the trenches by Francesco CesariniNaresh Jain
Erlang is a programming language designed for the Internet Age, although it pre-dates the Web. It is a language designed for multi-core computers, although it pre-dates them too. It is a “beacon language”, to quote Haskell guru Simon Peyton-Jones, in that it more clearly than any other language demonstrates the benefits of concurrency-oriented programming. In this talk, I will introduce Erlang from behind the trenches. By introducing the major language constructs, describe their benefits and discuss the problems Erlang is ideal to solve. I will be doing so from a personal prospective, with anecdotes from my time as an intern at the Ericsson computer science lab at a time when the language was being heavily influenced and later when working on the OTP R1 release.
More details: https://confengine.com/functional-conf-2017/proposal/4787/an-introduction-to-erlang-from-behind-the-trenches
Anatomy of an eCommerce Search Engine by Mayur DatarNaresh Jain
In this talk, the chief Data scientist of Flipkart will uncover the various challenges in running an e-commerce search platform like scale, recency, update rates, business shaping etc. He will also explain the overall system architecture of the search platform and get into the details of some of the sub-systems, including the query understanding and rewriting sub-system.
Setting up Continuous Delivery Culture for a Large Scale Mobile AppNaresh Jain
Hike is a mobile-first, messaging platform that is used by 100 million users to exchange 40 billion messages/month. Hike app is available on Android, iOS and Windows phone. On the back-end, we’ve 100+ macro-services in Java, Python, Ruby, Go and Elixir. While setting up a Continuous Delivery pipeline, we ran into a series of technical challenges. However it was more important to address the organisational/behavioural challenges to ensure a sustainable culture shift in the company.
In this talk, I cover how we went about:
* Setup a trunk-based development model
* Decentralised our build & test environments using Docker and Jenkins
* Segregated and containerised our macro-services
* Refactored the mobile apps to be more container friendly
* Setup a mobile device farm using STF
* Improved the quality of code-reviews using PRBuilder & PRRiskAdvisor
* Created different kinds of automated tests to align with our CI Pipeline and get rapid feedback
* Finally how we used C3 to visualise the health of our code-base
Towards FutureOps: Stable, Repeatable environments from Dev to ProdNaresh Jain
Modern human history is a story of humans inventing new tools to do more with less. "Doing more" has allowed most of us to no longer worry about producing our own food, collecting water, planning long journeys, etc. Instead, we’re able to specialize, buy what we need for less, and to some extent explore ourselves a lot more.
We're far from done, and of course humanity is far from perfect. In this talk, Mitchell Hashimoto discusses the role that automations and computers play in building a brighter future.
More details: https://confengine.com/agile-india-2017/proposal/3618/towards-futureops-stable-repeatable-environments-from-dev-to-prod
Value Driven Development by Dave Thomas Naresh Jain
Agile, OOP... are like good hygiene in the kitchen, it results in meals with consistent quality and predictable prep and service times. It doesn't result in great meals nor substantially impact the ROI! Lean Thinking clearly shows that the only way to make a significant impact is to improve the value chain by improving flow. If everyone is following best practices no one has competitive advantage. Major improvements in the value chain depend on continued disruptive innovations. Innovations leverage people and their ideas. We use case studies to illustrate the different business and technical innovations and their impact. We conclude with a discussion of how to build and leverage an innovation culture versus a sprint death march when dealing with high value time to market projects.
More details: https://confengine.com/agile-india-2017/proposal/3608/value-driven-development-maximum-impact-maximum-speed
No Silver Bullets in Functional Programming by Brian McKennaNaresh Jain
We are constantly presented with trade-offs when writing software. What are the trade-offs when applying functional programming? What costs arise? When is it not worth doing? When should pragmatism kick in and when should we start using side-effects?
This talk will give you some tools to be able to answer the above questions for both functional programming and types. The tools have been refined over many professional years of both doing and not doing purely functional programming.
More details: https://confengine.com/functional-conf-2016/proposal/3137/no-silver-bullets-in-functional-programming
For over 35 years, functional programming has been a hot research topic. However in the last 5 years, driven by the need to build massively concurrent systems and to handle big-data, we have experienced a rapid adoption of functional programming concepts by diverse companies, ranging from tech start-ups to financial institutes.
These days, functional programming is at the heart of every, new generation programming technologies. Companies are employing functional programming to enable more effective, robust, and flexible software development. This has given birth to a very vibrant community of functional programmers, who are constantly exploring ways to bring functional programming concepts to the world of enterprise software development.
Functional Conf is designed to bring the growing community of functional programmers together under one roof. At Functional Conf:
participants can understand the fundamentals concepts behind functional programming,
they can learn how others are using functional programming to solve real world problems,
practitioners can meet peers and exchange their experience,
experts can share their expertise on practical usage and gotchas in functional programming concepts.
More details: http://functionalconf.com/ or https://confengine.com/functional-conf-2016
Agile India 2017 Conference is Asia's Largest and Premier Conference on Agile, Scrum, eXtreme Programming, Lean, Kanban, DevOps, Enterprise Agile, Lean Startup, Continuous Delivery, Research and Patterns. Get to meet pioneers and expert practitioners from around the world on Agile Mindset, Scaling Agility, Lean Product Discovery, Continuous Delivery and DevOps. 6 - 12 March 2017 at ITC Gardenia, Bangalore. More details: http://2017.agileindia.org
This talk will explain the secret of the success of the Eclipse Platform team. The Eclipse Way is an agile software development process that we started right at the beginning when we started to develop Eclipse back in 1999. It was and is used by the Eclipse Platform team and got continuously improved over time. During the session you will hear about all our practices, like milestones, early and iterative planning, continuous integration and the endgame. I will also reveal some of the history behind the Eclipse top-level project.
More details: https://confengine.com/eclipse-summit-2016/proposal/2386/the-eclipse-way
Unleashing the Power of Automated Refactoring with JDTNaresh Jain
Refactoring is a series of small steps, each of which changes the program’s internal structure without changing its external behaviour. Refactoring, as a tool, to automate behaviour-preserving transformations to source code are not only very popular in agile development environments, but have been widely established as a cornerstone of the daily software development process, regardless of the methodology being used. Most major development environments such as Eclipse offer a set of powerful refactoring to substantially increase development productivity.
In this live demo, I’ll show
* the real value of refactoring,
* how we practice it safely,
* when and why we refactor,
* the power of refactoring tools and
* when we avoid refactoring.
I’ll be using two real-world examples of refactoring and sharing what I’ve learned about this important practice of the last 15 years.
Getting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo KimNaresh Jain
Do you want to harness the deeper power of games – the power to drive long-term engagement? Are you ready to look beyond the silver bullets & Skinner boxes – and learn to think like a game designer? In this talk, you’ll learn the foundations of Game Thinking - brought to life with front-line stories from eBay, Ultima Online, The Sims, Rock Band, Covet Fashion, Happify, Lumosity and Slack. You’ll come away with a smarter approach to innovative product design - and practical, actionable design tips you can use right away to turbo-charge your path towards product/market fit.
More details: https://confengine.com/agile-india-2016/proposal/1961/getting2alpha-turbo-charge-your-product-with-game-thinking
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Dr.Costas Sachpazis
Terzaghi's soil bearing capacity theory, developed by Karl Terzaghi, is a fundamental principle in geotechnical engineering used to determine the bearing capacity of shallow foundations. This theory provides a method to calculate the ultimate bearing capacity of soil, which is the maximum load per unit area that the soil can support without undergoing shear failure. The Calculation HTML Code included.
Explore the innovative world of trenchless pipe repair with our comprehensive guide, "The Benefits and Techniques of Trenchless Pipe Repair." This document delves into the modern methods of repairing underground pipes without the need for extensive excavation, highlighting the numerous advantages and the latest techniques used in the industry.
Learn about the cost savings, reduced environmental impact, and minimal disruption associated with trenchless technology. Discover detailed explanations of popular techniques such as pipe bursting, cured-in-place pipe (CIPP) lining, and directional drilling. Understand how these methods can be applied to various types of infrastructure, from residential plumbing to large-scale municipal systems.
Ideal for homeowners, contractors, engineers, and anyone interested in modern plumbing solutions, this guide provides valuable insights into why trenchless pipe repair is becoming the preferred choice for pipe rehabilitation. Stay informed about the latest advancements and best practices in the field.
Welcome to WIPAC Monthly the magazine brought to you by the LinkedIn Group Water Industry Process Automation & Control.
In this month's edition, along with this month's industry news to celebrate the 13 years since the group was created we have articles including
A case study of the used of Advanced Process Control at the Wastewater Treatment works at Lleida in Spain
A look back on an article on smart wastewater networks in order to see how the industry has measured up in the interim around the adoption of Digital Transformation in the Water Industry.
Immunizing Image Classifiers Against Localized Adversary Attacksgerogepatton
This paper addresses the vulnerability of deep learning models, particularly convolutional neural networks
(CNN)s, to adversarial attacks and presents a proactive training technique designed to counter them. We
introduce a novel volumization algorithm, which transforms 2D images into 3D volumetric representations.
When combined with 3D convolution and deep curriculum learning optimization (CLO), itsignificantly improves
the immunity of models against localized universal attacks by up to 40%. We evaluate our proposed approach
using contemporary CNN architectures and the modified Canadian Institute for Advanced Research (CIFAR-10
and CIFAR-100) and ImageNet Large Scale Visual Recognition Challenge (ILSVRC12) datasets, showcasing
accuracy improvements over previous techniques. The results indicate that the combination of the volumetric
input and curriculum learning holds significant promise for mitigating adversarial attacks without necessitating
adversary training.
Overview of the fundamental roles in Hydropower generation and the components involved in wider Electrical Engineering.
This paper presents the design and construction of hydroelectric dams from the hydrologist’s survey of the valley before construction, all aspects and involved disciplines, fluid dynamics, structural engineering, generation and mains frequency regulation to the very transmission of power through the network in the United Kingdom.
Author: Robbie Edward Sayers
Collaborators and co editors: Charlie Sims and Connor Healey.
(C) 2024 Robbie E. Sayers
Problem Solving Techniques For Evolutionary Design
1. Problem Solving Techniques
For Evolutionary Design
Distilling Down Any Problem to Its Crux
Naresh Jain
naresh@xnsio.com
@nashjain
https://xnsio.com
2. Rounding Up to the
Closest 5 Cents
• In my billing application
• Given the price of an item comes up to $20.23
after tax
• I want to round up 23 cents to the closest 5
cents denomination .i.e. 25 cents
• So I can charge $20.25
• https://github.com/nashjain/rounding_logic
• https://help.github.com/categories/54/articles
3. Tests
@Test
public void shouldLeaveAsIsIfAlreadyInDenominationsOf5Cents() {
assertEquals(20.25, round(20.25), 0.01);
}
@Test
public void shouldRoundUpToNext5Cents() {
assertEquals(20.25, round(20.24), 0.01);
}
@Test
public void shouldRoundUpEvenIfAmountIsLessThanPoint023() {
assertEquals(20.25, round(20.21), 0.01);
}
https://github.com/nashjain/rounding_logic
4. Rounding Up - Answer
• var price = 20.23;
• var rounded_price = ceil(price / 0.05) * 0.05;
or
• var rounded_price = ceil(price * 20) / 20;
5. Hotel Room Charge
• Calculate the bill amount based on the number of hotel nights
the guest has stayed in the hotel.
• Per hotel night is charged at 4999 INR for single occupancy and
5499 INR for double occupancy.
• Hotels have a standard 12:00 noon checkin and checkout.
• Early Checkin: Guest can request to checkin early (before
12:00 noon.) If they checkin between 9 and 12, they are
charged 50% extra. If they checkin before 9 AM, then they are
charged full night charge.
• Late Checkout: Guest can request a late checkout. If they
checkout after 12 noon and before 3, they are charged 50%
extra and if they checkout after 3:00 PM, they have to pay one
whole night's extra charge.
7. High-level Approach
Eliminate Noise Divide & Conquer
Test Data
Constraints Simple Design
Manual Debug
Refactor
Throw Away
Create
Add
Come
up with
Simplify the Problem
Prioritise
Remove
constrains
Works?
More Constraints Exit?
Yes
No
8. Problem-Solving Strategies
• Sandboxing: solving the problem in a model of the system before
applying it to the real system
• Metaphor: using a solution that solves an analogous problem
• Brainstorming: exploring a large number of solutions or ideas
and combining and developing them until an optimum solution is
found
• Divide and conquer: breaking down a large, complex problem
into smaller, solvable problems
• Hypothesis testing: assuming a possible explanation to the
problem and trying to prove (or disprove) the assumption
• Reduction: transforming the problem into another problem for
which solutions exist
• Trial-and-error: testing possible solutions until the right one’s
Adapted from: http://en.wikipedia.org/wiki/Problem_solving#Problem-solving_strategies
23. IP Address Range
• Each country has blocks of IPv4 address
range assigned to it
• Given I have an IP address I want to figure
out which country it belong to
24. Start End Total IPs Country
1.6.0.0 1.7.255.255 131072 India
1.22.0.0 1.23.255.255 131072 India
1.186.0.0 1.186.255.255 65536 India
1.0.32.0 1.0.63.255 8192 China
1.1.16.0 1.1.31.255 4096 China
1.4.16.0 1.4.31.255 4096 Japan
• https://github.com/nashjain/ip2country
• 196 countries with 100s of such blocks
25. public long convertToNumericIp(String ip) {
long numericIp = 0;
String[] octets = ip.split(“.");
for (int i = 0; i < 4; ++i)
numericIp += parseInt(octets[i]) * Math.pow(256, 3 - i);
return numericIp;
}
243.131.122.231
243*256*256*256 + 131*256*256 + 122*256 + 231
= 4085480167
26.
27. Snakes and Ladders
• One or more players can play the game
• Typical board size is 10 x10, but user can specify
different board size
• User can decide the game mode (Easy = 5 snakes and
ladders, Medium = 10 snakes and ladders, Hard = 20
snakes and ladders.) Default to easy mode.
• After each move, snakes and ladders could move, but
at least after each game, they should move.
• Game takes the names of all the players and reports
the name of the winner.
• Random player gets to start
29. Medical Age Printer
Age Reported in
Greater than 1Year <Patient Name> is #Years old
> 1 Month & < 1Year <Patient Name> is # Months old
> 1 Day & < 1 Month <Patient Name> is # Days old
> 1 Hr & < 1 Day <Patient Name> is # Hours old
Doctors and Nurses might like to add and remove new Durations.
For Ex: If they add Decade, and Patient’s age is greater than 10 years,
then age should be reported as <Patient Name> is # Decades old.
Similarly: If they add Week, and Patient’s age is greater than 7 Day, but less than
a month, then age should be reported as <Patient Name> is # Weeks old.
https://github.com/nashjain/map
31. Recap
Eliminate Noise Divide & Conquer
Test Data
Constraints Simple Design
Manual Debug
Refactor
Throw Away
Create
Add
Come
up with
Simplify the Problem
Prioritise
Remove
constrains
Works?
More Constraints Exit?
Yes
No