OCT
8
2005

Java reflection vs Ruby respond_to?

I've recently been making some rubbish attempts at fixing a bug in the QtJava bindings. The problem is here in bug #112409, it meant that an event handler method in QtJava could only be a direct subclass of a QtJava widget, like QWidget or whatever and not a sub class of a sub class of QWidget and so on. To fix it involved using java reflection to look for any overriden event methods in the java superclasses by writing a loop to go up the class heirarchy. Please laugh at my comments as I continually screw up on the commit :).

OCT
6
2005

New QtRuby/Korundum book

Dave Thomas, the Pragmatic Programmer, made a recent announcement on ruby-talk about a new book by Caleb Tennis called 'Rapid GUI Development with QtRuby'. It is about 90 pages long and costs only $8.50 for a personalised pdf version. The idea of the 'Friday' small book series is something to try out on Friday afternoons. Congratulations to Caleb for getting the book out! Why not try out some QtRuby programming one Friday? The book will help you get going, and anything that helps lower the barrier to entry for Qt/KDE programming is great news.

SEP
2
2005

The Future is Obvious!

Lately I've been thinking about both my past and my future. What strikes me is how easy it is to predict the future (not necessarily the same as being personally able to make it happen). In the early 1970's Alan Kay at Xerox PARC used Moore's law to predict when it would be possible to create a flat screen display based portable machine, he called a 'dynabook'. You just take the graphs of expected progress in microelectronics, extrapolate, and see about what year the hardware would arrive.

JUL
2
2005

Greetings from Kiev

Alex Dymo has organised a KDevelop Developers conference, and I'm here in Kiev for a week with other KDevelop hackers.

JUN
11
2005

Qt4 moc format and Smoke v2

Over on the kdebindings mailing list Ashley Winters has started thinking about doing a version of the
Smoke libary using the Qt4 meta object system. My best summary description of Smoke has been 'a moc on steriods', so designing a better Smoke by extending the slots/signals idea to cover an entire api does seem a logical step.





He writes it up a blog entry, and summarizes it like this:



JUN
8
2005

Rich Burridge is a fellow walking antique..

Rich Burridge talks about how he first started working in the computer industry 30 years ago for ICL computers. Hey! That rings a bell, I started my first programming job in 1978 as a graduate trainee in the Advanced Systems Sector of Dataskil, which was a software house subsiduary of ICL in Reading.

JUN
7
2005

Prolog interpreter in Objective-C

Here's a blast from the past - I just found this on an old backup disk. It's a prolog interpreter in Objective-C that I wrote in 1993. I was unemployed and bought a NeXSTation with the small amount of redundancy money I got after the company I worked went bust.. as they do ho, hum.. But I subsequently presented it to a company short of a NeXTSTEP programmer, and got a job. So it has great 'sentimental value' I suppose. Welcome to the world of proof trees, WAM interpreters, backtracking, and other strange long forgotten stuff!

JUN
3
2005

Qt 4 QtRuby hello world working

I've just got hello world working with QtRuby and Qt 4:

require 'Qt'

a = Qt::Application.new(ARGV)
hello = Qt:: PushButton.new('Hello World!', nil)
hello.resize(100, 30)
#a.mainWidget = hello
hello.show()
a.exec()

MAY
7
2005

SOAPey DCOP

I've pretty much got my dynamic DCOP to SOAP bridge working now. There is a DCOP interface called 'SOAPGateway', and it has a addService() slot which takes two args; the name of a DCOP service and the URI of a .wsdl file defining the SOAP service. The .wsdl file is parsed and a suitable DCOP service is generated, with slots for each SOAP method call.

MAY
3
2005

Dynamic DCOP Server

I've been messing with with idea of dynamically adding DCOP slots to a running DCOP server program. I've got a little server with a slot called 'eval()' which takes a string of ruby code and evaluates it as a sort of 'compile command'. So you send the new code for a dcop slot to the server, it evaluates it, and you can then invoke the new slot.




Here is the code:
require 'Korundum'
include KDE

class DynamicDCOP < DCOPObject
k_dcop 'void eval(QString)'

Pages