====== Prof. Dr. Johan Fabry ====== | {{people:jfabry.png?100|Johan Fabry}}| @johanfabry on Twitter | dcc.uchile.cl@jfabry (if you swap sides) | | ::: | Part-Time Professor | [[http://pleiad.dcc.uchile.cl/|PLEIAD]] lab | | ::: | [[http://www.dcc.uchile.cl/|Computer Science Department (DCC)]] | [[http://www.uchile.cl|University of Chile]] | ===== Affiliation ==== Since january 2024 I rejoined the Universidad de Chile, after a 7-year absence. I am now a part-time professor, this page has not been actively maintained since 2017. [[https://scholar.google.com/citations?user=Kw-9h4AAAAAJ&hl=en|My Google Scholar page]] is up to date with regards to publications. === Quick links: === ^ Author page | Publication list is below. | [[http://scholar.google.com/citations?user=Kw-9h4AAAAAJ&hl=en|Google Scholar]] | [[http://www.informatik.uni-trier.de/~ley/db/indices/a-tree/f/Fabry:Johan.html|DBLP]] | [[http://dl.acm.org/author_page.cfm?id=81331491810|ACM]] | ^ Software | [[research:software:LRP|Live Robot Programming]] | [[research:software:AspectMaps]] | [[research:software:PHANtom]] | [[https://github.com/jfabry|GitHub ]] | ^ Curricula | [[http://www.dcc.uchile.cl/~jfabry/Brief%20CV%20Johan%20Fabry.pdf|Brief curriculum]] || [[http://www.dcc.uchile.cl/~jfabry/Full%20Academic%20CV%20Johan%20Fabry.pdf|Full Academic Curriculum]] | ===== Short Research Description ===== I work in the field of programming languages and software engineering. More specifically in the area of advanced forms of modularization and domain-specific languages. The overall focus of my work is guided by the following observation: In my experience, we as programming language researchers easily fall in the pit of making ever more powerful languages, with cool, powerful and complex features. This however comes at the cost that **the programmer needs to be able to understand and apply these features correctly**. To restate this as the problem on which I focus: **How can we, as programming language researchers, help the programmer to correctly use these cool language features we create?** ++++ Past and Present Work | My first research work was applied in the domain of distributed systems, trying to achieve a better modularization of cross-cutting concerns. I focused not on middleware but either on client applications that use middleware, or settings where the services are not provided by the middleware. For the former, the example case is the use of advanced transaction management and aspects. For the latter, an example I investigated is support for network disconnection and disconnection in an ambient intelligence setting, using generative programming. The ultimate goals were domain-specific languages or language extensions that provided a relatively easy way for the programmer to specify the above. Secondly, I worked on the design and implementation of Domain-Specific Aspect Languages (DSALs). As the first incarnation of AOP, they provided a straightforward way to deal with the complexity of cross-cutting concerns and hence such languages have always interested me. The goals here were to help the language/weaver developer in creating such languages. This included finding guidelines or methodologies for DSAL design and facilitating reuse of parts of DSAL specifications, amongst others. By using domain abstracions I believe that DSALs are an important solution strategy to tackle the problem of aspect composition and interaction, and can contribute positively to the discussion on the ever-controversial concept of obliviousness in AOSD. Thirdly, I provided a visualisation for AOP programs: [[/research/software/AspectMaps|AspectMaps]], which provides valuable information to the programmer about the cross-cutting nature of the AOP code. Fourthly, I have focused on the step from design to implementation: when implementing an application and using aspects, how can the design document give maximum guidance to the developer? This such that the programmer is not faced with significant ambiguities on how to implement the aspectual nature of the software, and that the design document uses as much the specific features of the aspect language as possible. As a result the programmer should not need to improvise, and external traceability can be maintained. I am a founding member of the [[http://rych.dcc.uchile.cl|DCC robotics lab]]. First I am focusing on helping the robot developer to specify the overall behavior of the robot. This is done through [[http://pleiad.cl/LRP|LRP]] a live programming language for robotics behavior programming. Second I am working on studying the [[http://www.ros.org|ROS]] software ecosystem, around the de-facto standard robotics middleware ROS, to find areas of low code quality and means to improve this code. ++++ ===== Teaching, Student resources ===== I teach the following courses * [[http://rych.dcc.uchile.cl|Taller de ingenieria de software pare Robots (CC5407) * [[https://wiki.dcc.uchile.cl/TallerMindstorms/doku.php|Taller de Proyecto (EI2001-x)]] * Not since 2013:[[teaching:CC71P|Objects and Aspects (CC71P)]] * Not since 2011: [[teaching:CC4301| Arquitectura de Computadores (CC4301)]] ex. Introducción al Hardware (CC41C) Here are some resources of use for students, useful even at undergraduate level! * If you need to make a presentation, have a look at my [[people/jfabry/presentation tips]] * I also have some [[people/jfabry/writing tips]] for when writing a paper, report, thesis ... ===== Recent Publications ===== ==== Free ACM downloads ==== Thanks to the ACM Author-Izer service (an ugly name for sure) you can download the following articles for free from the ACM Digital Library. If the text between each article sais something like **unauthorized link specified**, go here http://pleiad.cl/people/jfabry and try again from there. ++++ ACM Publication Free Download List |