| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
![]()
This section:
Blog postings by Operational Dynamics partners and staff
Use the links at top left for a consolidated feed of all the posts made on this
site.
Please note the disclaimer at the bottom of this page.
Thu, 25 Jan 2007
A Japanese pub in Hong Kong

I was introduced to a really wonderful Japanese restaurant in Hong Kong last week. The service is cheerful, the restaurant clean, and the cuisine has considerable breadth in its selection. They had a number of unique house specialities and took great pride in their offerings.
(“Unique” and “house speciality” regrettably don’t go together that often — in North America “house speciality” usually means “we changed the oil in the deep fryer this week, so we’re going to charge more”)
We had a group of 25 or so, and unlike the typical “stuck in some claustrophobic back room that has nothing to do with the place”, the proprietor was there at the door to greet us with a friendly “sit wherever you like” at any of the tables tucked away along the side of the restaurant. We had a cozy, warm, and delightful dinner. And sake. Lots and lots of sake.
Highly recommended.
Not far from Causeway Bay MTR station. Their website is in both English and Japanese and has a map.
AfC
Fri, 05 Jan 2007
First tarball in the java-gnome 4.0 series released!
After 9 months of design, engineering, and mad coding, I am pleased at long last to make the first public release of the new java-gnome bindings.
We are now at the state where we have not just a theory but a working architecture that has been validated through interaction online and at conferences with the community around the world. My firm, Operational Dynamics, has sponsored the work to this point, and we are now seeking revenue to carry out the engineering necessary to take the bindings from a prototype with coverage of 0.1% to the level where it will be a fully usable binding. If you think your firm would be interested in engaging us to this end, or to ensure a piece of GNOME that you need is present, then please contact Andrew Cowie, andrew@operationaldynamics.com.
If it isn’t obvious, there’s still quite a bit of fluidity, and so I recommend to our downstream that it’s not quite yet time to package up java-gnome 4.0 for your distro. I’ll be in touch with the individual package maintainers in the coming months. Likewise for developers, yes, it’s exciting, but no, it’s not really ready for writing full apps with (though one guy did write something to show the cricket scores!). So while it is not really prime time (indeed, me even blogging about it smacks a bit of preemption), the open source vibe has ever been to release early and often so that others can participate. If you want to have a voice in the shape of the Java bindings for GTK and GNOME, you’re welcome to get involved.
The rest of this blog post is the release note from the NEWS file which you can read online or in the sources, of course!
java-gnome 4.0.1 (05 Jan 2007)
It’s not really a prototype anymore! the design works, and so the code that is here is forming the foundation of the new Java bindings for GTK and GNOME.
While there are some significant pieces of engineering that are yet to be done, and of course a universe of coverage yet to write, we’re pleased to mark the milestone of the prototype having proved itself to be stable and the strong foundation that we need. In this release:
Project documentation
Import project documentation, initially consisting of the re-engineering
emails written by Andrew Cowie to the java-gnome-hackers mailing list, and
expanded to include top level README and
HACKING files, and a style guide for contributors to follow.
All documentation [re]formatted in Markdown syntax so as to be renderable to
web pages. See doc/design/ and
doc/style/.
Project website
Create an entirely new website for http://java-gnome.sourceforge.net/, introducing sections “About”, “Documentation”, “Download” and “Interact” to discuss the the project as a whole, to be a home for the documentation, to provide instructions on how to get java-gnome, and information about the mailing lists and IRC channel, respectively. Also include a page thanking the previous generations of maintainers for their hard work and noting that the 2.x bindings have been unmaintained for some time now and are formally deprecated.
The website is no longer a wiki but is entirely within the source code of
java-gnome itself. See the web/public/ directory; improvements welcome.
Major engineering
Quite significantly, the infrastructure to get a Proxy or Constant instance
for any arbitrary C side pointer or enum is complete, involving significant
work to the Plumbing classes,
along with the corresponding C side code, especially in GValue.c
This was a necessary building block in order to complete the generalized
getProperty() mechanism that, while hidden from public view, is nevertheless
a major aspect of the GObject tool chest and is usable by bindings hackers
when necessary. The generalized instance mechanism was the last major
engineering hurdle that needed to be achieved in order to prove the new
bindings design.
New coverage
Label, Fixed, Box, VBox, HBox
and corresponding [working] mockup translation and native code.
Compliments to Srichand Pendyala from Bangalore, India for being the first
external hacker to have a patch accepted to mainline! He contributed methods
to Label and initiated the implementation of the Fixed class. In so doing, he
also helped work the bugs out of the bzr bundle submission process. Awesome.
Build improvements
java-gnome now builds on Ubuntu and OpenSolaris in addition to its home turf of Gentoo. Thanks to John Rice of Sun Microsystems who provided the guidance allowing us to port Equivalence to Solaris some months ago, and Laszlo Peter, also of Sun Ireland, for several fixes to allow configure to recognize a wider range of Solaris environments.
The tiny example program that we have been using to validate the code,
Experiment is now compiled by the build system if you so request. Try make
demo.
API documentation
Extensive attention has been paid to the JavaDoc for the few methods that are presented so as to clearly set the standard required. The canonical JavaDoc for the project is available at the website with a stable URL and can be linked to.
All source code [comments, ie JavaDoc] have been spell checked! Initial top
level overview.html and package.html files have also been written to help
round out the JavaDoc.
java-gnome 4.0.0 (26 Nov 2006)
Initial release of the java-gnome 4.0 prototype, corresponding to the first public demonstration of the new bindings done at foss.in/2006 at Bangalore, India.
The prototype is fully functional and is intended to prove the design and architecture we have arrived at as a result of the re-engineering process. It includes both real wrapper layer classes that are the seed from which our public API will grow, along with the infrastructure that the wrapper layer depends on.
Initial coverage
Wrapper layer presenting the public API to developers: Widget, Container, Bin,
Button, Window, along with complete translation layer implementations.
At present the bindings mock up the code that will be generated with temporarily hand written substitutes (ie, those in italics above) for both translation (Java) and native (C) layers. These will do until we receive the funding to make the code generator a reality; we certainly don’t want to be writing much more translation layer Java and C code by hand. Yuk.
Signal API
The defining aspect of GUI programming is, of course, that it is event driven. In addition to the “forward” direction of making calls to the native library and having return values bubble back up, there is the “reverse” direction of connecting callback handlers to the various signals that different Widgets offer, and having those signal events result in those handlers being invoked.
java-gnome 4.0 has an entirely new and redesigned signal connection and
callback API. This functionality was demonstrated, and coverage of
Button.CLICKED and Window.DELETE is now present and functional!
The APIs used by GNOME language bindings to achieve this are some of the most
voodoo I have ever seen. But it’s hooked up, and it works. It’s like black
magic :)
Build
java-gnome is configured and built using Andrew Cowie’s Equivalence build
scripts. It builds on Gentoo and should build on a Debian or Fedora derived
system as well. See README for further details.
At the moment, java-gnome is a single source package. That may or may not change.
The source code is available via bzr. Again, see README.
You can download java-gnome from ftp.gnome.org but at this stage you’re just as well off to get the code from mainline in our DVCS. I’m pleased to say it’s moving quickly. :)
AfC
Thu, 04 Jan 2007
Spell checking Java source code
Dammit, Jim, I’m an Engineer, not an English major!
API documentation is incredibly important, but unlike tutorials or other reference documents that can be written in conventional text editors or word processors with nice built in spell checkers, the public API of a Java project is conveyed through JavaDoc comments that are contained in source code right next to each class and method as they are declared. We necessarily find ourselves with tons of generated web pages covered in prose… and full of spelling mistakes.
So I’ve had it in mind for a while to run aspell over the java-gnome sources. Raving insanity, that’s for sure. Spell check source code? Are you mad?
Well, being suitable euphoric on New Year’s Day, I decided “what the hell, why not” and gave it a try. One thing that was obvious was that I was going to end up with a ridiculous number of unknown words that were going to need adding. Rather than
filling my personal dictionary (the one in $HOME) with tons of project specific crud, I used aspell’s -p option to specify a new word list in the project’s top level directory. Easy enough with bzr — they’ve got a bzr root command that tells you the path of the project root. Nice.
Here’s the command line I used:
aspell -x -c -p `bzr root`/.aspell.en.pws -H Button.java
It worked pretty well. The tokens sure did add up in a hurry, though. Java language keywords? Ok, no problem. Class names? Sure, makes sense to add them — many had already turned up when spell-checking other documentation in the project. But uh oh: it wants to know about getLabel( and num and x and every other bit of source code. Yikes. Quite the pain to add all that stuff while working through the files just to get to the JavaDoc and normal comments in order to fix the spelling in the text there.
But worth it… we now have spell checked API documentation!
What would really be neat is to write a little module for aspell that adds a mode that understands to only spell check stuff between /* and */ characters. The -H flag above tells aspell to ignore HTML markup, and there are modes for LaTeX and others. So hopefully a “source code” mode would be feasible, and I could start again and have a slightly better signal-to-noise ratio :)
Happy New Year!
AfC
Category Specific Feeds.
Use these links for an RSS or ATOM feed limited to this category and its descendants.
Technorati Profile

