I've moved over to a new high-tech weblog of my own now!
Update:That was not quite high-tech enough so I made a new one instead.
I've moved over to a new high-tech weblog of my own now!
Update:That was not quite high-tech enough so I made a new one instead.
I went to the 10th annual Erlang conference on thursday and had a great time, as usual.
My favourite talk was about the Dialyzer (Discrepancy Analyzer). This program analyzes regular Erlang object-code to find discrepancies that suggest programming errors. The analysis seems very much like what CMUCL does: infer type information from the way variables are used, propagate it around, then warn about any contradictions. Very impressive that it runs on unmodified object code, appears to really find bugs, and has managed to consume a 1.1 million line Erlang program without exploding. These guys have done an exceptional job of designing their tool to actually appeal to working Erlang programmers. (So far it hasn't found as many bugs as I'd expected, but I'm not sure if that's good or bad.)
I also saw a really amazing demo of Virtutech's Simics product, which is only related to Erlang in that one of the HiPE guys has joined them. It's much like Bochs or QEMU but it emulates a wide range of machines: x86, AMD64, SunFire/sparc, Alpha, and so on. It has some extra-fancy features like the ability to run the machine in simulated time, so that when the kernel enters the idle-loop it "fast forwards" to the next event. Really amazing, but unfortunately it isn't free software and I gather it's priced only for large corporations.
And of course free beer at the post-conference ErLounge didn't go astray. Hurray for the Erlang companies who sponsored the event :-)
XML
I'm currently implementing a protocol based on XML Schema and SOAP. As good as it was to spend five-odd years in blissful ignorance of XML, now I do wish that I'd started using it before XML-bashing became passé.
I'm not luke@bluetail.com anymore, but I'm still @member.fsf.org.
ncm: Hi! I just noticed that you work at ITA Software. I have a question that you might be able to help me with, about this part of the article on paulgraham.com:
<tibo> Luke, you won't believe it, your photo is in a newspaper today, here in Portugal <tibo> It is the picture that appears on your web page (assuming it is you). <tibo> I'm serious ! <tibo> Well it not a very serious newspaper... The 10 lines "news" is about a "study" that concludes that 17% Germans adults "drink in order to become drunk" <tibo> I will try to scan it.The price of fame! :-)
Example 8 --------- "C" provides a conditional expression. Thus if "a" and "b" are integer vari- ables, (a > b ? a : b) is an expression whose value is that of the larger of "a" and "b". However this does not work if "a" and "b" are to be regarded as unsigned integers. Hence there is a use for the procedure 6326 max (a, b) char *a, *b; { if (a > b) return(a); return(b); } The trick here is that "a" and "b", having been declared as pointers to characters are treated for comparison purposes as unsigned integers.
I just saw in the paper that Christiania, the big hippie commune and soft-drugs haven in the middle of Copenhagen, was just raided by a hundred police. They put a lot of people in jail for a long time.
The world is less of a cool place now.
raph: CMU Common Lisp is a system that takes error-reportage with macro-expansion seriously.
In the case of compile-time errors in the results of macro expansion, CMUCL's error reportage gives some very useful information: the actual source expression that expands to erroneous code, some context to say which part of the expansion is in error, and an easy way to see how particular expressions get expanded (macroexpand-1) so that your eyeball can spot the error.
For errors occuring during macro-expansion, you get full source-level debugging, since the macro is a Lisp program.
Now I'm curious about how well it works for debugging runtime errors in macro-expanded code. I mustn't have done much of that.
Another more upbeat observation is how good programs like strace and ethereal are, and the fact that you can understand a lot about a program by looking at how it interacts with other programs. Is this what they call "stratified design"?
New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!