Emmanuel Frecon

Home Page - http://www.sics.se/~emmanuel/

In summary, scripting and Tcl have changed my programmer's life. There is before and after.

My current focus of interest is the Internet of Things. Have a look at the Context Manager and Biot for two projects of interest. Most of my code is available from Google Code (BSD Licensed). For Biot, I am testing bitbucket as a sharing platform.

Historically, I started coding horrible applications in C. They took months for a pale result. Then, I interfaced Tcl to our main software of the time and it tremendously cut down development time, allowing me and my colleagues to quickly test ideas and write prototypes. If you are interested, have a look at DIVE http://dive.sics.se/ . The page has already been outdated for several years.


I appear here and there in this Wiki, usually as EF. Here are the places where I made some sort of significant contribution.

  • The DIVE page, though initiated by someone else, feels like mine, since I am the architect behind the DIVE/Tcl "revolution".
  • The TIL is my way to give back years of satisfaction to the Tcl community. The library contains plenty of what I hope is useful code.
  • TAX Revisited is my own take on a revisited minimalist XML parser.
  • I have made a proper package [L1 ] of e: the tiny editor for eTcl [L2 ].
  • outlog [L3 ] rotates log file automagically, you'd better off picking up the (more up to date) implementation in the TIL.
  • Skype and Tcl is one my latest additions, I hope to get this growing as I go on with my experiments.
  • I extended a bit htext.
  • The LongLat Converter will help you out when converting between all the different ISO formats for Longitude and Latitude.
  • DNS Library Revisited is now part both of the tcllib and the TIL. Sadly these are two slightly diverging versions and out to merge at some point.
  • Java UTF Socket Communication says almost it all. And while we are into Java, this [L4 ] will help you finding where it is installed!
  • This debugging helper [L5 ] will help you watching the creation of global variables (in sub-namespaces).
  • The winapi library is an (incomplete) attempt to provide a low-level layer to access the Windows API.
  • The Batch Changing Modification Time of Pictures is a little script that will use JPEG EXIF data to re-date the files according to the EXIF DateTime fields.
  • A(Modified)(Simple)Meter is an improvement over A(Simple)Meter from the french wiki. I felt like I had done enough improvements to give it a life on its own, and that it would benefit to more people by having a space here.
  • make library

Below is an historical list of small contained libraries that I have made available for use. They all are available from Google Code .

  • picbrowser

The picbrowser library implements a new Tcl/Tk widget for the navigation of file hierarchies that contain a lot of pictures. During browsing, all pictures within a directory will be shown as thumbnails. Other files will be shown with standard icons.

  • dragger

The dragger library implements the back end support for drag and drop of icons, i.e. Tk widgets. The library will take care of creating the dragged icon and of the animation and will deliver a callback when the icon is dropped.

  • flexupdate

The flexupdate library aims at minimising the number of calls to the infamous update command by issuing calls to the command at regular intervals only.

The splash library implements a new Tcl/Tk toplevel widget that aims at showing one (or more) splash windows during the initialisation phase of an application or any other lengthy operation.

The winapi library is a Tcl library that offers access to the low-level Win32 API. The philosophy of winapi is to give the programmer total control over the calls being made, at the expense of longer code. winapi attempts to mimick as closely as possible the Windows API: it uses names and naming conventions that are similar, offers Tcl commands that have the same order of arguments, represents flags and masks using the same names as their Windows constants counterparts and represent structures by lists of even length containing the keys and values of the structures.

  • notifier

The notifier library implements a new Tcl/Tk widget that presents itselfs as an (animated) notifier that pops up from one of the side of the screen in a direction that can be chosen. The notifier is a new toplevel and it is up to the caller to fill it in with content.

  • osd

The osd library implements a new Tcl/Tk widget that presents itselfs as an (animated) notifier that pops up from one of the side of the screen in a direction that can be chosen. The osd features an image and an informative message.

  • fullscreener

The fullscreener library forces an existing window from any Windows application to remain on top of a fullscreen blank frame, which will ensure the presence of one and only one window on the screen.

  • floatingbbar

The floatingbbar library implements a new Tcl/Tk widget that presents itself as an (animated) floating button bar that pops up from one of the side of the screen in a direction that can be chosen. The floatingbbar features any number of buttons.

  • gestures

The gestures library implements a low level Tcl service for gesture recognition. Mouse and keyboard events are pushed into the service, which will callback interested parties whenever a matching gesture has been recognised. The library does not draw on the screen, this is left to the caller.

  • winop

winop is a library that attempts to provide a unification layer for managing and manipulating windows. The library provides equivalent for a number of the 'wm' and 'winfo' commands, while being able to control both regular Tk applications and foreign Windows applications.

  • zshader

The zshader library is a utility library that will allow to shade (fade) away items on a Zinc canvas. The shading effect is attained through a stepwise modification of the alpha value of groups, which makes this library Zinc specific.

  • zlineedit

The zlineedit library provides facilities for the interactive edition of polylines on a Zinc canvas. The library provides facilities for both the creation of polylines and for the amending of created polylines. When all operations are allowed, the library will arrange for users to move, remove and add vertices and to move lines by clicking and dragging with the mouse.

  • updater

The updater is a library that aims at facilitating the auto-update of software over the Internet. It will poll on demand or regularly a location and will download any newer version posted to that location to a local file. Newer versions are detected through MD5 digests, which values are posted along the Internet location.

  • make

The make library has a twin goal: providing a pure-Tcl approach to expressing dependencies and rules for their resolution (as in makefiles) and automating the process of generating (Windows) binaries that are branded with your data.

  • wprocess

The wprocess library is a Tcl library that provides an API compatible with the process library of the TIL but acts without the help of any external application. It only works on windows.

  • event

The event library provides Tk-like eventing facilities for Tcl processes. This is very similar to the package called uevent in Tcllib.


Nowadays, I also have started some activity on the french wiki [L6 ]. I will probably keep most of my contributions here though.