Buscar en Mind w/o Soul

martes, octubre 23, 2007

F#: el lenguaje funcional de Microsoft




What are the goals of F#?

One way of looking at it is that the purpose of F# is to solve all of the 7 major problems described in Wadler's classic paper Why no one uses functional languages: Libraries, Portability, Availability, Packagability, Tools, Training and Popularity. Of these, F# solves the issues of libraries (by immediately giving high-quality, no-wrapper access to hundreds of .NET libraries), portability (the .NET bytecode is portable, e.g. the Mono project provides an implementation for many platforms), packagability (.NET assemblies are an excellent packaging mechanism) and tools (.NET tools for other languages nearly always work with F# as well). The remaining issues are partly solved by the fact that F# has a core design similar to that of OCaml, a popular functional language implementation for which a good amount of training material is available, and also that huge amounts of excellent training material for the .NET platform is available on the web.

Metaprogramación HOWTO


Tutorial de uso de macros para generación automática de código, usando el lenguaje Nemerle (un derivado funcional de C# con licencia BSD).

Macros - Nemerle Homepage
You can think about macros as of a system of compile-time transformations and automatic generation of code with regard to some rules. It can be used either to automate manipulations performed on similar data-types and fragments of code or to add syntax shortcuts to the language, optimize and make some computations safer by moving them from runtime to compile-time.

The idea of making simple inline operations on the code comes from preprocessor macros, which many languages (especially C, C++) have contained since early times of compiler design. We are following them in the direction of much more powerful, and at the same time more secure (type-safe) solutions like Haskell Template Meta-programming.

lunes, octubre 22, 2007

Programando con Ranges (en vez de iterators)

Módulo de la librería C++ Boost, para hacer programación abstracta usando rangos en vez de colecciones.

Range Concepts
A Range is a concept similar to the STL Container concept. A Range provides iterators for accessing a half-open range [first,one_past_last) of elements and provides information about the number of elements in the Range. However, a Range has fewer requirements than a Container.

The motivation for the Range concept is that there are many useful Container-like types that do not meet the full requirements of Container, and many algorithms that can be written with this reduced set of requirements. In particular, a Range does not necessarily

* own the elements that can be accessed through it,
* have copy semantics,

Wiki avanzado de Patrones de diseño

Wiki de Extreme Programming, patrones de diseño y disciplinas avanzadas de lenguajes de programación (POO, Aspect Oriented...)

Generative Programming



Boost: librería avanzada de C++

Librería de código abierto compatible GPL, con componentes avanzados de algoritmos y de sistema.

Boost C++ Libraries - Wikipedia
The Boost C++ Libraries are a collection of peer-reviewed, open source libraries that extend the functionality of C++. Most of the libraries are licensed under the Boost Software License, designed to allow Boost to be used with both open and closed source projects. Many of Boost's founders are on the C++ standard committee

C++ FAQ Lite

Una FAQ avanzada sobre el lenguaje C++. Explica cuándo y por qué usar técnicas complejas de este lenguaje, y los problemas más frecuentes.

C++ FAQ LITE
C++ FAQ LITE — Frequently Asked Questions

Tipografías artísticas en el navegador

Un módulo flash para permitir tipografías arbitrarias en páginas web. Es accesibe, y con usabilidad relativamente buena (para lo que cabría esperar).

Mike Davidson - sIFR
sIFR 2.0: Rich Accessible Typography for the Masses
April 27, 2005

Over the last several months, a small group of web developers and designers have

Arte de papel

Cuadros hechos de papel.

Beautiful Paper Art
Beautiful Paper Art
14th October 2007
Peter Callesen, an extremely talented artist who cut beautiful masterpiece using a flat piece of paper. This is truly awesome.

Comics con mensaje

Dos webcomics con cargas de profundidad, uno en inglés y otro en argentino.



The Perry Bible Fellowship

Eggnancy

LANACION.com - Humor

viernes, octubre 19, 2007

El dinero no da la felicidad... si tienes bastante

Demostrado mediante investigación científica: tienen más impacto la salud, las relaciones sociales y el estar a gusto con lo que haces, que el total de tu cuenta bancaria.

Mind Hacks: The relationship between money and happiness
If a nation wants to increase its population's sense of well-being, says Veenhoven, it should make "less investment in economic growth and more in policies that promote good governance, liberties, democracy, trust and public safety."

La evolución en contraintuitiva



Evolution and Wisdom of Crowds
I am convinced that just as often, the cause and effect is reversed: people hold onto their fundamentalist religious beliefs because evolution by natural selection -- the strongest argument against an Old Testament-type creator -- is so counter-intuitive to so many.

I arrive at this conclusion in a somewhat roundabout way. I have long been fascinated with systems that tap into the "wisdom of crowds" -- systems that, in fact, have much in common with Darwinian evolution. Such systems doubtfully conflict with anyone's religion, and yet, I see the same sort of resistance to them as I see to evolution. The arguments against them are remarkably similar.

jueves, octubre 18, 2007

Juegos modernos en 2D

Juegos Conversacionales - Interactive Fiction, y juegos modernos en 2d

Slashdot | Who Says 2D Gaming is Dead?
Hmm, let me be the 10%... Shit games? Have you played some of the 'classics' of the new wave of IFs? Things like Photopia, All Things Devours, Slouching Towards Bedlam, Metamorphoses, Shade or Vespers? Or whatever the latest IF competition is going to yield?

Seriously, these things are worth your time. Not as big and time-consuming as the old Infocom classics, I agree. But they do what they have to do (entertain you for a few hours) and the price is right. Damn better than most of the commercial games these days.

miércoles, octubre 17, 2007

Videojuego: Portal (version Flash)



Puzzle games - Portal: The Flash Version - Walkthrough, comments and more Free Web Games at FreeGamesNews.
Portal: The Flash VersionPortal: The Flash Version

Portal: TFV Forum | We Create Stuff | Valve's Portal

Programación - libros online sobre informática avanzada y Logo

Libros online gratuitos, sobre Logo y sobre conceptos avanzados de teoría de computación

HomePage for Brian Harvey (bh@cs.Berkeley.EDU) Now FREE for personal use: The second edition of Computer Science Logo Style, a three-volume series intended mainly for teenagers and their teachers, or for adults who aren't professional programmers. You can look at the tables of contents and complete downloadable PDFs and browsable HTML versions of


Si Google estuviera diseñado para Google

¿Y si Google diseñara su portada haciendo SEO (Search Engine Optimization - optimización de contenidos para subir en el ranking de buscadores)?

Google

martes, octubre 16, 2007

Get Deb - Poner Ubuntu al dia

Actualizar Ubuntu con programas más recientes que los de la última versión


Acerca de Getdeb
a actual política oficial de actualizaciones de los paquetes en Ubuntu (descrita aquí) está limitada a la corrección de errores críticos, lo que significa que no se actualizan los programas aunque no haya una correción importante de errores o si se ha mejorado algún aspecto del programa. Esta es una buena prática para fines de estabilidad especialmente si estas planeando usar Ubuntu a nivel empresarial pero esto tambien significa que hasta la siguiente versión de la distribución no podrás acceder a las últimas versiones de los programas instalados en tu sistema.
Usuarios con experiencia y desarrolladores serán capaces de compilarlos e instalarlos desde el código fuente pero los usuarios sin experiencia que desearan probar las últimas versiones tendrán que comprender y aprender el complicado proceso de compilación, especialmente si se usan dependencias externas o librerias de desarrollo.
Esta política tambien afecta a los usuarios que precisen de una aplicación que no estuviera disponible en los repositori

El Proyecto



Para superar las limitaciones descritas, el nuevo proyecto se debe
configurar para habilitar las últimas versiones del software
disponible para las actuales versiones de Ubuntu *publicadas y con
soporte*. Por favor ten encuenta que no pretendemos duplicar el
esfuerzo del
proyecto de los Backports de Ubuntu. Los Backports busca el mismo
propósito sin embargo las actualizaciones no son tan constantes
y están limitadas a la version inicial con la que se
instala Ubuntu.

Videojuego para probar

Juego de puzzles gratis, con un concepto original

Narbacular Drop - Wikipedia
Narbacular Drop (IPA: [nɑɹbækjəlɚ dɹɒp]) is an environmental puzzle video game developed by Nuclear Monkey Software. It was released online for free in 2005 on PC (DX9). It was the Senior game project of students attending DigiPen. The gameplay consists of navigating a dungeon using an innovative portal system. The player controls two interconnected portals that can be placed on any non-metallic surface (wall, ceiling, or floor).

The word Narbacular, not existing in any dictionary, was chosen primarily to aid in Internet search engine results.[1].

viernes, octubre 12, 2007

La herencia es maaaala

En programación orientada a objetos, (casi?) siempre es mejor partir la funcionalidad mediante objetos Estrategia, en vez de utilizar herencia.

Inheritance is evil, and must be destroyed: part 1
This looks like the simplest approach, and it is at first. However, your dark powers are locked up inside the DarkJedi class. If you need to make a DarkDroid and a DarkSpaceship that can both also crush townspeople, you're in trouble. These classes obviously can't extend Jedi, so you have to duplicate townspeople crushing functionality across your whole DarkArmy or split it out into utility functions that you call from every crushTownspeople method. Either way, it gets complicated.

Now suppose you had done it like this:


// good
class Jedi {
function drawSabre():Sabre { ... }
}
class DarkPowers {
function crushTownspeople():void { ... }
}
class DarkJedi extends Jedi {
// DarkJedi has-a DarkPowers
public var darkPowers:DarkPowers = new DarkPowers();
}
dj:DarkJedi = new DarkJedi();
dj.darkPowers.crushTownspeople();

El autor también ha creado una librería javascript para animación, basándose en ese concepto:

Bernie's Better Animation Class
I checked several different libraries and found them all to be lacking.

In particular, they don't seem to realise that inheritance is evil, and must be destroyed. By providing base classes for an effect and requiring users to subclass it to make new effects, they create a proliferation of classes and make it too hard to create new effects that the library designer hasn't thought of (scriptaculous gets round this by thinking of every effect you might want, which is why it is so large).


Powered by ScribeFire.

Agregación de contenidos: ¿qué le falta para que funcione?

Una reflexión sobre las herramientas de "personalización" de la búsqueda en Internet y agregadores de contenidos (tipo iGoogle, My Yahoo, AideRSS, diversos tipos de "Smart folders"...)

Para que un servicio web funcione y sea utilizado, necesita al menos dos requisitos mínimos imprescindibles:
1) que aporte alguna ventaja sobre otros servicios similares,
2) que la barrera de esfuerzo para su uso sea mínima.

Los servicios de personalización, idealmente, añaden como ventajas a la navegación tradicional el detectar en la web información relacionada con tus gustos, y el permitirte archivar lo que encuentres para que puedas buscarlo más tarde.

... por desgracia, no existe aún ningún servicio que ofrezca una barrera de uso para todos ellos en una interfaz unificada. La principal carencia, que prácticamente ninguno permite recuperar con facilidad la información personal relevante. La información que archivas requiere por tu parte una búsqueda activa para poderla recuperar.

Por contra, los servicios que ofrecen información contextual relevante se centran en descubrirte enlaces que resultaron interesantes a otros usuarios. La 'killer feature' que yo necesito, y que no encuentro, es un servicio que me permita recuperar de forma automática la información relevante de mi propia historia de uso, de manera que los artículos que yo archivo vuelvan a mostrarse más tarde cuando sean relevantes a lo que esté haciendo entonces.

Cómo registrar un dominio de Internet

Consejos paso a paso

How to Buy a Domain Name / WebDeveloper.com ®
If the domain is available, you can then proceed to the next step, the InterNIC's accredited registrar directory. You will be asked to fill in some information about the purchasing agent--yourself--and you will need to know in advance the two DNS servers you will be using for your domain. An easy way to find this info out is to look up the domain of the ISP or host you will be using. Their two DNS servers will most likely be the same ones that you will need, and you can copy and paste them from the whois lookup page to your registration form (provided you have opened two browser windows).

Do-it-yourself domain registration!


Powered by ScribeFire.