SlideShare a Scribd company logo
Why you should
consider a microframework
for your next web project
by Joaquín Muñoz, age 24 and two thirds.
@Chekosoft | github.com/Chekosoft
A good web framework
is a good companion
because it speeds up development (a lot)

How?
They implement and/or simplify most of the tedious tasks and boilerplate.
● Data manipulation
● Templating
● Security
● Session management
● {insert a tedious but necessary task to do}
The most popular
MVC-based frameworks, like:
But MVCs have a little “problem”

They are

RIGID
But, before going like this:

Because of my previous statement.
Why are they rigid?
● Strict adherence to a set of development
patterns/philosophies/principles.
● If you want to replace one core component, additional work
must be done.
● When a core component is replaced, some “magic” is gone with
it. And replacement magic isn’t as good as the default one.
● Implementing your own magic/extensions/etc require from little
modification to mashing your head on the table.
(the previous statements may not apply to some frameworks)
But they’re rigid
because they need to be
All those cool features are built on top of a rigid, stable base.
(Comfortable, too)
So, it begs the question:

Should I remove the cool things for
customization?
Short answer:

No.
Long answer:

OH GOD PLEASE NO! NO! NOOOOOOO!
“But I really want to do {x} on {y}”
You have two ways:
● Roll Your Own
○ If it doesn’t remove core features:
■ Awesome!
○ If something else breaks in the process:
■ Welcome to Stack Overflow.
● Use a microframework
A microframework like

only deals with a reduced set of tasks
(mostly routing and session handling)
Giving you freedom over the
components/patterns/conventions you want/need to use.
Freedom is a keyword here
So, you can use anything
you want to develop different
aspects of your project
●
●
●
●
●

NoSQL databases
Custom templating engines
ViewModel paradigm
Custom user management
or nothing at all

with little or no additional work.
Think of a microframework as a
nice foundation to stack the components
of your future solution.
Another advantage of microframeworks

If your project is small
the code will be small.
(most of the time)

With an MVC framework, your project starts at almost medium size
and then it grows from there (big projects won’t even notice).
An example

Contoso wants to do a “Hello” public API.
Which answers with “Hello!”.
Let’s pretend this is a very interesting project.
If we use Rails, we should do something like:
$ gem install rails
$rails new hello-app
$rails generate controller hello index
$vim app/controllers/hello.rb
(write the code)
$emacs routes.rb
(write the route file)
$rails s
#Success
It works...
...but all the additional components will only be using extra space.
And it will require time to remove them (or you must remember to not
include them in first place).
If we use Sinatra, this could be done as:
$gem install sinatra
$touch hello.rb
$subl hello.rb
require ‘sinatra’
get ‘/hello’ do
‘Hello!’
end
$rails hello.rb
== Sinatra has taken the stage …
>> Listening on 0.0.0.0:4567
The same happens with Django and Flask
With Django you need to create a project, then an application, then
edit the controllers, add the created application to…
(it keeps going on)

With Flask, you need to do this after getting
it using pip or easy_install (maybe not easy_install).
from flask import Flask
app = Flask(__name__)
@app.route(‘/hello’)
def hello():
return u’Hello!’
if__name__ == ‘__main__’:
app.run()
With ASP.NET MVC, use Visual Studio.
With Nancy, it’s like this:
1.
2.
3.

Create a project with your favorite IDE.
Get Nancy from NuGet
Create a new file (C#) with the following.
namespace Hello {
public class HelloModule: Nancy.NancyModule {
public HelloModule(){
Get[“/hello”] = _ => “Hello!”
}
}
}

Press F5, get bacon.
Thank you for your attention.
And, if you want to use a microframework:
Be Tidy
(Or you’ll really regret it)

More Related Content

What's hot

Simple todo app with meteor
Simple todo app with meteorSimple todo app with meteor
Simple todo app with meteor
Alex Long
 
Using Backbone with CakePHP
Using Backbone with CakePHPUsing Backbone with CakePHP
Using Backbone with CakePHP
Richard McIntyre
 

What's hot (20)

ASP.Net MVC ile Web Uygulamaları -5(Logger)
ASP.Net MVC ile Web Uygulamaları -5(Logger)ASP.Net MVC ile Web Uygulamaları -5(Logger)
ASP.Net MVC ile Web Uygulamaları -5(Logger)
 
ASP.NET vNext
ASP.NET vNextASP.NET vNext
ASP.NET vNext
 
Silver Light By Nyros Developer
Silver Light By Nyros DeveloperSilver Light By Nyros Developer
Silver Light By Nyros Developer
 
Fun with ASP.NET MVC 3, MEF and NuGet
Fun with ASP.NET MVC 3, MEF and NuGetFun with ASP.NET MVC 3, MEF and NuGet
Fun with ASP.NET MVC 3, MEF and NuGet
 
JQuery Conf Berlin - Ondrisek - From Java To AngularJS (without pain)
JQuery Conf Berlin - Ondrisek - From Java To AngularJS (without pain)JQuery Conf Berlin - Ondrisek - From Java To AngularJS (without pain)
JQuery Conf Berlin - Ondrisek - From Java To AngularJS (without pain)
 
Reactjs workshop (1)
Reactjs workshop (1)Reactjs workshop (1)
Reactjs workshop (1)
 
Hacking the Mid-End (Great Lakes Ruby Bash Edition)
Hacking the Mid-End (Great Lakes Ruby Bash Edition)Hacking the Mid-End (Great Lakes Ruby Bash Edition)
Hacking the Mid-End (Great Lakes Ruby Bash Edition)
 
IBM and Node.js - Old Doge, New Tricks
IBM and Node.js - Old Doge, New TricksIBM and Node.js - Old Doge, New Tricks
IBM and Node.js - Old Doge, New Tricks
 
AWS Community Day - Paul Kuliniewicz - CloudHSM: Frustration as a Service
 AWS Community Day - Paul Kuliniewicz - CloudHSM: Frustration as a Service  AWS Community Day - Paul Kuliniewicz - CloudHSM: Frustration as a Service
AWS Community Day - Paul Kuliniewicz - CloudHSM: Frustration as a Service
 
Migrating your Web app to Virtual Reality
Migrating your Web app to Virtual RealityMigrating your Web app to Virtual Reality
Migrating your Web app to Virtual Reality
 
HTML GL - 60 FPS and amazing effects by rendering HTML/CSS in WebGL, framewor...
HTML GL - 60 FPS and amazing effects by rendering HTML/CSS in WebGL, framewor...HTML GL - 60 FPS and amazing effects by rendering HTML/CSS in WebGL, framewor...
HTML GL - 60 FPS and amazing effects by rendering HTML/CSS in WebGL, framewor...
 
Reactive Guide for Spring MVC - Rossen Stoyanchev
Reactive Guide for Spring MVC - Rossen StoyanchevReactive Guide for Spring MVC - Rossen Stoyanchev
Reactive Guide for Spring MVC - Rossen Stoyanchev
 
Simple todo app with meteor
Simple todo app with meteorSimple todo app with meteor
Simple todo app with meteor
 
Using Backbone with CakePHP
Using Backbone with CakePHPUsing Backbone with CakePHP
Using Backbone with CakePHP
 
Your time saving front end workflow
Your time saving front end workflowYour time saving front end workflow
Your time saving front end workflow
 
Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and wh...
Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and wh...Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and wh...
Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and wh...
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr Sugak
 
Magento 2 Front-end performance tips & tricks - Nomadmage September 2017
Magento 2 Front-end performance tips & tricks - Nomadmage September 2017Magento 2 Front-end performance tips & tricks - Nomadmage September 2017
Magento 2 Front-end performance tips & tricks - Nomadmage September 2017
 
Om & React
Om & ReactOm & React
Om & React
 
MVC Architecture in ASP.Net By Nyros Developer
MVC Architecture in ASP.Net By Nyros DeveloperMVC Architecture in ASP.Net By Nyros Developer
MVC Architecture in ASP.Net By Nyros Developer
 

Viewers also liked

The decade of the 90's gladys
The decade of the 90's gladysThe decade of the 90's gladys
The decade of the 90's gladys
Gladys Flores
 
Media A2 Analysis - Short Film
Media A2 Analysis - Short FilmMedia A2 Analysis - Short Film
Media A2 Analysis - Short Film
upsidedownwhat
 
Professor Fred Hollows
Professor Fred HollowsProfessor Fred Hollows
Professor Fred Hollows
danielle1011
 
Mundo metaforico
Mundo metaforicoMundo metaforico
Mundo metaforico
margiepaula
 

Viewers also liked (16)

A2 Media Evaluation - Rob Gough
A2 Media Evaluation - Rob GoughA2 Media Evaluation - Rob Gough
A2 Media Evaluation - Rob Gough
 
The decade of the 90's gladys
The decade of the 90's gladysThe decade of the 90's gladys
The decade of the 90's gladys
 
Trabajo de amaya rodriguez y jhon fernando garcia bloger
Trabajo de amaya rodriguez y jhon fernando garcia blogerTrabajo de amaya rodriguez y jhon fernando garcia bloger
Trabajo de amaya rodriguez y jhon fernando garcia bloger
 
Media A2 Analysis - Short Film
Media A2 Analysis - Short FilmMedia A2 Analysis - Short Film
Media A2 Analysis - Short Film
 
Professor Fred Hollows
Professor Fred HollowsProfessor Fred Hollows
Professor Fred Hollows
 
perniagaan antarabangsa
perniagaan antarabangsaperniagaan antarabangsa
perniagaan antarabangsa
 
Mundo metaforico
Mundo metaforicoMundo metaforico
Mundo metaforico
 
Basant Bansal and Roop Bansal: M3M India
Basant Bansal and Roop Bansal: M3M IndiaBasant Bansal and Roop Bansal: M3M India
Basant Bansal and Roop Bansal: M3M India
 
M3M Project Updates - Roop Bansal, Basant Bansal - M3M India
M3M Project Updates - Roop Bansal, Basant Bansal - M3M IndiaM3M Project Updates - Roop Bansal, Basant Bansal - M3M India
M3M Project Updates - Roop Bansal, Basant Bansal - M3M India
 
Ppt 21 ge
Ppt 21 gePpt 21 ge
Ppt 21 ge
 
Laporan farmasi fisika rheologi
Laporan farmasi fisika rheologiLaporan farmasi fisika rheologi
Laporan farmasi fisika rheologi
 
Manual de diseño geometrico de una carretera con civil cad
Manual de diseño geometrico de una carretera con civil cadManual de diseño geometrico de una carretera con civil cad
Manual de diseño geometrico de una carretera con civil cad
 
makalah adab makan dan minum
makalah adab makan dan minummakalah adab makan dan minum
makalah adab makan dan minum
 
Mapas Mentais - Direito Administrativo
Mapas Mentais - Direito AdministrativoMapas Mentais - Direito Administrativo
Mapas Mentais - Direito Administrativo
 
Squares game for trainers by Rajesh Tagore
Squares game for trainers by Rajesh TagoreSquares game for trainers by Rajesh Tagore
Squares game for trainers by Rajesh Tagore
 
Makalah kolesterol dan antikolesterol
Makalah kolesterol dan antikolesterolMakalah kolesterol dan antikolesterol
Makalah kolesterol dan antikolesterol
 

Similar to Why you should consider a microframework for your next web project

ASP.NET MVC Introduction
ASP.NET MVC IntroductionASP.NET MVC Introduction
ASP.NET MVC Introduction
Sumit Chhabra
 

Similar to Why you should consider a microframework for your next web project (20)

Cloud lunchn learn_howtobecomeacloudarchitect_part1
Cloud lunchn learn_howtobecomeacloudarchitect_part1Cloud lunchn learn_howtobecomeacloudarchitect_part1
Cloud lunchn learn_howtobecomeacloudarchitect_part1
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation Slides
 
Agile Architecture in a Modern Cloud-Native Ecosystem
Agile Architecture in a Modern Cloud-Native EcosystemAgile Architecture in a Modern Cloud-Native Ecosystem
Agile Architecture in a Modern Cloud-Native Ecosystem
 
Agile architectures in a modern cloud-native ecosystem
Agile architectures in a modern cloud-native ecosystemAgile architectures in a modern cloud-native ecosystem
Agile architectures in a modern cloud-native ecosystem
 
Rethinking Best Practices
Rethinking Best PracticesRethinking Best Practices
Rethinking Best Practices
 
learn mvc project in 7 day
learn mvc project in 7 daylearn mvc project in 7 day
learn mvc project in 7 day
 
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
 
Web worker in your angular application
Web worker in your angular applicationWeb worker in your angular application
Web worker in your angular application
 
Web Components
Web ComponentsWeb Components
Web Components
 
Fowa Miami 09 Cloud Computing Workshop
Fowa Miami 09 Cloud Computing WorkshopFowa Miami 09 Cloud Computing Workshop
Fowa Miami 09 Cloud Computing Workshop
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arp
 
Untangling the web9
Untangling the web9Untangling the web9
Untangling the web9
 
Stencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedStencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrived
 
The Future Is The Cloud
The Future Is The CloudThe Future Is The Cloud
The Future Is The Cloud
 
Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021Intro to SpringBatch NoSQL 2021
Intro to SpringBatch NoSQL 2021
 
Performant Django - Ara Anjargolian
Performant Django - Ara AnjargolianPerformant Django - Ara Anjargolian
Performant Django - Ara Anjargolian
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
ASP.NET MVC Introduction
ASP.NET MVC IntroductionASP.NET MVC Introduction
ASP.NET MVC Introduction
 
Austin Web Architecture
Austin Web ArchitectureAustin Web Architecture
Austin Web Architecture
 
How to migrate large project from Angular to React
How to migrate large project from Angular to ReactHow to migrate large project from Angular to React
How to migrate large project from Angular to React
 

Recently uploaded

Recently uploaded (20)

From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 

Why you should consider a microframework for your next web project

  • 1. Why you should consider a microframework for your next web project by Joaquín Muñoz, age 24 and two thirds. @Chekosoft | github.com/Chekosoft
  • 2. A good web framework is a good companion because it speeds up development (a lot) How? They implement and/or simplify most of the tedious tasks and boilerplate. ● Data manipulation ● Templating ● Security ● Session management ● {insert a tedious but necessary task to do}
  • 3. The most popular MVC-based frameworks, like:
  • 4. But MVCs have a little “problem” They are RIGID
  • 5. But, before going like this: Because of my previous statement.
  • 6. Why are they rigid? ● Strict adherence to a set of development patterns/philosophies/principles. ● If you want to replace one core component, additional work must be done. ● When a core component is replaced, some “magic” is gone with it. And replacement magic isn’t as good as the default one. ● Implementing your own magic/extensions/etc require from little modification to mashing your head on the table. (the previous statements may not apply to some frameworks)
  • 7. But they’re rigid because they need to be All those cool features are built on top of a rigid, stable base. (Comfortable, too) So, it begs the question: Should I remove the cool things for customization?
  • 8. Short answer: No. Long answer: OH GOD PLEASE NO! NO! NOOOOOOO!
  • 9. “But I really want to do {x} on {y}” You have two ways: ● Roll Your Own ○ If it doesn’t remove core features: ■ Awesome! ○ If something else breaks in the process: ■ Welcome to Stack Overflow. ● Use a microframework
  • 10. A microframework like only deals with a reduced set of tasks (mostly routing and session handling) Giving you freedom over the components/patterns/conventions you want/need to use.
  • 11. Freedom is a keyword here
  • 12. So, you can use anything you want to develop different aspects of your project ● ● ● ● ● NoSQL databases Custom templating engines ViewModel paradigm Custom user management or nothing at all with little or no additional work.
  • 13. Think of a microframework as a nice foundation to stack the components of your future solution.
  • 14. Another advantage of microframeworks If your project is small the code will be small. (most of the time) With an MVC framework, your project starts at almost medium size and then it grows from there (big projects won’t even notice).
  • 15. An example Contoso wants to do a “Hello” public API. Which answers with “Hello!”. Let’s pretend this is a very interesting project.
  • 16. If we use Rails, we should do something like: $ gem install rails $rails new hello-app $rails generate controller hello index $vim app/controllers/hello.rb (write the code) $emacs routes.rb (write the route file) $rails s #Success
  • 17. It works... ...but all the additional components will only be using extra space. And it will require time to remove them (or you must remember to not include them in first place).
  • 18. If we use Sinatra, this could be done as: $gem install sinatra $touch hello.rb $subl hello.rb require ‘sinatra’ get ‘/hello’ do ‘Hello!’ end $rails hello.rb == Sinatra has taken the stage … >> Listening on 0.0.0.0:4567
  • 19. The same happens with Django and Flask With Django you need to create a project, then an application, then edit the controllers, add the created application to… (it keeps going on) With Flask, you need to do this after getting it using pip or easy_install (maybe not easy_install). from flask import Flask app = Flask(__name__) @app.route(‘/hello’) def hello(): return u’Hello!’ if__name__ == ‘__main__’: app.run()
  • 20. With ASP.NET MVC, use Visual Studio. With Nancy, it’s like this: 1. 2. 3. Create a project with your favorite IDE. Get Nancy from NuGet Create a new file (C#) with the following. namespace Hello { public class HelloModule: Nancy.NancyModule { public HelloModule(){ Get[“/hello”] = _ => “Hello!” } } } Press F5, get bacon.
  • 21. Thank you for your attention. And, if you want to use a microframework: Be Tidy (Or you’ll really regret it)