Suit les enseignements de l'Institut d'études sociales (IES Genève) dès 1967. Membre du Mouvement socialiste autonome (MSA), puis de l'Organisation de lutte pour le communisme (OLC), du Groupe d'action syndicale (GAS) et de la Librairie Que faire?. Il adhère ensuite au parti SolidaritéS. Il est élu au Grand Conseil genevois (législatif cantonal) sur la liste de l'Alliance de gauche en 1993. Il est député de 1993 à 1997 et de 1997 à 2001.
Dès 1977-1978, il est chauffeur aux Transports publics genevois (TPG). Il est ensuite assistant social et participe notamment à la grève du Bureau central d'aide sociale (BUCAS) et de l'Hospice général (1980)