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 ;-)

Lots of fonts are available for LaTeX here

1. Example: install the emerald package

 
wget http://mirrors.ctan.org/fonts/emerald.zip
unzip emarald.zip

ln -s ~/Libary/texmf .texmf # because I am on mac

cp -fr emeral/tex/latex/emarald/ ~/.texmf/
cp -fr emeral/fonts ~/.texmf/

cd ~/.texmf
texhash .

cd ~/.texmf/fonts/map/dvips/emerald.map
updmap updmap --enable Map emerald.map

2. emerald-test.tex

 
\documentclass[11pt]{article} 

\usepackage{emerald} 
\usepackage{lipsum}
 
\title{Emerald testing}
\author{Luc Fabresse}
\date{}

\setlength{\parskip}{2ex}

\newcommand{\showFontaux}{normalfont}
\newcommand{\showFont}[1]{%
	\renewcommand{\showFontaux}{#1}%
	\csname \showFontaux \endcsname%
	\marginpar{\vspace*{0.6cm}\small\csname \showFontaux \endcsname #1}%
	\lipsum[2]%
	\normalfont
}

\begin{document} 
\maketitle

We are going to try a series of standard Laserwriter fonts.

\showFont{ECFAugie}
\showFont{ECFJD}
\showFont{ECFAPictureAlphabet}
% \showFont{ECFDecadence}
% \showFont{ECFDecadenceWithoutTheDiamonds}
% \showFont{ECFDecadenceCondensed}
% \showFont{ECFDecadenceInTheDark}
% \showFont{ECFDecadenceInTheDarkCondensed}
% \showFont{ECFDecadenceInADifferentLight}
% \showFont{ECFDecadenceInTheDarkCondensedMarquee}
\showFont{ECFIntimacy}
\showFont{ECFIntimacyDeux}
\showFont{ECFMovieola}
\showFont{ECFMovieolaTitleType}
\showFont{ECFPookie}
\showFont{ECFPookieType}
\showFont{ECFSkeetch}
\showFont{ECFSpankysBungalow}
\showFont{ECFSpankysBungalowItalico}
\showFont{ECFSpankysBungalowBlanco}
\showFont{ECFSpankysBungalowBlancoItalico}
% \showFont{ECFSyriac} 
\showFont{ECFTallPaul}
\showFont{ECFTeenSpirit}
\showFont{ECFWebster}

\end{document}

3. Compile and see

pdflatex emerald-test.tex

Packt publishing offers great discount on their books this Christmas.

Following on from the success of last year’s festive offer, the publisher will be celebrating the holiday season with an even bigger $5 Bonanza.
From December 19th, customers will be able to get any eBook or Video from Packt for just $5. This sale covers every title in the 1700+ range and customers can grab as many as they like until January 3rd 2014 – more information is available at http://bit.ly/1jdCr2W

Learning ROS
I’ve recently finished to read the book titled “Learning ROS for Robotics Programming”, written by Aaron Martinez and Enrique Fernández and edited by PACKT publishing.

This is a must-read for any developer who wants to understand ROS deeper. The authors have written a really good book as well as to learn ROS (for complete beginners) and also to improve knowledge of more confirmed ROS developers. The book is well written and very pedagogic. And the most important, I think, is that the topics of the chapters are carefully chosen. This means that depending on your ROS experience you can directly jump to some chapters. Nevertheless, this book does not target advanced ROS users.

Chapter 1 (Getting Started with ROS) is a great introduction to ROS. I liked the history and the installation process descriptions for both Electric and Fuerte versions of ROS. I only regret that this book (fist published in September 2013) does not focus on Groovy which is now the stable version. But this is not critical and installation process can be easily applied to Groovy or even Hydro (current unstable version of ROS). Moreover, it also important to note that some ROS stacks still work better on Fuerte.

Chapter 2 (The ROS Architecture with Examples) explains very well the basics of ROS: nodes, topics, master, parameter manager, … It then gives examples of installing and creating its own nodes. This is a must read to begin with ROS and I will recommend it to all my students. Again, I only regret that it does not explain the new Catkin package management included in newer ROS versions.

Chapter 3 (Debugging and Visualisation) shows that the authors really know the daily job of robots developers ;-). I really appreciate finding this kind of information in this a ROS book because robot development is hard and error prone. It should not be idealised and it is not in this book. Most of the time, you will ask yourself: “what is going on?” and you need some tools to investigate and localize the bug. This chapters present all the tools needed to debug from GDB to ROS tools such rviz, wtf, … I really liked this chapter because debugging is IMPORTANT and I learnt things that will now help me to be more efficient when debugging.

Chapter 4 (Using Sensors and Actuators with ROS) presents how to use “common” robotics sensors with ROS. In my case, I was interested by kinect, Arduino and Xsens.

Chapter 5 (3D Modelling and Simulation) presents how to use simulation tools from URDF models loaded in rviz to real Gazebo simulations. This chapter is classical. Nevertheless, I want to report about a small but usefull section that explains how to do a 3d model of a robot in Google Sketchup and then import it in rviz. This is interesting because it shows how to add support into ROS for non-ROS robots that we all have in our labs!

I cannot give an opinion on chapter 6 (Computer vision) because I am less involved in this topic.

Chapter 7 (Navigation stack) and Chapter 8 (Navigation stack – Beyond setups) are completely in my current activities. Chapter 7 explains how to adapt the navigation stack to your robot. This is exactly what we did in our lab for some non-ROS robots. It would have been good to read this chapter before doing it, I am sure we would have been faster! Chapter 8 describe some tuning elements. Indeed, the navigation stack is full of parameters at different levels that make the difference between a “good” and a “bad” behaviour. All of these parameters (fixed values) are difficult to set up and sometimes difficult to determine. This chapter gives some useful insights on how to proceed.

Chapter 9 (Combining Everything – Learn by doing) presents some standard ROS installations for different known robots such as REEM, PR2, Robonaut 2, Husky and Turtlebot. We have multiple Turtlebots 2 in our lab. I must admit that the 2 pages on this robot base in chapter did not help me very much. But, other robots such as the PR2 is far more described and you can use it in Gazebo simulations.