Archivo para agosto de 2011

Diálogo de copia de archivos de Windows 8

Y hablando, otra vez, sobre el rediseño de la interfaz de Windows 8, me encuentro con los chicos de Microsoft están rediseñando el diálogo que indica el progreso de copia de archivos, quedando este (de momento) como se ve en la imagen:

Diálogo de copia de archivos de Windows 8

Pero resulta que, ya en el 2001, BeOS —y ahora Haiku— tenía su propio cuadro de diálogo de copia de archivos mediante el Tracker (el homólogo al Explorador de Windows) y, fijaos qué casualidad, era así:

Diálogo de copia de archivos de BeOS/HaikuOS

¿Y ahora estos vienen con innovaciones? ¡Já!

Actualización: He notado que en Google Chrome no se ve correctamente la imagen del Tracker de Haiku así que, si esto os sucede, probad con Firefox donde no he detectado ningún problema.

Actualización 2: El problema de que se oculte la segunda imagen en Chrome es debido a la extensión AdBlock, así que basta con desactivarla para que se vea dicha imagen (o añadir una excepción, pero no se como se hace :P ).

Incertidumbres

Se mide la inteligencia de un individuo por la cantidad de incertidumbres que es capaz de soportar.

Immanuel Kant (1724 – 1804), filósofo alemán de la Ilustración.

Mejorando el Explorador de Windows (o no) y otros menesteres

Los chicos de Microsoft se lo curran y han hecho un estudio donde se muestra el uso que los usuarios le damos al Explorador de Windows, esto es, cómo accedemos a las acciones para el tratamiento de archivos —mediante menús, iconos, teclas de acceso rápido, etc.— con el fin de “optimizar” estos componentes para mejorar la experiencia de usuario.

Conforme a este estudio, el nuevo rediseño del Explorador… bueno, deja un poco que desear, teniendo en cuenta que han creado una barra de herramientas mucho más grande e intrusiva que las anteriores con acciones que los usuarios apenas usan (menos del 1 % de las veces se usa la opción de la barra de herramientas en detrimento de otras opciones como el menú contextual o una tecla de acceso rápido).

Pero eso no es lo que quiero destacar aquí. Lo que quiero destacar es este gráfico:

Punto de entrada de los comandos
Punto de entrada de los comandos en el Explorador de Windows

Es decir, según este gráfico, la mayoría de las acciones que un usuario hace en el Explorador de Windows —esto es, tratamiento de archivos— es mediante el menú contextual; luego mediante una combinación de teclas (teclas rápidas); lo siguiente es el uso de la barra de herramientas; y, finalmente, mediante el menú normal de toda la vida.

De este gráfico mi conclusión es que la barra de menús es un punto de entrada de comandos superfluo que, en cuanto estás acostumbrado a usar el software, obvias en favor de los menús contextuales y de las teclas de acceso rápido. Es decir, a mi parecer, la barra de menús sobraría en muchas interfaces de software.

Entonces, me pregunto ¿por qué los chicos de Apple se empeñan en mantener un menú global que ocupa una parte muy importante del escritorio y que, según el estudio de Microsoft, apenas se usaría?

Por poner un sólo ejemplo, esa zona de la pantalla se usa en Google Chrome y en Mozilla Firefox para acceder más rápidamente a las pestañas teniendo en cuenta que el ratón “no se sale” del borde de la pantalla.

Y esto ocurre con todas las interfaces que copian descaradamente la interfaz de Mac OS X (léase Gnome Shell, Unity…). Vamos, para mí es perder espacio y, sobre todo, funcionalidad y usabilidad. Pero no tengáis miedo de que en Mac OS X (y demás) lo quiten alguna vez (aunque sea por configuración). Ante todo hay que tener señas de identidad. Aunque no sean usables.

P.D.: Tengo en mente escribir algún día sobre las disposiciones de los elementos de los escritorio informáticos —esquinas, bordes…— y la tendencia de hoy en día. El problema es la falta de tiempo… y ganas ;) .

Código negativo

El verdadero héroe de la programación es aquel que escribe código negativo.

Bill Atkinson (1951), destacado empleado de Apple Computer entre finales de 1970 y principios de 1980 y creador de MacPaint.

La historia: Cuando el equipo del Apple Lisa estaba presionando para finalizar su programa en 1982, los jefes de proyecto comenzaron a exigir a los programadores presentar informes semanales sobre el número de líneas de código que habían escrito. Bill Atkinson pensó que eso era una tontería y en la semana en la que había reescrito rutinas para la librería de cálculo QuickDraw siendo seis veces más rápidas y con 2000 líneas menos de código, puso "-2000" en el formulario. Después de un par de semanas más, los gerentes dejaron de pedirle que rellenarse el formulario; y él accedió gustosamente.

Llamadas encadenadas en C++

Esta entrada llevaba tiempo en el tintero, por eso de tener algo de tiempo libre en vacaciones para dedicarlo a leer y elucubrar soluciones.

Por ejemplo, aquí tenemos una prueba de concepto para tener la misma funcionalidad que el operador << de C++ pero usando llamadas encadenas. Y hace (casi) lo mismo: puede enviar a la salida estándar cualquier tipo de variable, incluyendo cadenas, números enteros, números reales y booleanos, sólo que con un formato de llamada diferente.

La implementación de la clase base, pudiendo extenderla lo que se quiera, es la siguiente:

#include <iostream>
#include <string>
#include <sstream>
 

using std::cout;
using std::endl;
using std::flush;
using std::string;
using std::stringstream;
 

class Stdout {
private:
stringstream _buffer;
public:
Stdout() : _buffer() {}
~Stdout() {}
void clear() {
_buffer.str("");
}
Stdout& operator () (const char c) {
string s;
s += c;
_buffer << s;
return *this;
}
Stdout& operator () (const char* text) {
_buffer << text;
return *this;
}
Stdout& operator () (const string text) {
_buffer << text;
return *this;
}
Stdout& operator () (const int i) {
_buffer << i;
return *this;
}
Stdout& operator () (const float f) {
_buffer << f;
return *this;
}
Stdout& operator () (const double d) {
_buffer << d;
return *this;
}
Stdout& operator () (const bool b) {
_buffer << (b ? "true" : "false");
return *this;
}
void flush() {
cout << _buffer.str() << ::flush;
clear();
}
void endl() {
cout << _buffer.str() << ::endl;
clear();
}
};

Y un ejemplo de funcionamiento sería:

int
main() {
Stdout stdout;
stdout("Llamadas encadenadas: enteros: ")(42)(';')(" reales: ")(25.4)(';')(" y booleanos: ")(false)('.').endl();
return 0;
}

Siendo la salida:

$ make && ./test
Llamadas encadenadas: enteros: 42; reales: 25.4; y booleanos: false.
$

No tiene la misma funcionalidad que el operador << porque, entre otras cosas, si se quiere añadir otro elemento imprimible habría que derivar la clase, mientras que con el operador << bastaría con sobrecargarlo. Pero no me digáis que no es elegante ¿eh? :D .

Sentido crítico

Evidentemente para aquellos que han autosuspendido su propio sentido crítico, cualquier crítica es una provocación.

@Irreductible.

Artículo 525

Artículo 525 del Código Penal:

  1. Incurrirán en la pena de multa de ocho a doce meses los que, para ofender los sentimientos de los miembros de una confesión religiosa, hagan públicamente, de palabra, por escrito o mediante cualquier tipo de documento, escarnio de sus dogmas, creencias, ritos o ceremonias, o vejen, también públicamente, a quienes los profesan o practican.
  2. En las mismas penas incurrirán los que hagan públicamente escarnio, de palabra o por escrito, de quienes no profesan religión o creencia alguna.

Y esto lo digo porque como siempre están diciendo que el papa y compañía no dicen nada contra los ateos y/o los laicos cuando es mentira, pues que no se nos olvide este tema.

Escribiendo desde HaikuOS

Esta es la primera entrada que escribo desde el sistema operativo HaikuOS, el clon de mi querido BeOS, en una máquina virtual de VirtualBox.

Además, tanto la escritura en el blog como el pantallazo y la posterior edición de la imagen han sido hechas desde la versión R1A3 del propio Haiku —la imagen se editó con WonderBrush y el navegador es WebPositive—, con lo que se podría decir que el sistema operativo ya es bastante completo.

Obviamente todavía falta mucho por hacer, sobre todo teniendo en cuenta que no es un proyecto demasiado atractivo para el gran público y el número de desarrolladores está muy limitado, pero, aunque lento, va por buen camino.

Y quizás os preguntéis ¿por qué otro sistema operativo? La respuesta es sencilla: porque aunque BeOS es de principios de 1990, tanto BeOS como Haiku son los únicos sistemas operativos que se podrían considerar “modernos” ya que tanto su arquitectura principal como su API son innovadoras desechando modelos obsoletos y atreviéndose a hacer las cosas mejor sin mantener la compatibilidad.

¿Y eso es bueno? Yo opino que sí porque así que se consigue avance e innovación haciendo las cosas más rápidas y mejores. Pero es sólo una opinión ;) .

En resumen, BeOS ya era muy rápido en mi Pentium II a 350 MHz (11 segundos en arrancar). Además, tanto en BeOS como ahora en Haiku, es muy fácil programar para ellos gracias a su API sencilla pero potente en C++. Y muchas otras virtudes y algún que otro defecto.

No pretendo con esto que hagáis de Haiku vuestro sistema principal (a día de hoy sería inviable) pero sí que le déis una oportunidad revisándolo de vez en cuando.

De vacaciones

¿Se nota que llevo ya unos días de vacaciones? Parece que sí por la inexistencia de entradas nuevas…

Y no, no me he ido a ningún sitio. Sólo en mi casa tirado en el sofá. Que también son vacaciones, oiga.

Y a disfrutar lo poco que queda.

No existen excusas

Entregar código con errores es admisible y comprensible. Entregar un código envilecido ignorando los estándares de codificación es inadmisible, aunque funcione, porque es una falta de respeto con todos los demás miembros del equipo.

E. M. Jiménez, en el libro Ingeniería del Software Ágil.

Orgullo

Si no estás orgulloso de ello, no es suficientemente bueno.

Andy Pike, desarrollador de aplicaciones Web en .NET.

Copiado directamente y con descaro de Mundo Geek ;) .

No existe libertad de mercado

De un EXCELENTE comentario de Limonete en una noticia sobre bancos en Menéame, os pongo el porqué de la inexistencia del libre mercado:

  1. Porque se emitió deuda privada para “sanear” la deuda pública, para que no computase como deficit o deuda, vía interbancario de Frankfurt por importe de 400 000 millones. Esto lo hicieron los “liberales” del PP.
  2. Porque este dinero vía interbancario fue en su mayor parte intervenido para partidas destinadas a constructoras e inmobiliarias y no para crear industria sostenible.
  3. Porque la industria inmobiliaria y de las constructoras no se ha financiado con recursos propios, sino interviniendo los flujos crediticios vía interbancario.
  4. Porque cuando las inmobiliarias, constructoras y bancos han obtenido beneficio, se lo han quedado, y cuando les ha salido mal la jugada, se están realizando todo tipo de artimañas intervencionistas para rescatarlas: Planes E (hay gente que cree que la intención de la inyección de 15 000 millones a constructoras para levantar y tapar aceras era crear empleo 3 meses), FROBs, etc.
  5. Porque el destinar todo el crédito para hipertrofiar el ladrillo creó una burbuja de una magnitud enorme con un coste de oportunidad brutal: ¿quién iba a arriesgar su dinero para crear tecnología, exportar bienes o intercambiar servicios de valor añadido y sostenibles a medio plazo, si con la intervención del crédito hacia la vivienda ganaba un 20 % anual sin riesgos?
  6. Porque se construyeron 800 000 viviendas al año gracias a la intervención del crédito, no al aumento de demanda real del producto.
  7. Porque deliberadamente se intervinieron los flujos migratorios para una entrada súbita de X millones de inmigrantes (a saber) a hipotecarse y para que las empresas tuvieran mano de obra abundante para competir a la baja por los salarios.
  8. Porque las cadenas de televisión se asignan a dedo, 3 para tí, 3 para mí y mantener la propaganda con la ilusión de la “pluralidad”.
  9. Porque el precio del dinero lo regulan los bancos centrales arbitrariamente.
  10. Porque los bancos tienen que rendir cuentas a los bancos centrales y estos sabían cada movimiento.
  11. Porque las cajas de ahorro, en peor situación que los bancos, están precisamente intervenidas por los políticos, que forman parte de los consejos de administración. Ergo: que han estado haciendo los políticos invirtiendo en vivienda.
  12. Gracias al sistema de reserva fraccionaria, el banco presta dinero que no es suyo ni ha producido, y en este caso, ni va a producir, teniendo un privilegio que nadie más tiene.
  13. Gracias a todo este dinero generado de la nada por el banco se conceden hipotecas al 120 % cuya responsabilidad nadie asume después.
  14. Luego, cuando se monta el pollo, el gobierno coge dinero a los ciudadanos y lo usa para salvar bancos, para que el precio de la vivienda no caiga y mantenga su precio fruto de nuevo de la intervención y que la gente se hipoteque el mayor número de años posible para que exista una trasferencia de dinero al banco, que es un impuesto encubierto para financiar los negocios del holding político-empresarial-financiero del país.
  15. Fruto de esta intervención del dinero por parte del gobierno hacia los bancos, no hay dinero para generar empleo. Así que de nuevo se intervienen las pensiones, el salario de funcionarios, la sanidad y se reducen las partidas presupuestarias, para pagar los pufos de los bancos.
  16. Los jueces del Constitucional se eligen a dedo, interviniendo la justicia para que se apruebe cualquier desfachatez del PPSOE.
  17. Porque toda la legalidad y decisión política se realiza en beneficio de las grandes empresas y los grandes capitales que financian al PPSOE. Existe una transferencia de riquezas sin parangón en la historia, desde las clases medias-bajas hacia las clases altas. Ningún grupo de capital realiza una inversión si no es para llevarse beneficios endeudando a alguien. Y cuando les ha salido mal la jugada, se les rescata con dinero público.
  18. Porque la legalidad se aplica con una una asimetría descarada en la aplicación de las leyes en beneficio de las grandes corporaciones, públicas y privadas, para perpetuar sus instituciones y privilegios. Solo se persigue cualquier cosa que ponga en peligro el establishment y sus negocios, mientras los delitos del establishment quedan impunes vía prescripción, resquicio legal, inatención, etc.
  19. Porque se han intervenido los contratos laborales para legislar contratos en prácticas, becas, etc. para que los empresarios tengan esclavos jóvenes trabajando gratis para ellos. Neoesclavitud.
  20. Porque si el poder judicial es independiente… ¿por qué hay un Ministerio de Justicia dirigiendo qué es lo que se debe perseguir y lo que no?
  21. Porque desde los ayuntamientos se ha decidido qué suelo es urbanizable y cual no. Qué suelo es residencial y qué suelo es terciario, para regalárselo a los amigotes y recalificarlo con sus consecuentes ganancias brutales vía transferencia de riquezas a través de deuda hipotecaria.
  22. Porque desde los ayuntamientos se han seguido modelos de urbanismo salvaje creando ciudades hacia arriba para mantener el valor de la propiedad del suelo y para que exista una generación de parásitos sesentones que compró suelo por dos duros y se lo pretende vender a la siguiente por millones. De nuevo dinero en base a deuda sin generar riqueza.

Solo un ciego, o alguien que no quiere ver, puede decir que esto es culpa de la libertad de mercado o de un liberalismo que no existe, cuando todo ha estado orquestado por políticos, bancos y grandes empresas que lo tienen todo absolutamente intervenido hasta la náusea: poder ejecutivo, legislativo, judicial, sindical y patronal. Esto no es cuestión de izquierdas o derechas, sino de estar ciego. Esto es el mayor robo de la historia a la ciudadanía.

Se podría pensar que esto se dice “por decir”, pero a poco que uno se informe se da cuenta de que para cada cosa que describe existe la noticia relacionada. ¿Que hay errores? Por supuesto que los habrá, pero, en el conjunto global, esto que cuenta es totalmente cierto. Y aún así, la gente seguirán votando al PP y/o al PSOE.

Por favor, informaros antes de votar y votad en consecuencia.