The computer is, primarily, an advanced communications tool as evidenced by the fact that nearly all human/computer interaction ends with the creation of a document to be consumed by others. The expert computer user is technically eloquent and efficient, capable of communicating subtleties in a variety of media including text (email, chat, online forums, wiki, blogs, newsletters, “PowerPoint” presentations, reports), graphics (graphs, charts, diagrams, digital images and video, animation), audio (podcasts, soundtracks), and a combination of these (interactive multimedia). Even applications such as airline reservations systems are ultimately just messages sent from the customer to the airline stating all the facts necessary to reserve a seat on a plane.

The expert computer user is defined by her level of mastery of computer mediated communication and not just on her knowledge of software or hardware. She is liberated by the computer as a communications tool, not burdened by it. She looks for, and recognizes, consistent user interfaces in all the systems she encounters. She takes risks when using automated systems to increase her efficiency and isn’t disheartened when something doesn’t respond as expected, in fact, she always has a backup plan. She has a clear idea of what she wants to say and how she wants to say it. She has a clear understanding of who her audience is including their level of computer expertise. She understands and can elaborate on the strengths and weaknesses of communicating a message in one medium over another. We recognize this user by her adeptness and lack of fear when interacting with computers.

The expert computer user types with all 10 fingers and without looking at her hands at more than 50 words per minute. She uses keyboard shortcuts rather than reaching for the mouse. She is autonomous. She searches the internet for answers and ponders the authority with which the answers are written prior to taking action. She synthesizes and shares her findings with her peers via email, chat, blogs, and wikis or any media she feels will best communicate her intended message. She participates actively in a variety of online networks sharing and garnering knowledge in a variety of subjects, not just computers.


Whenever I’m asked for help, I’m always trying to raise the level of computer literacy to something close to the above description. Unfortunately, most people aren’t interested in climbing quite so high and alas, my hopes are almost always dashed on the rocks of unrealistic expectations. Have you any interest in raising your level of computer literacy?

In my 10th grade IT class, my students are learning the difference between semantic markup and non-semantic markup. As a test, we created a fake product, pezrasine, and asked each student to create a web site consisting of a few pages advertising the product. The goal is to see which of their sites appears first in google when searching for this invented word/name.

As one would expect, they had a lot of problems producing technically correct pages using Amaya as their only editor, but for this test, that shouldn’t matter. In fact, it will be interesting to see if google penalizes technical difficulties…

So, if you have a free minute and want to learn about an amazing new hair gel called pezrasine, follow the link and click any of the two-letter links that follow.

Just a quick note for those experiencing the same issue. After a fresh install of an LTSP server from the Ubuntu 10.10 (Maverick Meerkat) alternate CD I was unable to connect from any of the thin clients. I kept getting a TFTP timeout (but DHCP was clearly working).

After checking all the variables mentioned in this article, I discovered that the filename for pxelinux.0 in /etc/ltsp/dhcpd.conf ended in .tmp as in: filename "/ltsp/i386/pxelinux.0.tmp";. I don’t know if this is a bug in the installation program or what, but removing “.tmp” worked like a charm and everything is now up and running, and I’m thrilled!

After 7 years of working as a Web Developer remotely from the island of Gran Canaria (and nearly 20 years in some IT related position), I started teaching IT to high school students here in the Canary Islands. Working with teens has been an eye-opener, to say the least…

More than 50% of my students had never used email and had never heard of Netiquette at the start of the school year. Although the curriculum from prior years included the creation of PowerPoint presentations, writing blogs, and modifying HTML, not one student knew how to set a margin or a tab in a word processing application. I was agahst! How could such gaps in basic IT knowledge be tolerated? Where was the curriculum designer? Who gave all these kids email addresses without making them take (and pass) a test on Netiquette first?

To their credit, what they did learn (creating videos, for example) they learned pretty well. Nevertheless, in the business world (and for the foreseeable future) formal business communication (contracts, proposals) takes place in writing, not video, and via email, not via Tuenti. Furthermore, these students, moreso than those who came before, absoultely MUST master computer mediated communication if they ever hope to succeed in their careers.

For these reasons I decided to conduct a series of interviews with some of my former (and present) clients, co-workers, and related software developers. In these interviews we discuss a variety of aspects of working remotely. Most of the people I spoke with coincided on one thing in particular: being able to express yourself clearly, in writing, is the deciding factor of whether or not to work with you. One of the interviewees put it this way: “I am going to quickly look for ways to eliminate 95% of [the resumes that cross my desk].” Expressing yourself poorly in writing makes you a likely target for elimination and this series of interviews is intended to drive that point home.

Now that I’ve edited down the videos and watched them all myself, I’m surprised how consistently the following themes came up:

  • There must be trust between both parties, but it’s not that hard to achieve.
  • Expressing yourself clearly and effectively in writing is crucial to your success.
  • Most problems that arise are the result of a lack of trust.

The café where I recorded most (but not all) of these interviews was my favorite corner café here in Las Palmas: Coffee Break.

The interviews that follow have been edited down to fit within the 15 minute maximum allowed by, but there was a lot of great stuff left on the cutting room floor… Click the names of each person to watch the video and enjoy!

Desde verano de 2009 he estado desarrollando la tienda web de Carolan, una tienda de disfraces y otros artículos de fiesta con sede en Las Palmas de Gran Canaria. Ya he perdido el control de las horas totales que he invertido en este proyecto porque se ha convertido en una obsesión por cumplir con las “mejoras prácticas” (best practices).

El pensamiento corriente dice que cuando uno quiere montar una tienda web, coge el sistema de software libre de moda y la monte sin más. La alternativa (desarrollar una tienda a medida, desde cero) seguramente me habría costado el doble, ¿o no? De esto se trata este artículo…

Carolan vende artículos de fiesta y productos de un solo uso. Tienen una gran variedad de artículos como disfraces, copas, servilletas, guirnaldas, decoraciones y mucho más. En realidad tienen más de 20.000 artículos catalogados. Cuando empecé a trabajar con el equipo de Carolan, uno de sus principales deseos era crear una conexión “viva” entre su base de datos y la tienda web para minimizar gastos e incrementar la eficacia. Otro deseo importante era que la web fuera fácil de usar (y los artículos fáciles de encontrar) y dinámica con una portada que variara según la temporada y que la tienda saliera bien en los resultados de los buscadores.

Analizando sus deseos / necesidades determiné que la mejor opción era la adopción de una tienda de software libre. Creía que me ahorraría montón de tiempo pero ahora no lo tengo tan claro y quiero saber qué opinas tú. Aquí resumo las modificaciones que se han tenido que hacer desde que empecé con la instalación de la tienda. Ten en cuenta que no detallo TODAS las modificaciones sino las más gordas / importantes.


Por defecto Zen Cart viene con una opción que te permite hacer las URLs “search engine safe” (legibles a los buscadores). Básicamente convierte
(o algo por el estilo). No está mal pero hoy en día este tipo de transformación no es necesaria.

Lo que sí quería era convertir la URL en algo como /disfraces-y-complementos/disfraz/adulto/mujer/disfraz-abeja-adulto.html para tener palabras claves en la URL. Lo logré con un par de modificaciones al código base de Zen Cart y algunas transformaciones via mod_rewrite. Me ha costado perfeccionar el método pero de momento parece estar funcionando más o menos bien.

Etiqueta Title

El valor de la etiqueta Title por defecto de Zen Cart no se presta a una buena indexación por parte de los buscadores. Tuve que modificarla unos cuanto sitios para que fuera siempre único (no repetido) ya que valores repetidos minimiza la usabilidad.

Optimización de Velocidad y de Código Fuente

Cada vez más la velocidad de una web determina su ranking dentro de los resultados de una búsqueda. He intentado cumplir con todas las sugerencias de Yahoo! and Google referente mejorar la velocidad de la web. Según mis cálculos, la web empezó cargándose en 7 segundos (sin cache, incluyendo lentitud de la red). Tras estos cambios, las peticiones terminan en menos de 1.5 segundos y para implementar estas sugerencias tuve que tocar:

  • el diseño general: se implementaron sprites, se combinaron hojas de estilo y ficheros .js
  • el diseño del perfil de un artículo (minimicé la cantidad de HTML generado por la tienda)
  • el diseño del buscador (se mejoraron el diseño de los enlaces a las páginas siguientes, se modificó la presentación de resultados, se modificó la etiqueta Title de los resultados para incluir los nombres de los productos y no solo el número de la página, se creó un Índice de productos)
  • se modificó el diseño, y el proceso, de “checkout” (pasar por caja)
  • se eliminarón los caracteres “codificados” (á se convirtió en á)
  • se redujo el número de peticiones por página de 40~ a menos de 20
  • se implementó el uso de dominios sin cookies y de una Red Distribuidora de Contenidos (Content Distribution Network – CDN)

En fin, tras todos estos cambios y teniendo en cuenta que sólo utilizan un método de pago, me pregunto si realmente me he ahorrado algo usando zen-cart (lo cual supuso una inversión de tiempo para aprenderlo). ¿Qué opinas tú?

Following my upgrade to Snow Leopard, Apache started producing segfaults for virtually any request. I tried reinstalling the PHP package (which doesn’t work with Snow Leopard), commenting LoadModule php5_module in /etc/apache2/httpd.conf, and a host of other things but the thing that ended up solving the problem for me was:

  1. Be sure to use the PHP that comes with Snow Leopard (leave LoadModule php5_module uncommented – don’t use the package, sorry Marc!)
  2. Comment out LoadModule dav_svn_module /opt/subversion/lib/svn-apache/

The bottom line is, any modules that were not built against the current (Snow Leopard) version of Apache will probably cause some sort of segfault.

Since the version of PHP that comes with Snow Leopard may be missing some of your favorite extensions, here’s a link to some instructions on how to include them (untested by me): Making Snow Leopard’s PHP 5.3.0 usable in the real world

I sure hope this saves someone the 3 hours of pointless poking around that I lost this morning!

While living here I’ve had several opportunities to do home repair or participate in minor constructions jobs. The most recent task was repairing a trough that had developed on the roof of our building and that appeared to be allowing water to collect and filter through to my upstairs neighbor’s ceiling.

My neighbor was going to pour some cement into the trough (a depression in the roof about 2 meters in diameter) and paint over it, but I suggested that maybe we should go a little further. I hate doing things twice. My father was here visiting and what better way to spend your vacation than helping your son repair his roof?

Removing Old PaintWe started by cleaning the affected area,
removing the old paint and vacuming out the dust and other junk that had accumulated between the tiles over the years.

Applying ResinWe then applied a “resin” (not sure of the chemical makeup) to help the cement stick and minimize leaking. When the resin dries, it leaves behind a sticky substance not unlike the glue on the back of some price tags (that is impossible to remove).

Depth of DepressionMeasuring depth of depression
The hole we were trying to fill was about 1.5cm deep (about half an inch). Note that we only measured one dimension. More on why later…


Filling with mortarLeveling mortar to fill troughApplying trowel to flattenDepression with mortar prior to paintingDried mortar
I had never poured cement before but my father had, so with his help, we managed to pour a fairly nice patch filling the hole. We used an entire 20 kilo bag of cement (well, 85% of the bag) and were very careful not to let the cement get too wet. The cement dried in a few hours (it was hot and sunny) but we dampened it to keep it from cracking and by the next day, it was ready to be painted.


Starting paint jobThe paint, known as sealent here, seemed to be a “rubberized” acrylic paint with some insulating properties. It is a bit disturbing to think that this is the ONLY thing keeping water from penetrating the tiles, mortar, and cement below. Shouldn’t there be some sort of rubberized layer (at least 1/4 inch thick) glued to the surface with some petroleum based product? Apparently, this paint-only approach is standard here in the islands.

Finished ProductTwo coats (and 24 hours) later, the job was done, and just in time too. It started to rain about 8 hours later. Unfortunately, for all of my good intentions, it looks like this work was mostly for naught. As I stated above, we only measured the depth to fill by one dimension. This is because the neighbor was convinced the water was leaking through where it was accumulating. Failed repairI, however, suspected that filling that one hole would simply push the water to other parts of the greater depression, which is in fact what happened. Thus, to really fix the problem, we’re probably going to have to fill nearly the entire roof with about 2cm of mortar.

Estoy regalando unos libros y unos componentes de hardware al primero que pase por mi casa a recogerlo (no el primero que llame, ni el primero que conteste por correo, etc…). Las únicas condiciones son las siguientes:

1. Si quieres un libro, te tienes que llevar todos
2. Si quieres un componente de hardware, te tienes que llevar todos Y me tienes que sacar el disco duro del ordenador (te dejaré el disco original, que está averiado)
3. No puedes ser alguien con quien ya tengo una relación pero SÍ tienes que tener una relación con alguien que tiene relación conmigo (sí, quiero ampliar mi red de contactos)

* La lista de libros
* Componentes de hardware incluyen:
* iBook G4 (800 Mhz, white, incluye todos los discos de instalación etc., pero que no arranca ya)
* FireWire CD Burner
* Wireless mouse (but not bluetooth)
* M-Audio GrooveLap Transit headset (digital headphones and microphone)

Estimo que estoy regalando .600,00 en mercancia… Por favor, pasen la palabra!

A new version of the PHP BBEdit Clipping Set is available for download (for free) immediately:

HIGHLIGHT: The new set contains more than 9,200 clippings (that’s about 3,000 more than the previous version).

Changes in this version

– all clippings (optionally) conform as closely as possible to the Zend/PEAR style guides

– removed hundreds of duplicate clippings (mostly constants)

– removed “cruft” (primarily from Snippets and Control Structures)

– reorganized clippings into more logical folder structures

– based this set on a very recent version of the manual

– the set now includes more than 9,200 functions, constants, methods, properties, snippets, control structures and more

– added additional “interactive” functionality to some date functions (I could never remember exactly which switches to use when formatting dates)

– the set now includes class methods and properties

– renamed the clipping set to just “PHP.php” (except for the “Loose” version, see page for details)


I hope you enjoy and be sure to let me know if you find any bugs or have any requests for improvement!


Ted Stresen-Reuter