Placeholder for review of Nokia BH609

April 30th, 2011

This is a placeholder for a possible review of the Nokia BH609 bluetooth headset.  Intermediate commercial link: http://smartsontestpilot.se/nokia-bh609/bli-testpilot/

Assert.Inconclusive and my present almost-TDD compromise

April 1st, 2011

I am trying out Visual studio unit testing framework, the Microsoft alternative to, for instance, nUnit which was my old preferred testing framework (and possibly still is).

At the same time I am not in a project devoted to Test driven development so I can’t use its religion to write tests first and refuse to show any UI progress to the customer.  Right or wrong – that is how I perceive the reality around me right now.  But I do want to have tests and waiting for them I make sure I have place holders.

My compromise is to set the tests to Inconclusive  (Ignore in nUnit talk).  I guess it will come back to bite me…

What I also do is to make sure I have a test to go with every method.

        [TestMethod]
        public void AddOrUpdateTest()
        {
            Assert.Inconclusive();
            Elvis.Common.Meta.GetMethodName<BLF.Sample>(x => x.AddOrUpdate(null, null));
        }

I used the code from

http://stackoverflow.com/questions/1524290/linq-is-it-possible-to-get-a-method-name-without-a-return-type-via-linq-expressio

but I could probably use CompulsoryCat just as well.

I belive that even adhering TDD this technique is good.  There are so many times I don’t know what the classes and methods will look like before having done a simple implementation.  To write exhaustive tests for a method that will be deleted is a waste.  Better then to make sure the simple code runs and not forget to write the tests by having a yellow Inconclusive flag.

Exception: Unable to cast object of type ‘ASP._Page_Views_Home_Index_cshtml’ to type ‘System.Web.IHttpHandler’.

March 27th, 2011

This exception might have to do with the browser calling http://localhost/Views/Home/ instead of http://localhost/Home in an aspnetmvc project.

Also make sure there is a HomeController in /Controllers.

I haven’t delved into this since it just was an obstacle in something else I was playing with.

Running two version managers against one solution

March 25th, 2011

Since I have been having problems with reaching my company’s TFS server from home I started with SVN.  One could say I use SVN as an offline SCM.

#1: Don’t use Visual studio for both version managers in the same solution.

Visual studio takes for granted one solution is against one SCM.  Swapping TFS and SVN messes everything up.

#1.1: Use Visualstudio with TFS and SVN with explorer.

I don’t think there is a TFS tool for explorer so the other way around is not possible.  This means I checkin TFS from Visual studio and commit SVN from explorer.

#2: Stuctural changes take time.  And possibly ruins the history.

I don’t try to keep the SCMs in sync but instead have the TFS as main repository.  I make sure folder moves etc. are done properly in TFS and then just reset (get everything – commit whatever it looks like) in SVN.

With these caveats sorted out it works nice.

When wondering about API construction – write the caller first

March 23rd, 2011

When writing an API, be it a global Jquery or private CustomerFacade one has to do a bit of architecting/designing when coming up with method names and parameters.  Sometimes they are natural but other times takes a bit of thinking and at other times again refuse to become anything good.

So don’t write the API.  Yet.  Write the calling code.  The API is there to be used by someone (something) and should be readable, preferably easily.

When writing the call first one (i.e. I) often misses a parameter for complex methods.  But then I just iterate.
Write the caller.  Write the callee.  Discover the callee lacks a parameter.  Update the callee.  Update the caller.  Repeat once again.  Notice the callee is complex and split it.  Update caller.  See that the caller shouldn’t be split.  Add a method to the API and make the two earlier private.  Update callee.  Finished with a good working method.  Continue to next task/method.

Visual studio tip: shift-alt-enter for maximizing working area, and have two working states

March 22nd, 2011

Due to some reason unknown to man there is in Windows the idea of every window to have a title bar, unusable for anything but dragging and double clicking and holding approximately four buttons.  Chrome and Opera have reused the space for tabs, well done!

Visual studio has its own solution.  Press shift-alt-enter (or somewhere on the menu) and the application maximizes itself to get rid of caption bar and borders.  Unfortunately the menu is still visible (it should be able to set it to auto hide) .  Then remove the tool bars and set the tool windows to auto hide; almost everything is now the editor.

Now shift back to the space wasting  layout (shift-alt-enter) and the old setting is back.  So not only do we get more working space, we get a fast layout switch too the same way it switches layout when and when not debugging.

Also applicable for Sqlserver management studio.

Visual studio with and without extra maximized state.

Viusal studion x 2

Review of Lacie Bigdisc

January 22nd, 2011

In short:

Fail.
A storage device with 3 single point of failure is a no no.  Combine it with bad quality and it is a cheat.

Longer:

I cannot recall the exact name of the device but it was a 1TB NAS for about 300€ at the time, 3-4 years ago.

According to the specs it had an open source OS with two ordinary ext(2 or 3) discs.  That sounded good for me.  Open source OS meant that there was a possibility to tinker with it and knowledge out-in-the-world for discrepancies.  Further if the hardware would fail I could always dock the disks into *nix machine and if one disc failed I could always get half the data from the other.

This  was Totally wrong.

You see, Lacies support told me the OS was on one of the disks.  So if a disk failed, the machine wouldn’t start.  The machine was also setup in such a way that if the other disk failed nothing would start either.  Finally the setup of the discs was in such a way that if removed from the device the data couldn’t be understood, Ext2/3 or not.  To make the construction even worse, as if it wasn’t enough from the start, support told me that the disks and the OS and the machine was setup in the factory so there was no guaranteed way to get anything the disks runing in a new machine either.

I had it replaced with another unit that failed the same way.  Incidentally a friend of mine had one too.  It failed.  He had it replaced.  And the replacement failed again.

Having gotten 4 bad Lacie bigdiscs  is possible as sheer bad luck.  But the construction with 3 single point of failures is not coincidence.

Review of Netgear ReadyNAS Duo RND2110 1TB

January 16th, 2011

Just installed a Netgear ReadyNAS Duo RND2110 1TB.

+ Small.

+ 2 disks with a variety of RAID.
– Unfortunately with a proprietary solution called Xraid which we know nothing about.  This is considered Not Good for a device that manges data.  What if a disk fails?  Is it readable again?  Noone knows since Xraid is proprietary.

+/- Outside transformator.  Make it easier to place but one more thing lying around.  For me it was good.

+ Easy to reach disc bays.

( – Noisy.
Noisy like a fan running at full speed.  Always.  Netgear themselves have written that the developers took the drive to the bedroom to make sure it was quiet.  My comment: 0ne developer was deaf and the other had the device turned off. It might be faulty unit I have.
UPDATE: replaced the unit without any problem and the new one was quieter.  There was some error where the machine didn’t recognise the fan. )  I won’t say it is quiet because it isn’t.  But it isn’t noisy.

– The hard drives that came with the machine has gotten louder.  Unfortunately I cannot remember the name of them and am too lazy to open up and check.

+ Dropped some movies into the folder called media.  Started an xbmc client on a laptop, browsed the LAN, chose, and the  movies streamed.

+ At first glance (I haven’t researched) the site/forum/users at readynas.com seems good.  Having a user base and a community is good.

+  Supports Time machine for Mac.  But it only supports 1 client since the user name is hard coded.

– Slow web admin interface.

– Crashes once in a while.

+ Supports dyndns but only with a 3 letter suffix.  E.g.: not myname.dyndns.info.  I guess it is the 3 letter suffix that is the culprit at least; I got …dyndns.com working.

+ It can report errors both through built in SMTP server and through logging in to gmail and send from there.

+ Easy to setup backup.  Just connect a drive to USB, or find a windows share or an FTP or some other endpoints I cannot remember now.  Choose weekdays to backup and which folders (has some choosings) and whether to backup all or inrementally (and overwrite once a week or so).  Seems a bit slow though.  Can report automatically both errors and success per email.

Review of Candy Alisè GO W 465 D washing machine and tumble dryer

January 11th, 2011

Short story:

I have combined washing machine and tumble dryer that seems to do its job.  But like with most washing machines today the user interface is created by twelve pidgeons and a monkey.  When it fails it doesn’t give a serious clue about what is wrong.

Long story:

A review of a combined washing machine and tumble dryer is not very technical.  But it is very much user interface and as such it is close to software development.  Like how we did software user interfaces 20 years ago.

The machine seems to do the washing good and the tumble drying ok during the two weeks I have had it.  It is a centimeter or two shallower than the competitors I looked at which was good in my case.

But the user interface…

To its defense I must say that all washing machines I have tried have stoopid UIs, possibly with the exception of the very simple ones which work like the mechanics inside it which is possible to grasp.

Let me start with a disease in every modern washing machine I have tried; the lag between opening-allowed and opening-possible.  The machine is finished.  The water is pumped out.  The pump has stopped working.  Sometimes even the key sign has been switched off.  Why do we have to wait 30 more seconds before it is possible to open the door?
That was the easiest, most blatant, example of no-brain-design-this-user-interface.
Another almost as simple here: Machine just started and you notice something you forgot to put in the machine.  The water hasn’t started flowing yet so the machine is dry.  Now you have to wind through the whole program, pressing a button for 20 seconds.  For one Wascator machine I had to release it at spin dry and then press it again for 10 seconds.  Finally waiting 30 more seconds for being allowed to open the door.
The Candy I am reviewing here doesn’t have that sort of fast forward so instead one turns it off.  And then to a program to turn it on again.  And after that I haven’t had to figure out yet.

The graphics are also nice/friendly even though I don’t get why it has invented a new icon for wool.

If you want to wash at 95 degrees you have to set it to cotton and prewash.  All other settings refuses to let the temperature go above 60.  Why?  It is my clothes and I might want to wash something in 95 for 20 minutes.  Or without prewash.
On the other hand – with prewash runs faster than without.  There is probably a perfectly good reason for that. But it eludes me

There is a play/pause button.  That isn’t that.  When tumble trying; it is a Play:start tumble trying and Pause:stop heating the air and change to 20 minutes(or 10 if it was 5 before).
You don’t understand what I wrote? The programmers probably didn’t either.

It does Not have 2 water inlets, one for cold and one for hot.  In Sweden it is often cheaper buying water heated centrally than heating it with in the washing machine.  It is also faster since the water is already heated up.

It does not manage to empty the washing powder slot properly.

The time-remaining-of-spin-drying calculator is built by the same guy that built WindowsXP time-remaining-of-copy-file where 1 minute is anything between 1 and 15.

The top is flat but has lining around the sides that makes dirt and washing powder not being easily wept off but instead caught in the linings.  It probably has something to do with how the machine is assembled in factory.

The door is not rehingable from left to right.  It is possible on every refrigerator I have seen, except the very trendy ones, the last 30 years.  But no washing machine has it.

We are figuring out the user interface bit by bit and are sometimes positively surprised where someone has done a bit of good thinking.

Finally an example that is visible in so many modern washing machines: the program wheel.
In the old days we used a mechanical clock with relays to turn stuff on and off.  The wheel to set this clock was situated to the side due to its size, normally right.  Today we still have this wheel but it is just an electric switch connected to a computer.  So in the Candy I am writing about the program wheel is a mixture of washing programs, spin cycle, empty machine and some more.  Like the Tools menu of MSOffice pre 2007.

Here is another example where the product obviously isn’t tested or used before shipping. I set the program to 40° cotton. I get 1h34m runtime. I press start and it immediately jumps to 2h20m. (the figures are not exact)

Update:

The machine failed for me the other day, after a month’s use, with the clue “E07”.  Searching the manual came up with nothing but “call someone”.  To me this is a FAIL.  Calling “someone” I got a “I believe it is the controller card.”.  There are several other errors like E01 and E02 if I recall correctly.

It is hard to recommend a machine for several hundred euros that doesn’t give a clue about what is wrong.

Update:

I put in clothes and choose program.  It say 1:34.  I press play and it immediately switches to 2:02 or 2:22 depending on god-knows.  What happened to the 1:34?  What did the machine learn the moment I pressed play?

Then of course.  The machine is finished.  The water is pumped out.  The timer says 0.  I still have to wait over a minute before I can open the door.  And you know what? – in other machines there is a small door at the front where a string (or similar) is hidden to open the door anyway.
This machine has a pressure sensor.  So if the pressure sensor breaks down there is no obvious way to get your clothes out.  Or if the power goes.

New site: ideas, ideas, ideas

January 9th, 2011

I have started a new blog to run parallel with this.  It is about ideas.

I get ideas all the time.  So instead of just dropping them I let them out for others to see and use.

http://ideas.selfelected.com/