SlideShare a Scribd company logo
Review of Eolian, Eo, Bindings, Interfaces and What’s to Come
Tom Hacohen <tom.hacohen@samsung.com>
Daniel Kolesa <d.kolesa@samsung.com>
Enlightenment Developer Day 2004
What is Eo?
Existing solutions?
Existing solutions?
GObjecct
Existing solutions?
GObjecct
libobjc
Existing solutions?
GObjecct
libobjc
systemd
Why roll our own?
How we did it?
How we did it?
A lot of prototyping → Eo1
How we did it?
A lot of prototyping → Eo1
A lot of complaints and hate-mail → Eo2
How we did it?
A lot of prototyping → Eo1
A lot of complaints and hate-mail → Eo2
Got annoyed with writing boiler-plate → Eolian
How we did it?
A lot of prototyping → Eo1
A lot of complaints and hate-mail → Eo2
Got annoyed with writing boiler-plate → Eolian
Eolian didn’t cover everything we needed → Eolian (current iteration)
Unifying the EFL API (AKA EFL Interfaces)
Unifying the EFL API (AKA EFL Interfaces)
Before:
evas_object_image_file_set (obj , "blah.png", "key");
edje_object_file_set (obj , "blah.edj", "group");
evas_object_del (obj);
ecore_timer_del (obj);
ecore_animator_del (obj);
Unifying the EFL API (AKA EFL Interfaces)
Before:
evas_object_image_file_set (obj , "blah.png", "key");
edje_object_file_set (obj , "blah.edj", "group");
evas_object_del (obj);
ecore_timer_del (obj);
ecore_animator_del (obj);
After:
eo_do(obj , efl_file_set("blah.file", "key"));
eo_del(obj);
Object lifetime
Object lifetime
eo_add() has a C friendly refcount handling
Object lifetime
eo_add() has a C friendly refcount handling
eo_add() ↔ eo_del()
Object lifetime
eo_add() has a C friendly refcount handling
eo_add() ↔ eo_del()
eo_ref() ↔ eo_unref()
Safety features
Safety features
Pointer indirection (eo id)
Safety features
Pointer indirection (eo id)
Object type checks when calling functions
Safety features
Pointer indirection (eo id)
Object type checks when calling functions
Default return values on errors
Safety features
Pointer indirection (eo id)
Object type checks when calling functions
Default return values on errors
Safety features
Pointer indirection (eo id)
Object type checks when calling functions
Default return values on errors
For example:
ERR <32099 >: eo eo_ptr_indirection .x:287 ←
_eo_obj_pointer_get () obj_id 0x13371337 is not ←
pointing to a valid object. Maybe it has already been ←
freed.
ERR <32124 >: eo eo_private.h:283 _eo_unref () Object ←
0xDEADBEEF already deleted.
Class types
Class types
Normal class
Class types
Normal class
Non instantiate-able class
Class types
Normal class
Non instantiate-able class
Interface
Class types
Normal class
Non instantiate-able class
Interface
Mixin
Using Eo
Using Eo
eo_do(obj, efl_file_set("file.eet", "key"));
Using Eo
eo_do(obj, efl_file_set("file.eet", "key"));
if (eo_do(obj, elm_widget_enabled_get()))
Using Eo
eo_do(obj, efl_file_set("file.eet", "key"));
if (eo_do(obj, elm_widget_enabled_get()))
eo_do(obj, visible = elm_widget_visibility_get(), ←
elm_widget_visibility_set(!visible));
Using Eo
eo_do(obj, efl_file_set("file.eet", "key"));
if (eo_do(obj, elm_widget_enabled_get()))
eo_do(obj, visible = elm_widget_visibility_get(), ←
elm_widget_visibility_set(!visible));
eo_do(obj, elm_widget_visibility_set(!elm_widget_visibility_get()));
Using Eo
eo_do(obj, efl_file_set("file.eet", "key"));
if (eo_do(obj, elm_widget_enabled_get()))
eo_do(obj, visible = elm_widget_visibility_get(), ←
elm_widget_visibility_set(!visible));
eo_do(obj, elm_widget_visibility_set(!elm_widget_visibility_get()));
static void _size_multiply (double f)
{
int w, h;
evas_object_geometry_get (NULL , NULL , &w, &h);
evas_object_geometry_set (NULL , NULL , w * f, h * f);
}
eo_do(obj , _size_multiply (3.5));
The Eolian library
But writing objects in C is tedious!
But writing objects in C is tedious!
The answer: Eolian
But writing objects in C is tedious!
The answer: Eolian
Eolian parses Eo API declarations
But writing objects in C is tedious!
The answer: Eolian
Eolian parses Eo API declarations
Eolian allows for automated binding generators
But writing objects in C is tedious!
The answer: Eolian
Eolian parses Eo API declarations
Eolian allows for automated binding generators
Eolian is meant to be familar for everyone
A new format?
A new format?
Language independent → easy bindings
A new format?
Language independent → easy bindings
Familiar syntax → easy to pick up
A new format?
Language independent → easy bindings
Familiar syntax → easy to pick up
Easy to read and write
A new format?
Language independent → easy bindings
Familiar syntax → easy to pick up
Easy to read and write
Declarative and descriptive
class Namespace.Class (inherits) {
methods { ... }
properties { ... }
events { ... }
implements { ... }
constructors { ... }
}
type Type_Name: Type_Def;
struct Struct_Name { ... }
enum Enum_Name { ... }
methods {
method_name @class @protected {
params {
@in int x;
@out const(char) *y;
}
return: own(char *);
}
}
properties {
property_name {
keys {
list <int > *x;
}
values {
int v;
}
get {}
set {}
}
}
Generators!
Generators!
Initial generator: C
Generators!
Initial generator: C
Further generators in core EFL: C++ and Lua
Generators!
Initial generator: C
Further generators in core EFL: C++ and Lua
Third party generators: Python, efforts being put into Rust, OCaml
Generators!
Initial generator: C
Further generators in core EFL: C++ and Lua
Third party generators: Python, efforts being put into Rust, OCaml
Future generators include JavaScript and others
The Eolian library
The Eolian library
C API: simple and easy to use
The Eolian library
C API: simple and easy to use
Minimum of non-standard data types → easy to bind
The Eolian library
C API: simple and easy to use
Minimum of non-standard data types → easy to bind
Not only for generators (IDEs...)
The Eolian library
C API: simple and easy to use
Minimum of non-standard data types → easy to bind
Not only for generators (IDEs...)
Simple database
However...
However...
Some things still missing
However...
Some things still missing
Documentation?
However...
Some things still missing
Documentation?
Value ownership
However...
Some things still missing
Documentation?
Value ownership
And possibly others
Lua review
The Lua generator
The Lua generator
Third generator (after C and C++) → Lua
The Lua generator
Third generator (after C and C++) → Lua
Built around our Elua application runtime
The Lua generator
Third generator (after C and C++) → Lua
Built around our Elua application runtime
Itself a Lua application
The Lua generator
Third generator (after C and C++) → Lua
Built around our Elua application runtime
Itself a Lua application
Helped the Eolian C library go forward
The FFI
The FFI
LuaJIT C FFI → simple bindings
The FFI
LuaJIT C FFI → simple bindings
Simple bindings → easy debugging
The FFI
LuaJIT C FFI → simple bindings
Simple bindings → easy debugging
Also, no compiled modules
The FFI
LuaJIT C FFI → simple bindings
Simple bindings → easy debugging
Also, no compiled modules
Also, simple generation
The infrastructure
The infrastructure
Handwritten Eo bindings
The infrastructure
Handwritten Eo bindings
No object wrappers, FFI metatypes instead
The infrastructure
Handwritten Eo bindings
No object wrappers, FFI metatypes instead
Builtin method dispatch via metatables
The infrastructure
Handwritten Eo bindings
No object wrappers, FFI metatypes instead
Builtin method dispatch via metatables
Eo inheritance and reference management
The infrastructure
Handwritten Eo bindings
No object wrappers, FFI metatypes instead
Builtin method dispatch via metatables
Eo inheritance and reference management
No wrappers → fast, simple, no tracking
local util = require("util")
... more utils follow ...
local M, __lib = ...
local __class , __body
-- init func registers the class with __body
cutil.init_module (init_func , shutdown_func)
ffi.cdef [[ C API definitions in C syntax ]]
__body = { ... wrapper funcs over C API funcs ... }
M.My_Class = function(parent , ...)
... construct the instance and return it , like C ←
would ...
end
local elm = require("elm")
local win = elm.Window(nil , "mywin", elm.win_type.BASIC )
win.autodel = false
win.size = { 500, 500 }
win:connect("delete ,request", function () ... event ... ←
end)
win: resize_object_add (obj)
...
Python
The Python generator
The Python generator
Handwritten Eo bindings
The Python generator
Handwritten Eo bindings
A Python script generates Cython code
The Python generator
Handwritten Eo bindings
A Python script generates Cython code
So compiled. . . :(
The Python generator
Handwritten Eo bindings
A Python script generates Cython code
So compiled. . . :(
Will be fixed. . .
The Python generator
Handwritten Eo bindings
A Python script generates Cython code
So compiled. . . :(
Will be fixed. . .
The Python generator
Handwritten Eo bindings
A Python script generates Cython code
So compiled. . . :(
Will be fixed. . . FFI!
The Python bindings
The Python bindings
Native Python classes and inheritance
The Python bindings
Native Python classes and inheritance
Native Python properties
The Python bindings
Native Python classes and inheritance
Native Python properties
Native Python modules
The Python bindings
Native Python classes and inheritance
Native Python properties
Native Python modules
Everything feels native
How to use?
How to use?
Native Python. . .
How to use?
Native Python. . .
Properties
from elementary import Win
win = Win(parent , "win name", Win.ELM_WIN_BASIC)
win.size = (600, 600)
win.visibility = True
How to use?
Native Python. . .
Properties
from elementary import Win
win = Win(parent , "win name", Win.ELM_WIN_BASIC)
win.size = (600, 600)
win.visibility = True
Methods
win. resize_object_add (obj)
How to use?
Native Python. . .
Properties
from elementary import Win
win = Win(parent , "win name", Win.ELM_WIN_BASIC)
win.size = (600, 600)
win.visibility = True
Methods
win. resize_object_add (obj)
Callbacks
obj.connect("mouse ,down", some_callable)
But what about the current bindings?
But what about the current bindings?
Incompatible. :(
But what about the current bindings?
Incompatible. :(
Kai wants to write a compatibility layer
DEMOS
What’s next?
More bindings!
Making bindings embeddable
Use Eolian to do more
Use Eolian to do more
The EFL GUI builder - already there
Use Eolian to do more
The EFL GUI builder - already there
Clouseau - not yet
Use Eolian to do more
The EFL GUI builder - already there
Clouseau - not yet
Ideas?
EFL interfaces
EFL interfaces
Eoify more of the EFL
EFL interfaces
Eoify more of the EFL
ecore_mainloop → Eo object
EFL interfaces
Eoify more of the EFL
ecore_mainloop → Eo object
ecore_animator → event on Elm Win
EFL interfaces
Eoify more of the EFL
ecore_mainloop → Eo object
ecore_animator → event on Elm Win
ecore_job → event on the mailoop
EFL interfaces
Eoify more of the EFL
ecore_mainloop → Eo object
ecore_animator → event on Elm Win
ecore_job → event on the mailoop
Use advance Eo features
EFL interfaces
Eoify more of the EFL
ecore_mainloop → Eo object
ecore_animator → event on Elm Win
ecore_job → event on the mailoop
Use advance Eo features
Gesture layer API can be mostly trimmed (events tracking)
EFL interfaces
Eoify more of the EFL
ecore_mainloop → Eo object
ecore_animator → event on Elm Win
ecore_job → event on the mailoop
Use advance Eo features
Gesture layer API can be mostly trimmed (events tracking)
Improve existing API
EFL interfaces
Eoify more of the EFL
ecore_mainloop → Eo object
ecore_animator → event on Elm Win
ecore_job → event on the mailoop
Use advance Eo features
Gesture layer API can be mostly trimmed (events tracking)
Improve existing API
Common interfaces for highly redundant functions
EFL interfaces
Eoify more of the EFL
ecore_mainloop → Eo object
ecore_animator → event on Elm Win
ecore_job → event on the mailoop
Use advance Eo features
Gesture layer API can be mostly trimmed (events tracking)
Improve existing API
Common interfaces for highly redundant functions
Correct classification by inheritance
Documentation
Documentation
1st class citizen
Documentation
1st class citizen
Support Eolian features
Documentation
1st class citizen
Support Eolian features
Write once, use everywhere
Documentation
1st class citizen
Support Eolian features
Write once, use everywhere
Editable online?
Documentation
1st class citizen
Support Eolian features
Write once, use everywhere
Editable online?
Documentation
1st class citizen
Support Eolian features
Write once, use everywhere
Editable online? Comments like php.net?
Questions?
Tom Hacohen Daniel Kolesa
tom.hacohen@samsung.com d.kolesa@samsung.com
http://stosb.com http://octaforge.org
@TomHacohen @Octaforge
Resources Attributions
Page ??, resources/brewing_ifaces.png
Page 2, resources/expert-beerpong.jpg
Page 37, resources/one_syntax.jpg
Page 66, resources/lua_beer.jpg
Page 85, resources/python_cat.jpg
Page 106, resources/pro_beer.jpg
Page 107, resources/dessert.jpg

More Related Content

What's hot

Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
hwilming
 
Scala in Practice
Scala in PracticeScala in Practice
Scala in Practice
Francesco Usai
 
eMan Dev Meetup: Kotlin For Android (part 03/03) 18.5.2017
eMan Dev Meetup: Kotlin For Android (part 03/03) 18.5.2017eMan Dev Meetup: Kotlin For Android (part 03/03) 18.5.2017
eMan Dev Meetup: Kotlin For Android (part 03/03) 18.5.2017
eMan s.r.o.
 
Kotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developersKotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developers
Bartosz Kosarzycki
 
The Sincerest Form of Flattery
The Sincerest Form of FlatteryThe Sincerest Form of Flattery
The Sincerest Form of Flattery
José Paumard
 
Python in 90 minutes
Python in 90 minutesPython in 90 minutes
Python in 90 minutes
Bardia Heydari
 
Serializing EMF models with Xtext
Serializing EMF models with XtextSerializing EMF models with Xtext
Serializing EMF models with Xtext
meysholdt
 
Initial Java Core Concept
Initial Java Core ConceptInitial Java Core Concept
Initial Java Core Concept
Rays Technologies
 
Building DSLs with Xtext - Eclipse Modeling Day 2009
Building DSLs with Xtext - Eclipse Modeling Day 2009Building DSLs with Xtext - Eclipse Modeling Day 2009
Building DSLs with Xtext - Eclipse Modeling Day 2009
Heiko Behrens
 
PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?
Sam Thomas
 
Kotlin
KotlinKotlin
Kotlin
Rory Preddy
 
Kotlin for Android devs
Kotlin for Android devsKotlin for Android devs
Kotlin for Android devs
Adit Lal
 
5 Tips for Better JavaScript
5 Tips for Better JavaScript5 Tips for Better JavaScript
5 Tips for Better JavaScript
Todd Anglin
 
EMF Tips n Tricks
EMF Tips n TricksEMF Tips n Tricks
EMF Tips n Tricks
Kaniska Mandal
 
Protocols with Associated Types, and How They Got That Way
Protocols with Associated Types, and How They Got That WayProtocols with Associated Types, and How They Got That Way
Protocols with Associated Types, and How They Got That Way
Alexis Gallagher
 
Introduction to clojure
Introduction to clojureIntroduction to clojure
Introduction to clojure
Abbas Raza
 
JavaScript - From Birth To Closure
JavaScript - From Birth To ClosureJavaScript - From Birth To Closure
JavaScript - From Birth To Closure
Robert Nyman
 
Java Basics
Java BasicsJava Basics
Java Basics
Sunil OS
 
Xtext Webinar
Xtext WebinarXtext Webinar
Xtext Webinar
Heiko Behrens
 
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and Pindah
Nick Plante
 

What's hot (20)

Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
 
Scala in Practice
Scala in PracticeScala in Practice
Scala in Practice
 
eMan Dev Meetup: Kotlin For Android (part 03/03) 18.5.2017
eMan Dev Meetup: Kotlin For Android (part 03/03) 18.5.2017eMan Dev Meetup: Kotlin For Android (part 03/03) 18.5.2017
eMan Dev Meetup: Kotlin For Android (part 03/03) 18.5.2017
 
Kotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developersKotlin advanced - language reference for android developers
Kotlin advanced - language reference for android developers
 
The Sincerest Form of Flattery
The Sincerest Form of FlatteryThe Sincerest Form of Flattery
The Sincerest Form of Flattery
 
Python in 90 minutes
Python in 90 minutesPython in 90 minutes
Python in 90 minutes
 
Serializing EMF models with Xtext
Serializing EMF models with XtextSerializing EMF models with Xtext
Serializing EMF models with Xtext
 
Initial Java Core Concept
Initial Java Core ConceptInitial Java Core Concept
Initial Java Core Concept
 
Building DSLs with Xtext - Eclipse Modeling Day 2009
Building DSLs with Xtext - Eclipse Modeling Day 2009Building DSLs with Xtext - Eclipse Modeling Day 2009
Building DSLs with Xtext - Eclipse Modeling Day 2009
 
PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?
 
Kotlin
KotlinKotlin
Kotlin
 
Kotlin for Android devs
Kotlin for Android devsKotlin for Android devs
Kotlin for Android devs
 
5 Tips for Better JavaScript
5 Tips for Better JavaScript5 Tips for Better JavaScript
5 Tips for Better JavaScript
 
EMF Tips n Tricks
EMF Tips n TricksEMF Tips n Tricks
EMF Tips n Tricks
 
Protocols with Associated Types, and How They Got That Way
Protocols with Associated Types, and How They Got That WayProtocols with Associated Types, and How They Got That Way
Protocols with Associated Types, and How They Got That Way
 
Introduction to clojure
Introduction to clojureIntroduction to clojure
Introduction to clojure
 
JavaScript - From Birth To Closure
JavaScript - From Birth To ClosureJavaScript - From Birth To Closure
JavaScript - From Birth To Closure
 
Java Basics
Java BasicsJava Basics
Java Basics
 
Xtext Webinar
Xtext WebinarXtext Webinar
Xtext Webinar
 
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and Pindah
 

Similar to [E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's to Come

[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)EnlightenmentProject
 
Yahoo is open to developers
Yahoo is open to developersYahoo is open to developers
Yahoo is open to developers
Christian Heilmann
 
Kotlin what_you_need_to_know-converted event 4 with nigerians
Kotlin  what_you_need_to_know-converted event 4 with nigeriansKotlin  what_you_need_to_know-converted event 4 with nigerians
Kotlin what_you_need_to_know-converted event 4 with nigerians
junaidhasan17
 
Compose Camp Session 1.pdf
Compose Camp Session 1.pdfCompose Camp Session 1.pdf
Compose Camp Session 1.pdf
AbhishekRajoraB20CS0
 
A quick and fast intro to Kotlin
A quick and fast intro to Kotlin A quick and fast intro to Kotlin
A quick and fast intro to Kotlin
XPeppers
 
The Ring programming language version 1.8 book - Part 7 of 202
The Ring programming language version 1.8 book - Part 7 of 202The Ring programming language version 1.8 book - Part 7 of 202
The Ring programming language version 1.8 book - Part 7 of 202
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.1 book - Part 5 of 180
The Ring programming language version 1.5.1 book - Part 5 of 180The Ring programming language version 1.5.1 book - Part 5 of 180
The Ring programming language version 1.5.1 book - Part 5 of 180
Mahmoud Samir Fayed
 
The Ring programming language version 1.7 book - Part 7 of 196
The Ring programming language version 1.7 book - Part 7 of 196The Ring programming language version 1.7 book - Part 7 of 196
The Ring programming language version 1.7 book - Part 7 of 196
Mahmoud Samir Fayed
 
Koin Quickstart
Koin QuickstartKoin Quickstart
Koin Quickstart
Matthew Clarke
 
The things we don't see – stories of Software, Scala and Akka
The things we don't see – stories of Software, Scala and AkkaThe things we don't see – stories of Software, Scala and Akka
The things we don't see – stories of Software, Scala and Akka
Konrad Malawski
 
Towards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages ToolchainTowards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages Toolchain
Attila Szegedi
 
Kotlin for Android Development
Kotlin for Android DevelopmentKotlin for Android Development
Kotlin for Android Development
Speck&Tech
 
Android and cpp
Android and cppAndroid and cpp
Android and cpp
Joan Puig Sanz
 
Os Vanrossum
Os VanrossumOs Vanrossum
Os Vanrossumoscon2007
 
Kotlin: Why Do You Care?
Kotlin: Why Do You Care?Kotlin: Why Do You Care?
Kotlin: Why Do You Care?
intelliyole
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
ColdFusionConference
 
From Java to Kotlin - The first month in practice
From Java to Kotlin - The first month in practiceFrom Java to Kotlin - The first month in practice
From Java to Kotlin - The first month in practice
StefanTomm
 
The Ring programming language version 1.5.2 book - Part 6 of 181
The Ring programming language version 1.5.2 book - Part 6 of 181The Ring programming language version 1.5.2 book - Part 6 of 181
The Ring programming language version 1.5.2 book - Part 6 of 181
Mahmoud Samir Fayed
 

Similar to [E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's to Come (20)

Eo fosdem 15
Eo fosdem 15Eo fosdem 15
Eo fosdem 15
 
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
 
Yahoo is open to developers
Yahoo is open to developersYahoo is open to developers
Yahoo is open to developers
 
Kotlin what_you_need_to_know-converted event 4 with nigerians
Kotlin  what_you_need_to_know-converted event 4 with nigeriansKotlin  what_you_need_to_know-converted event 4 with nigerians
Kotlin what_you_need_to_know-converted event 4 with nigerians
 
Compose Camp Session 1.pdf
Compose Camp Session 1.pdfCompose Camp Session 1.pdf
Compose Camp Session 1.pdf
 
A quick and fast intro to Kotlin
A quick and fast intro to Kotlin A quick and fast intro to Kotlin
A quick and fast intro to Kotlin
 
The Ring programming language version 1.8 book - Part 7 of 202
The Ring programming language version 1.8 book - Part 7 of 202The Ring programming language version 1.8 book - Part 7 of 202
The Ring programming language version 1.8 book - Part 7 of 202
 
The Ring programming language version 1.5.1 book - Part 5 of 180
The Ring programming language version 1.5.1 book - Part 5 of 180The Ring programming language version 1.5.1 book - Part 5 of 180
The Ring programming language version 1.5.1 book - Part 5 of 180
 
The Ring programming language version 1.7 book - Part 7 of 196
The Ring programming language version 1.7 book - Part 7 of 196The Ring programming language version 1.7 book - Part 7 of 196
The Ring programming language version 1.7 book - Part 7 of 196
 
Koin Quickstart
Koin QuickstartKoin Quickstart
Koin Quickstart
 
The things we don't see – stories of Software, Scala and Akka
The things we don't see – stories of Software, Scala and AkkaThe things we don't see – stories of Software, Scala and Akka
The things we don't see – stories of Software, Scala and Akka
 
Towards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages ToolchainTowards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages Toolchain
 
Kotlin for Android Development
Kotlin for Android DevelopmentKotlin for Android Development
Kotlin for Android Development
 
Java
JavaJava
Java
 
Android and cpp
Android and cppAndroid and cpp
Android and cpp
 
Os Vanrossum
Os VanrossumOs Vanrossum
Os Vanrossum
 
Kotlin: Why Do You Care?
Kotlin: Why Do You Care?Kotlin: Why Do You Care?
Kotlin: Why Do You Care?
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
From Java to Kotlin - The first month in practice
From Java to Kotlin - The first month in practiceFrom Java to Kotlin - The first month in practice
From Java to Kotlin - The first month in practice
 
The Ring programming language version 1.5.2 book - Part 6 of 181
The Ring programming language version 1.5.2 book - Part 6 of 181The Ring programming language version 1.5.2 book - Part 6 of 181
The Ring programming language version 1.5.2 book - Part 6 of 181
 

More from EnlightenmentProject

[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
EnlightenmentProject
 
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
EnlightenmentProject
 
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
EnlightenmentProject
 
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
EnlightenmentProject
 
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
EnlightenmentProject
 
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
EnlightenmentProject
 
[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)
[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)
[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)
EnlightenmentProject
 
[KOR][E-Kor-Seminar 2014][1/8] Introduction of EFL and Enlightenment (Hermet)
[KOR][E-Kor-Seminar 2014][1/8] Introduction of EFL and Enlightenment (Hermet)[KOR][E-Kor-Seminar 2014][1/8] Introduction of EFL and Enlightenment (Hermet)
[KOR][E-Kor-Seminar 2014][1/8] Introduction of EFL and Enlightenment (Hermet)
EnlightenmentProject
 
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
EnlightenmentProject
 
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
EnlightenmentProject
 
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary	[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
EnlightenmentProject
 
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
EnlightenmentProject
 
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
EnlightenmentProject
 

More from EnlightenmentProject (13)

[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
 
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
 
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
 
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
 
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
 
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
 
[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)
[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)
[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)
 
[KOR][E-Kor-Seminar 2014][1/8] Introduction of EFL and Enlightenment (Hermet)
[KOR][E-Kor-Seminar 2014][1/8] Introduction of EFL and Enlightenment (Hermet)[KOR][E-Kor-Seminar 2014][1/8] Introduction of EFL and Enlightenment (Hermet)
[KOR][E-Kor-Seminar 2014][1/8] Introduction of EFL and Enlightenment (Hermet)
 
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
 
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
 
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary	[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
 
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
 
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
 

Recently uploaded

First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 

Recently uploaded (20)

First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 

[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's to Come