LiquiGlide Bottle

MIT PhD candidate Dave Smith and his team of mechanical engineers and nano-technologists from the Varanasi Research Group, have finally solved our ages-old debate on how to best get condiments out of the bottle.

Previous to this invention, the extraction of ketchup from the bottle has been a point of pride for some. Everyone’s method is different. Some advocate jamming a butter knife into the neck of the bottle to dislodge the contents. According to its website, Heinz 57 recommends applying “a firm tap to the sweet spot on the neck of the bottle — the “57.” Our children may never have to know this trick, thanks to LiquiGlide. The super slippery, non-toxic coating keeps condiments like ketchup, mayo and mustard from sticking to the sides of glass and plastic bottles, and allows them to slip right down to the most important place: your food.

Smith told Austin Carr at Fast Company that they were originally interested in applying the LiquiGlide coating to car windshields and the insides of gas or oil lines that frequently clog. We are so thankful they decided to apply this amazing technology to food. We’ll never have to squeeze ketchup juice all over our backyard BBQ attire again!

Privly

A new tool under development by Oregon State computer scientists could radically alter the way that communications work on the web. Privly is a sort of manifesto-in-code, a working argument for a more private, less permanent Internet.

The system we have now gives all the power to the service providers. That seemed to be necessary, but Privly shows that it is not: Users could have a lot more power without giving up social networking. Just pointing that out is a valuable contribution to the ongoing struggle to understand and come up with better ways of sharing and protecting ourselves online.

“Companies like Twitter, Google, and Facebook make you choose between modern technology and privacy. But the Privly developers know this to be false choice,” lead dev Sean McGregor says in the video below. “You can communicate through the site of your choosing without giving the host access to your content.”

Through browser extensions, Privly allows you to post to social networks and send email without letting those services see “into” your text. Instead, your actual words get encrypted and then routed to Privlys servers (or an eventual peer-to-peer network). What the social media site “sees” is merely a link that Privly expands in your browser into the full content. Of course, this requires that people who want to see your content also need Privly installed on their machines.

Abstract classes vs. interfaces

Usar interfaces cuando se esperan cambios frecuentes en el código. Interfaces es un método más flexible que herencia para manejar opciones de comportamiento. Una clase abstracta funciona de manera similar pero además permite definir comportamientos comunes, forzando a las subclases a definir los comportamientos especializados. Una clase abstracta se parece a una interface en que ambos son una especie de contrato de como se debe comportar la clase en el mundo exterior. Resumiendo; interfaces permite a una clase tener varios padres, pero una interface no implementa ningún método, solo especifica que métodos se deben implementar.

Una clase abstracta no se puede instanciar pero puede implementar algunos métodos ( o todos). Interfaces hacen oficial la separación entre implementación y la firma de una clase, mientras que una clase abstracta permite definir comportamiento común, pero por lo mismo es más fácil romper el código en cascada al hacer un cambio. La siguiente tabla compara interfaces y clases abstractas en C#

Interface Abstract class
Una clase puede heredar múltiples interfaces. Una clase solo puede heredar de una clase abstracta.
sin implementación por defecto. Implementación por defecto.
Solo Static final constants. Constantes pueden ser estáticas y de instancia.
La interface define las características periféricas de una clase. Una clase abstracta define el comportamiento interno de una clase.
Si las implementaciones solo se parecen en la firma, entonces es mejor usar interfaces. Si las varias implementaciones usan comportamientos comunes, es mejor usar una clase abstracta.
Ejecución Lenta. Ejecución rápida.
Es necesario revisar todas las implementaciones para  agregar funcionalidad. Se puede agregar el nuevo método a la clase abstracta y todas las implementaciones lo incorporan.

http://www.javaworld.com/javaworld/javaqa/2001-04/03-qa-0420-abstract.html?page=1
http://www.codeproject.com/csharp/abstractsvsinterfaces.asp
C# Interface Based Development

limited unlimited

AT&T Inc. is effectively ending unlimited data plans, saying that it will no longer let customers use more than a set amount of data per month without penalty.
Under a new policy, AT&T will slow download speeds for unlimited 3G and 4G smartphone customers who exceed three gigabytes and 4G LTE users who exceed five gigabytes of data in a given month. AT&T had previously been slowing speeds, or throttling, customers who were in the top 5% of data users in their respective market.

AT&T has been trying to manage capacity on its network in the face of heavy data consumption by Apple Inc. iPhone users and a limited supply of wireless airwaves, or spectrum. The carrier is spending billions to build out a new fourth-generation mobile-broadband network that can handle more data traffic.
A spokesman, Mark Siegel, said the new guidelines were necessary because of confusion among unlimited customers over when their download speeds would be slowed. He declined to say by how much the speeds would be decreased.
Now, AT&T says customers will get a text message when their usage approaches 3GB in one billing cycle. AT&T will slow customers’ data speeds for the rest of that billing cycle.
After that, speeds go back to normal if customers stay under the limit. But if they exceed the limit again, customers’ speeds get slowed without receiving another text-message reminder.
In 2010, AT&T was the first carrier to introduce so-called tiered pricing plans which capped customers’ data use. It allowed existing customers to keep their unlimited data plans indefinitely. About 56% of AT&T’s smartphone customers are on the tiered plans, the carrier said Wednesday.
The Dallas-based carrier in January boosted the prices of the tiered plans by as much as 33% while increasing the amount of data allowed per month.
AT&T and other carriers have been pushing Congress and the Federal Communications Commission to release more licenses for wireless airwaves to help stave off a capacity crunch as more customers download video, music and photos to their smartphones.
The data caps aren’t the only moves the Dallas-based telecommunications giant is taking to manage its network. In recent weeks, the carrier has begun sending out notices to some customers still using cellphones on its older 2G cellular network to swap out their devices for newer ones that can run on 3G networks.
“Your current, older-model 2G phone might not be able to make or receive calls and you may experience degradation of your wireless service in certain areas,” AT&T cautioned in the letter. Mr. Siegel said the carrier hoped to use some of the 2G spectrum for new technologies, though it would still offer 2G services to those who want them.
“We’re simply urging them to upgrade to a new device if they want to,” Mr. Siegel said.
Mr. Siegel said the carrier sent the notices to customers in the New York metropolitan area and may send them to other customers. He noted the program was voluntary and affected a small number of subscribers and most 2G phones would continue to work.
AT&T is offering the users one of four free phones, such as the Samsung Electronics Co. Evergreen or the LG Electronics Inc. GU295.


Jane Foody’s iPhone is practically her personal assistant. 
The 27-year-old physical therapist and yoga instructor from Yonkers, NY, uses her iPhone for everything, from scheduling appointments, to streaming music during lessons, to showing her clients how to properly strike a downward dog pose.
But last month, AT&T threatened to shut down Jane’s personal assistant. AT&T sent Jane a text message saying that she was using too much data on her unlimited data plan, and that they could block her access to high-speed data. Jane says her iPhone would be useless for anything but making phone calls and sending text messages, and she’s not happy about it.
Jane started a petition on Change.org calling on AT&T to stop slowing down data and respect the unlimited data plans paid for by customers. AT&T is digging in its heels after 10,000 people already signed Jane’s petition. The company responded to the campaign by saying customers with unlimited plans can only access three gigabytes of data per month — meaning unlimited plans no longer exist!
Jane isn’t the only AT&T customer being accused of using “too much” data on unlimited plans. A huge article from the Associated Press revealed just weeks ago that AT&T is similarly targeting the top 5% of its “unlimited” data customers, or nearly 850,000 people. 
Jane says she tried to file a complaint with AT&T about being unable to use her unlimited data, but the only responses she says she got were from sales representatives pushing her to pay more money to be able to use as much data as she wants. “I told them, ‘I shouldn’t need to do that since I have unlimited data,'” Jane said.
Cell phone companies have listened to customer outrage before: in December, more than 166,000 Change.org members successfully pushed Verizon to cancel a new fee to pay bills online. Jane hopes that if enough people speak out to AT&T, the cell phone company will also buckle and listen to their customers.
Thanks for being a change-maker,
– Jon, William, Jess, Tim, Michael, and the Change.org team

.NET Compact Framework 2.0

OpenNETCF.org es un repositorio de información y código fuente sobre Microsoft .NET Compact Framework. OpenNETCF.org empezó como un proyecto de código abierto para extender la funcionalidad de .Net 1.x. A partir del Smart Device Framework 2.0 el código fuente dejo de ser libre.

En el mismo sito de Microsoft hay referencias a ejemplos de aplicaciones móviles que usan las extensiones de OpenNETCF.

El articulo Building a Wi-Fi Discovery Application with the .NET Compact Framework 2.0 explica a detalle una aplicación que usa estas librerías e incluye código fuente. Es un buen ejemplo para empezar a ver el ciclo complete de una aplicación móvil no trivial.

La solución de muestra incluye dos proyectos. La aplicación en si, y el código fuente OpenNETCF referenciado en la misma. Al construir la solución en Visual Studio 2005 se marcan warnings pero los proyectos se construyen con éxito. Se puede probar la aplicación en una Pocket PC 2003. Si la tarjetea de WiFi esta desactivada la aplicación genera una excepción. No es una aplicación de grado comercial pero es una buena referencia de lo que se puede hacer.

El articulo Deploying .NET Compact Framework 2.0 Applications with .cab and .msi Files continua con este ejemplo y explica como hacer un proyecto de instalación.

En un proyecto para aplicaciones inteligentes, cada archivo se marca con una acción de generación que se define en la ventana Propiedades del modo siguiente:

  • Un archivo marcado como Compile, valor predeterminado para todos los archivos y formularios de código, compilará los archivos en el ensamblado resultante.
  • Un archivo marcado como Content permite el empaquetado del archivo en el archivo .cab y su implementación en el proyecto. Asimismo, resulta útil para la implementación de archivos de configuración XML y bases de datos SQL Server CE.
  • Un archivo marcado como None simplemente se ignora. Esta acción resulta útil para incluir documentación en el proyecto, como diagramas de Visio que no se deben implementar.
  • Un archivo marcado como Embedded Resource se incluye en el ensamblado ejecutable como un recurso. Esta acción permite que el código escrito extraiga el recurso mediante programación. Asimismo, resulta eficaz para empaquetar imágenes y archivos de secuencias de comandos que se pueden utilizar posteriormente en la aplicación.


Antes de pasar a construir la aplicación para dispositivos inteligentes y crear los archivos .cab para la implementación, no se debe olvidar cambiar el modo de generación del proyecto de depuración a liberación. Esto reducirá el tamaño del ejecutable en el dispositivo (hecho importante en el caso de los dispositivos inteligentes de almacenamiento restringido) y aumentará la velocidad de ejecución.

Para hacer un proyecto de instalación automatica es necesario efectuar los siguientes pasos:

1. Crear archivos .cab para cada dispositivo donde va a correr la aplicación. Un .cab de instalación puede contener un archivo setup.dll con código no administrado, y por eso se requiere un .cab diferente para cada familia de procesadores. Si la aplicación no requiere de este archivo, entonces un solo .cab es suficiente.

2. Agregar los archivos y entradas de registro de la aplicación a los .cab

3. Proveer el código de acciones especiales a ejecutar durante la instalación y desinstalación de la aplicación.

4. Registrar la aplicación con ActiveSync para que se pueda instalar de la PC de escritorio a la Pocket PC.

5. Empacar todo en un archivo .msi

El primer paso es agregar un proyecto
Other Project types->Setup and deployment->Smart Device Cab Project
a la solución.

Al construir el proyecto se generan 3 archivos un .cab, un .log, y un .inf. El archivo .inf tiene parámetros de instalación que serán usados por ActiveSync.

El .cab es suficiente para instalar una aplicación en la Pocket PC pero es posible agregar un proyecto de instalación de escritorio para simplificar el proceso para el usuario.

Para aplicaciones móviles, hay dos cosas que el instalador debe hacer. Debe presentarle al usuario las pantallas del asistente de instalación en la PC de escritorio y debe instalar la aplicación en la Pocket PC.

La instalación en el Pocket PC se hace a través una aplicación llamada CeAppMgr.exe que es parte de ActiveSync. CeAppMgr.exe requires un archivo .ini que se debe agregar manualmente. En nuestro caso el .ini contiene lo siguiente:

[CEAppManager]
Version = 1.0
Component = OpenNETCF WiFiDiscovery

[OpenNETCF WiFiDiscovery]
Description = Sample WiFi Network Discovery Application using the SDF
CabFiles = WiFiDiscovery.cab

Para activar el modo de depuración de CeAppMgr.exe es necesario meterle mano al Registry. Para los valientes

[HKLMSoftwareMicrosoftWindows CE ServicesAppMgr]
“ReportErrors”=dword:1

Existen algunos requerimientos que, aunque no son estrictamente necesarios técnicamente, son prácticas establecidas y necesarias para certificación.

Aplicaciones registradas con CeAppMgr deben estar en un subfolder de ActiveSync por ejemplo. Estos requerimientos los maneja el instalador utilizando variables predefinidas de Windows para mayor flexibilidad y para facilitar localización del software en varios idiomas. Para ejecutar estas acciones se agrega una clase de instalación.

Agregamos un proyecto de librerí­a de Windows a la solución de Visual Studio. A este proyecto le agregamos la installer class. Esta clase soporta eventos relacionados con el proceso de instalación y permite definir acciones previas y posteriores al proceso de instalación y al de desinstalación. Por ejemplo,

public CustomInstaller()
{
InitializeComponent();
this.BeforeInstall +=
new InstallEventHandler(CustomInstaller_BeforeInstall);
this.AfterInstall +=
new InstallEventHandler(CustomInstaller_AfterInstall);
this.BeforeUninstall +=
new InstallEventHandler(CustomInstaller_BeforeUninstall);
}

Es necesario definir constantes para usar dentro del código en términos de entradas en el Registry, bajo la llave HKLM.

De esta manera el código sigue siendo valido bajo distintos idiomas y versiones de Windows.

private const string CEAPPMGR_PATH =
@”SOFTWAREMicrosoftWindowsCurrentVersionApp PathsCEAPPMGR.EXE”;
private const string ACTIVESYNC_INSTALL_PATH =
@”SOFTWAREMicrosoftWindows CE Services”;
private const string INSTALLED_DIR = “InstalledDir”;
private const string CEAPPMGR_EXE_FILE = @”CEAPPMGR.EXE”;
private const string CEAPPMGR_INI_FILE = @”WiFiDiscovery.ini”;
private const string APP_SUBDIR = @”OpenNETCF WiFiDiscovery”;
private string TEMP_PATH =
Environment.SystemDirectory + @”TEMPWiFiDiscovery”;

El ultimo paso es crear el proyecto de instalación.

Other project types ->Setup and deployment->Setup project

Despues de crear el proyecto, realizamos las siguientes acciones:

1. Cambiar el nombre del archivo de salida.

2. Indicar la ubicación de un directorio para guardar archivos temporales. Este direcorio debe estar ubicado de acuerdo a lo que definimos en la clase de instalación.

3. Definir las propiedades del proyecto como compañí­a, nombre de aplicación, etc.

4. Agregar los archivos de salida del proyecto CAB

5. Agregar en la carpeta de aplicación la salida de la clase de instalación

6. Agregar Custom Action usando la clase de instalación

7. Agregar archivo .ini

8. Construir todos los proyectos en la solución

9. Probar el instalador

Para mayor detalle se pueden consultar los articulos originales en el sitio de Microsoft.

El articulo Developing and Deploying Pocket PC Setup Applications aunque obsoleto tiene información complementaria y discute el caso .Net 1.x

Antes de poder ejecutar la aplicación, es preciso instalar .NET Compact Framework en el dispositivo. Si la aplicación requiere SQL Server CE, también será necesario instalar el archivo .cab adecuado. Aunque ambos se instalan automáticamente al implementar la aplicación desde Visual Studio .NET mediante el menú Implementar o al depurar el dispositivo, en producción será necesario emplear un mecanismo diferente.

Como se mencionó anteriormente, los archivos .cab creados para un proyecto no incluyen los archivos .cab correspondientes a .NET Compact Framework o SQL Server CE. Aunque Pocket PC 2003, y dispositivos posteriores, suelen incluir .NET Compact Framework en ROM, será preciso agregar los archivos .cab específicos de la plataforma en cuestión en el caso en que dichos dispositivos no los incluyan. Un modo sencillo de llevar a cabo esta operación para .NET Compact Framework es descargar y ejecutar el redistribuible.

Referencia:

Patrones de implementación para Microsoft .NET Compact Framework

.NET Compact Framework 2.0

OpenNETCF.org es un repositorio de información y código fuente sobre Microsoft .NET Compact Framework. OpenNETCF.org empezó como un proyecto de código abierto para extender la funcionalidad de .Net 1.x. A partir del Smart Device Framework 2.0 el c

OpenNETCF.org es un repositorio de información y código fuente sobre Microsoft .NET Compact Framework. OpenNETCF.org empezó como un proyecto de código abierto para extender la funcionalidad de .Net 1.x. A partir del Smart Device Framework 2.0 el código fuente dejo de ser libre.

En el mismo sito de Microsoft hay referencias a ejemplos de aplicaciones móviles que usan las extensiones de OpenNETCF.

Google Privacy Policy

We’re getting rid of over 60 different privacy policies across Google and replacing them with one that’s a lot shorter and easier to read. Our new policy covers multiple products and features, reflecting our desire to create one beautifully simple and intuitive experience across Google.
We believe this stuff matters, so please take a few minutes to read our updated Privacy Policy and Terms of Service at http://www.google.com/policies. These changes will take effect on March 1, 2012. 

Got questions?
We’ve got answers.
Visit our FAQ at http://www.google.com/policies/faq to read more about the changes. (We figured our users might have a question or twenty-two.)

How do I change the name of a label in blogger?

How do I change the name of a label?

Let’s say you have a number of posts with the label Label-1 but you’ve decided that you’d rather call it Label-2 instead. You can’t edit the name of a label directly, but there’s a simple workaround to accomplish your goal:

Go to the Posting | Edit Posts tab for your blog.
Click Label-1 in the label list.
Click Select All to select every post with this label.
From the Label Actions… menu, choose Apply label > New Label…
Enter Label-2 as your new label. (If you already have some posts with this label, you can simply add that label, without creating a new one.)
Now all the selected posts should have both labels. From the Label Actions… menu again, select Remove label > Label-1, and you’ve completed the switch.

Note: If you have a large number of posts with this label, they may not all appear on one page. You can show more posts at once using the Posts Per Page menu. If you still can’t show them all at once, then simply repeat the steps above until you’ve changed the labels on all the posts you wanted to affect

employers asking for Facebook passwords

SEATTLE (AP) — Two U.S. senators are asking Attorney General Eric Holder to investigate whether employers asking for Facebook passwords during job interviews are violating federal law, their offices announced Sunday.

Troubled by reports of the practice, Democratic Sens. Chuck Schumer of New York and Richard Blumenthal of Connecticut said they are calling on the Department of Justice and the U.S. Equal Employment Opportunity Commission to launch investigations. The senators are sending letters to the heads of the agencies.

The Associated Press reported last week that some private and public agencies around the country are asking job seekers for their social media credentials. The practice has alarmed privacy advocates, but the legality of it remains murky.

On Friday, Facebook warned employers not to ask job applicants for their passwords to the site so they can poke around on their profiles. The company threatened legal action against applications that violate its long-standing policy against sharing passwords.

A Facebook executive cautioned that if an employer discovers that a job applicant is a member of a protected group, the employer may be vulnerable to claims of discrimination if it doesn’t hire that person.

Personal information such as gender, race, religion and age are often displayed on a Facebook profile — all details that are protected by federal employment law.

“We don’t think employers should be asking prospective employees to provide their passwords because we don’t think it’s the right thing to do. While we do not have any immediate plans to take legal action against any specific employers, we look forward to engaging with policy makers and other stakeholders, to help better safeguard the privacy of our users,” Facebook said in a statement.

Not sharing passwords is a basic tenet of online conduct. Aside from the privacy concerns, Facebook considers the practice a security risk.

“In an age where more and more of our personal information — and our private social interactions — are online, it is vital that all individuals be allowed to determine for themselves what personal information they want to make public and protect personal information from their would-be employers. This is especially important during the job-seeking process, when all the power is on one side of the fence,” Schumer said in a statement.

Specifically, the senators want to know if this practice violates the Stored Communications Act or the Computer Fraud and Abuse Act. Those two acts, respectively, prohibit intentional access to electronic information without authorization and intentional access to a computer without authorization to obtain information.

The senators also want to know whether two court cases relating to supervisors asking current employees for social media credentials could be applied to job applicants.

“I think it’s going to take some years for courts to decide whether Americans in the digital age have the same privacy rights” as previous generations, American Civil Liberties Union attorney Catherine Crump said in a previous interview with the AP.

The senators also said they are drafting a bill to fill in any gaps that current laws don’t cover.

Maryland and Illinois are considering bills that would bar public agencies for asking for this information.

In California, Democratic Sen. Leland Yee introduced a bill that would prohibit employers from asking current employees or job applicants for their social media user names or passwords. That state measure also would bar employers from requiring access to employees’ and applicants’ social media content, to prevent employers from requiring logins or printouts of that content for their review.

In Massachusetts, state Democratic Rep. Cheryl Coakly-Rivera also filed a similar bill Friday that also expands to include personal email. Her measure also bars employers from “friending” a job applicant to view protected Facebook profiles or using similar methods for other protected social media websites.

___

Manuel Valdes can be reached at https://twitter.com/ByManuelValdes.