Splash 2011

Thursday Oct 27

mobl – declarative web programming

  • http://mobl-lang.org
  • DSL for HTML5, CSS, JS, SQL
  • does databinding
  • one of the things they wanted to solve: controller (MVC) has a lot of boilerplate (transferring objects back and forth between C and V types
  • uses phone’s db for storage
  • web service supprt, but no server implementation

JVM Trace Compilation

  • how to optimize trace path profiling for JIT implementation

Wednesday Oct 26

Emscripten LLVM -> JS Compiler

  • C/C++ can compile to LLVM; use emscripten to compile to JS
  • demo: bullet physics engine (100 kloc)
  • demo: SQLite running on JS
  • demo: CPython compiled from C; one example is it can show the number 11^20 which is too big for JS but not Python
  • demo: H.264 decoder running in Javascript, decoding HD and painting to canvas in real-time
  • benchmarks show range of 4-8 times slower than native code
  • http://emscripten.org

Naming Anonymous Javascript functions

  • >93% of functions in 16 js libraries are anonmous
  • Firebug, chrome use pattern matching to find functions, but not always successful
  • problematic for debugging: can’t always find correct constructors or give wrong name in some pathological cases
  • static analysis of code to name function where information is available. For example:
return {
   abc : function() { .. }
}
  • gives function name abc
  • used by orion, on-line javascript editor
  • nonymous project
  • will be integrated into firebug, chrome tools

Javascript Infusion IoC

  • http://fluidproject.org
  • homoiconicity
  • inheritance, composability bad because they lead to “directed graphs of such complexity that they aren’t stable for more than a few days” (my summarization didn’t quite do it justice)
  • on github

Crossfire – Cross-Browser debugging protocol (mcollins on twitter)

  • fireecipse : firebug/eclipse integration
  • still undergoing development
  • cannot yet do cross-browser development
  • does work for IE/FF/Eclipse
  • eclipse plug-in JSDT X-Fire
  • can recognize JSPs, but not perfectly

KonohaScript

  • http://konohascript.org
  • goal is to be a dependable scripting language
  • aims to be static & dynamic
  • compiler and run-time
  • konoha VM, LLVM IR
  • can annotate classes, vars to be dynamic
  • file literals
  • not as fast as Java, but faster than Python, Ruby
  • LLVM implementation (has JIT?) almost as fast as java
  • support for closures is under development

SugarJ

  • add DSLs to Java code
  • demo: add closures to Java
  • seems very slow (could also be Eclipse)
  • library developers could write the necessary sugarings/desugarings for library users
  • could share XML, closures, etc.

Tuesday Oct 25

Strict Serializability is Harmless

-app server-based cache is incorrect with certain transaction isolation levels
-talked about Fenix framework
-use software transactional memory
-JVSTM – designed for high R:W ratio
-strict serializability
-transactional domain objects (STM protected)
-domain object cache keeps soft reference to object, reducing db round trips
-tops out at 4 million transactions per day
-has its own DML
-https://fenix-ashes.ist.utl.pt/trac/fenix-framework

Web Technologies on the Desktop

-emulate browser/server on the desktop, using webkit and OSGi
-I guess used in situations where you can’t run a browser
-can change interfaces or implementations at run-time

Javascript Re-factoring

-uses pointer analysis (the subject of the PhD student’s thesis)
-not perfect because objects can’t be known for sure until run-time
-if it can’t be sure it will work, it bails on doing the re-factoring to ensure it won’t break the code
http://www.brics.dk/jsrefactor/

1000000 Daily Users and No Cache

-at first, ruby on rails plus New Relic plus MySQL
http://newrelic.com/features/performance-analytics
-can’t cache because of write-heavy workload
-active record checks connection state before sending transaction; by stopping this, load reduced by 20%
-eventually, even though there were 16 MySQL databases, there wasn’t enough write throughput
-used Redis, a RAM-based data store where writes are as fast as reads
-deployed to Amazon WS

Automatically Fixing Java Security Vulnerabilities

-eclipse plug-in that detects and can fix (via Ctrl-1) SQL injection and XSS flaws
-uses extract computation re-factoring to follow all inputs from source to sink
-fixes XSS by calling URLEncoder to sanitize inputs
-unfortunately, not available to public

Cloud 9 IDE

-runs in browser
-tool that is built using itself
-node.js on back-end
-can fork directly from github
-CLI to github
-unix console
-open-sourced editor (ACE), which is also used by github
-there may be bitbucket integration too
-integrated deployment to heroku
-screen-sharing using IDE, and messages too (skype integration?)
-can remotely pair program
-iPad version in the future, possibly (performance issues)
http://c9.io
-so far only syntax highlighting, but they are working on more tooling

Trustworthy Numerical Computation in Scala

-need to account for floating point precision in algorithms: 9 different algorithms can give 9 different results
-developed two float types for Scala to control precision, they are faster than other types

Monday Oct 24

Keynote on Dart by Gilad Bracha

-optional types (but be unobtrusive)
-compilter/checker won’t try to prove things absolutely true; if it looks like it will work, it will let it go
-tries to stay out of programmer’s way

An Interpreter for Server-side Hop

-hop is a multi-tier programming language for the web
-LISP-like
-client compiled to HTML and JS
-server partially compiled, partially interpreted

DSMs for Small and Medium Enterprises

-survey of companies using DSLs
-overview of DIESEL framework for DSL development
-key roles are DSL engineer and domain expert

Optimizing PHP with JIT (Zend)

-compile PHP to python
-run on PyPy (Python run time with JIT)

Cloud/Mobile Applications DSL

-Mobicloud
-cloud/mobile hybrid app
-front end is browser native app (android, some development on blackberry)
-back-end on cloud (java servlet)
-decomposed into MVC
-server application generated as service and optionally deployed to AppEngine, Amazon WS
-either source code or compiled archives generated
http://mobicloud-classic.knoesis.org/

Everything we know about parallelism is wrong

-synchronization (required for perfect correctness) will be too slow for 1000 core CPUs
-introduced techniques for limiting errors in non-synchronized cache that didn’t have to be 100% correct (some algorithms)

Javascript VM

-wrote a javascript VM (in JS) for research purposes

Quality of Use in DSLs

-evaluations of DSLs not adequate
-DSL effective for non-informed users

Categorization of Concerns

-barely paid attention

Sunday Oct 23

Towards A Comparative Analysis of Meta-Metamodels

-overview of current modelling tools

Models for Forms

-formalization of form models
-requirements for DSL, but no implementation

Towards Integration of Policies into DSMLs

-ideals for simplifying policies in models

Design Patterns for Metamodels

-overview of DSMLs
-suggestions for process of creating new DSML

DSML for Reversible Transformations

-introduced MODIF, a transformation language for DSMLs
-introduced approach for doing reversible transformations
-a stepping stone towards re-factoring of DSLs

Creation of DSLs using Templates and JSON

-JET templates for Eclipse
-BUDE eclipse plug-in
-http://ltiwww.epfl.ch/BUDE
-still in alpha

It's only fair to share...
Share on FacebookGoogle+Tweet about this on TwitterShare on LinkedIn

Leave a Reply