I am still not working on anything big right now, but among the things I did in the last two weeks or so, I improved the widgets-project I maintain. This one is to be used to support as many different GUI toolkits as possible (including use cases for javascript + the web). The idea is to have objects that are abstract and represent a widget, say:

    button1 = create_button('Hello world!')
    button1.on_clicked {
      the_hello_world_button_was_clicked
    }
    # this is the verbose variant in a pseudo-DSL,
    # I like things being explicit. In most code
    # I may omit some parts e. g.
     _ = button('Hello world!') { :the_hello_world_button_was_clicked }
It defaults to ruby and what ruby supports (including jruby-swing) but two additional languages to use are python and java. Anyway.

I recently added the possibility to describe what kind of widgets are to be used via a yaml file, as an option. This may not sound like a huge win, but so far what I like here is that it becomes easier to modify individual widgets without having to sift through code; and it works for more programming languages too. Any customization for the widget, including method-invocations if necessary, can be done via a yaml file now. There is of course a trade off in that the yaml file can become a bit complex (if the GUI uses many widgets), so for the most part I use this for smaller widgets/components that do one specific functionality (or, few specific functionalities). For instance, a GUI over wget. Then if other larger programs need that, I make this small widget more useful and flexible.

The distant goal is to actually use a simple DSL that also would allow average Joe to customize everything in a very easy manner; and to have a widget set that can be used for as many different parts possible including wonky ideas such as having a whole operating system as a GUI available one day (a bit like webmin, but not limited to what webmin does; for instance, I'd also have games such as solitaire, reversi and so forth). I'd like to see how far that idea can go, but it is just a hobby so I can only invest little time into it.