Monthly Archives: August 2015

Testing Mackmyra

Since 1999 there is a Swedish malt whisky distillery: Mackmyra. They have released a large number of small series of single malt whiskies and people can “buy” their own casks as well. But I am not interested in those now, I will focus on Mackmyra standard products and try to answer the simple question: are they any good?

My expectation is that a standard Mackmyra is comparable to common Scottish malts. For that level of quality I would be willing to pay a little premium (for Mackmyra being a small, new, Swedish distillery).

I bought the following Mackmyra single malts (no age indication)

  • Mackmyra Brukswhisky (hard to translate, but the cheapest one)
  • Mackmyra Svensk Ek (Swedish Oak)
  • Mackmyra Svensk Rök (Swedish Smoke)

My testing and tasting method is simple. On each testing occation I try the Mackmyra and a Scottish malt that I expect to be similar. The idea is to decide if the Mackmyra is comparable, better or worse. Note that I did the three testings on different days.

1. Mackmyra Brukswhisky vs Glenturrent 10 years old
Glenturret is one of the single malt whiskies that they let me try in The Whisky Experience in Edinburgh. My bottle says 10 years old and not much more. It does not get more standard when it comes to Scottish Single malt, I think.

Appearance: Very similar, the Mackmyra being slightly paler.

Aroma: Glenturret has a richer, sweeter aroma, but also one I dont find entirely pleasant (it smells Blend, to me). Mackmyra is more subtle, and a bit more fruity (not sweet, perhaps pear).

Taste: Glenturret is quite bitter, fading away with time. Mackmyra has some bitterness, tastes a bit wood (young/dry/burnt), and fades away quicker. At second try the Glenturrent reveals more fruitiness. Adding a little bit of water to the Mackmyra brings out much more fruitiness and that pear I felt in my nose. Adding water to the Glenturret: it has some spiciness and heaviness and improves a little as I slowly finish the small glasses.

Badness: Both of them just have very little badness. The Mackmyra tastes slightly too young (the freshly cut and slightly burnt dry wood, like the smell in a carpenter shop). The Glenturret on the other hand, a little bit chemical and too bitter.

Conclusions: The Glenturret tastes older, and ridiculous as it may be – it tastes more scottish. The younger Mackmyra is a bit different, but it clearly tastes like a single malt.

Winner: no winner. You can serve me Glenturrent or Mackmyra – I will be equally satisfied.

2. Mackmyra Svensk Ek vs Clynelish 14 years old
Both Mackmyra Svensk Ek and Clynelish 14 years old are about 46% strong. The Clynelish I got from a package of three Classic Malts.

Appearance: Very similar, Mackmyra slightly paler.

Aroma: Clynelish clean and elegant. Mackmyra more fruit and vanilla (it’s probably oak). Clynelish a bit heavier and sweeter.

Taste: Clynelish quite thin, a little bitter (probably needs water). Mackmyra some oak, some sourness and bitterness (also in need of water). At this stage, both smell better than they taste so I add water to both.

Clynelish got a nice bourbon flavour with some water. The Swedish oak is clearly there in the Mackmyra – a slightly unusual whisky flavour. While the Clynelish taste is quite well defined, the Mackmyra is more everywhere in the mouth, and a little bit burnt in the finish. I add more water to both.

Well, I have thought about it since the first taste, there is clearly pear in Mackmyra. I think the water did its job and the Mackmyra is now softer, but it also tastes a little diluted. The Clynelish is more oily, sweeter and has more flavour – not bad, but not particularly interesting.

Badness: If you like whisky, there is nothing bad about the Clynelish, but it is not remarkable either. The Mackmyra needs water (and at 46% that is ok) for me to appreciate it, but it quickly tastes a little diluted – to me this is a sign that there simply is not enough flavour in it, and for a young whisky that is not so strange.

Conclusions: The Clynelish is very solid: perfected at 14 years in Bourbon cast to the point that it is not very interesting at all. My impression is that it tastes like a perfect blend, but with little character (Clynelish is not Brora, after all). The Mackmyra, with enough water, tastes fine. But it requires a friendly attitude to come out good.

Winner: The Clynelish wins, and I believe it does for two reasons. First, whisky is Scottish business and while the Clynelish is very solid, the Mackmyra is a little too different, too fruity and too young. Second, the Mackmyra with too little water is not a premium experience. That said, the Mackmyra is more interesting than the rather boring Clynelish, to me. And with enough water, the Mackmyra is a tasty drink.

3. Mackmyra Svensk Rök vs Bunnahabhain 8 years old
I decided to try the Mackmyra Svensk Rök (Swedish Smoke) against a Bunnahabhain from Gordon MacPhails, 8 years old. It is labeled “heavily heated”, and my hope was that the level of peatiness/smokiness would be quite the same for the two contestants.

Appearance: Mackmyra is slightly paler, perhaps, they look very similar.

Aroma: Bunnahabhain has a classic Islay smell (which I don’t usually expect in a Bunnahabhain). It is a powerful yet soft smell, not so dominated by peat and smoke after all. Unfortunately, I should have smelled the Mackmyra first, because now I realise that the Bunnahabhain is too powerful and the character of Mackmyra appears to be very subtle. However, after waiting a little while the Mackmyra has a clear and pleasant smell, with not so little smoke (it is not peat) after all. The Mackmyra more resembles (as I remember them) the earlier two Mackmyra, than it resembles Bunnahabhain.

Taste: Mackmyra first now: at 46% some smoke, some fruitiness and some sourness, but it clearly needs water. With little water a nice yet quite subtle smokiness is revealed and behind it the dry flavour of young wood. But it still needs more water. What happens here (with more water) is that the (still subtle) smokiness hides the fruity and nice character of the two previous Mackmyra.

The Bunnahabhain (which arguably smells closet) has a long, complex and soft taste (at its original 43%). It is clearly not as heavy as its more famous Islay neighbours, but compared to Mackmyra it is very rich and oily.

Switching back to Mackmyra is surprisingly pleasant (it tastes nicer after I had the Bunnahabhain, not worse as I expected after something heavier). But the Mackmyra, after Bunnahabhain, is mostly fruity and fresh, not smoky at all.

Badness: Mackmyra, again, requires a certain amount of water get right. It is a rather thin experience, especially with this competition. Bunnahabhain, I would not call it elegant, is rather wild. It is not that it is very powerful or peaty, it is just a little bit everywhere, and now and then, in some places in my nose and mouth, not very refined or elegant. It is a young little Islay brother.

Conclusions: I knew it was going to be tricky to pick a contestant to Mackmyra Svensk Rök. I did not find a Highland Park in my stash, that could have been better. I have a Jura Superstition: it would perhaps have been less peaty and for that reason a better opponent to Mackmyra. But I really like that Jura and I did not want to pit Mackmyra against a personal favourite.

Winner: Bunnahabhain beats Mackmyra, and usually, head to head, a much heavier whisky beats the lighter one. But Bunnahabhain did not come out as fantastic this evening. But there was just too little to explore in the Mackmyra.

Conclusions
My impression is that while the Clynelish is much better than the Glenturrent, the Svensk Ek is not much better than the Brukswhisky. And while Bunnahabhain is not necessarily much better than Clynelish, the Mackmyra Svensk Rök fails to improve much compared to the other two. At least, this is my impression when testing them head to head on different occasions.

In fact Svensk rök was the most disappointing experience (but perhaps the competition was completely unfair).

I think it is unreasonable to expect of a little young Swedish distillery that they produce world class whisky immediately, especially in a business where long storage time is a significant factor in product quality. Mackmyra claims they use small casks to speed up the process, but perhaps this shortcut is not perfect. Mackmyra needs water, but it quickly tastes diluted – there is not so much flavour to reveal. I think it needs more time (and perhaps it needs better casks, I don’t know about that).

I appreciate Mackmyra for being different (sometimes it reminds me of something coming from south of Sweden rather than from west of Sweden). I don’t find Mackmyra unpleasant (disgusting, chemical, bad, as I sometimes do with whisky). But if it is going to beat Scottish whiskies head to head, it needs weaker opponents or more time to mature.

Update: Mackmyra Svensk Rök vs Teachers
Teachers is a respectable Scottish blend with some smoky character so I decided to test it against Mackmyra Svensk Rök. Those who mostly appreciate whisky for being sweet might prefer Teachers (sweetness is something you won’t find in the Mackmyra). I don’t like my whisky sweet, and, side by side, I prefer the Mackmyra (with some water in it, please) to Teachers. As I slowly finish the glasses, I more and more prefer the Mackmyra – compared to Teachers it appears to be a very decent whisky.

This could seem like a ridiculous comparison; a standard blend vs a whisky that is far more expensive than a cheap single malt. I however find it meaningful to establish the relative quality of Mackmyra. And since it is better than a respectable blend, it has quality.

Update: Mackmyra Svensk Ek vs Glenfiddish 12
Glenfiddish 12 is another standard Scottish single malt. I compared it to the Mackmyra Svensk Ek. I think the quality is quite similar. The Glenfiddish is softer and sweeter (aged partly on Sherry casks) and the Mackmyra has more character. I, with a taste for more dry whisky, prefer the Mackmyra.

Upgrading ownCloud 7.0.4 to 8.1.1

I am running ownCloud on a Debian machine with Mysql and I have been a little behind with upgrading it. Today I upgraded from 7.0.4 to 8.1.1 following the standard instructions. A few more notes on my environment:

  1. I don’t use encryption for files
  2. I don’t use https/ssl (I am behind an openvpn server)
  3. I did the upgrade in one step (7.0.4 to 8.1.1, not via intermediate versions)

It basically went fine. When I ran:

$ sudo -u www-data php occ upgrade
ownCloud or one of the apps require upgrade - only a limited number of commands are available
Checked database schema update
Checked database schema update for apps
Updated database
Disabled 3rd-party app: calendar
Disabled 3rd-party app: contacts
Disabled 3rd-party app: documents
Updating  ...
Updated  to 0.7
Updating  ...
Updated  to 0.6
Updating  ...
Updated  to 1.1.10
Updating  ...
Updated  to 2.0.1
Updating  ...
Updated  to 0.6.2
Updating  ...
Updated  to 0.6.3
Updating  ...
Updated  to 0.6.0
Update 3rd-party app: calendar
Exception: App does not provide an info.xml file
Update failed
Maintenance mode is kept active

I am a little surprised, because I don’t remember calendar, contacts and documents being 3rd party apps before (?). Anyway, the server did not come up, so I ran the command again:

$ sudo -u www-data php occ upgrade
ownCloud or one of the apps require upgrade - only a limited number of commands are available
Turned on maintenance mode
Checked database schema update
Checked database schema update for apps
Updated database
Update successful
Turned off maintenance mode

Now it worked. Logged in, no traces of the three 3rd-party apps. Whatever, I use ownCloud for the files.

Performance after upgrade
ownCloud is not particularly fast. I did a very quick and unscientific performance check: before upgrading I uploaded a folder (17 files, 4.1 MB) to ownCloud: it took 30 seconds (for the desktop client to complete syncing). After the upgrade the same folder took 19 seconds to sync. This proves nothing of course, but at least it seems promising.

Ubuntu Client
My Ubuntu client used ownCloud vs 1.7. It does not work with 8.1.1. Installing ownCloud client from external repository worked fine. Same thing for Debian, obviously.

Rotation speed meter for model engine

I have a model Stirling engine (Böhm Stirling Technik HB13) and a steam engine (Wilesco D10), and I have been curious about how fast they run (rpm). After some not so successful attempts, I managed to build a solution that works very well.

The Sensor
The idea is to use an IR-diode and an IR-transistor (it basically lets electric current through when being exposed to IR light), and mount these on opposite sides of some part of the engine that moves. First a device especially built for the Stirling engine:
rotmeter-stirling1

Here is a picture of a sensor designed to work with the steam engine:
rotmeter-steam

It works just fine with the Stirling engine too:
rotmeter-stirling2

The electronic part is quite simple. I am going to power the sensor and pick up the signal with an Arduino so I design for 5V:

  • The Diode is connected in series with a 330 Ohm resistor. Anode (long) to 5V and cathode (short) to ground.
  • The IR Transistor has two connectors: Collector and Emitter. I connected Emitter (long) to ground. The Collector (short) was connected to 5V via a 10kOhm resistor.

Now the collector can be used as an IR detector: LOW (close to 0V) means there is an IR source present and HIGH (close to 5V) means there is no IR source.


5V --------+------------------+----------------+
           |                  |                |
        330 Ohm            10k Ohm          330 Ohm
           |                  |                |
           |                  |           Indicator LED
           |                  |                |
           |                  +----------------+---- measure here
           |                  |
      IR Diode   ~IR~>   IR Transistor
           |                  |
Ground ----+------------------+

The Indicator LED (and its 330 Ohm resistor) is optional. It will be ON when the IR light from the Diode reaches the IR transistor. It will be OFF when IR beam is blocked.

The Arduino
I decided to use an Arduino to pick up the signal and display the speed. I bought the official Arduino Start kit which contained everything I needed (except the IR Diode and IR Transistor):
rotmeter-uno2
There is no indicator LED in this design. What you see in the picture from the Starter kit:

  • Arduino UNO
  • breadboard
  • 16×2 Character Display
  • 1 potentiometer (to adjust contrast of display)
  • 2 buttons (for a little menu)
  • cables (some are not from the starter kit)
  • resistors
  • a little wooden board to mount the UNO and breadboard on

When everything worked I wanted to make my device more permanent and make my prototyping Arduino UNO available for other projects. I bought an Arduino Nano clone and other things from DealExtreme and put it all together in a more compact design:
rotmeter-nano
This design has two input ports for the two different sensors I built (each having their own indicator LED).

Signal Noise
Based on earlier experiences (see Failed designs below) my primary concern was signal noise. Basically (the sensor is HIGH when IR beam is blocked):


Ideal signal

HIGH:                    -------                   ------

LOW:  -------------------       -------------------      ------------------


My fear

HIGH:                   - -- --- -                 - -    -

LOW:  ------------------ -  -   - ----------------- - ---- -----------------

For this reason I made a configurable max-rpm-value (like 2000 rpm), which in turn could be turned into a silent/numb period during which I ignore any signal:

 =WAITING============== ! =NUMB===== =WAITING===== ! =NUMB===== =WAITING====  

It turned out however, that for this (IR Diode/Transistor) design, the signal was very close to perfect.

Analog, Digital and Interrupt
The analog reality is of course that my input signal was not going to be perfectly 0 or 5 volts. I was not really sure that Digital or Interrupt input would work fine. Analog (10 bit) input would be in the range [0,1023].

Actual ranges were not completely consistent but could be [16,680] or [180,890] or [200,825]. In the last case 825 was with a paper between the Diode/Transistor. Hiding the Transistor inside a box raised the value from 825 to 1015.

Background IR radiation and other factors clearly play in here, but not enough to cause any problems. It turns out in practice both Digital and Interrupt work just fine.

I anyway built my device and program in such a way that I could choose between Digital, Analog and Interrupt input.

Sensor Performance
A rotation speed of 1200 rpm equals 20Hz and 50ms per revolution. If the HIGH is short (5ms) compared to the LOW (45ms) a sampling interval less than 5ms is required, to not fail to detect a revolution (unless I rely on interrupts).

The Steam engine flywheel has five spokes, each being much smaller than the space between them (see picture above). To measure five beats per revolution would require at approximately 50 samples per revolution, and at 1800 rpm this equals 1500Hz or 600 microseconds (us) per sample.

The transistor itself is fast. Arduino indicates that the speed of AnalogRead is 100us, and digital read is supposed to be faster (about 30us faster, it seems). The main loop must (worst case) complete in ~500us:

loop() {
  readInput();
  processInput();
  outputResultToLcd();
}

At 16Mhz and an 8bit CPU, this does not allow for a lot of wasteful input analysis.

Display Performance
The worst performance problem turned out to be the 16×2 character display. Initially I updated it a few times per second with code like:

LCD.clear();
LCD.setCursor(0,0);
LCD.print("rpm=");
LCD.print(rpmval);
LCD.setCursor(0,1); // first character, second row
LCD.print("something else");

This typically takes 12ms. Even with the spoke-less Stirling engine this design broke down at 1500rpm.

I ended up having two character arrays (16 bytes each). Whenever I wanted to update the output I just wrote to these two arrays. In each loop() iteration, I then called LCD.write() (at most) once in the end (writing just one character per iteration). This method still updates the display much faster than it is capable to turn the pixels on/off, but avoiding the LCD.clear() improves the visual impression. This is clearly not Arduino Best Practice.

There are I2C-compatible 16×2 displays: it would be interesting to know if they are faster or slower than the display I got with the Starter kit.

I am also thinking about sending output via serial. This will clearly require some thinking at 9600bps (unless the Arduino has some serial buffer working in the background).

Optimization
Optimizing for the Arduino is a bit different from optimization on Linux or Windows: since there is no context switching and no other processes, wasting CPU cycles does not matter: minimizing the maximum loop() time is everything, even if it means a lot of unnecessary operations are performed during the quicker loops.

In the end my loops (analog input) took from ~30us to ~600us. A bit simplified, the loop:

  1. Reads sensor input (~100us, but not when “numb”)
  2. Reads button 1 input
  3. Reads button 2 input
  4. Analyzes sensor inputer
  5. Analyzes button input do decide how to respond to user action
  6. Changes state
  7. Reformats LCD output based on input and state
  8. Outputs LCD output (~300us)
  9. Updates the internal LED (#13)

My overall optimization strategy was to perform as few of these steps as possible every iteration, to minimize the maximum delay between reading sensor input.

Apart from that, performance is of course about datastructures and algorithms (as usual). For the Arduino, also the datatype matters: 32 bit division is not for free on an 8 bit micro processor (and finding time intervals, average speeds and things like that requires division). No FPU anywhere.

I first wrote my program in C style rather than C style, as in:

C style:    timer_update(&timer);
C++ style:  timer.update();

I later rewrote my program creating proper C++ classes. This had essentially no cost whatsoever, neither on memory usage nor on performance, but I have to agree that the C++ got cleaner and easier to read.

Source Code
I uploaded the source code to DropBox. I would of course have wanted to clean it up, document and comment it better before publishing it. But this project has taken some time already, and I doubt it will happen, so I publish it as is instead. Feel free to drop comments or questions below.

Power consumption
My device seems to use about 45mA when powered with a 9V battery. With the sensor plugged out it was down to 25mA.

45mA at 9V gives 400mW and 200 Ohms.

Rotation Speeds
The Stirling engine starts slowly at about 300rpm. It runs for about 30 minutes, and can reach maximum speeds of just over 2000rpm (that typically happens after 20-25 minutes). A little extra heating (just burning a match in the flame) makes a big difference. I don’t know why it runs faster and faster with time and if this is normal.

The steam engine quickly reaches 2000rpm or a bit more, and then slows down during the 10 minutes it typically runs.

Both engines could probably be pushed a bit more, but I don’t want a catastrophic failure, especially not with the steam engine.

Failed designs
I have failed to measure rotation speed of my Stirling engine before.

Mobile applications blinking quickly can be used to determine rotation speed (with the right setting, a rotating wheel will look like it is still). I was not satisfied with this.

I recorded the sound (noise) of the Stirling engine and spent a few days writing a program trying to analyze the signal do determine the frequency of the engine. I should have:

  1. used a much better microphone to reduce noise
  2. used FFT or something like that, instead of trying to invent some heuristics like I did

In the end, it kind of gave me the speed, or I could interpret the speed from the output I got. One uncertainty here is that it is not entirely clear if the engine makes one, two (or more) noise-bursts per revolution.

I built an electrical sensor, basically connecting the engine to ground, and every revolution letting a moving part of the engine touch a piece of metal, connected to an Arduino input. This was not entirely unsuccessful, but the design had its disadvantages:

  1. Noise, and sometimes no signal at all
  2. Interferes with engine mechanically
  3. At high speeds, sensor has to be moving (back) fast enough

I did not try to use a photoresistor because they are clearly too slow for my purposes.

Buying cheap Arduino clones

I got curious about Arduino a little while ago and bought the official Arduino Starter Kit. I can really recommend it! It is very nicely put together and the project book really helps to get you started in no time. Even if you dont care about the projects themselves, they are a great way to learn how to use the Arduino.

After a few projects from the Starter Kit I started building my own project, which took me to a point where I felt I wanted at least one more Arduino.

I also felt that perhaps the UNO is not the right model for a more permanent build. After not so little research I decided the Arduino Nano is quite perfect.

Well, buying an Arduino (UNO, Nano, whatever) is not the easiest thing:

  • The arduino.cc vs arduino.org conflict causes some confusion, and has caused some limited availability of original (Italian) boards, it seems.
  • Some models are depricated
  • There are kind of official boards with funny names (Adafruit, RedBoard)
  • There are even more inofficial boards
  • The ATMega328 is not a very powerful chip, and original UNO and Nano are quite pricey

This made me consider a cheap Chinese copy. Those are not illegal in any way, they just come with the usual issues:

  • Delivery time
  • Build quality
  • No (or questionable) contribution back to community
  • Compability
  • Control, ethical, environmental and other aspects

I decided to give it a try and ordered:

I belive those mini-breadboards together with the Nano make a perfect Arduino. The clones I received were just fine. When you look at them and touch them, of course they don’t have the same quality as the original beautiful Italian-made Arduino I got with the Starter Kit. Especially the headers seem to be of lower quality than the orginal (not to talk about the print). Most of the clones use a cheaper and less capable USB-controller (CH340G instead of ATMEGA16U2). For Linux this makes no difference whatsoever, but for Windows you probably need to install drivers.

I think it can be good to have a few cheap clones to build into stuff or play with. At the same time, the official Starter Kit is great and the official board is good as reference so you know the clones do what they should. I would not start with only a cheap clone and no start kit.

Simple blinking LED circuit

For reasons I will not go into here, I wanted to build a simple electrical circuit that:

  • Has a blinking LED
  • Is driven by 5V
  • Does not require any IC or Microcontrollers

I found a few options, but this one seemed best.


(image linked from other site)

Well, it was not 5V, and I did not have the right components so I replaced:

  1. 470 Ohm resistors with 220 Ohm
  2. 100k Ohm resistors with 22k Ohm
  3. 10uF capacitors with 100uF
  4. The 2N3904 NPN transistors with BC547B

blinkled
(Picture with 1uF and 10k Ohm/100k Ohm)

That worked fine! But I wanted faster blinking speeds and I wanted to try different blinking speeds. I am quite sure the transistors and the 220 Ohm (470 Ohm) resistors do not significantly affect blinking speed. But I tried different combinations of the capacitors and high resistors.

(Hz)      100uF   22uF    1uF
1000 Ohm  10      47      
2200 Ohm  4.1     19      480
5100 Ohm  1.5     7.0     153
10k Ohm   0.87    4.0     88
100k Ohm                  10

It seems that replacing the capacitors give a very near-linear change in frequency (and my capacitors are quite accurate). However, changing the resistors is not giving a completely linear change in frequency (or the resistors are of lower quality with more error tolerance). Nevertheless, with the table above, I think it should be quite possible to generate quite the frequency you need. To save energy, you should use small capacitors and high resistors.

Mixing resistors
Mixing resistors gives what it should. I mixed 10k with 100k and got a frequency of 15Hz (basically, half of them are 100k-slow, and the other ones are much faster). The “side” with the “higher” resistor is the side that is off most of the time.

Measuring method
I built an Arduino tool that measures IR blink speed (to measure for example rotation speed). I built my circuit as a test circuit. Clearly, it would have been easier to use a second Arduino with the simple Blink program than to build a circuit like this.