Argonaut's life

As an ArgoUML contributor I'm going to blog my activities here, so that they may draw interest by other developers or help other developers when doing tasks similar to what I've done. AND(!) the grand vision that makes an Argonaut what he is, TO THRIVE IN THE BIG DANGEROUS WORLD, TAKING THE Argo TO A GOOD SHORE ;-))

Saturday, October 29, 2011

Papyrus critics idea: what to port from ArgoUML into Papyrus

Although I've been involved with the development of ArgoUML, currently there is another UML editing open source tool which is getting enough track to gain my attention. This is Papyrus. It is RCP and EMF based from its conception, i think.

So, it should be less complex to proceed from it than to proceed from ArgoUML, which must progress in the painful way from an architecture oriented towards Java Swing and NetBeans MDR (the project was abandoned by NetBeans). As a user of ArgoUML, which would be the most interesting features to bring from ArgoUML into Papyrus?...

So, my basic idea is to try to introduce into Papyrus some of the features that ArgoUML has which could add value to Papyrus as a UML editing and visualization tool. At least i could start from there. This blog would continue to be called Argonaut's life, obviously :-)

But you must always start by using the tool and fix a simple bug before delving into some process like this. Guess what - i never used it!?!

Listening now kaya project, elixir.

Tuesday, May 17, 2011

Common Lisp libraries: Quicklisp

Quicklisp is the base solution for solving the lisp libraries problem, which therefore is now solved :-)

Thanks to Zach Beane for writing and maintaining it and to Peter Seibel for his continued effort in advocating Common Lisp as a industrial strength language. I know it is because I work at SISCOG which uses Common Lisp extensively.

Sunday, May 08, 2011

hb2posts (previously htmled) port to Clojure

(meta '(idea htmled port clojure github open source learning argonauts-life blog))

[2011-05-06 Fri 22:46]
The initial org-meta-mode was bogus. I must learn Clojure instead of messing around with elisp and Common Lisp. The idea I'm having now is to publish htmled in GitHub tonight! Will I be capable of at least one such small hacking and big learning thing?

[2011-05-08 Sun 23:07]
Here it is: Licensed under the EPL because I want to port it to Clojure.

I had to change the name from htmled to hb2posts because htmled was already taken.

Thursday, December 16, 2010

Improve Emacs HTML mode by adding an automatic translator between accented chars and their HTML / Unicode entities

I would like to improve Emacs HTML mode so that when I enter an accented character it would replace it with the corresponding HTML Unicode entity. I don't know if this would have to be some kind of hook which captures the entrance of specific characters or if I could implement if as a gigantic search and replace operation. The later option isn't so attractive because it gets into the flow of writing. But the former would also...

Currently Emacs HTML mode provides the sgml-name-char (C-c C-n) command that almost enables the same thing, but, it gets a bit in the way of my flow of thought. (Actually, writing directly in HTML also gets in my thought process anyway... Maybe I should write first and then edit. But I digress...)

So, how could this be implemented? A way would be a minor mode for HTML for automatic translation which mainly defines a minor mode key map that overrides the global and major mode keymaps for accented characters and invalid HTML characters. Is this an interesting idea?

How to implement an Emacs minor mode? A good example is flyspell-mode, which source is available just C-h f flyspell-mode and following the link to the source.

Tuesday, December 14, 2010

Idea for Git demo: show its power for sweeping changes in SISCOG-UTIL and CREWS

At SISCOG we are using Git as a development tool, but, not as the official version control system. I was challenged to make a demo / presentation on what would be the changes to the processes and working methods if SISCOG was going to use Git.

One idea I had recently was to show what Git could do if I need to change CREWS in a more automated and integrated way, so that I might have an easily mergeable branch of CREWS and SISCOG-UTIL, how would I proceed? Would Git solve the problems easily? How could I demonstrate this?

Showing off the power with defsystem to ASDF migration? How would that give them the thrill of power? Try, don't be shy to fail and earn time, quality and satisfaction.

Para convencer alguém eu tenho de mostrar o que é possível
e não como lá chegar!!!
Eu tenho de estar mais com as pessoas
e só assim as poderei motivar.

Idea: make the binary data library of PCL book parallel friendly

I'm still reading and learning from the Practical Common Lisp book by Peter Seibel [it is hard to believe that I started in 2007!]. When reading the chapter 24. Practical: Parsing Binary Files, which describes and provides a library for reading binary files, and upon reaching the variable:

(defvar *in-progress-objects* nil
  "TODO or FIXME, how to make this part of the code more parallel friendly?")

I stopped reading and started wondering about the TODO or FIXME I just wrote. The following is the resulting ideaware...

His it worth it or will the disk access eat the advantages?

Yes if there is parallel disk access, meaning in disk array architectures and for really big files. For small files the parallel access isn't worth it because the disk array will know how to do it in a parallel way.


An additional option to a certain binary-class would mark that binary-class as one that would spoon a new process or thread for writing (NOTE to self write and read operations aren't symmetric from a performance point of view) or reading an instance of that binary-class.

Additional bindings of the dynamic variables would have to be created for the symbol that are to be called in parallel, i.e., a new thread based call would mean a new lexical environment is created in which the new binding exists.

It would be fun to port this library to Clojure / JVM languages. I think that this would be allowed because it isn't the original work that would be made available.

Wednesday, October 27, 2010

Programming Praxis Alien Numbers in Clojure

I solved the full Programming Praxis Alien Numbers exercise in Clojure. This enabled me to learn more about Clojure and to train my algorithmic parts of the brain a bit.

In all this I was a bit disappointed. It took me too much time to reach a full solution and then, in the core part of the exercise I had to resort to one of the other persons to reach a better way to convert a decimal number to an arbitrary radix number given its language.

I was also a bit disappointed in the way that I wasn't able to use Clojure's laziness more in the algorithms, resorting too much for my taste to loop. From a positive point of view, the Clojure abstractions work as advertised and the only difference from the code bellow and another that would use instead of strings a vectors or lists would be the conversion in the return value of decimal-to-lang.

Follows the core of the exercise solution. Note that the full solution with tests is here. Still considering the Clojure sweet points, I think I could easily explore its excellent support for concurrency and convert the main algorithm into a parallel one if there were hundreds of lines to be processed.

(defn decimal-to-lang
  "Converts decimal-num to the equivalent number in lang as a string.
  The algorithm was a translation of the algorithm by Rodrigo Menezes
  in C# that he posted in the programming praxis site."
  [decimal-num lang]
  (let [lang-radix (count lang)]
    (loop [decimal-value decimal-num lang-num []]
      (if (>= 0 decimal-value)
 (apply str lang-num)
 (recur (int (/ decimal-value lang-radix))
        (concat [(nth lang (mod decimal-value lang-radix))] lang-num))))))

(defn digit-index
  [digit lang]
  (loop [i 0]
    (if (= digit (nth lang i))
      (recur (inc i)))))

(defn lang-to-decimal
  [alien-num lang]
  (let [radix (count lang)
 ralien-num (reverse alien-num)]
    (loop [i 0 decimal-num 0 product 1]
      (if (= i (count ralien-num))
 (recur (inc i) (+ decimal-num (* (digit-index (nth ralien-num i) lang) product))
        (* radix product))))))

(defn convert-num
  "Convert alien-num which is in source-lang into the same number in target-lang"
  [alien-num source-lang target-lang]
  (decimal-to-lang (lang-to-decimal alien-num source-lang) target-lang))

Saturday, July 03, 2010

More ideas about htmled

htmled, my Python hacks to automate conversions of the contents in my handbooks into posts in my blogs received some recent attention, but, I still have plenty of hitches with the overall process. Follow two quick ideas for future improvement.

The handbook editing part (creating the content in HTML) is too hard; solution might be a specific mode in Emacs customized for editing HTML with specific functions to accelerate the creation of structural elements or using a base format that can be processed afterward to generate the proper HTML.

Editing in Emacs is way superior than in the HTML browser. I wonder if it would be possible to embed Emacs as the editing component of multiple lines text fields. Extra bonus if you could put a served Emacs frame as the editing component.

ArgoUML tests issues

Update ArgoUML tests to JUnit 4.x – issue created

This idea now has ArgoUML issue 6100.

Issue 6085 is also moving forward.

Reader Shared items