Wednesday, December 10, 2008

4793.aspx

The last barrier to developing for Android is gone

Developing with emulators is “fine” but you have no idea how it works on the final device. Which is why I usually make builds for the real device as soon as possible to verify that what I am trying to do is feasible on the real device.


So I'm thrilled to see that Google has launched a $399 Android Dev Phone that is not locked to any provider:



The Android Dev Phone 1 is a SIM-unlocked and hardware-unlocked device that is designed for advanced developers. The device ships with a system image that is fully compatible with Android 1.0, so you can rely on it when developing your applications. You can use any SIM in the device and can flash custom Android builds that will work with the unlocked bootloader. Unlike the bootloader on retail devices, the bootloader on the Android Dev Phone 1 does not enforce signed system images. The Android Dev Phone 1 should also appeal to developers who live outside of T-Mobile geographies.


I got an Apple iPhone 3G this summer but this is pretty tempting as I haven't done much device coding after I changed jobs last year. I have got several requests for improving my Windows Mobile apps but I'm still evaluating my options; make cross device web apps (iPhone, Android, Win Mobile), buy a (very) expensive Mac, buy a expensive Visual Studio license or go for the free and open source Android. I had loads of fun, and I have learned a lot, developing the apps but at the moment they are frozen as I don't use my Windows Mobile device anymore.


I firmly believe that web apps (with syncronization in some cases) are the way to go but they are not very well suited for the apps I have developed for Windows Mobile so far (password manager, gmail notifier with Today Screen support). Android has a very interesting model for extending built in features so that may be the way to go (if Santa gets me a Android Dev Phone :-)

Wednesday, November 19, 2008

4779.aspx

Finally solar powered!

It took longer than planned, but we finally made it:


 


“The Plant“ is finally live, producing 9 kWh on a short day like today. I cannot wait to see how much it produces during a typical Italian summer day.



It may not look like much but it should be enough to cover our energy needs based on the data from last year.


Installed with the fantastic support of the local Lega Ambiente di Limbiate and the 0 tax loan from http://www.bccbarlassina.it/

Saturday, October 11, 2008

4762.aspx

A Guinness World Record holder at dancing???

We set the new Guinness World record for sirtaki dancing last month. Cool Or What?



I'm notoriously bad at dancing but we managed to break the record in the single attempt we had. The most challenging and surprisingly fun and satisfying team building I've done.


 

4761.aspx

Meet our 2 new family members

I proudly present Cocca & De 
(no, it is not a new fashion brand, but two hens. I guess you have to be Italian to get the names :-)


Sydney, below, gets on with them better than I thought.



I expected to come home to find his mouth full of feathers one day but it didn't take him long to find out that they are more useful alive. As soon as he hears them sing in the morning, he takes off like a rocket to find the eggs. So far he has eaten more eggs than the rest of us...


I don't like the idea of locking in Cocca & De so today I modified the fence around their house so Sydney no longer can get inside. I guess he still gets to eat the eggs of Cocca which has the habit of laying the eggs around in the garden. De, on the other hand, is regular like a Swiss clock and lays an egg inside the house just in time for breakfast.

Wednesday, September 24, 2008

4753.aspx

10 years, again!

Hm..



Am I getting old or what?

Monday, August 18, 2008

4723.aspx

Tools for debugging http and https traffic

I spend a lot of time troubleshooting web applications. My Swiss army tool of choice for all network related issues is WireShark but it falls short when it comes to analyzing SSL encrypted traffic.


FireFox takes forever to load compared to IE7 but its wide range of add-ons can be a life saver at times for developers. I am a heavy user of:



  • User Agent Switcher which quickly lets me change the user agent of the browser

  • SwitchProxy lets you quickly swap between proxies. Proxy configuration scripts are great if you always use the same proxies but I frequently have to force a specific proxy to test different web application behaviors.

  • LiveHTTPHeaders plugs into FireFox so it is able to see all the http traffic in real time. You can filter the request using regular expressions and see https requests in clear text!

Fiddler is also able debug https but it relies on a "man-in-the-middle" approach which has some limitations.

Wednesday, July 23, 2008

4706.aspx

Never, ever, fly with VolareWeb

I do not expect a great in flight service by a low cost company like www.VolareWeb.it but I do expect them to fly...


I flew with VolareWeb for my first time this summer when I booked a return flight from Milan to Athens for my summer vacation. They called me on my mobile phone two days before I was supposed to leave to tell me that my outgoing flight was cancelled. I didn't make a lot of fuss when they booked me on a flight the next day as I did not have any reservations in Greece and more than enough to do at work.


After a couple of weeks of some fantastic island hopping it was time to head back. At my last day of vacation, on my way out for dinner, I checked my mail just to prepare for my return back to reality. That "saved my life". I found a mail from VolareWeb that my booking had been updated and told me to call a free number in Italy, that cannot be called from abroad... But all my mails is on Google Apps so it didn't take me long to find the original reservation and a international phone number.


I called VolareWeb just before they closed in the evening. This is an shortened and edited transcript:
Me: I am calling from Athens. I have a flight home to Milan tomorrow morning. My reservation number is xyz.
VolareWeb: Yes. It has been cancelled. You have been booked on a flight in a few days.
Me: Sorry, but I have to be back in Milan tomorrow for several reasons.
   1) I have my parents coming tomorrow afternoon to Milan and I have to be there to pick them up.
   2) My brother in law just left on vacation so someone has to take care of our animals.
VolareWeb: That is not may fault. Your flight has been cancelled
Me: As I explained, I have to be back some time tomorrow. Can you book me on another flight?
VolareWeb: no.
Me: Will you cover the costs if I book another flight
VolareWeb: no
Me: Will you at last cover my extra expenses (rental car for an additional day, hotel for me, hotel for my parents, etc.)
VolareWeb: no
Me: So…. What can I do
VolareWeb: Nothing. The flight has been cancelled


End of story. A 30 min phone call with Volarweb (with outrageous roaming charges) which refused to cover any costs at all. Serious companies cover meals, hotel etc while you wait for the next flight.


The story had a happy ending though. We had already paid cash for the hotel room (to save time the next morning), but we jumped in the rental car in hunt for a travel agency and a flight home. We found our saving angel in Elena at erasinos Travel & Tours. She found a flight the next morning with Olympic Airlines and reserved it for us at no cost. The online booking system was unable to confirm our flight as it was late at night so she adviced us to drive to Athens airport to by the ticket at the Olympic Airlines counter. A couple of hours later we were back at the hotel with two very hungry and tired kids, but thanks to Elena we had tickets to go back home!


I thought the saga was over when I came home, but no. What really convinced me that VolareWeb is incompetent is the message I found on my answering machine. The day before I should have left I got this message at home: Hi. Your return flight from Athens to Milan has been cancelled. We have booked you on another flight.
Eh? I am in Athens waiting for my return flight to Milan, why are you calling me in at home? You have my mobile number, in fact you have called it before, and now you call me at my home number to tell me that my return flight is cancelled???


VolareWeb, it is official; I will never, ever, fly with you again. Leaving people on the ground without providing alternatives, helping out in any way, or covering any costs at all is bad, very bad...

Wednesday, May 21, 2008

4647.aspx

Community Days Milano 2008: 09-10 July

The agenda is not finalized yet, but I am sure Community days 2008 will be as interesting as the past events.


I doubt I will attend the free event this year as I do not program in .NET at work. I still do some coding for fun but it is hard to justify two days away from work just for fun :-)


I will try to attend some Microsoft events to stay in touch with friends but you are more likely to see me at Python conferences in the future...

Tuesday, May 20, 2008

4643.aspx

NEVER underestimate the power of female intuition!

I have had a countdown status message in my office mail this week:


A female colleague a few thousand km away noticed and could not resist (keep in mind that I have never met her):



...
SuperWoman:  BTW, what are you celebrating in 2 days ;)
if i may ask


me: Guess
 
SuperWoman: wedding aniversary
 
me: correct !!!!
 
SuperWoman: congratulations ;)
 
me: The 10 years have gone very fast. Time flies when you have kids...
 
SuperWoman: next question...
 
how many ;)
 
sorry, I'm curious!
 
me: Since you are so incredibly good at guessing; lets see if you can guess the number of kids and age


SuperWoman: I'd say 2 kids, aged between 9 and 6??
 
me: I do NOT believe it.
My oldest daughter is 9
the youngest in 6
 


Are all women like this or am I that easy to read?


More importantly; what should I do with the aniversary gift? I am sure my wife knows what it is already...


 

Monday, May 19, 2008

4639.aspx

Contexts made GTD work for me

I have played around with GTD for several years. It has worked reasonably well but I recently learned that I have done one thing wrong: I used categories instead of contexts. They sound like the same thing but using context has made a big difference.


In the past I used categories like: "personal" and "work". It works for grouping tasks together but it is a bad idea when you have to choose the next thing to work on as it says nothing about the "context" you require to do them. I could have a personal task like "scan letter" that I actually have to do in the office where I have access to a scanner.


Defining real context makes it very clear what you should work on at any given time. No need to scan through the tasks and discard the ones you cannot work on as you are missing something. These are the contexts I use the most



  • Computer

  • Home

  • Person A/B/C etc: Something to do/discuss the next time I meet the person.

  • Office

  • Waiting: Anything I am waiting for ends up in here. I review it on a weekly basis to make sure I'm not loosing track of something

You can find plenty of good contex suggestions here.


Seeing a long lists of things to do regardles of context is just overwhelming and causes stress, so I have extended poToday to use context as well. Changes in version 3 of poToday



  • Support English date formats

  • Added a "move to no date" feature

  • Added context support (using the categories in Outlook).

  • Support for different screen orientations and sizes

Saturday, May 3, 2008

4633.aspx

Free essential guides for SQL Server

SQL Server Magazine has a set of free essential guides regarding many SQL Server tasks. They are targeted at people that are new to the topic and they are short and to the point:



  • The Essential Guide to Business Intelligence Reporting: Choosing the Right Tool for the Right Job

  • Virtualization of SQL Server 2008

  • The Essential Guide to Reporting Services Tips & Tricks

  • The Essential Guide to Disaster Recovery and Virtualization

  • The Essential Guide to SQL Server Backup and Recovery

  • The Essential Guide to Jump Starting Your SQL Server Skills

  • The Essential Guide to User Continuity

  • Special Report: Perspectives on SQL Server Sprawl

  • The Essential Guide to Solving Server Sprawl

  • The Essential Guide to Analytic Dashboards

  • The Essential Guide to Antispam Solutions

  • The Essential Guide to Choosing a Clustering Alternative

  • The Essential Guide to Table Partitioning and Data Lifecycle Management

  • The Essential Guide to SQL Server Skills for the Oracle DBA

  • The Essential Guide to SQL Server Management Fundamentals

Registration is required for the guides I had a look at.

Wednesday, April 30, 2008

4630.aspx

The Tipping Point & Napoli?

I haven't finished reading The Tipping Point yet but it has been a fascinating read so far. The part concerning crime on the New York underground is food for thought:



Back in the day, New York hired a new subway director named David Gunn who backed the Broken Windows way. "When you looked at the process of rebuilding the organization and morale, you had to win the battle against graffiti," Gunn said in an interview. "Without winning that battle, all the management reforms and physical changes just weren't going to happen." By preventing graffiti and cleaning subway cars after vandals struck, Gunn believed the city could also lessen subway muggings and undermine fare cheats. Transit Authority police chief William Bratton adopted a similar line of thinking. Rather than nailing felons first, Bratton urged coppers to pound fare cheats and public urinators. Such scoundrels were used to running amok underground. Under Bratton, however, they faced an arrest and jail time for minor crimes - a policy which often resulted in the cops finding guns on the criminals and nailing those with outstanding warrants.


I don't know if it really lowered the crime rates in New York but it certainly feels right. I also explains why people drop trash everywhere in Italy but hesitate before throwing a chewing gum on the road once they have crossed the border to Switzerland.


I wonder if the principle could be applied to Napoli. Instead of trying to beat crime “top down” by going after the mafia, why not start with the day to day stuff that makes people comfortable with breaking the law: many people driving on the same scooter without helmet, driving without seat belt and generally breaking every law there is… 


It just gets worse every day. The news today reported that doctors in Napoli have introduced a sign saying; pay 1 euro at the door. These are doctors that are paid by the public health system so the service is free (at least in the civilised parts of the country). 1 euro doesn't sound like much but the each doctor pull in tens of thousands of euros tax free a year and it hurts everyone, in particular the poor, old and sick.

Tuesday, April 8, 2008

4611.aspx

Google App Engine

Got a great idea for a web site or web service but not the resources to host it? Why not try Google App Engine:



Google App Engine lets you run your web applications on Google's infrastructure. App Engine applications are easy to build, easy to maintain, and easy to scale as your traffic and data storage needs grow. With App Engine, there are no servers to maintain: You just upload your application, and it's ready to serve your users.


You can serve your app using a free domain name on the appspot.com domain, or use Google Apps to serve it from your own domain. You can share your application with the world, or limit access to members of your organization.


App Engine costs nothing to get started. Sign up for a free account, and you can develop and publish your application for the world to see, at no charge and with no obligation. A free account can use up to 500MB of persistent storage and enough CPU and bandwidth for about 5 million page views a month.


During the preview release of Google App Engine, only free accounts are available. In the near future, you will be able to purchase additional computing resources.


I am not a big fan of Python as a language, but the service is too cool not to give it a try.


Thanks to Omar for the link.

Thursday, February 28, 2008

4572.aspx

Project Unity

Wow...
10.000km of underseas cable that potentially can send 7.68 Terabits per second across the Pacific....



This new 10,000 kilometer (km) Trans-Pacific cable will provide connectivity between Chikura, located off the coast near Tokyo, to Los Angeles and other West Coast network points of presence.  At Chikura, Unity will be seamlessly connected to other cable systems, further enhancing connectivity into Asia.


The Unity consortium selected NEC Corporation and Tyco Telecommunications to construct and install the system during a signing ceremony held in Tokyo on February 23, 2008.  Construction will begin immediately, with initial capacity targeted to be available in the first quarter of 2010.


The new five fiber pair cable system can be expanded up to eight fiber pairs, with each fiber pair capable of carrying up to 960 Gigabits per second (Gbps).  By having a high fiber count, Unity is able to offer more capacity at lower unit costs.


I feel old. It wasn't that long ago that a few Kbit/s was fast

4571.aspx

Installing Ubuntu on Virtual PC 2007

I was trying to install Ubuntu 7.10 on Virtual PC 2007 but I got this nasty screen when it went into graphics mode during the setup:



It turns out that Ubuntu sets the color depth to 24 bit which Virtual PC doesn't like. This detailed step by step guide shows how to fix the video and mouse issues so Ubuntu works on Virtual PC 2007.


The short version to fix the graphics problems:



  • Hit Ctrl+Alt+F1 when the screen goes in tilt to drop to a console

  • Change DefaultDepth 24 to 16 in /etc/X11/xorg.conf

  • Hit Ctrl+Alt+F7 to go back in graphics mode

  • Hit Ctrl+Alt+F7 to reload XWindows

Friday, February 22, 2008

4570.aspx

Microsoft 2008 launch in Milano 28/2 and 29/2

The Microsoft 2008 product launch will take place in Milano 28/2 and 29/2 and will have two separate tracks for IT Professionals (TechNet) and Developers (MSDN) but you can move between them as you wish.


Judging by the presenters it should be pretty good, and it's worth participating just to get the free software kit:



  • Windows Server 2008

  • Visual Studio 2008 Standard Edition

  • SQL Server 2008 Standard Edition (CTP with voucher for getting the final version)

You can find the other dates of the 2008 launch tour here.

Tuesday, February 19, 2008

4563.aspx

Living a spam free life with Gmail

The anti spam filters in Microsoft Outlook and Windows Live Mail are not bad, but they are no way as good as the anti spam filter in Gmail. It is just fantastic. I hardly use my Hotmail account so the majority of my mail is spam:



Last autumn I migrated all my mail to Google Apps. It took me a while to upload my 4.5GB of mail but it was worth it. Instant search and "zero" spam. Since New Year I have only received 1 spam mail in my inbox!


The best feature though has to be the threading. It makes it a lot faster to catch up with e-mail and see the context of long e-mail threads.


Some Gmail productivity tips:



You can use Gmail as your mail reader even if you have another email server like Exchange by adding another account.

Monday, February 18, 2008

4559.aspx

My first (and last?) trip with EasyJet

I am going to London for a week and decided to fly EasyJet. I have used RyanAir several times in the past and I have been very satisfied with them. Cheap tickets and flights that leave and arrive on time.


I have, eh... had, to arrive "early" this morning so I opted to take EasyJet as they have early flights from Malpensa. I decided to pay a bit extra for the Speedy Boarding Service which according to the web site has a dedicated check-in so I could arrive at the airport a bit later. That turned out to be false. As the picture shows I was stuck for 20 minutes in the Slow Boarding Service with everybody else. What a waste of money and time.


Not that it made any difference as my 7:30 flight is (at least) 3 1/2 hours delayed.


Looks like it will be a loooong week.

4558.aspx

Adobe Acrobat 2.0 for Pocket PC fails installation without error

I did a hard reset of my Windows 5.0 mobile device yesterday as it no longer wanted to synchronize files and notes. I did a partial restore of my data (notes, tasks, mails) using the excellent Spb Backup program as I had the same problem after a full restore.


That meant reinstalling all my apps but that didn't take long until I tried to install Adobe Acrobat 2.0 for the pocket PC. I hardly ever use it but it is handy for bringing along receipts of hotel reservations etc.


The setup started ok with the usual security warning but it failed without giving any sort of error. I even tried the Italian version... It actually installed OK but failed to run which just confirms that it is a bad idea to use localized software. It is impossible to improve software by localizing it and it frequently introduces bugs.


I have done hard resets in the past but this time I restored my data before I reinstalled my apps. That turned out to be the cause of the problem. The Acrobat 2.0 Pocket PC install fails if it find s the Adobe Reader Users Guide.pdf file in the My Documents folder. Deleting the file fixed the problem.


Apps I currently run on my HP rw6815:



References:


Thursday, January 17, 2008

4533.aspx

Assembly load error in SQL Server 2005 after attaching DB

I recently migrated a Microsoft SQL Server database from one disk drive to another using the sp_detach_db and sp_attach_db stored procedures.


It was on the same machine so I was surprised when I got this half English, half Italian error message:



An error occurred in the Microsoft .NET Framework while trying to load assembly id 65733. The server may be running out of resources, or the assembly may not be trusted with PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE. Run the query again, or check documentation to see how to solve the assembly trust issues. For more information about this error:   System.IO.FileLoadException: Impossibile caricare il file o l'assembly '..., Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' o una delle relative dipendenze. Errore relativo alla protezione. (Eccezione da HRESULT: 0x8013150A)  System.IO.FileLoadException:      at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)     at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)     at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)     at System.Reflection.Assembly.Load(String assemblyString)    The statement has been terminated.


Turns out that the DB had a couple of CLR stored procedures and that they refused to work after the move. SQL Server could find the assemblies but it was still unable to load them. The trust configuration was OK as well.


The problem was that the commands were executed from the SQL Server Development Studio using an account connected via windows integrated security. As a result the DB was attached using the current user, not "sa", as the owner of the DB.


Using sp_changedbowner to set sa as the owner fixed the problem.

4532.aspx

Microsoft and Oracle goes shopping

Microsoft buys FAST and Oracle buys BEA.


Bigger and bigger, in the end, there can be only one...

4531.aspx

Bill says goodbye with style

What can I say. Bill's goodbye note is better than mine.

Monday, January 7, 2008

4526.aspx

How to kill open connections on SQL Server

The stored procedure below, from Michele, kills all open connections to the DB you specify. It is a great time saver when you have to take a busy db offline for maintenance.


CREATE PROCEDURE usp_DBKillConn
@DBname sysname = NULL
AS
create table #SpidDB
(
   spid  smallint
)
declare @curSpid smallint
declare @cmd varchar(64)
INSERT INTO #SpidDB(spid) SELECT spid FROM master.dbo.sysprocesses WHERE dbid = DB_ID(@DBname)


SELECT @curSpid = min(spid) from #SpidDB
while @curSpid IS NOT NULL
begin
   PRINT @curSpid
   SET @cmd = 'KILL ' + convert(varchar(6),@CurSpid)   /*KILL @curSpid*/
   EXEC sp_sqlexec @cmd
   SELECT @curSpid = min(spid) from #SpidDB where spid > @curSpid
end
Print @DBname
GO

Friday, January 4, 2008

4527.aspx

Emtpy toolbox in Visual Studio 2005 after Windows Update

I lost all the tool box controls in Visual Studio 2005 after the last Windows Update. I was able to get them back by following these steps:



  • Go to the Tools menu

  • Import and Export Settings

  • Choose "Reset all settings"

  • Select the setting you want to use

4525.aspx

My sabbatical

My one month sabbatical has gone fast, too fast. I was expecting to spend a lot of time in front of the computer, but I have hardly written a mail. That caught me by surprise. I have a lot of cool hobby projects going and the sabbatical would have been the perfect time to work on them.


Instead I have spent as much time as possible with my family doing the things I usually do not have time for. This week has been especially good for recharging the batteries as the kids are still home from school and it is snowing :-)


I start my new job next week but it will take a week or two before I am back to my normal blogging and development schedule. I guess this blog will be less Microsoft centric but I will continue to develop for the Pocket PC on my spare time.