Proposed (23)
Liked (48)
Commented (174)
Naresh Jain
Score 1568
Naresh Jain

Tech-Startup Founder

ConfEngine.com

  India

Naresh Jain is an internationally recognized Technology & Product Development Expert. Over the last decade, he has helped streamline the product development practices at many Fortune 500 companies like Google, Amazon, HP, Siemens Medical, GE Energy, Schlumberger, EMC, CA Technologies, to name a few clients. These days, he is more focused on engineering excellence and product innovation. In a nutshell, hire him as a consultant/mentor, if your entire organization wants to move beyond the Agile and Lean mindset. Learn more about our expert services.

Naresh Jain's Startup Icons

Naresh is leading two tech-startups, which build tablet-based adaptive educational apps for kids, conference management softwaresocial-media search tool and a content curation and voting platform. His startups are trying to figure out the secret sauce for blending gamification and social learning using the latest gadgets.

As an independent consultant, Naresh worked with many fortune 500 software organizations and startups to deliver mission critical enterprise applications. Having played various roles of Founder, Agile Coach, Quality Evangelist, Technical Lead, Product Owner, Iteration Manager, Scrum Master, Developer, QA, Recruiter, Build Master, Mentor & Trainer, he is well equipped to help your entire organization to rapidly adapt Agile and Lean methods.

Agile Software Community of India

Naresh founded the Agile Software community of India, a registered non-profit society to evangelize Agile, Lean and other Light-weight Software Development methods in India. Naresh is responsible for conceptualizing, creating and organizing 50+ Software conferences worldwide.

Member since 2 years

Naresh Jain proposed:


Naresh Jain
Naresh Jain
Dhaval Dalal
Live Code Jugalbandi
Naresh Jain
Naresh Jain
Dhaval Dalal

In Indian classical music, we have Jugalbandi, where two lead musicians or vocalist engage in a playful competition. There is jugalbandi between Flutist and a Percussionist (say using Tabla as the instrument). Compositions rendered by flutist will be heard by the percussionist and will replay the same notes, but now on Tabla and vice-versa is also possible.

In a similar way, we will perform Code Jugalbandi to see how the solution looks using different programming languages and paradigms.

During the session, conference attendees will take turns at coding the same problem using different languages and paradigms. There would be multiple such attempts by different participants during the Jugalbandi.

Duration: 90 mins
Type:  Event
Level: Beginner
» »
90_mins  
×
event  
×
beginner  
×

scala  
×
groovy  
×
clojure  
×
php  
×
javascript  
×
haskell  
×
fsharp  
×
julia  
×
swift  
×
1 day ago by Naresh Jain

Naresh Jain
Naresh Jain
Balancing Object-Functional Design Guided by Tests
Naresh Jain
Naresh Jain

When we think of OO, most people think of modeling THE real world in software by mapping every real world object (nouns) to entities in software. These entities are then modeled using Is-A-Has-A relationship to build complex, polymorphic hierarchies with deep object graphs. State is stored and mutated in-place inside the object to achieve the desired functionality. This paradigm leads to a fairly convoluted design and encourage imperative style of programming.

Not everyone who has designed large complex systems, think of OO the same way. For instance, people who Test Drive, do not have the luxury of a big-up-front design, instead they focus on small and incremental design. IME, TDD facilities a design that is side-effect free and encourages a declarative style of programming. While decoupling and composing objects in a functional style with the right granularity of abstraction.

Let's assume we've to build a web commenting and discussion feature (like Disqus). And we've a requirement to implement this as a jQuery Plugin. Can we apply pure functional principles to design this? Or will the design be better if we try a classical OO JS approach? In this live demo, we'll build this plugin from scratch and see how TDD will help us drive an object-functional design to strike a pragmatic balance between the 2 paradigms.

Duration: 120 mins
Level: Intermediate
»
everyday-fp  
×
»
120_mins  
×
demonstration  
×
intermediate  
×

jquery  
×
javascript  
×
virtual-dom  
×
karma  
×
jasmine  
×
tdd  
×
1 day ago by Naresh Jain

Naresh Jain
Naresh Jain
Aap Ki Adalat with jQuery Foundation
Naresh Jain
Naresh Jain

Aap Ki Adalat is the longest running talk show in the history of Indian television. In this show, the anchor, Mr. Rajat Sharma has grilled over 500 personalities on various sensitive and personal issues. We would like to put the key members of the jQuery Foundation through a similar session, where participants will ask them hard questions around various technical and non-technical choices made by the Foundation and the future direction of the foundation.

Duration: 45 mins
Type:  Keynote
Level: Beginner
» »
45_mins  
×
keynote  
×
beginner  
×

1 month ago by Naresh Jain

Naresh Jain
Naresh Jain
Agile Testing
Naresh Jain
Naresh Jain

As more and more companies are moving to the Cloud, they want their latest, greatest software features to be available to their users as quickly as they are built. However there are several issues blocking them from moving ahead.

One key issue is the massive amount of time it takes for someone to certify that the new feature is indeed working as expected and also to assure that the rest of the features will continuing to work. In spite of this long waiting cycle, we still cannot assure that our software will not have any issues. In fact, many times our assumptions about the user's needs or behavior might itself be wrong. But this long testing cycle only helps us validate that our assumptions works as assumed.

How can we break out of this rut & get thin slices of our features in front of our users to validate our assumptions early?

Most software organizations today suffer from what I call, the "Inverted Testing Pyramid" problem. They spend maximum time and effort manually checking software. Some invest in automation, but mostly building slow, complex, fragile end-to-end GUI test. Very little effort is spent on building a solid foundation of unit & acceptance tests.

This over-investment in end-to-end tests is a slippery slope. Once you start on this path, you end up investing even more time & effort on testing which gives you diminishing returns.

In this session Naresh Jain will explain the key misconceptions that has lead to the inverted testing pyramid approach being massively adopted, main drawbacks of this approach and how to turn your organization around to get the right testing pyramid.

Duration: 45 mins
Type:  Talk
Level: Intermediate
3 months ago by Naresh Jain

Naresh Jain
Naresh Jain
IAmA (I Am A ... Ask Me Anything)
Naresh Jain
Naresh Jain

On Reddit, IAmA stands for "I am a" and AMA stands for "ask me anything".

In an IAmA post, a person will post what they are, and other people will ask the original poster some questions to gain insights about the experience the person has had.
 
Ex: I'm Jeff Patton, creator of Story Mapping, Ask Me Anything... OR I'm Diana Larsen, co-creator of the Fluency Model and co-author of Agile Retrospectives, Ask Me Anything...

We plan to take this concept and apply it to the Agile context. We've few luminaries at the conference and we plan to do an live interview with them using this format.

Duration: 60 mins
Type:  Keynote
Level: Beginner
» »
60_mins  
×
keynote  
×
beginner  
×

iama  
×
4 months ago by Naresh Jain

Naresh Jain
Naresh Jain
Test Driving a jQuery Plugin
Naresh Jain
Naresh Jain

Over the past decade, eXtreme Programming practices like Test-Driven Development (TDD), Behavior Driven Developer (BDD), Refactoring and Continuous Integration have fundamentally changed software development processes and inherently how engineers work. Practitioners claim that it has helped them significantly improve their development speed, design quality and responsiveness to changing requirements. Software professionals across the board, from Internet startups to medical device companies to space research organizations, today have embraced these practices. But can these practices be applied to front-end development? Especially jQuery plugin development?

This demo will show how we can test drive a jQuery plugin with the help of various patterns, strategies, tools and techniques. Participants will understand how they can apply this approach for testing any jQuery code.

Duration: 90 mins
Level: Intermediate
»
jquery-plugin  
×
»
90_mins  
×
demonstration  
×
intermediate  
×

tdd  
×
jasmine  
×
karma  
×
jasmine-ajax  
×
5 months ago by Naresh Jain

Dhaval Dalal
Dhaval Dalal
Naresh Jain
The Tao of Transformation
Dhaval Dalal
Dhaval Dalal
Naresh Jain

"To know, is good. To live, is better. To be, that is perfect." - The Mother

During the Agile adoption, its a common complain that many team in many organizations get caught up in the ceremonies or mechanics of Agile and fail to understand/appreciate the true value and spirit of Agile. And because of this, the original intent of the Agile movement itself is lost. This is a serious issue!

This workshop will highlight, a well-proven approach to transformation (not adoption) and show the distinct steps in this journey that an individual or a collective goes through when learning anything new. Activities, serving as examples, in the workshop, will focus to show the journey - that is, how to begin with rituals, then gradually move to practices, arriving at principles and eventually internalizing the values. Witnessing this gradual process of transformation will help participants discover for themselves their current progression. We hope this will serve as a guiding light during their Agile journey.

Finally, we will leave the participants to ponder upon and discover for themselves their ideals in life and work as this is not only applicable to software development, but also to any discipline where humans are involved, including life itself.

Duration: 90 mins
Type:  Workshop
Level: Beginner
» »
90_mins  
×
workshop  
×
beginner  
×

rituals  
×
practices  
×
principles  
×
values  
×
ideals  
×
6 months ago by Dhaval Dalal

Naresh Jain
Naresh Jain
Adaptive Change Cycle AND The Decline of Agile
Naresh Jain
Naresh Jain

Why do we see new process or methodology or movement every 10 years or so in the software industry? And why don't successful companies ride on their success forever? Naresh Jain uses the Adaptive Change Cycle (ACC) to explain the rationale behind it. Once you understand ACC, this talk will help you understand how to prepare yourself and your organisation to quickly move through the 4 stages of ACC: reorganise, exploit, conserve and release to constantly keep innovating. If you feel agile methods are stagnating and looking for what to expect next, this talk might give you some ideas.

Duration: 45 mins
Type:  Talk
Level: Intermediate

Naresh Jain
Naresh Jain
Sell Before you Build (MVP Hacks)
Naresh Jain
Naresh Jain

Before you write any code, make sure you have a failing test." This was a revolutionary idea, when it was first pitched in the late 90’s. Many successful entrepreneurs have been practicing a similar approach - "Before you build a product/service, make sure you have paying customers." In this talk, Naresh Jain shares his approach of finding effective MVPs to validate his Educational Product and why Agile Methods simply fail to do so. If you are interested in finding out how to maximise your validated learning for minimum investment, then this session is for you. Recently Naresh's article on this topic was published by InfoQ.

Duration: 60 mins
Type:  Case Study
Level: Intermediate
» »
60_mins  
×
case-study  
×
intermediate  
×

mvp  
×
vision  
×
hypothesis  
×
7 months ago by Naresh Jain

Prasad Kunte
Prasad Kunte
Naresh Jain
Implementing Agile Engineering Practices in Legacy Codebases
Prasad Kunte
Prasad Kunte
Naresh Jain

Afraid of legacy code? Don't be!!!

Most successful product companies are confronted with the problem of legacy code.

What is a legacy code?

  • A code which is in production for several years.
  • A super-complex, hard to understand code base, written by different set of developers. 
  • Outdated Technology stack.

But the most hurting reality is:

Lack of confidence in the code due to zero or poor test coverage.

Due to this reality, developers are often scared to touch it. They have very little confidence that "their code change wouldn't break the existing application in production."

Recently at IDeaS, we came across such situation, where we needed to enhance one of our products containing legacy code. We started looking into the code and soon figured out that it was developed in 2007, hardly ever touched (& still working in production :)). The original team, which has worked on this product, could not be traced anymore.

As this product has expanded to attract new customers, we had to change it significantly in order to support new customer's specifications. We had to make sure that the product was backward compatible and supported the earlier specifications, while we enhance the new specification.

One simple option was to COPY PASTE every single method which needs to be modified and use an if-statement to decide which method to call. This certainly seems like an easy method, since the chances of breaking existing code is very little. 

Today we all know this is a BAD option!!!

Instead, our team decided to refactor the existing code to support plug-and-play approach for different specification. But before we started refactoring code, we had to build a safety net of tests around the existing code.

How do we put the safety net? Ideal way would be to implement the Test Pyramid first. But, that would have taken significant time to be ready with the pyramid before we start touching the legacy code. And obvious, we would have missed the business goals.

What do we do?

Instead of building the entire test pyramid, we decided to attack different layers of the test pyramid, one at a time. Along the way, we followed the following approach:

  1. Re-structuring the Project code-base
  2. Establishing a baseline database: After taking a dump from the production database, we cleared out surplus data from the DB and setup a seed database with automed scripts
  3. Creating/fixing the build script 
    1. Setting up an auto DB deploy tool and integrating it with build scripts
  4. Set up basic CI pipeline
  5. Write a few work-flow tests to capture the system's flow from user's point of view
    1. Find the inception point in the code from where we can exercise the code
    2. Restify the application at the inception point (one service at a time)
    3. Setup authorization for production and test environment
    4. Build minimal test-data set for different environment 
    5. Create a few work-flow tests via the inception point (Test itself should not be coupled with the underlying database or implementation level components)
  6. Write business logic acceptance test to capture various complicated business rules
  7. Test drive the new enhancement or bug fixes
  8. Every time we touch legacy code, refactor the code and improve test coverage at unit level

This really helped us test driven the new code and implement all the layers of the test pyramid.

If you've a similar situation, join us, as we share our experience on how to confront legacy code.

Duration: 45 mins
Type:  Case Study
Level: Intermediate
» »
45_mins  
×
case-study  
×
intermediate  
×

legacy-code  
×
test-pyramid  
×
refactoring  
×
7 months ago by Prasad Kunte


Naresh Jain liked:


Dhaval Dalal
Dhaval Dalal
Naresh Jain
The Tao of Transformation
Dhaval Dalal
Dhaval Dalal
Naresh Jain

"To know, is good. To live, is better. To be, that is perfect." - The Mother

During the Agile adoption, its a common complain that many team in many organizations get caught up in the ceremonies or mechanics of Agile and fail to understand/appreciate the true value and spirit of Agile. And because of this, the original intent of the Agile movement itself is lost. This is a serious issue!

This workshop will highlight, a well-proven approach to transformation (not adoption) and show the distinct steps in this journey that an individual or a collective goes through when learning anything new. Activities, serving as examples, in the workshop, will focus to show the journey - that is, how to begin with rituals, then gradually move to practices, arriving at principles and eventually internalizing the values. Witnessing this gradual process of transformation will help participants discover for themselves their current progression. We hope this will serve as a guiding light during their Agile journey.

Finally, we will leave the participants to ponder upon and discover for themselves their ideals in life and work as this is not only applicable to software development, but also to any discipline where humans are involved, including life itself.

Duration: 90 mins
Type:  Workshop
Level: Beginner
» »
90_mins  
×
workshop  
×
beginner  
×

rituals  
×
practices  
×
principles  
×
values  
×
ideals  
×
6 months ago by Dhaval Dalal

Scott González
Scott González
Building Up the Community
Scott González
Scott González

Over the past seven years, jQuery UI has identified and solved many common problems for web developers. Often times, the problems don't apply just to users of jQuery UI, or even jQuery Core. In these cases, we try to solve the problem in the best way for the largest audience, rather than creating an isolated solution within jQuery UI. We're able to do this by working with the community and bringing together various groups to collaborate on solutions. In this talk, I'll discuss how this concept is at the heart of the jQuery Foundation and explain some of the projects that have been born out of jQuery UI.

Duration: 45 mins
Type:  Keynote
Level: Beginner
»
jquery-ui  
×
»
45_mins  
×
keynote  
×
beginner  
×

community  
×
collaboration  
×
standards  
×
css  
×
6 months ago by Scott González

Aslak Hellesøy
Aslak Hellesøy
How BDD can save agile
Aslak Hellesøy
Aslak Hellesøy

As lead developer of Cucumber and author of The Cucumber Book, Aslak gets asked to consult with organisations who want to introduce Behaviour-Driven Development (BDD). Time after time, he meets teams who are trapped doing half-arsed agile. They do the easy, obvious, visible agile practices, and none of the powerful, hard-to-master, hard-to-see ones.

When these teams ask for help learning BDD, we get a chance to remind them how important conversations and collaboration are in software development. We teach them to write tests before they write code, as a way to explore and discover the hidden details of a requirement just before they dive in and start building it. This talk will make you wince with recognition, laugh with despair, and finally inspire you with stories of teams that have finally, after years of flaccid scrumming, discovered the true collaborative heart of agile software development. You’ll see patterns you recognise from your own teams, and gain insights about how to fix them.

Duration: 60 mins
Type:  Keynote
Level: Intermediate

Prasad Kunte
Prasad Kunte
Naresh Jain
Implementing Agile Engineering Practices in Legacy Codebases
Prasad Kunte
Prasad Kunte
Naresh Jain

Afraid of legacy code? Don't be!!!

Most successful product companies are confronted with the problem of legacy code.

What is a legacy code?

  • A code which is in production for several years.
  • A super-complex, hard to understand code base, written by different set of developers. 
  • Outdated Technology stack.

But the most hurting reality is:

Lack of confidence in the code due to zero or poor test coverage.

Due to this reality, developers are often scared to touch it. They have very little confidence that "their code change wouldn't break the existing application in production."

Recently at IDeaS, we came across such situation, where we needed to enhance one of our products containing legacy code. We started looking into the code and soon figured out that it was developed in 2007, hardly ever touched (& still working in production :)). The original team, which has worked on this product, could not be traced anymore.

As this product has expanded to attract new customers, we had to change it significantly in order to support new customer's specifications. We had to make sure that the product was backward compatible and supported the earlier specifications, while we enhance the new specification.

One simple option was to COPY PASTE every single method which needs to be modified and use an if-statement to decide which method to call. This certainly seems like an easy method, since the chances of breaking existing code is very little. 

Today we all know this is a BAD option!!!

Instead, our team decided to refactor the existing code to support plug-and-play approach for different specification. But before we started refactoring code, we had to build a safety net of tests around the existing code.

How do we put the safety net? Ideal way would be to implement the Test Pyramid first. But, that would have taken significant time to be ready with the pyramid before we start touching the legacy code. And obvious, we would have missed the business goals.

What do we do?

Instead of building the entire test pyramid, we decided to attack different layers of the test pyramid, one at a time. Along the way, we followed the following approach:

  1. Re-structuring the Project code-base
  2. Establishing a baseline database: After taking a dump from the production database, we cleared out surplus data from the DB and setup a seed database with automed scripts
  3. Creating/fixing the build script 
    1. Setting up an auto DB deploy tool and integrating it with build scripts
  4. Set up basic CI pipeline
  5. Write a few work-flow tests to capture the system's flow from user's point of view
    1. Find the inception point in the code from where we can exercise the code
    2. Restify the application at the inception point (one service at a time)
    3. Setup authorization for production and test environment
    4. Build minimal test-data set for different environment 
    5. Create a few work-flow tests via the inception point (Test itself should not be coupled with the underlying database or implementation level components)
  6. Write business logic acceptance test to capture various complicated business rules
  7. Test drive the new enhancement or bug fixes
  8. Every time we touch legacy code, refactor the code and improve test coverage at unit level

This really helped us test driven the new code and implement all the layers of the test pyramid.

If you've a similar situation, join us, as we share our experience on how to confront legacy code.

Duration: 45 mins
Type:  Case Study
Level: Intermediate
» »
45_mins  
×
case-study  
×
intermediate  
×

legacy-code  
×
test-pyramid  
×
refactoring  
×
7 months ago by Prasad Kunte

Sachin Natu
Sachin Natu
Naresh Jain
Death of Inspection: Reincarnation of the Testing Community
Sachin Natu
Sachin Natu
Naresh Jain

Adopting agile development practices and continuous delivery is becoming a norm in the software industry. Time to market and frequent releases have drastically reduced time available for regression testing. Inspection is considered wasteful. Faster feedback cycles during development is crucial. These have created lot of challenges for testing community, which traditionally relies on manual testing assisted by UI based test automation.

This is an experience report of transforming testing practices across organization, which decided to embrace Agile. Today our testers are not trying to find defects, instead they collaborate with product management and developers to prevent them in the first place. In fact, during the appraisal process, the defects found by them is ignored, instead we focus on how much time they are able to dedicate to collaboration and exploratory testing. The boundaries between developers and testers have faded away and today quality is whole team's responsibility.

We started with less than 20% of our testers with automation skills (mostly UI automation) and rest of them relying on manual testing. However, today, all our testers practice BDD. They have picked up Java & Groovy programming skills. They are able to contribute Workflow tests, Integration tests and Business Logic Acceptance Tests. Early collaboration and pairing is the norm. By the time developers are done with their tasks, all checks are already automated and hence we are able to deploy software every fortnight to production.

Are your testers finding it hard to make this transition to an Agile mindset? This session will give you some concrete ideas based on our transition at IDeaS.  

Duration: 60 mins
Type:  Case Study
Level: Intermediate

Ashish Parkhi
Ashish Parkhi
Naresh Jain
Techniques to Speed Up your Build Pipeline for Faster Feedback.
Ashish Parkhi
Ashish Parkhi
Naresh Jain

I would like to share my experience and journey on how we brought down our Jenkins build pipeline time down from over 90 minutes to under 12 minutes. In the process, I would share specific techniques which helped and also some, which logically made sense, but actually did not help. If your team is trying to optimize their build times, then this session might give you some ideas on how to approach the problem.

Development Impact - For one of our build job, below graph shows how the number of builds in a day have increased over a period of time as the build time has reduced. Frequency of code check-in has increased; Wait time has reduced; failed test case faster to isolate and fix.

Business Impact - More builds leading to quicker feedback and faster story acceptance and less story spill over.

Duration: 45 mins
Level: Intermediate
» »
45_mins  
×
intermediate  
×

jenkins  
×
build  
×
fast-feedback  
×
ssd  
×
8 months ago by Ashish Parkhi

Ashish Parkhi
Ashish Parkhi
Naresh Jain
Gamifying Agile Adoption - An Experiment
Ashish Parkhi
Ashish Parkhi
Naresh Jain

While having a chat with Naresh Jain, he suggested me to go through the Ted Talk – “Gaming can make a better world” by Jane McGonigal. I found the title very weird and was wondering how is that possible? After going through the talk though, I was amazed. I started wondering if I can use the gamification technique in Agile Adoption, in our Products, in Performance Management Systems, in Employee Engagement Programs?

Dhaval Dalal introduced me to Prof. Kevin Werbach’s definition of Gamification – “The use of game elements and game design techniques in non-game contexts.

For our 4th ShipIt Day, organized on 25th/26th Sept 2014 at IDeaS, I decided to explore the idea of using game elements and game design techniques in the context of Agile Adoption. The idea was to create a gaming system which will automatically collect data, i.e. without explicit user intervention,  from multiple sources like Jenkins, Rally and manually from individuals and offer Star’s for positive behavior and deduct Star’s otherwise.

The aim was to help the team get continuous visual feedback on how they are doing, adopt agile practices, visualize sense of accountability, visualize sense of achievement, drive positive behavior, create healthy competition, create a culture of appreciation, help performance tracking and create transparency.

 

Landing Page

User Profile

 

 

 Update - 

  1. Deducting points seems to be bothering the individuals. Now we are experimenting with getting rid of negative points and introducing short lived badeges instead e.g. "Build Breaker". 
  2. We have now added more badges to recognize individual efforts in various categories.
  3. Working on open sourcing the core app at https://github.com/IDeaSCo/rockstar
Duration: 45 mins
Type:  Case Study
Level: Intermediate
» »
45_mins  
×
case-study  
×
intermediate  
×

gamification  
×
motivation  
×
experiment  
×
9 months ago by Ashish Parkhi

Prafulla Girgaonkar
Prafulla Girgaonkar
Naresh Jain
eXtreme Programming for ETL and Data Analytics
Prafulla Girgaonkar
Prafulla Girgaonkar
Naresh Jain

Over the last decade, eXtreme Programming practices like User Stories, Evolutionary Design, Test-Driven Development (TDD), Behavior Driven Developer (BDD), Refactoring, Continuous Integration and Automation have fundamentally changed software development processes and inherently how engineers work.

Having experienced various benefits from XP practices on our J2EE stack, our team started to apply these practices to extract, transform, and load (ETL) and Data Analytics side of our product. Unfortunately, there is very little guidance available in this context, esp. for the SAS Platform. Right from finding the unit testing framework to structuring the code to designing our modules and setting up a Continuous Integration builds, our team had to figure out everything, the hard way.

Join us to understand the challenges we faced during this process and how we resolved these challenges.

Duration: 45 mins
Level: Intermediate
» »
45_mins  
×
intermediate  
×

sas  
×
sas-language  
×
statistic  
×
etl  
×
analytics  
×
procedural  
×
ci  
×
testability  
×
11 months ago by Prafulla Girgaonkar

Dhaval Dalal
Dhaval Dalal
Naresh Jain
The Tao of Transformation
Dhaval Dalal
Dhaval Dalal
Naresh Jain

"To know, is good. To live, is better. To be, that is perfect." - The Mother

During the Agile adoption, its a common complain that many team in many organizations get caught up in the ceremonies or mechanics of Agile and fail to understand/appreciate the true value and spirit of Agile. And because of this, the original intent of the Agile movement itself is lost. This is a serious issue!

This workshop will highlight, a well-proven approach to transformation (not adoption) and show the distinct steps in this journey that an individual or a collective goes through when learning anything new. Activities, serving as examples, in the workshop, will focus to show the journey - that is, how to begin with rituals, then gradually move to practices, arriving at principles and eventually internalizing the values. Witnessing this gradual process of transformation will help participants discover for themselves their current progression. We hope this will serve as a guiding light during their Agile journey.

Finally, we will leave the participants to ponder upon and discover for themselves their ideals in life and work as this is not only applicable to software development, but also to any discipline where humans are involved, including life itself.

Duration: 90 mins
Type:  Workshop
Level: Beginner
» »
90_mins  
×
workshop  
×
beginner  
×

rituals  
×
practices  
×
principles  
×
values  
×
ideals  
×
11 months ago by Dhaval Dalal

Prafulla Girgaonkar
Prafulla Girgaonkar
Naresh Jain
The Art of SQL Database Refactoring
Prafulla Girgaonkar
Prafulla Girgaonkar
Naresh Jain

"We've tested this feature thoroughly and it worked really well. But for some weird reason, it's really slow in production today...must be a network issue...or may be the server is having a bad day..."

Do you often hear these kinds of comments in your development team? Let us guess, your application is very data-centric and churns big blocks of data on every user request. And under the hood, your application is most probably heavily dependent on long/complex queries with joins, temp-tables, case-statements, nested queries, etc.

These SQL queries probably started-out very simple. But as your requirements evolved, iteration after iterations, the queries also grew in complexity. And most often, even if you test-drove your newer stories, the performance of these complex queries is not evident until you run them in production. 

Given that our requirements will evolve and so will our database, how do you deal with the above problems?

There are TWO essential parts to evolutionary database design:

  1. The art of refactoring your SQL queries.
  2. Figuring out the right balance of what processing is done in SQL on the DB sides and what is done on your service side in your App/Web Server.

Join us as we take a tour of how we refactored our complex, non-performant queries and overall DB without hurting our time-to-market.

Duration: 45 mins
Level: Intermediate
» »
45_mins  
×
intermediate  
×

query  
×
data  
×
java  
×
sql  
×
long-queries  
×
slow-queries  
×
talk  
×
refactoring  
×
11 months ago by Prafulla Girgaonkar


Naresh Jain commented:


Sudipta Mukherjee
Sudipta Mukherjee
Practical Machine Learning in F#
Sudipta Mukherjee
Sudipta Mukherjee

Machine learning is more popular than ever because there are several dataset available and we can use several tools at our disposal to learn an insight from this data.

In this session I shall show how F# can be used for several machine learning tasks and I will be using industry standard APIs

During this session participants will be solving several machine learning challenges from Kaggle like handwritten digit recognizer (https://www.kaggle.com/c/digit-recognizer)

During this session participants will write code in F# to solve real challenges like this one

https://gist.github.com/sudipto80/72e6e56d07110baf4d4d

and they will get to understand the process of machine learning system design pipeline.

Duration: 90 mins
Level: Intermediate

Naresha K
Naresha K
Rethinking HTTP Apps on JVM with Ratpack
Naresha K
Naresha K

HTTP application programming model on JVM traditionally has been based on the thread per request model. However increasing scale and complexity of applications are forcing the developers to think in new directions. Ratpack is one of such efforts. Ratpack is a collection of libraries glued with Java 8 and makes use of Netty, Guava and Reactive Streams. Ratpack also provides a Groovy DSL, helping developers to use declarative style.

In this demo, I will explore the asynchronous programming model leveraged by Ratpack. Composition, immutability, laziness are the core techniques used in building an application, which in fact are the ideas from functional programming. Though Ratpack has a variety of features, my focus for this presentation is asynchronous, reactive and functional aspects of Ratpack.

Duration: 45 mins
Level: Intermediate
» »
45_mins  
×
demonstration  
×
intermediate  
×

jvm  
×
fp-java  
×
1 week ago by Naresha K

Bhasker Kode
Bhasker Kode
Workshop: Erlang by example
Bhasker Kode
Bhasker Kode

From fundamentals to deploying Erlang micro-service.

Duration: 480 mins
Type:  Workshop
Level: Beginner
» »
480_mins  
×
workshop  
×
beginner  
×

erlang  
×
microservice  
×
1 month ago by Bhasker Kode

John Thomas
John Thomas
Shyam Sundar
A Introduction to Functional Design Patterns in scala
John Thomas
John Thomas
Shyam Sundar

First notorious word, every functional programming encounter (without mathematical background ) during initial days  is "Category theory " . Our aim is to introduce the very minimum concept a functional developer should know in category theorem .

The goal is to introduce basics of category theory and develop a small prototype library to validate and process data  , out a few principles from category theory.

We will also be introducing and implementing representations of Functors, SemiGroup, Applicative, Monoid and Monad. We also make use of some interesting Scala features like ADT - Algebraic data type , Implicit conversion, Types . 

 

 

 

Duration: 90 mins
Type:  Workshop
Level: Beginner
» »
90_mins  
×
workshop  
×
beginner  
×

1 month ago by John Thomas

Siddhartha Bhagwan
Siddhartha Bhagwan
Memory Leaks in JavaScript
Siddhartha Bhagwan
Siddhartha Bhagwan

If you read this title and thought, "Meh, I’m a beginner and don’t write complex code to worry about that", or "My framework must be taking care of that no?", or "Huh? Whats all that about dude?", this session is just for you.

I’d like to talk to you about what memory leaks are, how they occur and, most importantly, why you should care. With JavaScript becoming ever so prominent, it’d be fun to get to know the common caveats and understand what happens under the hood a little better.

Duration: 20 mins
Type:  Talk
Level: Beginner
» »
20_mins  
×
talk  
×
beginner  
×

javascript  
×
memory  
×
1 month ago by Siddhartha Bhagwan

Shantanu Kumar
Shantanu Kumar
Production Clojure: An Experience Report
Shantanu Kumar
Shantanu Kumar

This talk is about our experience of using Clojure in production at Concur for building a SaaS platform.

To set the perspective, Concur is a 22 years old, USD 8.3 billion enterprise, now a part of SAP. More than 70% of Fortune 500 companies use Concur for travel and expense solutions. Concur's SaaS platform serves 25,000 customers with 25 million users. The Concur SaaS platform was reaching its limits and needed "re-architecting". This talk is about why we chose Clojure at Concur and how we are building one of the world's largest B2B SaaS platforms in Clojure.

We will discuss the practices we established, experiments we did and the lessons learnt. We have now built a platform that follows open standards, is rigorously tested, tolerates failure and performs well. We will go over how we reached there, how we deployed the code to production and how we monitor those today.

If you are considering using Clojure in production or even simply interested in Clojure, you may get useful insights to take away from this talk.

Duration: 45 mins
Level: Intermediate
» »
45_mins  
×
intermediate  
×

clojure  
×
2 months ago by Shantanu Kumar

Nivedita Priyadarshini
Nivedita Priyadarshini
Srihari Sriraman
Building an Experimentation Platform in Clojure
Nivedita Priyadarshini
Nivedita Priyadarshini
Srihari Sriraman

Here's a markdown version of this proposal: https://gist.github.com/ssrihari/1cad915e7ef22ce61b54

Over the last year and half at Staples SparX, we built a multivariate testing platform as a service. It satisfies an SLA of 10ms at 99.9th percentile, services all of Staples' experimentation from a single machine, is simulation tested, and is written in Clojure.

We'll give an introduction to the Experimentation domain, design of experiments and our battle in attaining statistical significance with constrained traffic. We will share our experiences in loading and reporting over months of data in Datomic, using Clojure to grow a resilient postgres cluster, using a homegrown jdbc driver, interesting anecdotes, and OLAP solutions with ETL built in Clojure using core.async. Expect to see references to google white papers, latency and network graphs, histograms, comparison tables and an eyeful of clojure code.

Duration: 45 mins
Level: Intermediate
2 months ago by Nivedita Priyadarshini

Tanmai Gopal
Tanmai Gopal
Haskell In Production
Tanmai Gopal
Tanmai Gopal

From the perspective of one of the few companies in the country using Haskell in production (hasura.io), we will talk about the journey of using Haskell as a programming language to build and maintain real world software.
From the burden of choosing a language that probably has a single digit number of active developers in the country, to
the joys of a small team churning out code that just keeps on working.

We'll go over how we created a team, organized work ("software development practices"), architecting code, tooling up, testing, performance tweaking and finally deploying a Haskell codebase. We hope that Haskell developers with some prior experience will be able to take away
something new about the Haskell ecosystem, and those interested in just functional programming will see tangible value in how certain features unique to Haskell have an impact.

Expect a case study, a review of some cutting-edge tools and how to use them, and some Haskell code samples that will make you grunt in geeky approval.

Duration: 45 mins
Level: Intermediate
2 months ago by Tanmai Gopal

Bhaskara Kempaiah
Bhaskara Kempaiah
Building "Large" AngularJS App: An Experience Report
Bhaskara Kempaiah
Bhaskara Kempaiah

At LiftOff LLC we have built more than a dozen AngularJS Apps, in this session.. we will share few tips / advice towards building clean / easy to refactor AngularJS Code.

Duration: 20 mins
Level: Intermediate
»
open-web  
×
»
20_mins  
×
intermediate  
×

2 months ago by Bhaskara Kempaiah

Prathamesh Sonpatki
Prathamesh Sonpatki
A Sip of ReactJS
Prathamesh Sonpatki
Prathamesh Sonpatki

React JS challenges lot of conventional ideas in web development at the same time providing a simple model for web development. Lets start rethinking with components, virtual DOM, JSX and see how React really shines! In this talk we will take whirlwind tour of React JS. 

We will be building an application based on Open Library API which will help us cover core features of React. At the end of session, we will have a complete app built using React.

Duration: 45 mins
Type:  Talk
Level: Beginner
»
open-web  
×
»
45_mins  
×
talk  
×
beginner  
×

reactjs  
×
2 months ago by Prathamesh Sonpatki