Wednesday, February 28th, 2007

Daily Archive

Nuevas versiones de MSDN y TechNet

Posted by hecgo on 28 Feb 2007 | Tagged as: Code, Developer Journal, Noticias, .NET

Una nueva versión del sitio MSDN se está preparando, y se puede pre visualizar en:

http://lab.msdn.microsoft.com/TryMsdn/Library.aspx

Para seguir el detalle de las nuevas características y funcionalidad, está este blog de Justin Grant, product manager de los sitios MSDN y TechNet:

Discussion of new features coming to MSDN and TechNet websites

Photoshop online

Posted by hecgo on 28 Feb 2007 | Tagged as: Web 2.0, Noticias

Adobe anunció que planea tener una versión hosteada de Photoshop dentro de medio año aprox. Esta versión funcionará principalmente con Flash (obviamente) en lugar de AJAX como la mayoría de los editores de imágenes en línea existentes.

En las palabras de Bruce Chizen, CEO de Adobe:

The hosted version of Photoshop is part of a bigger company strategy to introduce Internet-delivered services that complement its shrink-wrapped applications and head off likely competition from Google…”That is new (for Adobe). It’s something we are sensitive to because we are watching folks like Google do it in different categories, and we want to make sure that we are there before they are, in areas of our franchises

Además, también se está cocinando una versión igualmente en línea para editar videos, Adobe Remix

Why Can’t Programmers.. Program?

Posted by hecgo on 28 Feb 2007 | Tagged as: Lecturas, Code

Este artículo cita a Reginald Braithwaite que dice:

Like me, the author is having trouble with the fact that 199 out of 200 applicants for every programming job can’t write code at all. I repeat: they can’t write any code whatsoever.

El autor al que se refiere Braithwaite dice:

After a fair bit of trial and error I’ve discovered that people who struggle to code don’t just struggle on big problems, or even smallish problems (i.e. write a implementation of a linked list). They struggle with tiny problems.

So I set out to develop questions that can identify this kind of developer and came up with a class of questions I call “FizzBuzz Questions” named after a game children often play (or are made to play) in schools in the UK. An example of a Fizz-Buzz question is the following:

Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.

Most good programmers should be able to write out on paper a program which does this in a under a couple of minutes. Want to know something scary? The majority of comp sci graduates can’t. I’ve also seen self-proclaimed senior programmers take more than 10-15 minutes to write a solution.

Dan Kegel plantea algo similar:

A surprisingly large fraction of applicants, even those with masters’ degrees and PhDs in computer science, fail during interviews when asked to carry out basic programming tasks. For example, I’ve personally interviewed graduates who can’t answer “Write a loop that counts from 1 to 10″ or “What’s the number after F in hexadecimal?” Less trivially, I’ve interviewed many candidates who can’t use recursion to solve a real problem. These are basic skills; anyone who lacks them probably hasn’t done much programming.

Speaking on behalf of software engineers who have to interview prospective new hires, I can safely say that we’re tired of talking to candidates who can’t program their way out of a paper bag. If you can successfully write a loop that goes from 1 to 10 in every language on your resume, can do simple arithmetic without a calculator, and can use recursion to solve a real problem, you’re already ahead of the pack!

Más curioso resulta aún leer detenidamente este otro post (Separating Programming Sheep from Non-Programming Goats):

  • 44% of students formed a consistent mental model of how assignment works (even if incorrect!)
  • 39% students never formed a consistent model of how assignment works.
  • 8% of students didn’t give a damn and left the answers blank.

Todo esto es especialmente cierto si se tiene un poco de experiencia en este medio del mundo de desarrollo. Todos HEMOS (en mayor o menor medida) copiado código de algún otro lugar para resolver un problema específico, o en el mejor de los casos, un pequeño problema que forma parte de uno mayor. Aquí por lo menos ya avanzamos al nivel de fragmentar en piezas de menor complejidad un problema. Pero la esperanza, es que con el paso del tiempo y con mayor experiencia, este tipo de prácticas tienda a disminuir y por lo tanto ya seamos capaces realmente de programar algo y no simplemente hacer un “copy&paste” y arreglar algunos nombres de variables para que el código recientemente copiado se adecue a lo que ya teníamos.

Sin embargo, esa es solo la punta del iceberg. Personalmente creo que de fondo esta algo más grave aún y es algo tan trivial como la lectura de comprensión. Basta ver en los comentarios como algunos visitantes intentaron resolver el problema planteado de alguna manera. El problema dice claramente que la salida para los números múltiplos de 3 y al mismo tiempo de 5 (15, 30, 45, 60, 75 y 90) debe ser “FizzBuzz” junto, en una misma línea y hay casos realmente brillantes.

Pero bueno, el asunto al final del día es que, como programador, en algún momento vas a recibir una especificación para escribir una pieza, y no siempre será de lo más simple o clara la explicación, y si desde la comprensión en la lectura de la especificación ya hay problemas, obviamente el resultado será algo que en el mejor de los casos tenga infinidad de errores y en el peor de los casos no funcione en lo absoluto.

En mi caso personal, reanudé mis estudios universitarios hace poco más de 1 año. Con 8 años de estar trabajando tiempo completo en la industria del desarrollo y actualmente más en la consultoría. Esto me ha ayudado a darme cuenta un poco más de las raíces del problema. Y es que por ejemplo, no puede ser que alguien que estudia alguna carrera universitaria referente a las TI como Ing. en Sistemas, Informática, etc. tenga que copiar la tarea de hacer un algoritmo para obtener el factorial de un número, pero eso sí, este estudiante puede graduarse con 10 y después estudiar hasta una maestría, justo lo que se menciona en los posts referidos anteriormente. (Digo esto si alguien decide tomar la vertiente técnica de esta profesión, porque también es cierto que bien puede tomar la vertiente administrativa más alejada de aspectos de “bajo nivel” como los mencionados.)

Pero bueno, así es este mundo. Aquí está mi solución al problema planteado en el post, por si a alguien se lo dejaron de tarea en su carrera, maestría o doctorado, jajaja:

C#:
  1. string linea;
  2. for (int i = 1; i <= 100; i++)
  3. {
  4.     linea = string.Empty;
  5.     if ((i%3==0 || i%5==0))
  6.     {
  7.          if (i % 3 == 0)
  8.              linea = “Fizz”;
  9.          if (i % 5 == 0)
  10.              linea += “Buzz”;
  11.      }
  12.      else
  13.           linea = i.ToString();
  14.      Console.WriteLine(linea);
  15. }

Microsoft Pre-release Software Visual Studio Code Name “Orcas” - March Community Technology Preview (CTP)

Posted by hecgo on 28 Feb 2007 | Tagged as: Code, Noticias, .NET

Un nuevo mes, una nueva CTP de la siguiente versión de Visual Studio (nombre clave “Orcas”). A diferencia del mes pasado, que solo estaba disponible instalado en un disco duro virtual, este mes además está también ya un instalador (que puede significar un ahorro de 2GB en la descarga).

Entre las cosas más interesantes, se encuentra el Intellisense JScript para ASP.NET AJAX, todo el nuevo soporte para LINQ que ya venía desde las CTPS anteriores y la integración completa con los componentes del .NET Framework 3.0 como WCF, WWF y WPF (actualmente ya hay algunas de estas características en el Expression Blend también).

La lista completa de lo nuevo que trae este CTP:

http://www.microsoft.com/downloads/details.aspx?FamilyID=cf76fcba-07af-47ac-8822-4ad346210670&DisplayLang=en#QuickInfoContainer

Disco duro virtual

Instalador auto-extraible

AJAX en MOSS y WSS 3.0

Posted by hecgo on 28 Feb 2007 | Tagged as: Windows SharePoint Services, AJAX, Code, Web 2.0, .NET Servers, .NET

El paso siguiente natural para ASP.NET AJAX será incluirse en los portales de SharePoint (MOSS y WSS 3.0). Está planeado que el Service Pack 1 de esta plataforma incluya este soporte. Sin embargo, y como al final del día no son más que páginas ASP.NET 2.0, es perfectamente posible incluirlo de una buena vez. El proceso es simple:

  • Modificar el web.config del sitio de MOSS o WSS 3.0 para agregar los verbos y extensiones necesarios para las llamadas AJAX.
  • Modficar la (o las) Master Page del sitio para agregar un Script Manager de ASP.NET AJAX
  • Y finalmente, crear o modificar una webpart que ya tendrá a su disposición el framework de AJAX.

Simple, simple :P

http://weblogs.asp.net/jan/archive/2007/02/26/using-the-ajax-control-toolkit-in-sharepoint.aspx

Para profundizar más al respecto:

http://weblogs.asp.net/jan/archive/2007/02/26/new-version-of-smartpart-now-with-ajax-connections.aspx

http://sharepoint.microsoft.com/blogs/mike/Lists/Posts/Post.aspx?ID=3

Url Rewriting en ASP.NET

Posted by hecgo on 28 Feb 2007 | Tagged as: Code, .NET

Utilizar “reglas de reescritura de URLs” (Url Rewriting) en ASP.NET corriendo sobre IIS no era tan simple como lo puede ser en un webserver Apache.

Estas reglas sirven para tener URLs que solían llamarse “amigables con los motores de búsqueda” (search engine friendly) ya que evitaban que se vieran URLS con querystrings del tipo hecgo.com/?p=312 para convertirlas en algo así como por ejemplo: hecgo.com/2007/02/28/url-rewriting-en-aspnet

En Apache simplemente se crean expresiones regulares y se agregan al archivo .htaccess

Pues bién, ahora ya no es tan complicado, y este artículo nos muestra cómo hacerlo para ASP.NET y IIS:

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx