Recent blog entries for terceiro

23 Aug 2005 (updated 23 Aug 2005 at 01:54 UTC) »
UML diagrams quick reference

UML isn't really like hiding a bike: after some time without practicing, you do forget how to do it.

I've just googled "uml class diagram reference" and got Allen Holub's UML Quick Reference as the first hit.

I mean, you'll never forget the logic and semantics of a UML class diagram, but its syntax. If there are advantages in using UML, the most important of them is that people can undertand what you mean with a design. Buy, anyway, that would be that good without using the right symbols in the right places, huh?

Did you remember the difference between the white and the black-filled diamond arrow ends in class diagrams?

Oh, yes: drawing diagrams with a bad mouse sucks too much.

4 Aug 2005 (updated 4 Aug 2005 at 19:24 UTC) »
Programming Language Concepts are not taught well

Recently Pedro wrote about stuff that makes Lisp so powerfull. For short, he argues that Lisp macros make possible to easily implement abstractions that are not builtin to the language. Indeed it's a very nice feature, and I now recognize Lisp as a great language. :-)

But my point in this post is to point what I think that is the cause for the bad impression that I had about it during undergraduation (and I guess that all of my coleagues had too).

The problem is that Programming Languages Concepts are taught under a, let's say, limited perspective. There is small emphasys on key concepts, like First Class Citizens, Abstractions, Meta-Programming, etc. I wasn't taught during undergraduation that functions are a data type, just like numbers, character strings, and others. What happens is that they may or may not be first class citizens, but are a data type.

This is indeed a characteristics of books like Concepts of Programming Languages by Robert W. Sebesta, and others used in so many places to teach Programming Language Concepts. They tend to focus on concepts used in laguages that are currently popular (read "broadly used in the market"), and not in some general concepts that are the foundation os every language in the world.

Several of the mainstream languages have they merits, but Programming Language Concepts books that don't go further in general concepts make several people with minds stuck to the languages that "everyone uses".

For those who want to learn in deep about Programming Languages Concepts, I would recommend a series by Professor David Watt: Programming language concepts and paradigms, Programming language syntax and semantics and Programming Language Processors. Well, "just" for understanding real programming language concepts, I guess that the first one is enough. :-)

12 Jul 2005 (updated 15 Jul 2005 at 01:43 UTC) »
Bypassing bad (or null) UTF-8 support on text-mode applications

Well, I'm a big fan of text-mode applications like centericq, links, etc. But some time ago I decided to dive into UTF-8, but it caused me problems: those applications don't handle UTF-8 well yet. Since mutt handles UTF-8 very well, it wasn't that bas. But having to switch Gnome-Terminal tabs to iso-8859-1 encoding every time I wanted to use centericq or links was kind of annoying.

I've just found a workaround for this. It's not the final solution, but a nice temporary one while there are applications that don't "speak" UTF-8.

The secret is to use luit, a great utility that is already included in XFree86 distribution. luit converts the terminal I/O of between UTF-* and the current locale.

For example, :

As I do use an UTF-8 locale, what I have to do to make centericq run nice inside my UTF-8 terminal:

$ LANG=pt_BR.iso88591 luit centericq

Cool!

Now I have in my .bashrc:

  • alias links='LANG=pt_BR.iso88591 luit links'
  • alias centericq='LANG=pt_BR.iso88591 luit centericq'

BTW, Debian has a centericq-utf8 package, which doesn't work at all. That's not because of the packaging, but because centericq-utf8 doesn't use the right ncurses features to abstract the input encoding, what would make the simple fact of linking the application to libncursesw intead of the plain libncurses enough to make it UTF-8-aware.

2 Jul 2005 (updated 2 Jul 2005 at 22:26 UTC) »
TopicTranslationsPlugin

I've just released a new TopicTranslationsPlugin version. It now redirects automatically to the best available translation of a topic, based on the Accept-Language header sent by the User Agent. I've added also the possibility of dealing with the missing translations.

I'm beginning to think that it definitely can be the base of a localization framework for TWiki ... wheee! :-)

19 Jun 2005 (updated 16 Nov 2005 at 18:34 UTC) »

I've just uploaded my first release of html2latex. My quest with it started when me and Pedro were managing to get Projeto Software Livre Bahia's booklet on Free Software typesetted and printed.

We decided to use html2latex, among other conversion tools. It has some bugs that we fixed. We've added some features as well.

Well, after that I tried to get in touch with it's original author and didn't succeeded. So I'm starting to mantain this new version. I hope it can be useful for several people and I get help with it. :-)

23 May 2005 (updated 23 May 2005 at 21:09 UTC) »

It's amazing how free software can be flexible. The last weeks I've needed several times do configure printers remotely. Sometimes it's "scary" what can be done with CUPS, ssh, and LinuxPrinting.org.

As I know (since last year, in fact) live 3000 km away from my hometown, and these days my parents bougth a new printer, those software came into hand to solve the problem. :-)

To configure "locally" a remote printer:

ssh remotehost   -L 9999:localhost:631

This way the CUPS web configuration interface on remotehost will be available on http://localhost:9999.

8 Jul 2004 (updated 8 Jul 2004 at 20:21 UTC) »
Changing locale notation to names suitable to TWiki webs

perl -p -e 's/_//; s/^(.)(.*)$/\u$1\L$2/;'
It will be usefull ... ;-)

Gives:

pt_BR -> Ptbr
en -> En
...

I'm used to imperative programming Languages, but I've started to read the book An introduction to functional programming systems using Haskell.

Functional Programming Languages have looked ugly for me, because of my (small) previous experience with Lisp. All those parentheses were very boring.

But Haskell has an extremely simple syntax, is very expressive and has direct and straighforward constructions. I've thought about programming something "real" to experiment using Haskell for programming usual stuff.

I hope I get used to program without attributions. :-)

6 Apr 2004 (updated 6 Apr 2004 at 17:40 UTC) »

I'll start to write here about all stuff I do with/for free software.

New Advogato Features

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!