SlideShare a Scribd company logo
Manos
      Web apps for the lazy hacker




             Jérémie Laval




        http://blog.neteril.org

        http://twitter.com/jeremie_laval

IRC     garuma on #manos @ GIMPNet.org
Personal context   Manos   Taking a tour: Apachaï   Closing note




Background




 2 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Background



¤ Doing HTML pages when I was young




 2 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Background



¤ Doing HTML pages when I was young

¤ Sprinkled ugly PHP to make it dynamic




 2 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Background



¤ Doing HTML pages when I was young

¤ Sprinkled ugly PHP to make it dynamic

¤ <Alarm sound ringing />




 2 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Background



¤ Doing HTML pages when I was young

¤ Sprinkled ugly PHP to make it dynamic

¤ <Alarm sound ringing />

¤ Moved on to C# / desktop coding




 2 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Background




                                       Disclaimer




 3 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




But wait, web has gotten better




 4 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




But wait, web has gotten better


¤ HTML 5, is that a title?




 4 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




But wait, web has gotten better


¤ HTML 5, is that a title?

¤ CSS 3, non-designer best friend




 4 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




But wait, web has gotten better


¤ HTML 5, is that a title?

¤ CSS 3, non-designer best friend

¤ Javascript, more than animated cursor




 4 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




But wait, web has gotten better


¤ HTML 5, is that a title?

¤ CSS 3, non-designer best friend

¤ Javascript, more than animated cursor



          What about .NET web application frameworks?



 4 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Once upon a time...


                   Someone was wrong on the Internet




 5 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




They created




 6 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




They created




                                                    ASP




 6 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




They created




                                                    ASP


                             (Hint: VBScript as a default language)




 6 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Hmmm...




7 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Tried to fix it



                                            ASP

  <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="true"
                IncludeStyleBlock="false" Orientation="Horizontal">
       <Items>
           <asp:MenuItem NavigateUrl="/Default.aspx" Text="Home" />
           <asp:MenuItem NavigateUrl="/About.aspx" Text="About" />
           <asp:MenuItem NavigateUrl="/Students.aspx" Text="Students">
                 <asp:MenuItem NavigateUrl="/StudentsAdd.aspx" Text="Add Students" />
           </asp:MenuItem>
       </Items>
  </asp:Menu>




 8 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Hmmm...




9 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Truth told


                                      It's apparently better today




 10 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




In real (hacker) life




                                All too bloated



 11 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What I wanted




12 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What I wanted


¤ KISS (Keep It Simple Stupid)




 12 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What I wanted


¤ KISS (Keep It Simple Stupid)

¤ Let me code my way




 12 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What I wanted


¤ KISS (Keep It Simple Stupid)

¤ Let me code my way

¤ Integrate with existing stuff




 12 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What I wanted


¤ KISS (Keep It Simple Stupid)

¤ Let me code my way

¤ Integrate with existing stuff



                What I really need is a lib that talks HTTP




 12 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What I wanted


¤ KISS (Keep It Simple Stupid)

¤ Let me code my way

¤ Integrate with existing stuff



                What I really need is a lib that talks HTTP
                       But a bit more sophisticated than HttpListener



 12 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




But have no fear


                                                 A hero came




13 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Often pictured as




14 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




But for real




                          ( Jackson Harper, Manos creator and cartel manager during his free time )



 15 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What's Manos in the end




16 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What's Manos in the end


¤ Standalone HTTP server




16 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What's Manos in the end


¤ Standalone HTTP server

¤ Evented IO




16 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What's Manos in the end


¤ Standalone HTTP server

¤ Evented IO

¤ Parse and produce plain old HTTP




16 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What's Manos in the end


¤ Standalone HTTP server

¤ Evented IO

¤ Parse and produce plain old HTTP

¤ Not tied to any content/template framework




16 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What's Manos in the end


¤ Standalone HTTP server

¤ Evented IO

¤ Parse and produce plain old HTTP

¤ Not tied to any content/template framework

¤ Code just with C# and a couple of attributes



16 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Bootstraping



                                              How it all begun

  $ manos -i apachai
    initing: apachai
  $ manos -b
    COMPILING SOLUTION: '0' '/home/jeremie/mono/manostest/apachai'
    /usr/local/lib/manos/Manos.dll
  $ cd apachai
  $ manos -s
    Running apachai.apachai on port 8080.




17 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Setting up handlers




                                      Simply getting a root page

 [Route ("/")]
 public void Index (IManosContext ctx)
 {
     Log.Info ("Woohoo, someone visited our website");
     ctx.Response.SendFile (Path.Combine ("Templates", "base.html"));
     ctx.Response.End ();
 }




18 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Setting up handlers




                     Route handling delegated to external modules

 public Apachai ()
 {
     Route ("/Content/", (staticContent = new StaticContentModule ("Content")));
     Route ("/Pictures/", new PictureContentModule ());
     AddPipe (new Manos.Util.AccessLogger ("access.log"));
 }




19 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Giving back JSON



                                         Nothing special really

 [Route ("/visits")]
 public void Visits (IManosContext ctx)
 {
     var cookie = ctx.Request.Cookies.Get ("foobar-apachai");
     if (string.IsNullOrEmpty (cookie)) {
         ctx.Response.StatusCode = 404;
         ctx.Response.End ();
     } else {
         var counter = visits[cookie];
         ctx.Response.End (string.Format ("{{ "count" : {0} }}", counter));
     }
 }




20 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What's Apachaï

                     Picture uploading for the rest of us
                                              http://apch.fr




21 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What's Apachaï

                     Picture uploading for the rest of us
                                              http://apch.fr

¤ Leverage TrollStation (Twitter) and Pinta (Effects)




21 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What's Apachaï

                     Picture uploading for the rest of us
                                              http://apch.fr

¤ Leverage TrollStation (Twitter) and Pinta (Effects)

¤ TagLib# for metadata handling




21 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What's Apachaï

                     Picture uploading for the rest of us
                                              http://apch.fr

¤ Leverage TrollStation (Twitter) and Pinta (Effects)

¤ TagLib# for metadata handling

¤ JSON and AJAX driven




21 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What's Apachaï

                     Picture uploading for the rest of us
                                              http://apch.fr

¤ Leverage TrollStation (Twitter) and Pinta (Effects)

¤ TagLib# for metadata handling

¤ JSON and AJAX driven

¤ Redis backed




21 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




What's Apachaï

                     Picture uploading for the rest of us
                                              http://apch.fr

¤ Leverage TrollStation (Twitter) and Pinta (Effects)

¤ TagLib# for metadata handling

¤ JSON and AJAX driven

¤ Redis backed

¤ https://github.com/garuma/apachai

21 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Future driven processing




22 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Releasing season



¤ Manos 0.1.2 released!
  £ https://github.com/jacksonh/manos/tarball/v0.1.2




23 / 23
Personal context   Manos   Taking a tour: Apachaï   Closing note




Releasing season



¤ Manos 0.1.2 released!
  £ https://github.com/jacksonh/manos/tarball/v0.1.2

¤ Apachaï 1.0 released!
  £ https://github.com/garuma/apachai/tarball/1.0




23 / 23

More Related Content

Recently uploaded

Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 

Recently uploaded (20)

Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 

Featured

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
GetSmarter
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
Alireza Esmikhani
 

Featured (20)

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 

Manos: web apps for the lazy hacker

  • 1. Manos Web apps for the lazy hacker Jérémie Laval http://blog.neteril.org http://twitter.com/jeremie_laval IRC garuma on #manos @ GIMPNet.org
  • 2. Personal context Manos Taking a tour: Apachaï Closing note Background 2 / 23
  • 3. Personal context Manos Taking a tour: Apachaï Closing note Background ¤ Doing HTML pages when I was young 2 / 23
  • 4. Personal context Manos Taking a tour: Apachaï Closing note Background ¤ Doing HTML pages when I was young ¤ Sprinkled ugly PHP to make it dynamic 2 / 23
  • 5. Personal context Manos Taking a tour: Apachaï Closing note Background ¤ Doing HTML pages when I was young ¤ Sprinkled ugly PHP to make it dynamic ¤ <Alarm sound ringing /> 2 / 23
  • 6. Personal context Manos Taking a tour: Apachaï Closing note Background ¤ Doing HTML pages when I was young ¤ Sprinkled ugly PHP to make it dynamic ¤ <Alarm sound ringing /> ¤ Moved on to C# / desktop coding 2 / 23
  • 7. Personal context Manos Taking a tour: Apachaï Closing note Background Disclaimer 3 / 23
  • 8. Personal context Manos Taking a tour: Apachaï Closing note But wait, web has gotten better 4 / 23
  • 9. Personal context Manos Taking a tour: Apachaï Closing note But wait, web has gotten better ¤ HTML 5, is that a title? 4 / 23
  • 10. Personal context Manos Taking a tour: Apachaï Closing note But wait, web has gotten better ¤ HTML 5, is that a title? ¤ CSS 3, non-designer best friend 4 / 23
  • 11. Personal context Manos Taking a tour: Apachaï Closing note But wait, web has gotten better ¤ HTML 5, is that a title? ¤ CSS 3, non-designer best friend ¤ Javascript, more than animated cursor 4 / 23
  • 12. Personal context Manos Taking a tour: Apachaï Closing note But wait, web has gotten better ¤ HTML 5, is that a title? ¤ CSS 3, non-designer best friend ¤ Javascript, more than animated cursor What about .NET web application frameworks? 4 / 23
  • 13. Personal context Manos Taking a tour: Apachaï Closing note Once upon a time... Someone was wrong on the Internet 5 / 23
  • 14. Personal context Manos Taking a tour: Apachaï Closing note They created 6 / 23
  • 15. Personal context Manos Taking a tour: Apachaï Closing note They created ASP 6 / 23
  • 16. Personal context Manos Taking a tour: Apachaï Closing note They created ASP (Hint: VBScript as a default language) 6 / 23
  • 17. Personal context Manos Taking a tour: Apachaï Closing note Hmmm... 7 / 23
  • 18. Personal context Manos Taking a tour: Apachaï Closing note Tried to fix it ASP <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="true" IncludeStyleBlock="false" Orientation="Horizontal"> <Items> <asp:MenuItem NavigateUrl="/Default.aspx" Text="Home" /> <asp:MenuItem NavigateUrl="/About.aspx" Text="About" /> <asp:MenuItem NavigateUrl="/Students.aspx" Text="Students"> <asp:MenuItem NavigateUrl="/StudentsAdd.aspx" Text="Add Students" /> </asp:MenuItem> </Items> </asp:Menu> 8 / 23
  • 19. Personal context Manos Taking a tour: Apachaï Closing note Hmmm... 9 / 23
  • 20. Personal context Manos Taking a tour: Apachaï Closing note Truth told It's apparently better today 10 / 23
  • 21. Personal context Manos Taking a tour: Apachaï Closing note In real (hacker) life All too bloated 11 / 23
  • 22. Personal context Manos Taking a tour: Apachaï Closing note What I wanted 12 / 23
  • 23. Personal context Manos Taking a tour: Apachaï Closing note What I wanted ¤ KISS (Keep It Simple Stupid) 12 / 23
  • 24. Personal context Manos Taking a tour: Apachaï Closing note What I wanted ¤ KISS (Keep It Simple Stupid) ¤ Let me code my way 12 / 23
  • 25. Personal context Manos Taking a tour: Apachaï Closing note What I wanted ¤ KISS (Keep It Simple Stupid) ¤ Let me code my way ¤ Integrate with existing stuff 12 / 23
  • 26. Personal context Manos Taking a tour: Apachaï Closing note What I wanted ¤ KISS (Keep It Simple Stupid) ¤ Let me code my way ¤ Integrate with existing stuff What I really need is a lib that talks HTTP 12 / 23
  • 27. Personal context Manos Taking a tour: Apachaï Closing note What I wanted ¤ KISS (Keep It Simple Stupid) ¤ Let me code my way ¤ Integrate with existing stuff What I really need is a lib that talks HTTP But a bit more sophisticated than HttpListener 12 / 23
  • 28. Personal context Manos Taking a tour: Apachaï Closing note But have no fear A hero came 13 / 23
  • 29. Personal context Manos Taking a tour: Apachaï Closing note Often pictured as 14 / 23
  • 30. Personal context Manos Taking a tour: Apachaï Closing note But for real ( Jackson Harper, Manos creator and cartel manager during his free time ) 15 / 23
  • 31. Personal context Manos Taking a tour: Apachaï Closing note What's Manos in the end 16 / 23
  • 32. Personal context Manos Taking a tour: Apachaï Closing note What's Manos in the end ¤ Standalone HTTP server 16 / 23
  • 33. Personal context Manos Taking a tour: Apachaï Closing note What's Manos in the end ¤ Standalone HTTP server ¤ Evented IO 16 / 23
  • 34. Personal context Manos Taking a tour: Apachaï Closing note What's Manos in the end ¤ Standalone HTTP server ¤ Evented IO ¤ Parse and produce plain old HTTP 16 / 23
  • 35. Personal context Manos Taking a tour: Apachaï Closing note What's Manos in the end ¤ Standalone HTTP server ¤ Evented IO ¤ Parse and produce plain old HTTP ¤ Not tied to any content/template framework 16 / 23
  • 36. Personal context Manos Taking a tour: Apachaï Closing note What's Manos in the end ¤ Standalone HTTP server ¤ Evented IO ¤ Parse and produce plain old HTTP ¤ Not tied to any content/template framework ¤ Code just with C# and a couple of attributes 16 / 23
  • 37. Personal context Manos Taking a tour: Apachaï Closing note Bootstraping How it all begun $ manos -i apachai initing: apachai $ manos -b COMPILING SOLUTION: '0' '/home/jeremie/mono/manostest/apachai' /usr/local/lib/manos/Manos.dll $ cd apachai $ manos -s Running apachai.apachai on port 8080. 17 / 23
  • 38. Personal context Manos Taking a tour: Apachaï Closing note Setting up handlers Simply getting a root page [Route ("/")] public void Index (IManosContext ctx) { Log.Info ("Woohoo, someone visited our website"); ctx.Response.SendFile (Path.Combine ("Templates", "base.html")); ctx.Response.End (); } 18 / 23
  • 39. Personal context Manos Taking a tour: Apachaï Closing note Setting up handlers Route handling delegated to external modules public Apachai () { Route ("/Content/", (staticContent = new StaticContentModule ("Content"))); Route ("/Pictures/", new PictureContentModule ()); AddPipe (new Manos.Util.AccessLogger ("access.log")); } 19 / 23
  • 40. Personal context Manos Taking a tour: Apachaï Closing note Giving back JSON Nothing special really [Route ("/visits")] public void Visits (IManosContext ctx) { var cookie = ctx.Request.Cookies.Get ("foobar-apachai"); if (string.IsNullOrEmpty (cookie)) { ctx.Response.StatusCode = 404; ctx.Response.End (); } else { var counter = visits[cookie]; ctx.Response.End (string.Format ("{{ "count" : {0} }}", counter)); } } 20 / 23
  • 41. Personal context Manos Taking a tour: Apachaï Closing note What's Apachaï Picture uploading for the rest of us http://apch.fr 21 / 23
  • 42. Personal context Manos Taking a tour: Apachaï Closing note What's Apachaï Picture uploading for the rest of us http://apch.fr ¤ Leverage TrollStation (Twitter) and Pinta (Effects) 21 / 23
  • 43. Personal context Manos Taking a tour: Apachaï Closing note What's Apachaï Picture uploading for the rest of us http://apch.fr ¤ Leverage TrollStation (Twitter) and Pinta (Effects) ¤ TagLib# for metadata handling 21 / 23
  • 44. Personal context Manos Taking a tour: Apachaï Closing note What's Apachaï Picture uploading for the rest of us http://apch.fr ¤ Leverage TrollStation (Twitter) and Pinta (Effects) ¤ TagLib# for metadata handling ¤ JSON and AJAX driven 21 / 23
  • 45. Personal context Manos Taking a tour: Apachaï Closing note What's Apachaï Picture uploading for the rest of us http://apch.fr ¤ Leverage TrollStation (Twitter) and Pinta (Effects) ¤ TagLib# for metadata handling ¤ JSON and AJAX driven ¤ Redis backed 21 / 23
  • 46. Personal context Manos Taking a tour: Apachaï Closing note What's Apachaï Picture uploading for the rest of us http://apch.fr ¤ Leverage TrollStation (Twitter) and Pinta (Effects) ¤ TagLib# for metadata handling ¤ JSON and AJAX driven ¤ Redis backed ¤ https://github.com/garuma/apachai 21 / 23
  • 47. Personal context Manos Taking a tour: Apachaï Closing note Future driven processing 22 / 23
  • 48. Personal context Manos Taking a tour: Apachaï Closing note Releasing season ¤ Manos 0.1.2 released! £ https://github.com/jacksonh/manos/tarball/v0.1.2 23 / 23
  • 49. Personal context Manos Taking a tour: Apachaï Closing note Releasing season ¤ Manos 0.1.2 released! £ https://github.com/jacksonh/manos/tarball/v0.1.2 ¤ Apachaï 1.0 released! £ https://github.com/garuma/apachai/tarball/1.0 23 / 23