<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.jvmlangsummit.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Al3x</id>
	<title>JVMLangSummit - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.jvmlangsummit.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Al3x"/>
	<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Special:Contributions/Al3x"/>
	<updated>2026-05-23T03:41:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Clojure_Keynote&amp;diff=303</id>
		<title>Clojure Keynote</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Clojure_Keynote&amp;diff=303"/>
		<updated>2009-09-17T17:10:37Z</updated>

		<summary type="html">&lt;p&gt;Al3x: New page: = Provocation = * Is OOP the best way to write software?  = Background = * single-dispatch, stateful, OOP languages are entrenched * differences between these languages are superficial (ex...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Provocation =&lt;br /&gt;
* Is OOP the best way to write software?&lt;br /&gt;
&lt;br /&gt;
= Background =&lt;br /&gt;
* single-dispatch, stateful, OOP languages are entrenched&lt;br /&gt;
* differences between these languages are superficial (ex: syntax, availability of closures, etc.)&lt;br /&gt;
* key ideas: complexity, time&lt;br /&gt;
* &amp;quot;Seek simplicity, and distrust it.&amp;quot; - Whitehead&lt;br /&gt;
&lt;br /&gt;
= Incidental Complexity =&lt;br /&gt;
* bad tools and solutions make us less efficient in small ways&lt;br /&gt;
* complexity is obvious, but sometimes complexity is hidden behind a facade of simplicity&lt;br /&gt;
* C++ is easy to learn, but is it really simple?&lt;br /&gt;
** same syntax to refer to things on the heap and things not on the heap&lt;br /&gt;
** what do you do with objects? no standard automatic memory management - big source of incidental complexity&lt;br /&gt;
** the language doesn't make it clear that memory management is the programmer's responsibility&lt;br /&gt;
* ditto Java&lt;br /&gt;
** even removes the complexity of handling GC&lt;br /&gt;
** hidden complexity: mutable vs immutable objects; not just a concurrency problem, a complexity problem&lt;br /&gt;
* most programmers measure complexity in superficial ways: syntax, expressivity&lt;br /&gt;
* we want encapsulation so we can build things on top of other things more simply; &amp;quot;someone building a house doesn't have to worry about the inside of a brick&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Pure Functions Are Worry-Free =&lt;br /&gt;
* local scope&lt;br /&gt;
* takes and returns values&lt;br /&gt;
* has no notion of time&lt;br /&gt;
* easy to understand and change&lt;br /&gt;
* problems with functions, though:&lt;br /&gt;
** &amp;quot;programs in general are not functions&amp;quot;&lt;br /&gt;
** programs run indefinitely long&lt;br /&gt;
** users need to see the program's behavior&lt;br /&gt;
** couldn't express Google search as a function, it's a process&lt;br /&gt;
&lt;br /&gt;
= OO and Change =&lt;br /&gt;
* behavior and time are almost meaningless in OOP&lt;br /&gt;
* there's no real concept of time in objects, they don't have a reified notion of time, but objects pretend to manipulate time&lt;br /&gt;
* &amp;quot;the OO model has gotten time wrong&amp;quot;&lt;br /&gt;
** we've made objects that can change in place, and we've made objects that we can _see_ change in place&lt;br /&gt;
** no proper notion of values&lt;br /&gt;
* &amp;quot;No man can cross the same river twice.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= A Simplified View =&lt;br /&gt;
* &amp;quot;We've invented mutable objects, we need to un-invent them.&amp;quot;&lt;br /&gt;
* actual entities are atomic immutable values&lt;br /&gt;
* we superimpose mutable models on collections of immutable values&lt;br /&gt;
** identities are mental constructs&lt;br /&gt;
** the future is a function of the past&lt;br /&gt;
** objects are not things that change over time&lt;br /&gt;
* &amp;quot;There is a becoming of continuity, but not a continuity of becoming.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Terms =&lt;br /&gt;
* Value: immutable magnitude, quantity, number, or immutable composite thereof&lt;br /&gt;
* Identity: a relative entity we associate with a series of values&lt;br /&gt;
* State: value of an identity at a moment in time&lt;br /&gt;
** &amp;quot;mutable state makes no sense (given this definition)&amp;quot;&lt;br /&gt;
* Time: relative before/after ordering of causal values&lt;br /&gt;
&lt;br /&gt;
= Why should we care? =&lt;br /&gt;
* our programs need to make decisions&lt;br /&gt;
* mutable way of thinking is a useful mental model, makes things easier to conceptualize&lt;br /&gt;
* but we can't screw up time and immutability because then things are wrong&lt;br /&gt;
* we don't make decisions about the world through direct contact between our brains and the outside world - we don't take our brains out and rub them on things we want to experience&lt;br /&gt;
* we also don't get to stop the world to look around&lt;br /&gt;
* human perception is uncoordinated and massively parallel - it's NOT message passing&lt;br /&gt;
** we are always perceiving the unchanging past&lt;br /&gt;
** we perceive based on discrete events - we like snapshots (they're like values)&lt;br /&gt;
** are brains are simultaneity detectors&lt;br /&gt;
* making things happen are perceiving things are completely different&lt;br /&gt;
&lt;br /&gt;
= Implementation =&lt;br /&gt;
* pure functions - we have this&lt;br /&gt;
* language constructs for representing values, creating them and sharing them&lt;br /&gt;
* coordinate the succession of values&lt;br /&gt;
* we have to consume memory to model time&lt;br /&gt;
** old value -&amp;gt; pure function -&amp;gt; new value (non-destructive, consumes memory)&lt;br /&gt;
** old values can be used as perceptions/memory&lt;br /&gt;
** GC will clean up the &amp;quot;past&amp;quot; that's no longer referenced&lt;br /&gt;
* persistent data structures&lt;br /&gt;
** immutable&lt;br /&gt;
** ideal for states, snapshots, and memories&lt;br /&gt;
** stable values for decision-making and calculation&lt;br /&gt;
*** the next version of a value shares structure with previous value, so usually efficient&lt;br /&gt;
*** creating a value never disturbs prior values, nor impedes perceivers of prior&lt;br /&gt;
** &amp;quot;your life is going to be better if you use these because there's a huge quantity of things you'll no longer have to worry about&amp;quot;&lt;br /&gt;
** usually based on trees (with high branching factors, usually shallow)&lt;br /&gt;
*** support structural sharign&lt;br /&gt;
&lt;br /&gt;
= Declarativeness and Parallelism =&lt;br /&gt;
* must be more declarative, less looping&lt;br /&gt;
* tree-based persistent data structures work well for this&lt;br /&gt;
** pre-partitioned&lt;br /&gt;
** compositional building blocks&lt;br /&gt;
** don't perform as well - better for reads than write, but...&lt;br /&gt;
** nobody can see what happens inside operations&lt;br /&gt;
** more cores, and the parallelism starts to match up to mutable data structures&lt;br /&gt;
&lt;br /&gt;
= Time Constructs =&lt;br /&gt;
* need to ensure atomic succession&lt;br /&gt;
* need to provide point-in-time value perception (snapshots)&lt;br /&gt;
* multiple timelines support multiple threads of control - no &amp;quot;I'm the program, I control the universe&amp;quot; model&lt;br /&gt;
* models: CAS, Agents, STM, locks as a way to enforce timelines&lt;br /&gt;
* perception in STM via multi-version concurrency control&lt;br /&gt;
** no interference with processes&lt;br /&gt;
** cheap historical snapshots&lt;br /&gt;
** allows observers/readers to maintain a timeline&lt;br /&gt;
*** composite snapshots form glimpses and visual scans, thinking in terms of human vision&lt;br /&gt;
** &amp;quot;there is no one STM; if you want to beat up on STM, pick an implementation&amp;quot;&lt;br /&gt;
*** granularity matters; if you find yourself requiring a transaction to perceive a consistent value, you're doing it wrong&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
* excessive implicit complexity begs for change&lt;br /&gt;
* conflation of behavior, time, identity, and state is a big source of implicit complexity in OOP&lt;br /&gt;
* &amp;quot;pay attention to the FP people, look at the great properties of pure functions&amp;quot;&lt;br /&gt;
* epochal time model is worth trying - be explicit about time&lt;br /&gt;
** we can do multiple implementations, we have the infrastructure to support it&lt;br /&gt;
* hard problems: tying STM to things like IO, coordinating with the rest of the world&lt;br /&gt;
* &amp;quot;become as happy as you can with the lack of control - that will give you more concurrency&amp;quot;&lt;br /&gt;
* more data structures and time constructs to come&lt;br /&gt;
* open question: is there a way to reconcile all this with OOP?&lt;/div&gt;</summary>
		<author><name>Al3x</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Better_Ruby&amp;diff=251</id>
		<title>Better Ruby</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Better_Ruby&amp;diff=251"/>
		<updated>2009-09-16T19:08:54Z</updated>

		<summary type="html">&lt;p&gt;Al3x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JRuby, Duby, and Juby: Building a better Ruby &amp;amp;mdash; Charles Nutter =&lt;br /&gt;
&lt;br /&gt;
;Project: http://jruby.org/&lt;br /&gt;
;Blog:http://blog.headius.com/&lt;br /&gt;
;Slides: [[Image:JVM_Languages_Summit_2009_-_JRuby]]&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
You know JRuby is an implementation of Ruby for the JVM. But have you heard about Duby or Juby? Duby is Ruby syntax with Java's type system and static typing. It utilizes local type inference to keep code as clean as Ruby, but runs as fast as Java. Juby is Duby's dynamic cousin, totally dynamically-typed and using invokedynamic for all dispatch. Both Duby and Juby have been research conduits for the next generation of JRuby work, which will incorporate techniques from both languages. We'll talk about all three.&lt;br /&gt;
&lt;br /&gt;
= Notes =&lt;br /&gt;
&lt;br /&gt;
== JRuby == &lt;br /&gt;
* making optimizations for things like returining from closures&lt;br /&gt;
* Invoke Dynamic (indy):&lt;br /&gt;
** eliminates generated handles, simplifies things&lt;br /&gt;
** inlines a lot of otherwise complex logic&lt;br /&gt;
** getting faster&lt;br /&gt;
* Duby is an experiment in optional static typing that may be rolled into JRuby&lt;br /&gt;
* new optimizing compiler now that they have a &amp;quot;real compiler guy&amp;quot; on the JRuby team&lt;br /&gt;
&lt;br /&gt;
== Duby == &lt;br /&gt;
* a side-project&lt;br /&gt;
* &amp;quot;like Ruby but as fast as Java; essentially Java with Ruby syntax&amp;quot;&lt;br /&gt;
* typing works kinda like Scala&lt;br /&gt;
* no runtime library&lt;br /&gt;
* purpose: an implementation language for JRuby, mobile applications&lt;br /&gt;
** &amp;quot;doesn't add too much&amp;quot;&lt;br /&gt;
* code example: only different between Ruby and Duby is specifying the type of some arguments to methods&lt;br /&gt;
* &amp;quot;MyObject.new&amp;quot; is hard-coded to object creation, not a method call&lt;br /&gt;
* status:&lt;br /&gt;
** type and method definitions work&lt;br /&gt;
** importing types, Java object construction works&lt;br /&gt;
** todo: arrays, reopening classes, mixins, closures, runtime libraries in Duby, Java 5 features,&lt;br /&gt;
** possible LLVM backend or in other languages&lt;br /&gt;
&lt;br /&gt;
== Surinx == &lt;br /&gt;
* another side-project&lt;br /&gt;
* exactly Ruby syntax&lt;br /&gt;
* dynamically typed (&amp;quot;not quite as crazily dynamic as Ruby&amp;quot;)&lt;br /&gt;
* dynamic dispatch (indy)&lt;br /&gt;
* minimal runtime library (indy dispatcher)&lt;br /&gt;
* scriptable, but no interpreter&lt;br /&gt;
* &amp;quot;as fast as Java (can do indy)&amp;quot;&lt;br /&gt;
* goals: experiment with indy, help the implementors test, try things outside JRuby&lt;br /&gt;
* code examples: really identical to Ruby&lt;br /&gt;
* bunch of stuff still to do&lt;br /&gt;
* Java version of fib example (only) 40% faster than Surinx version&lt;/div&gt;</summary>
		<author><name>Al3x</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Better_Ruby_-_Nutter&amp;diff=249</id>
		<title>Better Ruby - Nutter</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Better_Ruby_-_Nutter&amp;diff=249"/>
		<updated>2009-09-16T19:07:52Z</updated>

		<summary type="html">&lt;p&gt;Al3x: Redirecting to Better Ruby&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Better_Ruby]]&lt;/div&gt;</summary>
		<author><name>Al3x</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Better_Ruby_-_Nutter&amp;diff=248</id>
		<title>Better Ruby - Nutter</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Better_Ruby_-_Nutter&amp;diff=248"/>
		<updated>2009-09-16T19:07:23Z</updated>

		<summary type="html">&lt;p&gt;Al3x: Redirecting to Better Ruby&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Better_Ruby]]&lt;br /&gt;
&lt;br /&gt;
= JRuby =&lt;br /&gt;
* making optimizations for things like returining from closures&lt;br /&gt;
* Invoke Dynamic (indy):&lt;br /&gt;
** eliminates generated handles, simplifies things&lt;br /&gt;
** inlines a lot of otherwise complex logic&lt;br /&gt;
** getting faster&lt;br /&gt;
* Duby is an experiment in optional static typing that may be rolled into JRuby&lt;br /&gt;
* new optimizing compiler now that they have a &amp;quot;real compiler guy&amp;quot; on the JRuby team&lt;br /&gt;
&lt;br /&gt;
= Duby =&lt;br /&gt;
* a side-project&lt;br /&gt;
* &amp;quot;like Ruby but as fast as Java; essentially Java with Ruby syntax&amp;quot;&lt;br /&gt;
* typing works kinda like Scala&lt;br /&gt;
* no runtime library&lt;br /&gt;
* purpose: an implementation language for JRuby, mobile applications&lt;br /&gt;
** &amp;quot;doesn't add too much&amp;quot;&lt;br /&gt;
* code example: only different between Ruby and Duby is specifying the type of some arguments to methods&lt;br /&gt;
* &amp;quot;MyObject.new&amp;quot; is hard-coded to object creation, not a method call&lt;br /&gt;
* status:&lt;br /&gt;
** type and method definitions work&lt;br /&gt;
** importing types, Java object construction works&lt;br /&gt;
** todo: arrays, reopening classes, mixins, closures, runtime libraries in Duby, Java 5 features,&lt;br /&gt;
** possible LLVM backend or in other languages&lt;br /&gt;
&lt;br /&gt;
= Surinx =&lt;br /&gt;
* another side-project&lt;br /&gt;
* exactly Ruby syntax&lt;br /&gt;
* dynamically typed (&amp;quot;not quite as crazily dynamic as Ruby&amp;quot;)&lt;br /&gt;
* dynamic dispatch (indy)&lt;br /&gt;
* minimal runtime library (indy dispatcher)&lt;br /&gt;
* scriptable, but no interpreter&lt;br /&gt;
* &amp;quot;as fast as Java (can do indy)&amp;quot;&lt;br /&gt;
* goals: experiment with indy, help the implementors test, try things outside JRuby&lt;br /&gt;
* code examples: really identical to Ruby&lt;br /&gt;
* bunch of stuff still to do&lt;br /&gt;
* Java version of fib example (only) 40% faster than Surinx version&lt;/div&gt;</summary>
		<author><name>Al3x</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Exploring_Dynamism_-_Randal&amp;diff=226</id>
		<title>Exploring Dynamism - Randal</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Exploring_Dynamism_-_Randal&amp;diff=226"/>
		<updated>2009-09-16T18:41:23Z</updated>

		<summary type="html">&lt;p&gt;Al3x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slides: [[Image:Exploring dynamism.pdf]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
* &amp;quot;a mental exploration of dynamic language features&amp;quot;&lt;br /&gt;
* &amp;quot;crystalize what dynamism is&amp;quot;&lt;br /&gt;
* static vs dynamic as particle vs wave&lt;br /&gt;
* sometimes a binary distinction, sometimes not&lt;br /&gt;
* &amp;quot;no language is entirely static or dynamic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Dynamic Typing =&lt;br /&gt;
* you can do more stuff with a dynamic type system&lt;br /&gt;
* think of it as a way to extend the type system by having types inspect run-time state&lt;br /&gt;
&lt;br /&gt;
= Dynamic Dispatch =&lt;br /&gt;
* &amp;quot;stages of dynamism&amp;quot;&lt;br /&gt;
* multiple dispatch can be done either statically or dynamically&lt;br /&gt;
* many forms of caching (polymorphic inline caching, et. al.) are forms of dynamic dispatch&lt;br /&gt;
&lt;br /&gt;
= Introspection =&lt;br /&gt;
* not strictly a dynamic language feature, but more common in dynamic langs than in static ones&lt;br /&gt;
* annotations (ex: research at IBM on using annotations to enforce web application security constraints)&lt;br /&gt;
&lt;br /&gt;
= Dynamic Compilation =&lt;br /&gt;
* compiling blocks of code, capturing the environment around that code (closures, runtime environment, etc.)&lt;br /&gt;
* higher-order functions: methods generating other methods at runtime&lt;br /&gt;
* interaction (REPL), as with the Python command line&lt;br /&gt;
* sci-fi future: self-modifying code&lt;br /&gt;
&lt;br /&gt;
= Dynamic Loading =&lt;br /&gt;
* another strategy for adding new code at runtime&lt;br /&gt;
* including new libraries&lt;br /&gt;
* binding routines to objects&lt;br /&gt;
* mixins/traits/roles and other cross-cutting inheritance/extension models&lt;br /&gt;
* dynamic unloading: not often seen because dynamic languages traditionally power applications that run for short periods and wouldn't see gains from unloading to free up memory&lt;br /&gt;
&lt;br /&gt;
= Conclusions =&lt;br /&gt;
* &amp;quot;static systems and dynamic systems are both critical&amp;quot;&lt;br /&gt;
* tradeoffs of tighter control vs greater abstraction, productivity vs performance&lt;br /&gt;
* hybrid systems may be the most effective&lt;/div&gt;</summary>
		<author><name>Al3x</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Exploring_Dynamism_-_Randal&amp;diff=224</id>
		<title>Exploring Dynamism - Randal</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Exploring_Dynamism_-_Randal&amp;diff=224"/>
		<updated>2009-09-16T18:40:20Z</updated>

		<summary type="html">&lt;p&gt;Al3x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Exploring dynamism.pdf|Slides]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
* &amp;quot;a mental exploration of dynamic language features&amp;quot;&lt;br /&gt;
* &amp;quot;crystalize what dynamism is&amp;quot;&lt;br /&gt;
* static vs dynamic as particle vs wave&lt;br /&gt;
* sometimes a binary distinction, sometimes not&lt;br /&gt;
* &amp;quot;no language is entirely static or dynamic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Dynamic Typing =&lt;br /&gt;
* you can do more stuff with a dynamic type system&lt;br /&gt;
* think of it as a way to extend the type system by having types inspect run-time state&lt;br /&gt;
&lt;br /&gt;
= Dynamic Dispatch =&lt;br /&gt;
* &amp;quot;stages of dynamism&amp;quot;&lt;br /&gt;
* multiple dispatch can be done either statically or dynamically&lt;br /&gt;
* many forms of caching (polymorphic inline caching, et. al.) are forms of dynamic dispatch&lt;br /&gt;
&lt;br /&gt;
= Introspection =&lt;br /&gt;
* not strictly a dynamic language feature, but more common in dynamic langs than in static ones&lt;br /&gt;
* annotations (ex: research at IBM on using annotations to enforce web application security constraints)&lt;br /&gt;
&lt;br /&gt;
= Dynamic Compilation =&lt;br /&gt;
* compiling blocks of code, capturing the environment around that code (closures, runtime environment, etc.)&lt;br /&gt;
* higher-order functions: methods generating other methods at runtime&lt;br /&gt;
* interaction (REPL), as with the Python command line&lt;br /&gt;
* sci-fi future: self-modifying code&lt;br /&gt;
&lt;br /&gt;
= Dynamic Loading =&lt;br /&gt;
* another strategy for adding new code at runtime&lt;br /&gt;
* including new libraries&lt;br /&gt;
* binding routines to objects&lt;br /&gt;
* mixins/traits/roles and other cross-cutting inheritance/extension models&lt;br /&gt;
* dynamic unloading: not often seen because dynamic languages traditionally power applications that run for short periods and wouldn't see gains from unloading to free up memory&lt;br /&gt;
&lt;br /&gt;
= Conclusions =&lt;br /&gt;
* &amp;quot;static systems and dynamic systems are both critical&amp;quot;&lt;br /&gt;
* tradeoffs of tighter control vs greater abstraction, productivity vs performance&lt;br /&gt;
* hybrid systems may be the most effective&lt;/div&gt;</summary>
		<author><name>Al3x</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=JDK_-_Reinhold&amp;diff=222</id>
		<title>JDK - Reinhold</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=JDK_-_Reinhold&amp;diff=222"/>
		<updated>2009-09-16T18:39:11Z</updated>

		<summary type="html">&lt;p&gt;Al3x: New page: = focus of JDK 7 = * modularization * multiple languages * not really the focus of this talk * Java language evolution  = Project Coin = * project to evolve the Java language * improved in...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= focus of JDK 7 =&lt;br /&gt;
* modularization&lt;br /&gt;
* multiple languages * not really the focus of this talk&lt;br /&gt;
* Java language evolution&lt;br /&gt;
&lt;br /&gt;
= Project Coin =&lt;br /&gt;
* project to evolve the Java language&lt;br /&gt;
* improved integer literals&lt;br /&gt;
* &amp;quot;exotic identifiers&amp;quot;: #&amp;quot;op~&amp;quot;&lt;br /&gt;
** for interoperation with langugages that may use symbols and such in method names and other identifiers (ex: Scala)&lt;br /&gt;
&lt;br /&gt;
= Project Jigsaw =&lt;br /&gt;
* modularization of the JVM&lt;br /&gt;
* JVM is too large (18MB), slow to download not on broadband, hard to fit on small devices&lt;br /&gt;
* ex: import the 'desktop' module, get swing, sound, awt, etc.&lt;br /&gt;
* jmod tool to quickly install packages:&lt;br /&gt;
** sudo jmod install [url for .jmod package] and you're done&lt;br /&gt;
&lt;br /&gt;
= mlvm =&lt;br /&gt;
* Da Vinci Machine Project&lt;br /&gt;
* explored further in the next session&lt;br /&gt;
* goal is to support multiple languages well on the JVM&lt;/div&gt;</summary>
		<author><name>Al3x</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Exploring_Dynamism_-_Randal&amp;diff=221</id>
		<title>Exploring Dynamism - Randal</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Exploring_Dynamism_-_Randal&amp;diff=221"/>
		<updated>2009-09-16T18:38:44Z</updated>

		<summary type="html">&lt;p&gt;Al3x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slides: [[Image:Exploring dynamism.pdf]]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
* &amp;quot;a mental exploration of dynamic language features&amp;quot;&lt;br /&gt;
* &amp;quot;crystalize what dynamism is&amp;quot;&lt;br /&gt;
* static vs dynamic as particle vs wave&lt;br /&gt;
* sometimes a binary distinction, sometimes not&lt;br /&gt;
* &amp;quot;no language is entirely static or dynamic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Dynamic Typing =&lt;br /&gt;
* you can do more stuff with a dynamic type system&lt;br /&gt;
* think of it as a way to extend the type system by having types inspect run-time state&lt;br /&gt;
&lt;br /&gt;
= Dynamic Dispatch =&lt;br /&gt;
* &amp;quot;stages of dynamism&amp;quot;&lt;br /&gt;
* multiple dispatch can be done either statically or dynamically&lt;br /&gt;
* many forms of caching (polymorphic inline caching, et. al.) are forms of dynamic dispatch&lt;br /&gt;
&lt;br /&gt;
= Introspection =&lt;br /&gt;
* not strictly a dynamic language feature, but more common in dynamic langs than in static ones&lt;br /&gt;
* annotations (ex: research at IBM on using annotations to enforce web application security constraints)&lt;br /&gt;
&lt;br /&gt;
= Dynamic Compilation =&lt;br /&gt;
* compiling blocks of code, capturing the environment around that code (closures, runtime environment, etc.)&lt;br /&gt;
* higher-order functions: methods generating other methods at runtime&lt;br /&gt;
* interaction (REPL), as with the Python command line&lt;br /&gt;
* sci-fi future: self-modifying code&lt;br /&gt;
&lt;br /&gt;
= Dynamic Loading =&lt;br /&gt;
* another strategy for adding new code at runtime&lt;br /&gt;
* including new libraries&lt;br /&gt;
* binding routines to objects&lt;br /&gt;
* mixins/traits/roles and other cross-cutting inheritance/extension models&lt;br /&gt;
* dynamic unloading: not often seen because dynamic languages traditionally power applications that run for short periods and wouldn't see gains from unloading to free up memory&lt;br /&gt;
&lt;br /&gt;
= Conclusions =&lt;br /&gt;
* &amp;quot;static systems and dynamic systems are both critical&amp;quot;&lt;br /&gt;
* tradeoffs of tighter control vs greater abstraction, productivity vs performance&lt;br /&gt;
* hybrid systems may be the most effective&lt;/div&gt;</summary>
		<author><name>Al3x</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Exploring_Dynamism_-_Randal&amp;diff=220</id>
		<title>Exploring Dynamism - Randal</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Exploring_Dynamism_-_Randal&amp;diff=220"/>
		<updated>2009-09-16T18:38:18Z</updated>

		<summary type="html">&lt;p&gt;Al3x: New page: Slides: [Image:Exploring dynamism.pdf]  = Introduction = * &amp;quot;a mental exploration of dynamic language features&amp;quot; * &amp;quot;crystalize what dynamism is&amp;quot; * static vs dynamic as particle vs wave * som...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slides: [Image:Exploring dynamism.pdf]&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
* &amp;quot;a mental exploration of dynamic language features&amp;quot;&lt;br /&gt;
* &amp;quot;crystalize what dynamism is&amp;quot;&lt;br /&gt;
* static vs dynamic as particle vs wave&lt;br /&gt;
* sometimes a binary distinction, sometimes not&lt;br /&gt;
* &amp;quot;no language is entirely static or dynamic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Dynamic Typing =&lt;br /&gt;
* you can do more stuff with a dynamic type system&lt;br /&gt;
* think of it as a way to extend the type system by having types inspect run-time state&lt;br /&gt;
&lt;br /&gt;
= Dynamic Dispatch =&lt;br /&gt;
* &amp;quot;stages of dynamism&amp;quot;&lt;br /&gt;
* multiple dispatch can be done either statically or dynamically&lt;br /&gt;
* many forms of caching (polymorphic inline caching, et. al.) are forms of dynamic dispatch&lt;br /&gt;
&lt;br /&gt;
= Introspection =&lt;br /&gt;
* not strictly a dynamic language feature, but more common in dynamic langs than in static ones&lt;br /&gt;
* annotations (ex: research at IBM on using annotations to enforce web application security constraints)&lt;br /&gt;
&lt;br /&gt;
= Dynamic Compilation =&lt;br /&gt;
* compiling blocks of code, capturing the environment around that code (closures, runtime environment, etc.)&lt;br /&gt;
* higher-order functions: methods generating other methods at runtime&lt;br /&gt;
* interaction (REPL), as with the Python command line&lt;br /&gt;
* sci-fi future: self-modifying code&lt;br /&gt;
&lt;br /&gt;
= Dynamic Loading =&lt;br /&gt;
* another strategy for adding new code at runtime&lt;br /&gt;
* including new libraries&lt;br /&gt;
* binding routines to objects&lt;br /&gt;
* mixins/traits/roles and other cross-cutting inheritance/extension models&lt;br /&gt;
* dynamic unloading: not often seen because dynamic languages traditionally power applications that run for short periods and wouldn't see gains from unloading to free up memory&lt;br /&gt;
&lt;br /&gt;
= Conclusions =&lt;br /&gt;
* &amp;quot;static systems and dynamic systems are both critical&amp;quot;&lt;br /&gt;
* tradeoffs of tighter control vs greater abstraction, productivity vs performance&lt;br /&gt;
* hybrid systems may be the most effective&lt;/div&gt;</summary>
		<author><name>Al3x</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Presentations2009&amp;diff=219</id>
		<title>Presentations2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Presentations2009&amp;diff=219"/>
		<updated>2009-09-16T18:37:43Z</updated>

		<summary type="html">&lt;p&gt;Al3x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''2009'''&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
!Wednesday 09/16/09&lt;br /&gt;
!Thursday 09/17/09&lt;br /&gt;
!Friday 09/18/09&lt;br /&gt;
|-&lt;br /&gt;
|  9:00||[[Welcome - Goetz/Pampuch]]       ||[[Keynote - Hickey]]     ||[[ANTLR - Parr]]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|  9:30||[[JDK - Reinhold]]       ||[[ -- ]]     ||[[JVM continuations - Click]]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 10:00||[[Da Vinci Machine - Rose]]   ||[[JVM Performance - Click]]             ||[[Trace-based JIT - Wimmer]]&lt;br /&gt;
|-&lt;br /&gt;
| 11:00||[[Exploring Dynamism - Randal]]    ||[[WS - Click]]         ||[[WS - Optimizing Ioke]]&lt;br /&gt;
|-&lt;br /&gt;
| 11:30||[[Better Ruby - Nutter]]        ||[[WS - Randall]]    ||[[WS - Clojure deep dive]]&lt;br /&gt;
|-&lt;br /&gt;
|  1:00||[[MOP &amp;amp; Indy - Szegedi]]        ||[[Scala basics - Pollak]]    ||[[Static Dynamic Types - Gafter]] &lt;br /&gt;
|-&lt;br /&gt;
|  1:30||[[Scala IDE - Sabin]]           ||[[Groovy Performance - Theodorou]]     ||[[Blame Tracking - Siek]]&lt;br /&gt;
|-&lt;br /&gt;
|  2:00||[[Hotswap - Wuerthinger]]       ||[[Sun update - Tanase]]     ||[[JavaFX Binding - Field]]&lt;br /&gt;
|-&lt;br /&gt;
|  2:30||[[WS - Eagle]]            ||[[NET Reactive Framework - Meijer]]      ||[[ -- ]]&lt;br /&gt;
|-&lt;br /&gt;
|  2:30||[[WS - DJRuby]]         ||[[ -- ]]          ||[[ -- ]]&lt;br /&gt;
|-&lt;br /&gt;
|  3:00||[[ -- ]]    ||[[Anti-Optimizations - Ohrstrom]]         ||[[Jython - Baker]]&lt;br /&gt;
|-&lt;br /&gt;
|  3:30||[[ -- ]]    ||[[Ioke, a folding language - Bini]]      ||[[JSR 292 Backport Deep Dive]]&lt;br /&gt;
|-&lt;br /&gt;
|  4:00||[[WS - invokedynamic]]       ||[[WS - Asynchronicus Anonymous]]  ||[[WS - Baker]]&lt;br /&gt;
|-&lt;br /&gt;
|  4:00||[[WS - Tools]]  ||[[WS - using a MOP]] ||[[WS - Factor JIT]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Al3x</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=Da_Vinci_Machine&amp;diff=199</id>
		<title>Da Vinci Machine</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=Da_Vinci_Machine&amp;diff=199"/>
		<updated>2009-09-16T17:38:12Z</updated>

		<summary type="html">&lt;p&gt;Al3x: New page: = Background = * project goal: changes to the JVM bytecode architecture * JVM has been language-independent from the beginning, but hasn't necessarily been optimal for non-Java languages *...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Background =&lt;br /&gt;
* project goal: changes to the JVM bytecode architecture&lt;br /&gt;
* JVM has been language-independent from the beginning, but hasn't necessarily been optimal for non-Java languages&lt;br /&gt;
* first code posted in 2008, along with draft specifications for reviewer (JSR 292)&lt;br /&gt;
* balancing specification with implementation: tail-calls, interface injection, invoke dynamic (&amp;quot;indy&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
= Current Status =&lt;br /&gt;
* active developer community on mailing list, IRC&lt;br /&gt;
* programmers assigned to a number of key tasks in JSR 292&lt;br /&gt;
&lt;br /&gt;
= Future =&lt;br /&gt;
* fixnums and tuples handled better in the JVM&lt;/div&gt;</summary>
		<author><name>Al3x</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=JDK7_and_Beyond&amp;diff=182</id>
		<title>JDK7 and Beyond</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=JDK7_and_Beyond&amp;diff=182"/>
		<updated>2009-09-16T16:44:18Z</updated>

		<summary type="html">&lt;p&gt;Al3x: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= focus of JDK 7 =&lt;br /&gt;
* modularization&lt;br /&gt;
* multiple languages * not really the focus of this talk&lt;br /&gt;
* Java language evolution&lt;br /&gt;
&lt;br /&gt;
= Project Coin =&lt;br /&gt;
* project to evolve the Java language&lt;br /&gt;
* improved integer literals&lt;br /&gt;
* &amp;quot;exotic identifiers&amp;quot;: #&amp;quot;op~&amp;quot;&lt;br /&gt;
** for interoperation with langugages that may use symbols and such in method names and other identifiers (ex: Scala)&lt;br /&gt;
&lt;br /&gt;
= Project Jigsaw =&lt;br /&gt;
* modularization of the JVM&lt;br /&gt;
* JVM is too large (18MB), slow to download not on broadband, hard to fit on small devices&lt;br /&gt;
* ex: import the 'desktop' module, get swing, sound, awt, etc.&lt;br /&gt;
* jmod tool to quickly install packages:&lt;br /&gt;
** sudo jmod install [url for .jmod package] and you're done&lt;br /&gt;
&lt;br /&gt;
= mlvm =&lt;br /&gt;
* Da Vinci Machine Project&lt;br /&gt;
* explored further in the next session&lt;br /&gt;
* goal is to support multiple languages well on the JVM&lt;/div&gt;</summary>
		<author><name>Al3x</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.jvmlangsummit.com/index.php?title=JDK7_and_Beyond&amp;diff=181</id>
		<title>JDK7 and Beyond</title>
		<link rel="alternate" type="text/html" href="https://wiki.jvmlangsummit.com/index.php?title=JDK7_and_Beyond&amp;diff=181"/>
		<updated>2009-09-16T16:42:07Z</updated>

		<summary type="html">&lt;p&gt;Al3x: New page: - focus of JDK 7     - modularization     - multiple languages - not really the focus of this talk     - Java language evolution - Project Coin     - project to evolve the Java language   ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;- focus of JDK 7&lt;br /&gt;
    - modularization&lt;br /&gt;
    - multiple languages - not really the focus of this talk&lt;br /&gt;
    - Java language evolution&lt;br /&gt;
- Project Coin&lt;br /&gt;
    - project to evolve the Java language&lt;br /&gt;
    - improved integer literals&lt;br /&gt;
    - &amp;quot;exotic identifiers&amp;quot;: #&amp;quot;op~&amp;quot;&lt;br /&gt;
        - for interoperation with langugages that may use symbols and&lt;br /&gt;
          such in method names and other identifiers (ex: Scala)&lt;br /&gt;
- Project Jigsaw&lt;br /&gt;
    - modularization of the JVM&lt;br /&gt;
    - JVM is too large (18MB), slow to download not on broadband, hard&lt;br /&gt;
      to fit on small devices&lt;br /&gt;
    - ex: import the 'desktop' module, get swing, sound, awt, etc.&lt;br /&gt;
    - jmod tool to quickly install packages:&lt;br /&gt;
        - sudo jmod install [url for .jmod package] and you're done&lt;br /&gt;
- mlvm - Da Vinci Machine Project&lt;br /&gt;
    - explored further in the next session&lt;br /&gt;
    - goal is to support multiple languages well on the JVM&lt;/div&gt;</summary>
		<author><name>Al3x</name></author>
		
	</entry>
</feed>