Review of the history of web development and trends that indicate where the future of webdev is going.
Slides for a talk I gave at BarCamp Saskatoon - please refer to the notes for the actual slide content
MALCOM is a platform that connects makers with users to discover new creations, act and interact with behaviors, and measure results. It aims to return control to makers by celebrating birthdays and providing a website and Twitter account where users can discover what projects are upcoming and in development.
Meteoroid. Towards a real MVC for the Web.
Juan Lautaro Fernández, Santiago Robles, Stéphane Ducasse, Andrés Fortier, Gustavo Rossi and Silvia Gordillo.
ESUG09, Brest, France
Making your washing machine talk with a power plantMatteo Collina
The document discusses connecting IoT devices through a common protocol called Ponte. It outlines problems with current IoT development including different application protocols, data formats, and privacy issues. Ponte aims to provide a multi-protocol broker and bridge that uses JSON-LD as a common data format and addresses device identification and privacy. It also provides performance test results for bridging between CoAP, HTTP, and MQTT. The goal is to make IoT development easier by breaking down silos between different protocols.
This document summarizes updates in the Sass community. It lists new CSS and Sass tools and libraries that were released, including CSS Modules for encapsulation, a CSS book on enduring stylesheets, and videos on CSS architecture and scaling Sass. It also discusses Sass improvements like faster compilation using libsass, unit testing with True, and Lodash functionality through Sassdash. Finally, it mentions using NPM modules with Eyeglass to add custom Sass functions in JavaScript.
The JavaScript Web Development RevolutionThomas Witt
The document discusses how technologies like ReactJS and serverless computing will revolutionize web development. It argues that the next generation of cloud computing will be serverless and based on JavaScript. Serverless cloud computing means backend services are simply JavaScript code without requiring a server, providing benefits like zero maintenance, higher security, and better performance. The document promotes a JAMstack approach to modern web development using client-side JavaScript, reusable APIs, and prebuilt markup.
Build an App with JavaScript and jQuery (DTLA, 06/21)Thinkful
This document outlines an agenda for a workshop to teach building a web app with JavaScript and jQuery. The workshop will be led by Jasjit Singh, general manager of Thinkful Atlanta. Attendees will learn key JavaScript and jQuery concepts, then build their own app over the course of the workshop. The agenda includes reviewing starter code, learning programming fundamentals, building the app with support from instructors, and reviewing solutions at the end.
This document provides an introduction to the F# programming language. It discusses that F# was created by Microsoft Research in 2005 and is based on functional programming concepts from languages like ML and OCaml. It then gives examples of how F# uses immutable values, type inference, currying of functions, and anonymous functions to allow for powerful and flexible programming. The document aims to explain core F# concepts like functions, types, and immutability in an accessible way for beginners.
MALCOM is a platform that connects makers with users to discover new creations, act and interact with behaviors, and measure results. It aims to return control to makers by celebrating birthdays and providing a website and Twitter account where users can discover what projects are upcoming and in development.
Meteoroid. Towards a real MVC for the Web.
Juan Lautaro Fernández, Santiago Robles, Stéphane Ducasse, Andrés Fortier, Gustavo Rossi and Silvia Gordillo.
ESUG09, Brest, France
Making your washing machine talk with a power plantMatteo Collina
The document discusses connecting IoT devices through a common protocol called Ponte. It outlines problems with current IoT development including different application protocols, data formats, and privacy issues. Ponte aims to provide a multi-protocol broker and bridge that uses JSON-LD as a common data format and addresses device identification and privacy. It also provides performance test results for bridging between CoAP, HTTP, and MQTT. The goal is to make IoT development easier by breaking down silos between different protocols.
This document summarizes updates in the Sass community. It lists new CSS and Sass tools and libraries that were released, including CSS Modules for encapsulation, a CSS book on enduring stylesheets, and videos on CSS architecture and scaling Sass. It also discusses Sass improvements like faster compilation using libsass, unit testing with True, and Lodash functionality through Sassdash. Finally, it mentions using NPM modules with Eyeglass to add custom Sass functions in JavaScript.
The JavaScript Web Development RevolutionThomas Witt
The document discusses how technologies like ReactJS and serverless computing will revolutionize web development. It argues that the next generation of cloud computing will be serverless and based on JavaScript. Serverless cloud computing means backend services are simply JavaScript code without requiring a server, providing benefits like zero maintenance, higher security, and better performance. The document promotes a JAMstack approach to modern web development using client-side JavaScript, reusable APIs, and prebuilt markup.
Build an App with JavaScript and jQuery (DTLA, 06/21)Thinkful
This document outlines an agenda for a workshop to teach building a web app with JavaScript and jQuery. The workshop will be led by Jasjit Singh, general manager of Thinkful Atlanta. Attendees will learn key JavaScript and jQuery concepts, then build their own app over the course of the workshop. The agenda includes reviewing starter code, learning programming fundamentals, building the app with support from instructors, and reviewing solutions at the end.
This document provides an introduction to the F# programming language. It discusses that F# was created by Microsoft Research in 2005 and is based on functional programming concepts from languages like ML and OCaml. It then gives examples of how F# uses immutable values, type inference, currying of functions, and anonymous functions to allow for powerful and flexible programming. The document aims to explain core F# concepts like functions, types, and immutability in an accessible way for beginners.
The document discusses the Model-View-Controller (MVC) pattern and how Backbone.js implements it for single-page web applications. MVC originated in the 1970s and separates an application into three responsibilities - the model manages the data, view displays it, and controller handles user input. Backbone.js provides structure for web apps using MVC concepts with a RESTful API, event system, and routing. It embraces extensibility while remaining unopinionated.
Node.js is a JavaScript runtime built on Chrome's V8 engine that allows JavaScript to be run on the server-side. It uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, especially for real-time applications with heavy network use. While it shares a language with client-side JavaScript, Node.js is meant for server-side applications and not in the browser.
The document discusses how social gaming concepts can be applied to businesses. It provides Helen as an example of someone whose job as a World of Warcraft guild officer mirrors that of an HR manager. The document then discusses social gaming statistics and concepts like avatars, narrative context, feedback systems, reputation/ranks, competition with rules, and teamwork that could be applied to businesses. It concludes by suggesting businesses start by collaborating with gamers to create a game and adjust it frequently based on player feedback.
The document discusses how hackers and open data are helping the city of Regina. It describes how the city has sponsored two hackathons where over 30 attendees created 30 applications, with about half using Regina's open data. The city benefits from open data by attracting developers to create applications with the data, reducing costs, and improving the city's image.
This document contains a resume for Aruna Kumar K R, a linguist professional with over 7 years of experience in Kannada translation, proofreading, and editing. He has a master's degree in English literature and postgraduate diploma in translation. He has worked as a lead external linguist for Kannada on various projects for Google, providing translation from English to Kannada and vice versa, linguistic review, and language quality assurance. His skills include translation tools like Idiom Desktop Workbench and technical understanding of translation workflows.
This document provides tips for how to hire skilled software developers, referred to as "hackers". It recommends focusing on candidates' experience, coding skills, and ability to improve rather than specific programming language experience. Employers should seek developers who can identify issues in code and appreciate code structure. The document advises attracting candidates by engaging with them in coding communities, hosting open houses, and demonstrating an interesting work environment and culture fit over technical skills alone.
This document discusses Reactive Extensions (Rx), which provides interfaces and methods for implementing "pull-based" or observable systems. It describes the difference between pull-based and push-based models. Rx includes IObservable and IObserver interfaces for creating and observing asynchronous data streams. It also includes Observable and Observer classes that make it easier to create observables without defining classes. Rx integrates with LINQ to add query operators for observables.
Async code allows long-running operations like network and file access to execute without blocking the UI thread. There have been several approaches to async programming in .NET including the Async Programming Model (APM), Event-based Async Pattern (EAP), and Task Parallel Library. The newest approach is to use async and await keywords which allow suspending methods until async operations complete and make control flow easier to reason about.
AJAX, JSON, and client-side templates allow for asynchronous and partial page updates without reloading the entire web page. AJAX uses XMLHttpRequest and JavaScript to make asynchronous requests in the background. JSON is a lightweight data format that is easy for humans and machines to parse. Client-side templates separate data and layout so that only small amounts of data need to be transferred, improving page load times and reducing network traffic compared to traditional full-page reloads.
Manufacturers have hit limits for single-core processors due to physical constraints, so parallel processing using multiple smaller cores is now common. The .NET framework includes classes like Task Parallel Library (TPL) and Parallel LINQ (PLINQ) that make it easy to take advantage of multi-core systems while abstracting thread management. TPL allows executing code asynchronously using tasks, which can run in parallel and provide callbacks to handle completion and errors. PLINQ allows parallelizing LINQ queries.
The document provides an overview of SQL vs NoSQL databases. It discusses how RDBMS systems focus on ACID properties to ensure consistency but sacrifice availability and scalability. NoSQL systems embrace the CAP theorem, prioritizing availability and partition tolerance over consistency to better support distributed and cloud-scale architectures. The document outlines different NoSQL database models and how they are suited for high volume operations through an asynchronous and eventually consistent approach.
Git is a distributed version control system created by Linus Torvalds in 2005 as an alternative to BitKeeper. It allows developers to have a complete history of the source code on their local machine and supports a distributed workflow. Commits in Git link back to previous commits and contain references to file trees and parent commits. Git uses references and branching to efficiently track changes from multiple developers and integrate their work.
The document discusses different approaches to building web services:
- Remote Procedure Call (RPC) uses SOAP and WSDL but is complicated to implement.
- RESTful services use standard HTTP methods to interact with resources through clean URLs and return data in XML or JSON formats. REST services are easier to build and consume.
- REST focuses on stateless resources and uses HTTP verbs like GET, PUT, POST and DELETE to perform CRUD operations on resources accessed through URLs.
QA or the Highway - Component Testing: Bridging the gap between frontend appl...zjhamm304
These are the slides for the presentation, "Component Testing: Bridging the gap between frontend applications" that was presented at QA or the Highway 2024 in Columbus, OH by Zachary Hamm.
The document discusses the Model-View-Controller (MVC) pattern and how Backbone.js implements it for single-page web applications. MVC originated in the 1970s and separates an application into three responsibilities - the model manages the data, view displays it, and controller handles user input. Backbone.js provides structure for web apps using MVC concepts with a RESTful API, event system, and routing. It embraces extensibility while remaining unopinionated.
Node.js is a JavaScript runtime built on Chrome's V8 engine that allows JavaScript to be run on the server-side. It uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, especially for real-time applications with heavy network use. While it shares a language with client-side JavaScript, Node.js is meant for server-side applications and not in the browser.
The document discusses how social gaming concepts can be applied to businesses. It provides Helen as an example of someone whose job as a World of Warcraft guild officer mirrors that of an HR manager. The document then discusses social gaming statistics and concepts like avatars, narrative context, feedback systems, reputation/ranks, competition with rules, and teamwork that could be applied to businesses. It concludes by suggesting businesses start by collaborating with gamers to create a game and adjust it frequently based on player feedback.
The document discusses how hackers and open data are helping the city of Regina. It describes how the city has sponsored two hackathons where over 30 attendees created 30 applications, with about half using Regina's open data. The city benefits from open data by attracting developers to create applications with the data, reducing costs, and improving the city's image.
This document contains a resume for Aruna Kumar K R, a linguist professional with over 7 years of experience in Kannada translation, proofreading, and editing. He has a master's degree in English literature and postgraduate diploma in translation. He has worked as a lead external linguist for Kannada on various projects for Google, providing translation from English to Kannada and vice versa, linguistic review, and language quality assurance. His skills include translation tools like Idiom Desktop Workbench and technical understanding of translation workflows.
This document provides tips for how to hire skilled software developers, referred to as "hackers". It recommends focusing on candidates' experience, coding skills, and ability to improve rather than specific programming language experience. Employers should seek developers who can identify issues in code and appreciate code structure. The document advises attracting candidates by engaging with them in coding communities, hosting open houses, and demonstrating an interesting work environment and culture fit over technical skills alone.
This document discusses Reactive Extensions (Rx), which provides interfaces and methods for implementing "pull-based" or observable systems. It describes the difference between pull-based and push-based models. Rx includes IObservable and IObserver interfaces for creating and observing asynchronous data streams. It also includes Observable and Observer classes that make it easier to create observables without defining classes. Rx integrates with LINQ to add query operators for observables.
Async code allows long-running operations like network and file access to execute without blocking the UI thread. There have been several approaches to async programming in .NET including the Async Programming Model (APM), Event-based Async Pattern (EAP), and Task Parallel Library. The newest approach is to use async and await keywords which allow suspending methods until async operations complete and make control flow easier to reason about.
AJAX, JSON, and client-side templates allow for asynchronous and partial page updates without reloading the entire web page. AJAX uses XMLHttpRequest and JavaScript to make asynchronous requests in the background. JSON is a lightweight data format that is easy for humans and machines to parse. Client-side templates separate data and layout so that only small amounts of data need to be transferred, improving page load times and reducing network traffic compared to traditional full-page reloads.
Manufacturers have hit limits for single-core processors due to physical constraints, so parallel processing using multiple smaller cores is now common. The .NET framework includes classes like Task Parallel Library (TPL) and Parallel LINQ (PLINQ) that make it easy to take advantage of multi-core systems while abstracting thread management. TPL allows executing code asynchronously using tasks, which can run in parallel and provide callbacks to handle completion and errors. PLINQ allows parallelizing LINQ queries.
The document provides an overview of SQL vs NoSQL databases. It discusses how RDBMS systems focus on ACID properties to ensure consistency but sacrifice availability and scalability. NoSQL systems embrace the CAP theorem, prioritizing availability and partition tolerance over consistency to better support distributed and cloud-scale architectures. The document outlines different NoSQL database models and how they are suited for high volume operations through an asynchronous and eventually consistent approach.
Git is a distributed version control system created by Linus Torvalds in 2005 as an alternative to BitKeeper. It allows developers to have a complete history of the source code on their local machine and supports a distributed workflow. Commits in Git link back to previous commits and contain references to file trees and parent commits. Git uses references and branching to efficiently track changes from multiple developers and integrate their work.
The document discusses different approaches to building web services:
- Remote Procedure Call (RPC) uses SOAP and WSDL but is complicated to implement.
- RESTful services use standard HTTP methods to interact with resources through clean URLs and return data in XML or JSON formats. REST services are easier to build and consume.
- REST focuses on stateless resources and uses HTTP verbs like GET, PUT, POST and DELETE to perform CRUD operations on resources accessed through URLs.
QA or the Highway - Component Testing: Bridging the gap between frontend appl...zjhamm304
These are the slides for the presentation, "Component Testing: Bridging the gap between frontend applications" that was presented at QA or the Highway 2024 in Columbus, OH by Zachary Hamm.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
"What does it really mean for your system to be available, or how to define w...Fwdays
We will talk about system monitoring from a few different angles. We will start by covering the basics, then discuss SLOs, how to define them, and why understanding the business well is crucial for success in this exercise.
What is an RPA CoE? Session 2 – CoE RolesDianaGray10
In this session, we will review the players involved in the CoE and how each role impacts opportunities.
Topics covered:
• What roles are essential?
• What place in the automation journey does each role play?
Speaker:
Chris Bolin, Senior Intelligent Automation Architect Anika Systems
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving
What began over 115 years ago as a supplier of precision gauges to the automotive industry has evolved into being an industry leader in the manufacture of product branding, automotive cockpit trim and decorative appliance trim. Value-added services include in-house Design, Engineering, Program Management, Test Lab and Tool Shops.
What is an RPA CoE? Session 1 – CoE VisionDianaGray10
In the first session, we will review the organization's vision and how this has an impact on the COE Structure.
Topics covered:
• The role of a steering committee
• How do the organization’s priorities determine CoE Structure?
Speaker:
Chris Bolin, Senior Intelligent Automation Architect Anika Systems
AppSec PNW: Android and iOS Application Security with MobSFAjin Abraham
Mobile Security Framework - MobSF is a free and open source automated mobile application security testing environment designed to help security engineers, researchers, developers, and penetration testers to identify security vulnerabilities, malicious behaviours and privacy concerns in mobile applications using static and dynamic analysis. It supports all the popular mobile application binaries and source code formats built for Android and iOS devices. In addition to automated security assessment, it also offers an interactive testing environment to build and execute scenario based test/fuzz cases against the application.
This talk covers:
Using MobSF for static analysis of mobile applications.
Interactive dynamic security assessment of Android and iOS applications.
Solving Mobile app CTF challenges.
Reverse engineering and runtime analysis of Mobile malware.
How to shift left and integrate MobSF/mobsfscan SAST and DAST in your build pipeline.
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor IvaniukFwdays
At this talk we will discuss DDoS protection tools and best practices, discuss network architectures and what AWS has to offer. Also, we will look into one of the largest DDoS attacks on Ukrainian infrastructure that happened in February 2022. We'll see, what techniques helped to keep the web resources available for Ukrainians and how AWS improved DDoS protection for all customers based on Ukraine experience
The Microsoft 365 Migration Tutorial For Beginner.pptxoperationspcvita
This presentation will help you understand the power of Microsoft 365. However, we have mentioned every productivity app included in Office 365. Additionally, we have suggested the migration situation related to Office 365 and how we can help you.
You can also read: https://www.systoolsgroup.com/updates/office-365-tenant-to-tenant-migration-step-by-step-complete-guide/
In the realm of cybersecurity, offensive security practices act as a critical shield. By simulating real-world attacks in a controlled environment, these techniques expose vulnerabilities before malicious actors can exploit them. This proactive approach allows manufacturers to identify and fix weaknesses, significantly enhancing system security.
This presentation delves into the development of a system designed to mimic Galileo's Open Service signal using software-defined radio (SDR) technology. We'll begin with a foundational overview of both Global Navigation Satellite Systems (GNSS) and the intricacies of digital signal processing.
The presentation culminates in a live demonstration. We'll showcase the manipulation of Galileo's Open Service pilot signal, simulating an attack on various software and hardware systems. This practical demonstration serves to highlight the potential consequences of unaddressed vulnerabilities, emphasizing the importance of offensive security practices in safeguarding critical infrastructure.
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...Alex Pruden
Folding is a recent technique for building efficient recursive SNARKs. Several elegant folding protocols have been proposed, such as Nova, Supernova, Hypernova, Protostar, and others. However, all of them rely on an additively homomorphic commitment scheme based on discrete log, and are therefore not post-quantum secure. In this work we present LatticeFold, the first lattice-based folding protocol based on the Module SIS problem. This folding protocol naturally leads to an efficient recursive lattice-based SNARK and an efficient PCD scheme. LatticeFold supports folding low-degree relations, such as R1CS, as well as high-degree relations, such as CCS. The key challenge is to construct a secure folding protocol that works with the Ajtai commitment scheme. The difficulty, is ensuring that extracted witnesses are low norm through many rounds of folding. We present a novel technique using the sumcheck protocol to ensure that extracted witnesses are always low norm no matter how many rounds of folding are used. Our evaluation of the final proof system suggests that it is as performant as Hypernova, while providing post-quantum security.
Paper Link: https://eprint.iacr.org/2024/257
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyScyllaDB
Freshworks creates AI-boosted business software that helps employees work more efficiently and effectively. Managing data across multiple RDBMS and NoSQL databases was already a challenge at their current scale. To prepare for 10X growth, they knew it was time to rethink their database strategy. Learn how they architected a solution that would simplify scaling while keeping costs under control.
Session 1 - Intro to Robotic Process Automation.pdfUiPathCommunity
👉 Check out our full 'Africa Series - Automation Student Developers (EN)' page to register for the full program:
https://bit.ly/Automation_Student_Kickstart
In this session, we shall introduce you to the world of automation, the UiPath Platform, and guide you on how to install and setup UiPath Studio on your Windows PC.
📕 Detailed agenda:
What is RPA? Benefits of RPA?
RPA Applications
The UiPath End-to-End Automation Platform
UiPath Studio CE Installation and Setup
💻 Extra training through UiPath Academy:
Introduction to Automation
UiPath Business Automation Platform
Explore automation development with UiPath Studio
👉 Register here for our upcoming Session 2 on June 20: Introduction to UiPath Studio Fundamentals: https://community.uipath.com/events/details/uipath-lagos-presents-session-2-introduction-to-uipath-studio-fundamentals/
The Department of Veteran Affairs (VA) invited Taylor Paschal, Knowledge & Information Management Consultant at Enterprise Knowledge, to speak at a Knowledge Management Lunch and Learn hosted on June 12, 2024. All Office of Administration staff were invited to attend and received professional development credit for participating in the voluntary event.
The objectives of the Lunch and Learn presentation were to:
- Review what KM ‘is’ and ‘isn’t’
- Understand the value of KM and the benefits of engaging
- Define and reflect on your “what’s in it for me?”
- Share actionable ways you can participate in Knowledge - - Capture & Transfer
Dandelion Hashtable: beyond billion requests per second on a commodity serverAntonios Katsarakis
This slide deck presents DLHT, a concurrent in-memory hashtable. Despite efforts to optimize hashtables, that go as far as sacrificing core functionality, state-of-the-art designs still incur multiple memory accesses per request and block request processing in three cases. First, most hashtables block while waiting for data to be retrieved from memory. Second, open-addressing designs, which represent the current state-of-the-art, either cannot free index slots on deletes or must block all requests to do so. Third, index resizes block every request until all objects are copied to the new index. Defying folklore wisdom, DLHT forgoes open-addressing and adopts a fully-featured and memory-aware closed-addressing design based on bounded cache-line-chaining. This design offers lock-free index operations and deletes that free slots instantly, (2) completes most requests with a single memory access, (3) utilizes software prefetching to hide memory latencies, and (4) employs a novel non-blocking and parallel resizing. In a commodity server and a memory-resident workload, DLHT surpasses 1.6B requests per second and provides 3.5x (12x) the throughput of the state-of-the-art closed-addressing (open-addressing) resizable hashtable on Gets (Deletes).
Must Know Postgres Extension for DBA and Developer during MigrationMydbops
Mydbops Opensource Database Meetup 16
Topic: Must-Know PostgreSQL Extensions for Developers and DBAs During Migration
Speaker: Deepak Mahto, Founder of DataCloudGaze Consulting
Date & Time: 8th June | 10 AM - 1 PM IST
Venue: Bangalore International Centre, Bangalore
Abstract: Discover how PostgreSQL extensions can be your secret weapon! This talk explores how key extensions enhance database capabilities and streamline the migration process for users moving from other relational databases like Oracle.
Key Takeaways:
* Learn about crucial extensions like oracle_fdw, pgtt, and pg_audit that ease migration complexities.
* Gain valuable strategies for implementing these extensions in PostgreSQL to achieve license freedom.
* Discover how these key extensions can empower both developers and DBAs during the migration process.
* Don't miss this chance to gain practical knowledge from an industry expert and stay updated on the latest open-source database trends.
Mydbops Managed Services specializes in taking the pain out of database management while optimizing performance. Since 2015, we have been providing top-notch support and assistance for the top three open-source databases: MySQL, MongoDB, and PostgreSQL.
Our team offers a wide range of services, including assistance, support, consulting, 24/7 operations, and expertise in all relevant technologies. We help organizations improve their database's performance, scalability, efficiency, and availability.
Contact us: info@mydbops.com
Visit: https://www.mydbops.com/
Follow us on LinkedIn: https://in.linkedin.com/company/mydbops
For more details and updates, please follow up the below links.
Meetup Page : https://www.meetup.com/mydbops-databa...
Twitter: https://twitter.com/mydbopsofficial
Blogs: https://www.mydbops.com/blog/
Facebook(Meta): https://www.facebook.com/mydbops/
The web started as static documents. Sure, there were links between those static documents, but for all intents and purposes you were essentially playing “choose your own adventure”. But this was still awesome.This is the first page on the internet ever. Created by Tim Berners-Lee while working at CERN.
Then, we decided that collecting information was a good idea as well. So web forms were created. These let the end users send information back to the server! A huge leap forward!In the worst case scenario, this was sending an email to someone with the form’s contents. In the best case scenario, it was firing up a CGI script, probably perl.As bad as that sounds, this was a huge step forward – all of a sudden we had programmatic access to a database. This meant recording user information, paging through data, user-based content, and so many more things that became the foundation for all web applications as we know them today. This was truly the start of the web application.
But it still kind of sucked. We used perl! It was basically a shell scripting language with above average string manipulation capabilities, it wasn’t a web language.So then PHP came along (1994). And ASP (1998). And JSP (1999). And so many more to fill the gap in web software development that Perl was temporarily filling.Their main focus was to make generating HTML on the server easier, and a lot of them achieved this using inline code annotations, like PHP’s <? Or ASP’s <%
All this was well and good, and definitely decreased the time required to push out a proper web application, but it was all on the server side. Until the v4 family of Netscape and IE, where JavaScript really came into its own on the client.Before v4, JavaScript really didn’t do much more than client-side form validation (which was valuable, saved expensive trips to the server), image rollovers (also important, improved the usability of the web), and annoying alert messages (no value at all)With v4, the Document Object Model / Dynamic HTML was introduced. All of a sudden the elements of a web page could be added to, removed, and modified, without requiring a complete page refresh and round trip from the web server back to the client. This was the technology that moved the web from static documents to actual applications… although not yet.
JavaScript kind of sucked back in the v4 days. While we did have this great new DOM/DHTML technology, we faced two entirely different implementations. As a result it was really time-consuming (read: expensive) to create a true client-side application that worked decently in all major browsers. This, and other reasons, really held back adoption of DOM/DHTML.For the same reasons, a little platform called Flash really started catching on. It was really the only way to provide any sort of experience above image rollovers in a consistent way. Consistency was the key – a dev could make one flash app and be relatively confident that it will perform the same in everyone’s browser, as long as they had flash installed. And who didn’t have flash installed by then?
Flash really pointed out a serious flaw in web development – a lack of consistency. It did this by simply fixing the problem itself. By providing that consistency on the development and design side, it really showed how powerful web applications could be.But then… enter the javascript library. Libraries like prototype, jquery, mootools, dojo, and more offered the one thing that everyone was looking for: cross-browser interoperability. By removing the need to write browser-checks and “lowest common denominator” code, developers could focus on application features and usability.
That’s not all thejavascript libraries brought… around the same time that the libraries really started to mature, the browsers released something called the XHttpRequest. Better known as Ajax, most web devs will say this is the single biggest thing to happen to web apps since the web form. The one biggest usability beef with the web – the complete page refresh with every server request – was finally addressed with Ajax.Now web devs and designers could create near-complete app experiences without reminding the end user that they’re on a website. And although each browser’s implementation of ajax was a little different, the libraries that devs were already used to using included cross-browser ajax capabilities. This further cemented javascript’s role in web development, as well as the dependencies on the javascript libraries.
As a side effect of all this javascript library development, browsers increased their support and performance for client-side development. Things that would’ve been impossible in v4 browsers were now commonplace on the new ajax-enabled web. Browsers stepped up their game by releasing vastly improved javascript engines, DOM debuggers, CSS manipulators, performance monitoring tools, and more.New browsers were released, like FireFox and Chrome, while other browsers like internet explorer, opera, and safari did their best to keep up to the competition.
Even though we had AJAX, developers were still used to generating HTML on the server, and that’s what a lot of them did. Server-side languages started developing ajax-enabling experiences such as ASP.NET’s UpdatePanel, which really were hacks to try to shoehorn traditional server-side techniques into this new and scary client-side ajax model.Meanwhile, a lot of Model-View-Controller patterns started to take center stage. MVC makes web development better by defining a clear separation of concerns between the model (database), view (HTML), and controller (input/output). Ruby on Rails, CakePHP, ASP.NET MVC, and many other server-side frameworks were created and enhanced to take advantage of this up-and-coming design pattern.
While all these great things in web development were going on, another use for the web started to emerge – web services. Web services provided a way for organizations to provide access to their data and services using a common communication protocol – HTTP, the web.The great thing about web services was that consumers of the service don’t need to know anything about the platform, object model, or programming language on the server – they just need to know how to HTTP, which almost every major programming language knows how to do.
So here we are today. There’s a few common themes we can draw from all this history. These include:Cross-platform is key. If a developer has to go out of their way to develop for your platform, either the platform is going to die or the toolset is going to die. This has been demonstrated in several forms, from DHTML adoption, the prevalence of Flash in the early web, and how JavaScript was basically ignored as a serious language until the js libraries came along.Separation of concerns is key. Adoption of the MVC design pattern by almost every major web development platform shows how separating the view logic from the data has improved both the quality of web applications, as well as the speed at which they can be developed.User experience is key. Most of the great new technologies in web development focus around and enable user experience in web applications – flash, ajax, js libraries, browser enhancements.Keeping these things in mind, what can we predict the future holds for the web application? I’ve got a few ideas on that I’d like to share.
MVC provides great benefit to your codebase, but it still keeps everything on the server. But as web devs we have really powerful browsers at our disposal. So a few smart people asked, “Why are we wasting server CPU cycles on generating HTML when we can make the browser do it?”Enter javascript MVC. Javascript MVC takes all the responsibility of handling the HTML and input/output and puts it on the client, leaving your web server responsible for one of two things – serving static content (html, js, css, media, etc.), and serving data through web services.All the traditional components of web MVC are there – there are template views, routes, ways to handle form submission and input events, and separation of the model from the view logic. The best part is this all happens on the browser; the software who’s primary responsibility is to show and manipulate the document object model.So then your web server is left serving static content, like the template HTML and your application’s javascript, and hosting web services that are responsible for all the create/recall/update/delete operations on your data. And a pleasant side effect of this is you have a web service! Creating a website using javascript MVC means you have an API that you can easily tack a mobile web / native app / desktop app to without having to rewrite any of your backend.
Another thing to note is hosting-as-a-service platforms that are emerging. There has been a real shift in the last year or two from hosted virtual servers and manually managed LAMP (linux apache mysqlphp) or IIS hosts to “automated” hosting solutions. One of my favorites is Heroku, a cloud-based PAAS platform that basically just asks for your code and deploys it for you. But Heroku isn’t the newest player to the game by any means. Amazon has been in the cloud-hosting space for awhile now, Microsoft’s Azure offerings are becoming much more usable and affordable for the average developer. There are several PAAS services for node.js, asp.net, ruby on rails, and other platforms as well. These services basically remove the need for server maintenance from a developer perspective, allowing devs to just focus on the app instead of the installation of the app.The best thing is these platforms easily scale and perform, based on your application’s requirements, on the fly with little to no input from you, the developer. If your web app suddenly goes viral, in most cases it’s as easy as adjusting a dial to requisition another server to handle the increased load.
Of course, we can’t talk about web apps without mentioning “HTML5”. Some of the “up and coming” features of this platform will really take web apps to the next level, once browsers can decide on a standard way of implementing them.Key features of HTML5 that will take apps to the next level include web workers (a way of running async processes on the browser), canvas (a GPU-powered blank slate, used by many online games), local storage (a way for apps to store data locally in better ways than cookies ever provided), geolocation (figuring out where the user currently is on earth to provide location-based services), and web sockets (socket-based communication after a web page has loaded)While a few of these things are still a little flakey in some browsers, the best part is the community has created “polyfills” for most of them – ways to substitute browser functionality with javascript plugins, flash, or other tools to get the same functionality with the same API. Once the browsers finally decide on a standard, you can simply remove the polyfill (or not, it will automatically use the browser) and not have to rewrite your code (for the most part)
And of course, mobile web. With the proliferation of smartphones with web browsing capabilities, it has become increasingly important to customize web applications to be “mobile-friendly”. Luckily, a lot of frameworks and tools have stepped in to fill this gap.To start with, CSS and HTML themselves have come along way with media queries and mobile specific web elements. I have to say once the mobile web browser took off, that’s possibly the fastest I’ve ever seen something become standard in CSS or HTML. You can use things like media queries to style your web app a specific way based on mobile format or layout, insert HTML meta elements to control how a mobile browser will interact with the page, and create mobile-friendly form elements to easy data entry from a virtual keyboard.On top of that, as mobile browsers have become more advanced, so have javascript frameworks to take advantage of them. Libraries like jQuery Mobile, Titanium, PhoneGap, and Sencha Touch provide mobile web app developers ways to create cross-device consistent apps and also a way to interact with the hardware as well.
In conclusion, there’s a lot of exciting things going on in the web app space, and it’s not going to slow down anytime soon. With new tools focused around making app development and deployment easier, and new functionality to improve the user experience of web apps.