Review of Electrolux ultrasilencer 3980P vacuum cleaner

January 8th, 2011

In short:

The least noisy vacuum cleaner I have tried.  I would buy it again.

Longer:

It is the least noisy vacuum cleaner I have tried.  Calling it quiet is simply wrong.
A cushion is quiet.  A computer hard drive can be said to be quiet. An idling 200hp car engine is less noisy than this vacuum cleaner.

To compare: one can have a conversation beside it with only a slightly raised voice. One can listen to music from a hifi if one doesn’t listen to the music but just hear it.  But only if the cleaner is set to level 3 of 5.

At level 5 it is still less noisy than other cleaners I have tried, but forget talking without it being painful.

The metal tubes are oval-squarish.  This means one cannot use it for hand tools in the garage which always have round tubing.  The tubes’ connections are fastened with buttons which feels alright.  I cannot say f it is better or not than regular round-tube-friction-connections.

There is no locker for extra tools in the machine but they/it are/is on the tubes, by the handle.  Bigger machine or clumsier tubes; a matter of taste.

I can’t say if the suction is better or worse.  The handle likewise.  Corner handling likewise.

I would like to give kudos to the manufacturer for finally finding out that users don’t like noisy machines but I don’t; since it took them waay to long time.  100+ years.

http://unicow.cloudapp.net/

December 14th, 2010

I have created a very simple cloud application.

It can give back a GUID or a UTC date/time on proper ISO format.

If I have the time I will update it to be formattable and to give back consecutive numbers for a project.  The URL would then be something like http://unicow.cloudapp.net/DateTime/yyyy-mm-dd and http://unicow.cloudapp.net/Teller/MyProject  Future updates might include XML and Json too.

Since there is no HTML it should be easy to use from clients.

It is just a temporary Azure account so it will vanish by itself when time comes.

Devop

December 10th, 2010

Why do we do a hand over when we release a system into production?  There is a new machine(s) involved.  There are different protocols for talking with the computer.  Due to security there are different tools involved.  But.  It is the same system.

Just as programming is designing is architecting is designing is programming I say that developing is running is developing.

Now there is a word for it, Devop.  Developer and Operator.  Makes it much easier to explain when it is googleable.

tags: | categories: Uncategorized | no comments »

Placeholder for a possible future review of Nokia BH-217

December 10th, 2010

Placeholder for a possible future review of Nokia BH-217.

Include other files in config files in dotnet

November 19th, 2010

A seldom used feature of dotnet config files is the possibility to link to another file.  Use configSource=”theotherfile” or file=”theotherfile” as attribute.  An example and comments are found here.

This is old news indeed but every time I use it I tend to google for a while since I cannot remember the keywords.

Example of use:

I have an ordinary app.config file.  It links to connectionstrings.config which keeps my <drumroll/> development connection string.  For creating an installation file I have a normal setup/installation project.  This project takes the file connectionstrings.prod.config and incorporates it in the MSI while renaming it to connectionstrings.config.

Threading in C# by Albahari gratis

November 7th, 2010

Advise: before attempting parallel programming – read up on the subject!

Normally we program by intellisense and the assumption that the name of the method does what we suppose it does.  It can be thought of as lazy, that we don’t grok the framework before we start using it.  But is does seem to work.

This is not the case with parallel programming.  Do it without understanding it and you’re down the slippery slope.

Download the Threading chapter of C#4 in a nutshell by Albahari.  It is gratis.
Read up.  The text is easy to read and well written.

I have read one other part (looking for interface and inheritance and virtual) of the first release and it was also good.  If the rest of the book is as well written I suggest everyone to get a copy.

Exception: Only parameterless constructors and initializers are supported in LINQ to Entities.

October 30th, 2010

I am not sure of the *exact* meaning and reason for this but I found something that can be good to know.  Or not.

return context.NuggetSet.Where(n => n.Name == name).Select(x => new MyClass(x)).ToList();

threw a

Only parameterless constructors and initializers are supported in LINQ to Entities.

When inserting a ToList it worked as suspected/wanted.

return context.NuggetSet.Where(n => n.Name == name).ToList().Select(x => new MyClass(x)).ToList();

My guess is that by calling ToList we losen EF’s grip of the entities and can do what we want with it.

CompulsoryCat 1.1

October 21st, 2010

Just released version 1.1 of CompulsoryCat on google code.

It is a helper lib for getting the names of methods, classes, properties and other stuff out of the methods, classes etc.  It uses lambda or reflection to be as safe as possible.

It is unit tested and has a small exe to show a few examples of its use.  There is also a help file.

Exception: Error 1083: The executable program that this service is configured to run in does not implement the service.

September 30th, 2010

In short: verify that the service name is correct.  Totally correct.

Longer:

Debugging windows services written in dotnet can be hard.  They have no GUI and have to be installed by a semi secret process.  Then they have to be started by a system call.  And if the start fails it is not necessarily possible to uninstall the service without rebooting.  The CL.exe doesn’t work and hacking the registry doesn’t work.

Today I spent hours tracking down a bug that surfaced with a “Error 1083: The executable program that this service is configured to run in does not implement the service.” when starting the service.  In the end I found out that the ServiceName was incorrect.

To be honest I got some clues, in one place it said MyMailer instead of MyMailerService.  I couldn’t be sure if this was correct or not since I had inherited the project and my search turned out nothing so I dropped it.

By (almost) chance I checked into the automagically created MyMail.designer.cs file and noticed this.ServiceName=”MyMailer”.  Which, it turned out, was the culprit.

I learned a trick on the way.  The service has 30 (I believe) seconds to start.  If it doesn’t fulfill it is shot down by Windows.  When I started the process it failed and I got a question whether I wanted to debug it.  Unfortunately it takes more thatn 30 s to open my VS2010.  So I started VS as administrator (necessary in Win7) and loaded the project.  When I then started the service I got the question whether to attach and I did.  Two seconds of work and I got a highlighted row at the exact point.

A .NET Framework error occurred during execution of user-defined routine or aggregate “XXX”: System.InvalidOperationException: The context connection is already in use.

September 2nd, 2010

If you are working with CLR in SQLServer you might run into

A .NET Framework error occurred during execution of user-defined routine or aggregate "MyCLRMethod":   System.InvalidOperationException: The context connection is already in use.

I cannot say this is the solution every time but it worked for me.  Look down to the top of the stack (furthest down in the text) and you get some more clues.

Msg 6522, Level 16, State 1, Line 1
A .NET Framework error occurred during execution of user-defined routine or aggregate "MyCLRMethod":
System.InvalidOperationException: The context connection is already in use.
System.InvalidOperationException:
 at System.Data.SqlClient.SqlInternalConnectionSmi.Activate()
 at System.Data.SqlClient.SqlConnectionFactory.GetContextConnection(SqlConnectionString options, Object providerInfo, DbConnection owningConnection)
 at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
 at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
 at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
 at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
 at System.Data.SqlClient.SqlConnection.Open()
 at Elvis.DatabaseCLR.UserDefinedFunctions.GetNextSampleID(DateTime readDate, Int32 meterID, Boolean useNextMeter)
 at Elvis.DatabaseCLR.UserDefinedFunctions.ConsumptionForNewMeter(Int32 sampleID, DateTime readDate, Int32 meterID, Decimal meterCoefficient, Int32 previousMeterConsumption, DateTime presentationDateOfSample)
 at Elvis.DatabaseCLR.UserDefinedFunctions.MyCLRMethod(Int32 sampleID, DateTime presentationDate, DateTime readDate, Int32 meterID, Decimal meterCoefficient, Boolean newMeter)

.

The MyCLRMethod calls two more methods until Open is called.  Playing around I found that I couldn’t open a connection if one already was open.  It sounds right since one of the deals with CLR in SQLServer is that we already have a connection.  The resolution is to tidy up the code so we only open the connection once, or open/closes it over and over again.

Tricks I used:
– When you get the error in your applicaiton copy the SQL string to your query editor and run it from there.
– Press F5 in Visual studio and have Visual studio deploy the CLR for you.  But use the query tool to run the query.  The error message is the same.
– Debug-through-printf, or “throw exception” in this case.  Drop in a throw-exception to find out exactly which Open call is failing.  The F5-and-wait and then run query takes a while.  If you have a logging possibility it is handy now.