Programmers Jokes.

In C we had to code our own bugs. In C++ we can inherit them.

C gives you enough rope to hang yourself. C++ also gives you the tree object to tie it to.

With C you can shoot yourself in the leg. With C++ you can reuse the bullet.

A computer without COBOL and Fortran is like a piece of chocolate cake without ketchup and mustard.

Why all Pascal programmers ask to live in Atlantis?
Because it is below C level.

Programmers Jokes.

RMagick4J 0.3.6

I am glad to announce a new version of rmagick4j.

RMagick4J aims to implement the ImageMagick funcionality and the C
portions of RMagick for make it works in JRuby.

Current stable version: 0.3.6
Project URL:
Installation: gem install rmagick4j

Google Summer of Code project should be thanked for making this new
release possible.

In release 0.3.6 you can find the next improvements:

  • More Draw primitives (clip-path [creatin a clip-path and using a
    clip-path], fill-rule, rotate, scale [reimplemented], skewX, slewY,
    stroke-linecap, stroke-linejoin, stroke-miterlimit, translate).
  • Solve a bug with transparent stroke and line primitive.
  • Added the following Draw instance methods:
    • annotate
    • get_multiline_type_metrics
  • Solved a bug that caused the background become black while resizing
    images with alpha channel.

Please try out your applications with rmagick4j and help us provide
feedback. It is our goal to make a fully-compatible implementation of
RMagick4j in JRuby.

Sustituyendo a las animadoras con Ruby en Mac.

El título del post puede sonar raro, pero lo que voy a mostrar hoy es cómo conseguir tu propia animadora en Mac con Ruby. Lo que haremos será hacer que nuestro ordenador, con una orden como:

ruby cheerleader.rb Serabe

Nos muestre por pantalla:

Dame una S
Dame una E
Dame una R
Dame una A
Dame una B
Dame una E

Además, utilizando el comando say de Mac, nos lo dirá (si queréis que lo grite, subid el volumen al máximo).

Empecemos con el código:

  1. string =  ARGV.join(' ')

Aquí simplemente recogemos los parámetros pasados por consola y los concatenamos con un espacio entre medias. Ahora la parte interesante:

  1. string.each_byte do |b|
  2.   if /[a-zA-Z]/ =~ b.chr
  3.     shout = 'Dame una '+b.chr.upcase
  4.     puts shout
  5.     `say #{shout}`
  6.   end  
  7. end

Para cada letra, una vez comprobado que es una letra y no un espacio, construimos un grito (‘Dame una S’), lo imprimimos por pantalla y hacemos que el comando say lo diga.

Finalmente, con un

  1. puts string.upcase + '!!!'
  3. `say #{string}`

Imprimimos la última frase.

Ya habéis visto cómo crearos vuestra propia cheerleader. En próximos episodios veremos cómo añadirle autoregeneración como Claire.