Great news that PhaROS got the 3rd price of the Innovation Technology Awards @ ESUG 2018.
Santiago Bragagnolo, Luc Fabresse, Pablo Estéfo, Sang Xuan Le and Noury Bouraqadi.
Congrats to all contributors!
Great news that PhaROS got the 3rd price of the Innovation Technology Awards @ ESUG 2018.
Santiago Bragagnolo, Luc Fabresse, Pablo Estéfo, Sang Xuan Le and Noury Bouraqadi.
Congrats to all contributors!
The Pharo MOOC will start october 16th, 2017 on France Université Numérique (FUN).
This MOOC is free and fully available in French and in English.
Registration web page: https://www.fun-mooc.fr/courses/course-v1:inria+41010+session02/about
If you are either a beginner or an expert in object-oriented programming, this MOOC will change the way you program with objects: come and learn or rediscover object-oriented programming with Pharo! Pharo is a pure object-oriented programming language in the tradition of Smalltalk. It offers a unique developing experience in constant interaction with live objects. Pharo is an open-source platform (MIT licence) supported and used by a joint consortium of industrials and academics (http://consortium.pharo.org/).
From the research point of view, Pharo provides a very malleable language to prototype new ideas thanks to its unique and advanced reflective layer.
More details on the MOOC web page: http://mooc.pharo.org
Over the last years, the RMOD team of INRIA Lille and the CAR theme of IMT Lille Douai have been working together on creating tiny language cores. For example, Guillermo Polito demonstrated in his PhD a fully reflective kernel that fits into 80 kb of memory and that it is possible to have hyper specialized kernels down to 11 kb. We have also worked on remote debugging (PhD of N. Papoulias) and dynamic code updates (PhD of P. Tesone) of such kernels. All of these works are prototyped in Pharo. More recently, RMOD have been working on advanced probes mechanisms (M. Denker) and a solid remote debugging infrastructure (D. Kudriashov).
The goal of this PhD is to revisit the architecture around such mini-kernels for building IoT applicatons. The following tasks are foreseen:
- improve the tools to: edit, compile, debug, deploy and update such kernels on IoT devices. Learning how to debug remotely and dynamically update such IoT systems using the PharmID Pharo environment. This task will be in cooperation with M. Denker and D. Krudiakov on remote debugging for IoT and G. Polito for the kernel edition and tooling,
- define some language extensions to manage groups of IoT devices to program them at once. Managing hundreds or even thousands of IoT devices is a challenging task. We want to explore different solutions to help deploying and updating groups of IoT devices using some registration mechanism in a cloud server or some groups/roles based approaches for example,
- expressing the architecture of IoT applications. We would like to explore also how to express IoT architectures and what are the abstractions that should be offered to developers such as expressing event-driven architectures with declarative ECA (Event-Conditions-Actions) rules.
But we will study a couple of typical IoT applications.
- dynamically update an IoT application. An IoT application needs to adapt itself because unreachable or faulty devices or the diminution of available bandwith. We would like that the whole application can reconfigure itself in such situations as Guillaume Grondin proposes it in its PhD.
- Lighweight virtual machines. Virtual machines in the IoT context are very powerful for incremental deployment or dynamic updates. Although they are tuned for speed, they consume space compared to a non VM-based program. In this task, we would like to investigate what is the minimal memory consumption that we can reach for a VM usable for IoT. To do so we will use a standard VM such as Cog (the open-source virtual machine of Pharo) and degrade it. We will use it since our minimal kernels are running on it.
Note that ZweiDenker GmbH is interested in collaboration on the IoT management cloud infrastructure.
To apply, please send us:
- a CV
- a copy of your Master diploma
- a copy of your Master thesis
- 2 (two) reference letters, with the contact details of the referents
- links to videos of demos of your experiments and/or simulations
The application materials should be sent no later than August 30th 2017 by email to Prof. S. Ducasse stephane.ducasse-AT-inria.fr.
Email subject must start with: [PhD-RMoD-CAR-2017].
Bibliography
- G Polito, Stéphane Ducasse, N Bouraqadi, L Fabresse, M Mattone. Virtualization Support for Dynamic Core Library Update. Onward!, Oct 2015, Pittsburg, USA.
- Guillermo Polito. Virtualization Support for Application Runtime Virtualization and Extension. Ph.D. Thesis 2015. Co-delivrée par l’Université de Lille et l’École des Mines de Douai.
- Extended results of Tornado: A Run-Fail-Grow approach for Dynamic Application Tayloring. Commanditeur: École des mines de Douai, France. 50p, July 2014
- Nick Papoulias, Noury Bouraqadi, Luc Fabresse, Stéphane Ducasse and Marcus Denker, Mercury: Properties and Design of a Remote Debugging Solution using Reflection, Journal of Object Technology, 14, 1:1-36, 2015
- Madcar: an abstract model for dynamic and automatic (re-)assembling of component-based applications
G Grondin, N Bouraqadi, L Vercouter. International Symposium on Component-Based Software Engineering, 360-367.
We are pleased to announce that we are looking for a good and talented student for doing a PhD with us and our colleagues from ENSTA Bretagne.
More infos: PhD Description PetitPoucet
We are really pleased to announce that a Pharo MOOC (Massive Open Online Course) will be available soon. You can already have a look at its description and its nice teaser ;-)
http://www.france-universite-numerique-mooc.fr/courses/inria/41010/session01/about
We have a PhaROS driver for the Robulab.
To install:
curl http://car.mines-douai.fr/scripts/Robulab | bash
roslaunch robulab bringup.launch
Enjoy PhaROS for Robulab development!
The video below presents an experiment made by two students at Mines Douai (Max MATTONE and Suzanne SHOARA) to achieve indoor localization based on WiFi signals.
deprecated
cf. https://github.com/CARMinesDouai/pharos/wiki/Install-PhaROS
To install:
sudo apt-get install curl
curl http://car.mines-douai.fr/scripts/PhaROS | bash
source ~/.bashrc pharos create myfirstpharospackage rosrun myfirstpharospackage edit
To uninstall (why would you need that? ;-)):
~/PhaROS-bin/pharos_uninstall
Goal
Automatically copy files that are added or modified in a specific folder of an svn repository.
Useful for Web sites, …
Prepare a post-commit script
cd /svn/robots/hooks cp post-commit.tmpl post-commit chmod ug+x post-commit
Be careful of the owner/group of this post-commit file because it is the unix user that is dedicated to execute post-commits that must have executable rights.
The post-commit script
Example of script that checks if files in “PhaROS/Scripts” are involved in the latest commit.
If yes, copy them in /var/www.
#!/bin/sh REPOS="$1" REV="$2" for scriptfile in `svnlook changed /svn/robots | awk -F "PhaROS/Scripts/" '{print $2}' | xargs`; do svn export --force --non-interactive -q file:///svn/robots/PhaROS/Scripts/$scriptfile /var/www/Scripts/$scriptfile done
Test the script
./post-commit /svn/robots 395
Be careful of the rights here too.
This post-commit script may be executed by a different user than yours when testing like above.
The real test is to modify the files in a repository copy and effectively do a commit.
CodeJam is a programming contest. It includes a lot of problems.
For each problems, 2 data sets are provided: a small one and a large one. It is really interesting to learn programming.
You can try a solution on the small data set and also send it to the CodeJam web site to know if it is correct and then try on the larger data set.
CJSover is a framework written in Pharo to easily implement algorithms to solve CodeJam problems.
It simplifies data file reading and writing. I also implemented some (really naïve and non-optimized ;-)) solutions to some problems.
And for those “solved” problems, I commit here the correct solution to then be able to run automated tests that re-run them.
HOW TO USE
$ git clone https://github.com/LucFabresse/CJSolver.git CJSolver.git
$ cd CJSolver.git
$ sh newImage.sh # this will download the Pharo VM + Pharo image + load the CJSolver code
$ ./pharo-ui cjsolver.image
I did this small framework because:
- I want that students learn Pharo,
- I want that students participate to some programming contests using Pharo,
- I want to show students that YES, we can also implement these problems in Pharo
Please, checkout the code,
optimize already implemented solutions,
or implement solution to new problems,
and have fun ;-)