The document discusses building user interfaces with Dart. It begins by comparing building UIs with JavaScript, Java, and GWT. It then shows how to build a table component programmatically in GWT. Next, it demonstrates how to build the same table in Dart using fewer lines of code. The document proceeds to provide an overview of Dart and its ecosystem. It discusses building object hierarchies and rendering them to the DOM in an "old-fashioned" way using strings. It introduces the idea of reusable components and recursive patterns. It demonstrates implementing a reusable Tree component in Dart using accessors and configurations.
Dart, le nouveau langage Web de Google présenté au public en octobre 2011 a pour objectif de proposer une alternative au JavaScript.
Bien que la version finale ne soit pas encore disponible (pour cela il faudra attendre cet été), Dart est utilisable dès aujourd'hui.
Au cours de cette présentation sont introduits les éléments suivants :
- comment Dart permet de développer des applications clientes aussi bien que serveurs,
- le langage,
- les outils permettant un développement industrialisé et une productivité accrue.
Criterion of functional fullness in many-valued logicIJRES Journal
Using Slupecki’s criterion of functional fullness we give very simple proof of Jablonskij’s criterion. Then using
Jablonskij’s criterion we get criterion of minimal closed sets: a subset of functions of Pk ( k2 ) is full in k P , if
it contains a non-fictitious two-ary function taking all values and functions of minimal closed sets of some type.
The criterion is very useful. In particular, Slupecki’s criterion uses 27 functions, Jablonskij’s criterion uses 21
functions, the criterion of minimal closed sets uses 3 functions in 3-valued logic. The criteria use 255, 231, 6
functions in 4-valued logic respectively and 3125, 3005, 10 functions in 5-valued logic.
Modul untuk Praktikum Pengolahan Database di Java dengan menggunakan konsep OOP Mata Pelajaran Pemrograman Internet dengan Java-JSP SMK Telkom Sandhy Putra Malang
Breakout Session 14: Transit Travel Training: Recommended Best Practices
2015 Traffic Safety Conference
by Kendra Bullard, Manager of Travel Ambassador Program and Administration, DART
Dart, le nouveau langage Web de Google présenté au public en octobre 2011 a pour objectif de proposer une alternative au JavaScript.
Bien que la version finale ne soit pas encore disponible (pour cela il faudra attendre cet été), Dart est utilisable dès aujourd'hui.
Au cours de cette présentation sont introduits les éléments suivants :
- comment Dart permet de développer des applications clientes aussi bien que serveurs,
- le langage,
- les outils permettant un développement industrialisé et une productivité accrue.
Criterion of functional fullness in many-valued logicIJRES Journal
Using Slupecki’s criterion of functional fullness we give very simple proof of Jablonskij’s criterion. Then using
Jablonskij’s criterion we get criterion of minimal closed sets: a subset of functions of Pk ( k2 ) is full in k P , if
it contains a non-fictitious two-ary function taking all values and functions of minimal closed sets of some type.
The criterion is very useful. In particular, Slupecki’s criterion uses 27 functions, Jablonskij’s criterion uses 21
functions, the criterion of minimal closed sets uses 3 functions in 3-valued logic. The criteria use 255, 231, 6
functions in 4-valued logic respectively and 3125, 3005, 10 functions in 5-valued logic.
Modul untuk Praktikum Pengolahan Database di Java dengan menggunakan konsep OOP Mata Pelajaran Pemrograman Internet dengan Java-JSP SMK Telkom Sandhy Putra Malang
Breakout Session 14: Transit Travel Training: Recommended Best Practices
2015 Traffic Safety Conference
by Kendra Bullard, Manager of Travel Ambassador Program and Administration, DART
Part 1 - Introduction à Dart
Dart s'inscrit dans la mouvance des frameworks JavaScript (Node.js, Backbone, AngularJS, etc,) et des langages compilés en JavaScript (CoffeeScript, TypeScipt, etc.) dans l'objectif de faciliter le développement Web.
Les applications Web sont depuis quelques années le type d'application privilégié des développeurs. Néanmoins, les outils que nous possédions jusqu'à très récemment n'étaient absolument pas adaptés au monde professionnel.
Dart offre la possibilité de développer, dans un langage structuré et objet, des applications clients et serveurs, et ceci en un temps record.
Mais Dart n'est pas seulement un langage c'est aussi tout un écosystème au service de l'industrialisation.
Au cours de cette présentation nous verrons :
• comment Dart permet de développer des applications clientes aussi bien que serveurs,
• quelques éléments du langage,
• mais aussi les outils permettant un développement industrialisé et une productivité accrue
Durée : 45min/1h
Part 2 - Live Coding - Développer une application à page unique en Dart
Bien que la version finale de Dart ne soit pas encore disponible (pour cela il faudra attendre cet été), il est utilisable dès aujourd'hui. Et c'est ce que nous verrons au cours de cette deuxième partie en nous appuyant sur une application simple.
Durée : 45min/1h
Dart, le nouveau langage Web de Google présenté au public en octobre 2011 a pour objectif de proposer une alternative au JavaScript.
Bien que la version finale ne soit pas encore disponible (pour cela il faudra attendre cet été), Dart est utilisable dès aujourd'hui.
Au cours de cette présentation nous verrons :
comment Dart permet de développer des applications clientes aussi bien que serveurs,
quelques éléments du langage,
mais aussi les outils permettant un développement industrialisé et une productivité accrue.
Slides from my talk at the Junction (Jan 24, 2013)
Single-core performance has hit a ceiling, and building web-scale multi-core applications using imperative programming models is nightmarishly difficult. Parallel programming creates a new set of challenges, best practices and design patterns. Scala is designed to enable building scalable systems, elegantly blending functional and object oriented paradigms into an expressive and concise language, while retaining interoperability with Java. Scala is the fastest growing JVM programming language, being rapidly adopted by leading companies such as Twitter, LinkedIn and FourSquare.
This presentation provides a comprehensive overview of the language, which managed to increase type safety while feeling more dynamic, being more concise and improving readability at the same time. We will see how Scala simplifies real life problems by empowering the developer with powerful functional programming primitives, without giving up on the object oriented paradigm. The overview includes tools for multi-core programming in Scala, the type system, collection framework and domain-specific languages. We’ll explore the power of compile-time meta-programming, which is made possible by the newly released Scala 2.10, and get a glimpse into what to expect from 2.11 in 2014.
We will also see how Scala helps overcome the inherent limitations of Java, such as type erasure, array covariance and boxing overhead.
Multiple examples emphasize how Scala pushes the JVM harder than any other mainstream language through the infinite number of boilerplate busters, increased type safety and productivity boosters from a Java developer’s perspective.
This is a rapid fire talk that outline some of the issues around multithreaded code, some of the tools you can use to test it and how best to spend your resources doing so
While Google is adding Kotlin as an official Android language, we're also expanding our research on this language. It’s developed by JetBrains, and the fact that these are the people behind a suite of IDEs, such as IntelliJ and ReSharper, really shines through in Kotlin. It’s pragmatic and concise and makes coding a satisfying and efficient experience.
Although Kotlin compiles to both JavaScript and soon machine code, I’ll focus on its prime environment, the JVM.
Please see my presentation to learn more!
Kotlin for Android Developers - Victor Kropp - Codemotion Rome 2018Codemotion
Kotlin is a programming language developed by JetBrains that targets multiple platforms including the JVM, JavaScript, and native binaries. A year ago it has been adopted as an officially supported language for Android development. Kotlin offers clean and concise syntax, interoperability, both object-oriented and functional code constructs, and a lot of other cool features with little or no overhead. Let's find out together why developers love this language and how it helps them to be productive and have fun!
Ejemplo de integración de un analizador léxico (lexer) y un analizador sintáctico (parser) implementados en JLex y CUP. Fuente: http://www.cis.uab.edu/courses/cs602/
2012 yılında, o sırada gerçekleştireceğiniz bir projede hangi dili kullanacağımız konusunda kararsız kalmıştık. Ben Python yanlısıydım ve görüşümü desteklemek için Java ve Python'u yapısal ve performans olarak kıyaslayan nu sunumu hazırlamıştım. Benzer kararsızlıklar yaşayanlara faydalı olmasını umuyorum.
Kotlin Perfomance on Android / Александр Смирнов (Splyt)Ontico
РИТ++ 2017, AppsConf
Зал Касабланка, 6 июня, 14:00
Тезисы:
http://appsconf.ru/2017/abstracts/2816.html
В докладе рассмотрим цену использования Kotlin в Runtime, обсудим варианты, как улучшить картину мира. Смотреть будем с точки зрения производительности, синхронно углубляясь в особенности Android, а также подумаем, как можно использовать получившийся байткод.
В докладе срыв подкапотных оптимизаций, байткод и цифры, которые покажут, насколько сильно вам смогут помочь все указанные оптимизации.
Pragmatic functional refactoring with java 8 (1)RichardWarburton
You may be hearing a lot of buzz around functional programming. For example, Java 8 recently introduced new features (lambda expressions and method references) and APIs (Streams, Optional and CompletableFutures) inspired from functional ideas such as first-class functions, composition and immutability.
However, what does this mean for my existing codebase?
In this talk we show how you can refactor your traditional object-oriented Java to using FP features and APIs from Java 8 in a beneficial manner.
We will discuss:
* How to adapt to requirement changes using first-class functions
* How you can enhance code reusability using currying
* How you can make your code more robust by favouring immutability over mutability
* How you can design better APIs and reduce unintended null pointer exceptions using an optional data type
Kotlin is a cross-platform, statically typed, general-purpose programming language with type inference. Kotlin is designed to interoperate fully with Java, and the JVM version of Kotlin's standard library depends on the Java Class Library, but type inference allows its syntax to be more concise.
The event will be led by Zoltan Domahidi (Senior Kotlin Software Engineer at Magyar Telekom).
You may be hearing a lot of buzz around functional programming. For example, Java 8 recently introduced new features (lambda expressions and method references) and APIs (Streams, Optional and CompletableFutures) inspired from functional ideas such as first-class functions, composition and immutability.
However, what does this mean for my existing codebase?
In this talk we show how you can refactor your traditional object-oriented Java to using FP features and APIs from Java 8 in a beneficial manner.
We will discuss:
- How to adapt to requirement changes using first-class functions
- How you can enhance code reusability using currying
- How you can make your code more robust by favouring immutability over mutability
- How you can design better APIs and reduce unintended null pointer exceptions using an optional data type"
Laziness, trampolines, monoids and other functional amenities: this is not yo...Codemotion
by Mario Fusco - Lambdas are the main feature introduced with Java 8, but the biggest part of Java developers are still not very familliar with the most common functional idioms and patterns. The purpose of this talk is presenting with practical examples concepts like high-order functions, currying, functions composition, persistent data structures, lazy evaluation, recursion, trampolines and monoids showing how to implement them in Java and how thinking functionally can help us to design and develop more readable, reusable, performant, parallelizable and in a word better, code.
VoxxedDays LU 2016 - Thoughtworks Go - Continuous Deployment made easy and freeyohanbeschi
ThoughtWorks, a company specialized in agile software development which employs people like Martin Fowler or Jez Humble (some would say "Two agile Gurus") and works on products like CruiseControl or Selenium, made their Continuous Delivery (CD) Platform, called Go, free and Open Source. During this talk we'll define what a CD pipeline is, and why Go make our life easier to build these pipelines compared to Continuous Integration servers twisted to become CD orchestrators.
Part 1 - Introduction à Dart
Dart s'inscrit dans la mouvance des frameworks JavaScript (Node.js, Backbone, AngularJS, etc,) et des langages compilés en JavaScript (CoffeeScript, TypeScipt, etc.) dans l'objectif de faciliter le développement Web.
Les applications Web sont depuis quelques années le type d'application privilégié des développeurs. Néanmoins, les outils que nous possédions jusqu'à très récemment n'étaient absolument pas adaptés au monde professionnel.
Dart offre la possibilité de développer, dans un langage structuré et objet, des applications clients et serveurs, et ceci en un temps record.
Mais Dart n'est pas seulement un langage c'est aussi tout un écosystème au service de l'industrialisation.
Au cours de cette présentation nous verrons :
• comment Dart permet de développer des applications clientes aussi bien que serveurs,
• quelques éléments du langage,
• mais aussi les outils permettant un développement industrialisé et une productivité accrue
Durée : 45min/1h
Part 2 - Live Coding - Développer une application à page unique en Dart
Bien que la version finale de Dart ne soit pas encore disponible (pour cela il faudra attendre cet été), il est utilisable dès aujourd'hui. Et c'est ce que nous verrons au cours de cette deuxième partie en nous appuyant sur une application simple.
Durée : 45min/1h
Dart, le nouveau langage Web de Google présenté au public en octobre 2011 a pour objectif de proposer une alternative au JavaScript.
Bien que la version finale ne soit pas encore disponible (pour cela il faudra attendre cet été), Dart est utilisable dès aujourd'hui.
Au cours de cette présentation nous verrons :
comment Dart permet de développer des applications clientes aussi bien que serveurs,
quelques éléments du langage,
mais aussi les outils permettant un développement industrialisé et une productivité accrue.
Slides from my talk at the Junction (Jan 24, 2013)
Single-core performance has hit a ceiling, and building web-scale multi-core applications using imperative programming models is nightmarishly difficult. Parallel programming creates a new set of challenges, best practices and design patterns. Scala is designed to enable building scalable systems, elegantly blending functional and object oriented paradigms into an expressive and concise language, while retaining interoperability with Java. Scala is the fastest growing JVM programming language, being rapidly adopted by leading companies such as Twitter, LinkedIn and FourSquare.
This presentation provides a comprehensive overview of the language, which managed to increase type safety while feeling more dynamic, being more concise and improving readability at the same time. We will see how Scala simplifies real life problems by empowering the developer with powerful functional programming primitives, without giving up on the object oriented paradigm. The overview includes tools for multi-core programming in Scala, the type system, collection framework and domain-specific languages. We’ll explore the power of compile-time meta-programming, which is made possible by the newly released Scala 2.10, and get a glimpse into what to expect from 2.11 in 2014.
We will also see how Scala helps overcome the inherent limitations of Java, such as type erasure, array covariance and boxing overhead.
Multiple examples emphasize how Scala pushes the JVM harder than any other mainstream language through the infinite number of boilerplate busters, increased type safety and productivity boosters from a Java developer’s perspective.
This is a rapid fire talk that outline some of the issues around multithreaded code, some of the tools you can use to test it and how best to spend your resources doing so
While Google is adding Kotlin as an official Android language, we're also expanding our research on this language. It’s developed by JetBrains, and the fact that these are the people behind a suite of IDEs, such as IntelliJ and ReSharper, really shines through in Kotlin. It’s pragmatic and concise and makes coding a satisfying and efficient experience.
Although Kotlin compiles to both JavaScript and soon machine code, I’ll focus on its prime environment, the JVM.
Please see my presentation to learn more!
Kotlin for Android Developers - Victor Kropp - Codemotion Rome 2018Codemotion
Kotlin is a programming language developed by JetBrains that targets multiple platforms including the JVM, JavaScript, and native binaries. A year ago it has been adopted as an officially supported language for Android development. Kotlin offers clean and concise syntax, interoperability, both object-oriented and functional code constructs, and a lot of other cool features with little or no overhead. Let's find out together why developers love this language and how it helps them to be productive and have fun!
Ejemplo de integración de un analizador léxico (lexer) y un analizador sintáctico (parser) implementados en JLex y CUP. Fuente: http://www.cis.uab.edu/courses/cs602/
2012 yılında, o sırada gerçekleştireceğiniz bir projede hangi dili kullanacağımız konusunda kararsız kalmıştık. Ben Python yanlısıydım ve görüşümü desteklemek için Java ve Python'u yapısal ve performans olarak kıyaslayan nu sunumu hazırlamıştım. Benzer kararsızlıklar yaşayanlara faydalı olmasını umuyorum.
Kotlin Perfomance on Android / Александр Смирнов (Splyt)Ontico
РИТ++ 2017, AppsConf
Зал Касабланка, 6 июня, 14:00
Тезисы:
http://appsconf.ru/2017/abstracts/2816.html
В докладе рассмотрим цену использования Kotlin в Runtime, обсудим варианты, как улучшить картину мира. Смотреть будем с точки зрения производительности, синхронно углубляясь в особенности Android, а также подумаем, как можно использовать получившийся байткод.
В докладе срыв подкапотных оптимизаций, байткод и цифры, которые покажут, насколько сильно вам смогут помочь все указанные оптимизации.
Pragmatic functional refactoring with java 8 (1)RichardWarburton
You may be hearing a lot of buzz around functional programming. For example, Java 8 recently introduced new features (lambda expressions and method references) and APIs (Streams, Optional and CompletableFutures) inspired from functional ideas such as first-class functions, composition and immutability.
However, what does this mean for my existing codebase?
In this talk we show how you can refactor your traditional object-oriented Java to using FP features and APIs from Java 8 in a beneficial manner.
We will discuss:
* How to adapt to requirement changes using first-class functions
* How you can enhance code reusability using currying
* How you can make your code more robust by favouring immutability over mutability
* How you can design better APIs and reduce unintended null pointer exceptions using an optional data type
Kotlin is a cross-platform, statically typed, general-purpose programming language with type inference. Kotlin is designed to interoperate fully with Java, and the JVM version of Kotlin's standard library depends on the Java Class Library, but type inference allows its syntax to be more concise.
The event will be led by Zoltan Domahidi (Senior Kotlin Software Engineer at Magyar Telekom).
You may be hearing a lot of buzz around functional programming. For example, Java 8 recently introduced new features (lambda expressions and method references) and APIs (Streams, Optional and CompletableFutures) inspired from functional ideas such as first-class functions, composition and immutability.
However, what does this mean for my existing codebase?
In this talk we show how you can refactor your traditional object-oriented Java to using FP features and APIs from Java 8 in a beneficial manner.
We will discuss:
- How to adapt to requirement changes using first-class functions
- How you can enhance code reusability using currying
- How you can make your code more robust by favouring immutability over mutability
- How you can design better APIs and reduce unintended null pointer exceptions using an optional data type"
Laziness, trampolines, monoids and other functional amenities: this is not yo...Codemotion
by Mario Fusco - Lambdas are the main feature introduced with Java 8, but the biggest part of Java developers are still not very familliar with the most common functional idioms and patterns. The purpose of this talk is presenting with practical examples concepts like high-order functions, currying, functions composition, persistent data structures, lazy evaluation, recursion, trampolines and monoids showing how to implement them in Java and how thinking functionally can help us to design and develop more readable, reusable, performant, parallelizable and in a word better, code.
Similar to Dart - web_ui & Programmatic components - Paris JUG - 20130409 (20)
VoxxedDays LU 2016 - Thoughtworks Go - Continuous Deployment made easy and freeyohanbeschi
ThoughtWorks, a company specialized in agile software development which employs people like Martin Fowler or Jez Humble (some would say "Two agile Gurus") and works on products like CruiseControl or Selenium, made their Continuous Delivery (CD) Platform, called Go, free and Open Source. During this talk we'll define what a CD pipeline is, and why Go make our life easier to build these pipelines compared to Continuous Integration servers twisted to become CD orchestrators.
A workshop hosted by the South African Journal of Science aimed at postgraduate students and early career researchers with little or no experience in writing and publishing journal articles.
Biological screening of herbal drugs: Introduction and Need for
Phyto-Pharmacological Screening, New Strategies for evaluating
Natural Products, In vitro evaluation techniques for Antioxidants, Antimicrobial and Anticancer drugs. In vivo evaluation techniques
for Anti-inflammatory, Antiulcer, Anticancer, Wound healing, Antidiabetic, Hepatoprotective, Cardio protective, Diuretics and
Antifertility, Toxicity studies as per OECD guidelines
How to Make a Field invisible in Odoo 17Celine George
It is possible to hide or invisible some fields in odoo. Commonly using “invisible” attribute in the field definition to invisible the fields. This slide will show how to make a field invisible in odoo 17.
Operation “Blue Star” is the only event in the history of Independent India where the state went into war with its own people. Even after about 40 years it is not clear if it was culmination of states anger over people of the region, a political game of power or start of dictatorial chapter in the democratic setup.
The people of Punjab felt alienated from main stream due to denial of their just demands during a long democratic struggle since independence. As it happen all over the word, it led to militant struggle with great loss of lives of military, police and civilian personnel. Killing of Indira Gandhi and massacre of innocent Sikhs in Delhi and other India cities was also associated with this movement.
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...Levi Shapiro
Letter from the Congress of the United States regarding Anti-Semitism sent June 3rd to MIT President Sally Kornbluth, MIT Corp Chair, Mark Gorenberg
Dear Dr. Kornbluth and Mr. Gorenberg,
The US House of Representatives is deeply concerned by ongoing and pervasive acts of antisemitic
harassment and intimidation at the Massachusetts Institute of Technology (MIT). Failing to act decisively to ensure a safe learning environment for all students would be a grave dereliction of your responsibilities as President of MIT and Chair of the MIT Corporation.
This Congress will not stand idly by and allow an environment hostile to Jewish students to persist. The House believes that your institution is in violation of Title VI of the Civil Rights Act, and the inability or
unwillingness to rectify this violation through action requires accountability.
Postsecondary education is a unique opportunity for students to learn and have their ideas and beliefs challenged. However, universities receiving hundreds of millions of federal funds annually have denied
students that opportunity and have been hijacked to become venues for the promotion of terrorism, antisemitic harassment and intimidation, unlawful encampments, and in some cases, assaults and riots.
The House of Representatives will not countenance the use of federal funds to indoctrinate students into hateful, antisemitic, anti-American supporters of terrorism. Investigations into campus antisemitism by the Committee on Education and the Workforce and the Committee on Ways and Means have been expanded into a Congress-wide probe across all relevant jurisdictions to address this national crisis. The undersigned Committees will conduct oversight into the use of federal funds at MIT and its learning environment under authorities granted to each Committee.
• The Committee on Education and the Workforce has been investigating your institution since December 7, 2023. The Committee has broad jurisdiction over postsecondary education, including its compliance with Title VI of the Civil Rights Act, campus safety concerns over disruptions to the learning environment, and the awarding of federal student aid under the Higher Education Act.
• The Committee on Oversight and Accountability is investigating the sources of funding and other support flowing to groups espousing pro-Hamas propaganda and engaged in antisemitic harassment and intimidation of students. The Committee on Oversight and Accountability is the principal oversight committee of the US House of Representatives and has broad authority to investigate “any matter” at “any time” under House Rule X.
• The Committee on Ways and Means has been investigating several universities since November 15, 2023, when the Committee held a hearing entitled From Ivory Towers to Dark Corners: Investigating the Nexus Between Antisemitism, Tax-Exempt Universities, and Terror Financing. The Committee followed the hearing with letters to those institutions on January 10, 202
Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...Dr. Vinod Kumar Kanvaria
Exploiting Artificial Intelligence for Empowering Researchers and Faculty,
International FDP on Fundamentals of Research in Social Sciences
at Integral University, Lucknow, 06.06.2024
By Dr. Vinod Kumar Kanvaria
2024.06.01 Introducing a competency framework for languag learning materials ...Sandy Millin
http://sandymillin.wordpress.com/iateflwebinar2024
Published classroom materials form the basis of syllabuses, drive teacher professional development, and have a potentially huge influence on learners, teachers and education systems. All teachers also create their own materials, whether a few sentences on a blackboard, a highly-structured fully-realised online course, or anything in between. Despite this, the knowledge and skills needed to create effective language learning materials are rarely part of teacher training, and are mostly learnt by trial and error.
Knowledge and skills frameworks, generally called competency frameworks, for ELT teachers, trainers and managers have existed for a few years now. However, until I created one for my MA dissertation, there wasn’t one drawing together what we need to know and do to be able to effectively produce language learning materials.
This webinar will introduce you to my framework, highlighting the key competencies I identified from my research. It will also show how anybody involved in language teaching (any language, not just English!), teacher training, managing schools or developing language learning materials can benefit from using the framework.
Synthetic Fiber Construction in lab .pptxPavel ( NSTU)
Synthetic fiber production is a fascinating and complex field that blends chemistry, engineering, and environmental science. By understanding these aspects, students can gain a comprehensive view of synthetic fiber production, its impact on society and the environment, and the potential for future innovations. Synthetic fibers play a crucial role in modern society, impacting various aspects of daily life, industry, and the environment. ynthetic fibers are integral to modern life, offering a range of benefits from cost-effectiveness and versatility to innovative applications and performance characteristics. While they pose environmental challenges, ongoing research and development aim to create more sustainable and eco-friendly alternatives. Understanding the importance of synthetic fibers helps in appreciating their role in the economy, industry, and daily life, while also emphasizing the need for sustainable practices and innovation.
A Strategic Approach: GenAI in EducationPeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
Read| The latest issue of The Challenger is here! We are thrilled to announce that our school paper has qualified for the NATIONAL SCHOOLS PRESS CONFERENCE (NSPC) 2024. Thank you for your unwavering support and trust. Dive into the stories that made us stand out!
3. Building UIs - Javascript ?
2013-04-15 Building UIs with Dart 3
4. Building UIs - Java ?
2013-04-15 Building UIs with Dart 4
5. Building UIs with Java - But how ?
2013-04-15 Building UIs with Dart 5
6. Programmatic Components with GWT
CellTable<User> table = new CellTable<User>(); }
});
TextColumn<User> idColumn = new TextColumn<User>() { columnSortHandler.setComparator(firstNameColumn,
@Override new Comparator<Tester.User>() {
public String getValue(User user) { public int compare(User o1, User o2) {
return user.id; if (o1 == o2) {
} return 0;
}; }
TextColumn<User> firstNameColumn = new TextColumn<User>() { if (o1 != null) {
@Override return (o2 != null) ? o1.firstName.compareTo(o2.firstName) : 1;
public String getValue(User user) { }
return user.firstName; return -1;
} }
}; });
columnSortHandler.setComparator(lasteNameColumn,
TextColumn<User> lastNameColumn = new TextColumn<User>() { new Comparator<Tester.User>() {
@Override public int compare(User o1, User o2) {
public String getValue(User user) { if (o1 == o2) {
return user.lastName; return 0;
} }
};
if (o1 != null) {
TextColumn<User> ageColumn = new TextColumn<User>() { return (o2 != null) ? o1.lasteName.compareTo(o2.lasteName) : 1;
@Override }
public String getValue(User user) { return -1;
return user.age; }
} });
}; columnSortHandler.setComparator(ageColumn,
new Comparator<Tester.User>() {
idColumn.setSortable(true); public int compare(User o1, User o2) {
firstNameColumn.setSortable(true); if (o1 == o2) {
lastNameColumn.setSortable(true); return 0;
ageColumn.setSortable(true); }
table.addColumn(idColumn, "ID"); if (o1 != null) {
table.addColumn(firstNameColumn, "First name"); return (o2 != null) ? o1.age.compareTo(o2.age) : 1;
table.addColumn(lastNameColumn, "Lats name"); }
table.addColumn(ageColumn, "Age"); return -1;
}
ListDataProvider<User> dataProvider = new ListDataProvider<User>(); });
dataProvider.addDataDisplay(table); table.addColumnSortHandler(columnSortHandler);
table.getColumnSortList().push(firstNameColumn);
List<User> list = dataProvider.getList();
for (User user : USERS) {
list.add(user);
}
ListHandler<User> columnSortHandler = new ListHandler<Tester.User>(list);
columnSortHandler.setComparator(idColumn,
new Comparator<Tester.User>() {
public int compare(User o1, User o2) {
if (o1 == o2) {
return 0;
}
if (o1 != null) {
return (o2 != null) ? o1.id.compareTo(o2.id) : 1;
}
return -1;
2013-04-15 Building UIs with Dart 6
7. Programmatic Components with GWT
CellTable<User> table = new CellTable<User>(); }
});
TextColumn<User> idColumn = new TextColumn<User>() { columnSortHandler.setComparator(firstNameColumn,
@Override new Comparator<Tester.User>() {
public String getValue(User user) { public int compare(User o1, User o2) {
return user.id; if (o1 == o2) {
} return 0;
}; }
TextColumn<User> firstNameColumn = new TextColumn<User>() { if (o1 != null) {
@Override return (o2 != null) ? o1.firstName.compareTo(o2.firstName) : 1;
public String getValue(User user) { }
return user.firstName; return -1;
} }
}; });
columnSortHandler.setComparator(lasteNameColumn,
TextColumn<User> lastNameColumn = new TextColumn<User>() { new Comparator<Tester.User>() {
@Override public int compare(User o1, User o2) {
public String getValue(User user) { if (o1 == o2) {
return user.lastName; return 0;
} }
};
if (o1 != null) {
TextColumn<User> ageColumn = new TextColumn<User>() { return (o2 != null) ? o1.lasteName.compareTo(o2.lasteName) : 1;
@Override }
public String getValue(User user) { return -1;
return user.age; }
} });
}; columnSortHandler.setComparator(ageColumn,
new Comparator<Tester.User>() {
idColumn.setSortable(true); public int compare(User o1, User o2) {
firstNameColumn.setSortable(true); if (o1 == o2) {
lastNameColumn.setSortable(true); return 0;
ageColumn.setSortable(true); }
table.addColumn(idColumn, "ID"); if (o1 != null) {
table.addColumn(firstNameColumn, "First name"); return (o2 != null) ? o1.age.compareTo(o2.age) : 1;
table.addColumn(lastNameColumn, "Lats name"); }
table.addColumn(ageColumn, "Age"); return -1;
}
ListDataProvider<User> dataProvider = new ListDataProvider<User>(); });
dataProvider.addDataDisplay(table); table.addColumnSortHandler(columnSortHandler);
table.getColumnSortList().push(firstNameColumn);
List<User> list = dataProvider.getList();
for (User user : USERS) {
list.add(user);
}
ListHandler<User> columnSortHandler = new ListHandler<Tester.User>(list);
columnSortHandler.setComparator(idColumn,
new Comparator<Tester.User>() {
public int compare(User o1, User o2) {
if (o1 == o2) {
return 0;
}
if (o1 != null) {
return (o2 != null) ? o1.id.compareTo(o2.id) : 1;
}
return -1;
2013-04-15 Building UIs with Dart 7
8. The Dart Way
Table<User> table = new Table (sorting:true)
..addColumn('ID', new TextCell((User o) => o.id))
..addColumn('First name', new TextCell((User o) => o.firstName))
..addColumn('Last name', new TextCell((User o) => o.lastName))
..addColumn('Age', new TextCell((User o) => o.age))
..setData(objs);
2013-04-15 Building UIs with Dart 8
9. The Dart Way
Table<User> table = new Table (sorting:true)
..addColumn('ID', new TextCell((User o) => o.id))
..addColumn('First name', new TextCell((User o) => o.firstName))
..addColumn('Last name', new TextCell((User o) => o.lastName))
..addColumn('Age', new TextCell((User o) => o.age))
..setData(objs);
6 lines
2013-04-15 Building UIs with Dart 9
10. Dart in few words
⦿ Language
⦿ Object Oriented
⦿ Optionaly typed
⦿ Top-level functions
⦿ Functions as First-Class Objects
⦿ Ecosystem
⦿ Client VM => Dartium
⦿ Server VM
⦿ Dart2js
⦿ DartEditor
⦿ Pub
⦿ DartDoc
2013-04-15 Building UIs with Dart 10
15. The Old-Fashioned Way
void main() {
String tree = '<ul>';
for (School school in schools) {
tree += '<li>${school.schoolName}';
// Grades
tree += '</li>';
}
tree += '</ul>';
query('body').insertAdjacentHtml('afterBegin', tree);
}
2013-04-15 Building UIs with Dart 15
16. The Old-Fashioned Way
var grades = school.grades;
if (grades != null) {
tree += '<ul>';
for (Grade grade in grades) {
tree += '<li>${grade.schoolGrade}';
// Students
tree += '</li>';
}
tree += '</ul>';
}
2013-04-15 Building UIs with Dart 16
17. The Old-Fashioned Way
var students = grade.students;
if (students != null) {
tree += '<ul>';
for (Student student in students) {
tree +=
'<li>${student.firstname} ${student.lastname}</li>';
}
tree += '</ul>';
}
2013-04-15 Building UIs with Dart 17
18. The Old-Fashioned Way
void main() { tree += '</ul>';
String tree = '<ul>'; }
for (School school in schools) { tree += '</li>';
tree += '<li>${school.schoolName}'; }
var grades = school.grades; tree += '</ul>';
if (grades != null) {
tree += '<ul>'; query('body')
.insertAdjacentHtml('afterBegin', tree);
for (Grade grade in grades) { }
tree += '<li>${grade.schoolGrade}';
var students = grade.students;
if (students != null) {
tree += '<ul>';
for (Student student in students) {
tree += '<li>${student.firstname}
${student.lastname}</li>';
}
tree += '</ul>';
}
tree += '</li>';
}
2013-04-15 Building UIs with Dart 18
20. Is there a pattern here ?
var grades = school.grades;
if (grades != null) {
tree += '<ul>';
for (Grade grade in grades) {
tree += '<li>${grade.schoolGrade}';
// Students
tree += '</li>';
}
tree += '</ul>';
}
2013-04-15 Building UIs with Dart 20
21. Is there a pattern here ?
var grades = school.grades;
if (grades != null) {
tree += '<ul>';
tree += '</ul>';
}
2013-04-15 Building UIs with Dart 21
22. Is there a pattern here ?
var grades = school.grades;
if (grades != null) {
tree += '<ul>';
for (Grade grade in grades) {
tree += '<li>${grade.schoolGrade}';
tree += '</li>';
}
tree += '</ul>';
}
2013-04-15 Building UIs with Dart 22
23. Is there a pattern here ?
var grades = school.grades;
if (grades != null) {
tree += '<ul>';
for (Grade grade in grades) {
tree += '<li>${grade.schoolGrade}';
// Do the same with children
tree += '</li>';
}
tree += '</ul>';
}
2013-04-15 Building UIs with Dart 23
24. Recursive Pattern
String doSomething(/* parameters */) {
String tree = '';
var grades = school.grades;
if (grades != null) {
tree += '<ul>';
for (Grade grade in grades) {
tree += '<li>${grade.schoolGrade}';
tree += doSomething(/* parameters */);
tree += '</li>';
}
tree += '</ul>';
}
return tree;
}
2013-04-15 Building UIs with Dart 24
25. Side note – Functions & sugar syntax
int length(String s) {
return s.length;
}
2013-04-15 Building UIs with Dart 25
26. Side note – Functions & sugar syntax
int length(String s) { int length(String s)
return s.length; => s.length;
}
2013-04-15 Building UIs with Dart 26
27. Easy use of reusable components
void main() {
final Tree tree = new Tree(...);
}
2013-04-15 Building UIs with Dart 27
28. Easy use of reusable components
void main() {
final Tree tree = new Tree(...);
tree.setData(schools);
tree.addTo('body', 'afterBegin');
}
2013-04-15 Building UIs with Dart 28
29. Easy use of reusable components
void main() {
final Tree tree = new Tree(
[new TreeConfig((School s) => s.schoolName,
(School s) => s.grades),
new TreeConfig((Grade g) => g.schoolGrade,
(Grade g) => g.students),
new TreeConfig((Student s) =>
'${s.firstname} ${s.lastname}')]
);
tree.setData(schools);
tree.addTo('body', 'afterBegin');
}
2013-04-15 Building UIs with Dart 29
30. Easy use of reusable components
class School { class Grade {
String schoolName; String schoolGrade;
List<Grade> grades; List<Student> students;
School(this.schoolName, Grade(this.schoolGrade,
[this.grades]); [this.students]);
} }
class Student {
String firstname;
String lastname;
Student(this.firstname,
this.lastname);
}
2013-04-15 Building UIs with Dart 30
31. Implementing a reusable components
typedef dynamic Accessor(dynamic data);
class TreeConfig {
Accessor _value;
Accessor _children;
TreeConfig(Accessor this._value,
[Accessor this._children]);
Accessor get value => _value;
Accessor get children => _children;
}
2013-04-15 Building UIs with Dart 31
32. Implementing a reusable components
typedef dynamic Accessor(dynamic data);
class TreeConfig {
Accessor _value;
Accessor _children;
TreeConfig(Accessor this._value,
[Accessor this._children]);
Accessor get value => _value;
Accessor get children => _children;
}
2013-04-15 Building UIs with Dart 32
33. Implementing a reusable components
typedef dynamic Accessor(dynamic data);
class TreeConfig {
Accessor _value;
Accessor _children;
TreeConfig(Accessor this._value,
[Accessor this._children]);
Accessor get value => _value;
Accessor get children => _children;
}
2013-04-15 Building UIs with Dart 33
34. Implementing a reusable components
typedef dynamic Accessor(dynamic data);
class TreeConfig {
Accessor _value;
Accessor _children;
TreeConfig(Accessor this._value,
[Accessor this._children]);
Accessor get value => _value;
Accessor get children => _children;
}
2013-04-15 Building UIs with Dart 34
35. Implementing a reusable components
class Tree {
List<TreeConfig> treeConfigs;
String tree;
Tree(this.treeConfigs);
String setData(final List data) {
// Build tree
}
void addTo(String selector,
[String where = 'afterEnd']) {
query(selector).insertAdjacentHtml(where, this.tree);
}
}
2013-04-15 Building UIs with Dart 35
36. Implementing a reusable components
class Tree {
List<TreeConfig> treeConfigs;
String tree;
Tree(this.treeConfigs);
String setData(final List data) {
// Build tree
}
void addTo(String selector,
[String where = 'afterEnd']) {
query(selector).insertAdjacentHtml(where, this.tree);
}
}
2013-04-15 Building UIs with Dart 36
37. Implementing a reusable components
class Tree {
List<TreeConfig> treeConfigs;
String tree;
Tree(this.treeConfigs);
String setData(final List data) {
// Build tree
}
void addTo(String selector,
[String where = 'afterEnd']) {
query(selector).insertAdjacentHtml(where, this.tree);
}
}
2013-04-15 Building UIs with Dart 37
38. Implementing a reusable components
class Tree {
List<TreeConfig> treeConfigs;
String tree;
Tree(this.treeConfigs);
String setData(final List data) {
// Build tree
}
void addTo(String selector,
[String where = 'afterEnd']) {
query(selector).insertAdjacentHtml(where, this.tree);
}
}
2013-04-15 Building UIs with Dart 38
39. Implementing a reusable components
class Tree {
List<TreeConfig> treeConfigs;
String tree;
Tree(this.treeConfigs);
String setData(final List data) {
// Build tree
}
void addTo(String selector,
[String where = 'afterEnd']) {
query(selector).insertAdjacentHtml(where, this.tree);
}
}
2013-04-15 Building UIs with Dart 39
40. Implementing a reusable components
String buildOneLevelTree(final List data,
final List<TreeConfig> treeNodes,
[final int depth = 0]) {
String tree = '';
if (data != null && !data.isEmpty) {
}
return tree;
}
2013-04-15 Building UIs with Dart 40
41. Implementing a reusable components
String buildOneLevelTree(final List data,
final List<TreeConfig> treeNodes,
[final int depth = 0]) {
String tree = '';
if (data != null && !data.isEmpty) {
final TreeConfig treeNode = treeNodes[depth];
tree += '<ul>';
for (dynamic element in data) {
}
tree += '</ul>';
}
return tree;
}
2013-04-15 Building UIs with Dart 41
42. Implementing a reusable components
String buildOneLevelTree(final List data,
final List<TreeConfig> treeNodes,
[final int depth = 0]) {
String tree = '';
if (data != null && !data.isEmpty) {
final TreeConfig treeNode = treeNodes[depth];
tree += '<ul>';
for (dynamic element in data) {
tree += '<li>${treeNode.value(element)}';
tree += '</li>';
}
tree += '</ul>';
}
return tree;
}
2013-04-15 Building UIs with Dart 42
43. Implementing a reusable components
String buildOneLevelTree(final List data, final List<TreeConfig> treeNodes,
[final int depth = 0]) {
String tree = '';
if (data != null && !data.isEmpty) {
final TreeConfig treeNode = treeNodes[depth];
tree += '<ul>';
for (dynamic element in data) {
tree += '<li>${treeNode.value(element)}';
if (treeNode.children != null) {
tree += buildOneLevelTree(treeNode.children(element),
treeNodes, depth + 1);
}
tree += '</li>';
}
tree += '</ul>';
}
return tree;
}
2013-04-15 Building UIs with Dart 43
44. Implementing a reusable components
class Tree {
List<TreeConfig> treeConfigs;
String tree;
Tree(this.treeConfigs);
String setData(final List data) {
this.tree = buildOneLevelTree(data, this.treeConfigs);
return this.tree;
}
String buildOneLevelTree(final List data,
final List<TreeConfig> treeNodes,
[final int depth = 0]) {
// Implementation
}
void addTo(String selector,
[String where = 'afterEnd']) {
query(selector).insertAdjacentHtml(where, this.tree);
}
}
2013-04-15 Building UIs with Dart 44
45. Are we done yet ?
2013-04-15 Building UIs with Dart 45
46. Getting ride of Strings
Element buildOneLevelTree(final List data, final List<TreeConfig> treeNodes,
[final int depth = 0]) {
Element tree; // String tree = '';
if (data != null && !data.isEmpty) {
final TreeConfig treeNode = treeNodes[depth];
tree = new UListElement(); // tree += '<ul>';
for (dynamic element in data) {
final LIElement li = new LIElement(); // <li>;
li.text = treeNode.value(element); // ${treeNode.value(element)}
if (treeNode.children != null) {
final UListElement ulChild = //
buildOneLevelTree(treeNode.children(element), treeNodes, depth + 1);
if (ulChild != null) { //
li.append(ulChild); // tree += buildOneLevelTree(...)
} //
}
tree.append(li); // tree += '<li>${treeNode.value(element)}';
}
}
return tree;
}
2013-04-15 Building UIs with Dart 46
47. Getting ride of Strings
class Tree {
List<TreeConfig> treeConfigs;
Element tree; // String tree;
Tree(this.treeConfigs);
Element setData(final List data) {
this.tree = buildOneLevelTree(data, this.treeConfigs);
return this.tree;
}
Element buildOneLevelTree(final List data,
final List<TreeConfig> treeNodes,
[final int depth = 0]) {
// Implementation
}
void addTo(String selector,
[String where = 'afterEnd']) {
query(selector).insertAdjacentElement(where, this.tree);
}
}
2013-04-15 Building UIs with Dart 47
49. web_ui
⦿ Based on HTML5 Web Components Spec
⦿ Syntax and uses similar to JSP tags
⦿ Template Engine – Compilation needed
⦿ Reusable components
⦿ CSS encapsulation
⦿ Data-binding
⦿ Complex for real life use-cases
⦿ Doesn’t solve layouting problems
2013-04-15 Building UIs with Dart 49
50. web_ui and Single-Page Webapps
<!DOCTYPE html>
<html>
<head>
<title>01_web_ui</title>
</head>
<body>
<script type="application/dart" src="01_web_ui.dart">
</script>
<script src="packages/browser/dart.js"></script>
</body>
</html>
2013-04-15 Building UIs with Dart 50
51. web_ui - The template
<!DOCTYPE html>
<html>
<body>
</body>
</html>
2013-04-15 Building UIs with Dart 51
52. web_ui - The template
<!DOCTYPE html>
<html>
<body>
<element>
</element>
</body>
</html>
2013-04-15 Building UIs with Dart 52
53. web_ui - The template
<!DOCTYPE html>
<html>
<body>
<element name="x-click-counter">
</element>
</body>
</html>
2013-04-15 Building UIs with Dart 53
54. web_ui - The template
<!DOCTYPE html>
<html>
<body>
<element name="x-click-counter" constructor="CounterComponent">
</element>
</body>
</html>
2013-04-15 Building UIs with Dart 54
55. web_ui - The template
<!DOCTYPE html>
<html>
<body>
<element name="x-click-counter" constructor="CounterComponent" extends="div">
</element>
</body>
</html>
2013-04-15 Building UIs with Dart 55
56. web_ui - The template
<!DOCTYPE html>
<html>
<body>
<element name="x-click-counter" constructor="CounterComponent" extends="div">
<template>
</template>
</element>
</body>
</html>
2013-04-15 Building UIs with Dart 56
60. web_ui – Extending WebComponent
class CounterComponent {
}
2013-04-15 Building UIs with Dart 60
61. web_ui – Extending WebComponent
class CounterComponent extends WebComponent {
}
2013-04-15 Building UIs with Dart 61
62. web_ui – Extending WebComponent
class CounterComponent extends WebComponent {
@observable
int count = 0;
}
2013-04-15 Building UIs with Dart 62
63. web_ui – Extending WebComponent
class CounterComponent extends WebComponent {
@observable
int count = 0;
void increment(Event event) {
count++;
}
}
2013-04-15 Building UIs with Dart 63
64. web_ui – Extending WebComponent
class CounterComponent extends WebComponent {
@observable
int count = 0;
void increment(Event event) {
count++;
}
void inserted() {
this.query('button').onClick.listen(increment);
}
}
2013-04-15 Building UIs with Dart 64
65. web_ui and Single-Page Webapps
<!DOCTYPE html>
<html>
<head>
<title>01_web_ui</title>
<link rel="components" href="xclickcounter.html">
</head>
<body>
<script type="application/dart" src="01_web_ui.dart">
</script>
<script src="packages/browser/dart.js"></script>
</body>
</html>
2013-04-15 Building UIs with Dart 65
66. web_ui – The application
void main() {
}
2013-04-15 Building UIs with Dart 66
67. web_ui – The application
void main() {
var element = new Element.html(
'<x-click-counter id="click_counter"></x-click-counter>'
);
}
2013-04-15 Building UIs with Dart 67
68. web_ui – The application
void main() {
var element = new Element.html(
'<x-click-counter id="click_counter"></x-click-counter>'
);
var counter = new CounterComponent()
..host = element
..count = 25;
}
2013-04-15 Building UIs with Dart 68
69. web_ui – The application
void main() {
var element = new Element.html(
'<x-click-counter id="click_counter"></x-click-counter>'
);
var counter = new CounterComponent()
..host = element
..count = 25;
var lifecycleCaller = new ComponentItem(counter)
..create();
query('body').append(counter.host);
lifecycleCaller.insert();
}
2013-04-15 Building UIs with Dart 69
70. web_ui – The application
void main() {
var element = new Element.html(
'<x-click-counter id="click_counter"></x-click-counter>'
);
var counter = new CounterComponent()
..host = element
..count = 25;
var lifecycleCaller = new ComponentItem(counter)..create();
query('body').append(counter.host);
lifecycleCaller.insert();
var button = new ButtonElement()
..text = 'Update'
..onClick.listen((e) {
counter.count = 100;
watchers.dispatch();
});
query('body').append(button);
}
2013-04-15 Building UIs with Dart 70
71. A word about Layouts
2013-04-15 Building UIs with Dart 71
72. A word about Layouts
2013-04-15 Building UIs with Dart 72
73. A word about Layouts
2013-04-15 Building UIs with Dart 73
74. A word about Layouts
2013-04-15 Building UIs with Dart 74
75. A word about Layouts
2013-04-15 Building UIs with Dart 75
76. A word about Layouts
builder()
..div({'id' : 'banner'})
..div({'id' : 'head'}, 'Dart Playground')
..div({'id' : 'controls'})
..span(null, 'Environment: ')
..addElement(listboxEnv)
..addElement(runButton)
..end() // controls
..end() // banner
..div({'id':'wrap'})
..addElement(e(linedTextarea.element))
..end() // wraps
..addElement(output);
2013-04-15 Building UIs with Dart 76
77. A word about Layouts
builder()
..div({'id' : 'banner'})
..div({'id' : 'head'}, 'Dart Playground')
..div({'id' : 'controls'})
..span(null, 'Environment: ')
..addElement(listboxEnv)
..addElement(runButton)
..end() // controls
..end() // banner
..div({'id':'wrap'})
..addElement(e(linedTextarea.element))
..end() // wraps
..addElement(output);
2013-04-15 Building UIs with Dart 77
78. A word about Layouts
builder()
..div({'id' : 'banner'})
..div({'id' : 'head'}, 'Dart Playground')
..div({'id' : 'controls'})
..span(null, 'Environment: ')
..addElement(listboxEnv)
..addElement(runButton)
..end() // controls
..end() // banner
..div({'id':'wrap'})
..addElement(e(linedTextarea.element))
..end() // wraps
..addElement(output);
2013-04-15 Building UIs with Dart 78
79. A word about Layouts
builder()
..div({'id' : 'banner'})
..div({'id' : 'head'}, 'Dart Playground')
..div({'id' : 'controls'})
..span(null, 'Environment: ')
..addElement(listboxEnv)
..addElement(runButton)
..end() // controls
..end() // banner
..div({'id':'wrap'})
..addElement(e(linedTextarea.element))
..end() // wraps
..addElement(output);
2013-04-15 Building UIs with Dart 79
80. Roadmap
Today : M3 ?? : M4 Summer 2013 : V1 !
2013-04-15 Building UIs with Dart 80
81. The Future of Dart ?
2013-04-15 Building UIs with Dart 81
82. Want to know more ?
DartLangFR
⦿ Mailing-list : dartlangfr (https://groups.google.com/forum/?fromgroups=&hl=en#!forum/dartlangfr)
⦿ Google+ : DartlangFR (https://plus.google.com/u/0/communities/104813951711720144450)
⦿ Twitter : @dartlang_fr
⦿ Blog : dartlangfr.net
DartLang
⦿ Official website: www.dartlang.org
⦿ Mailing-list : dartlang
(https://groups.google.com/a/dartlang.org/forum/?fromgroups&hl=en#!forum/misc)
⦿ Google+ : Dart (https://plus.google.com/+dartlang)
⦿ Google+ : Dartisans (https://plus.google.com/communities/114566943291919232850)
⦿ Twitter : @dart_lang
⦿ Blog : blog.dartwatch.com
⦿ Newsletter : Dart weekly
2013-04-15 Building UIs with Dart 82
83. Github
⦿ Paris JUG
⦿ https://github.com/yohanbeschi/parisjug_20130409.dart
⦿ DevoxxFR 2013
⦿ https://github.com/yohanbeschi/devoxxfr_20130327.dart
⦿ Widgets
⦿ https://github.com/yohanbeschi/pwt_proto.dart
⦿ Web Editor for Dart
⦿ https://github.com/yohanbeschi/web_editor.dart
2013-04-15 Building UIs with Dart 83