params= new JRegistry(); $this->params->loadString($plugin->params, 'JSON'); $this->_cacheEnabled = $this->params->get('cache_enabled'); if ($this->_cacheEnabled === null) $this->_cacheEnabled == 1; $this->_autoflush = $this->params->get('autoFlush'); if ($this->_autoflush === null) $this->_autoflush = 1; $this->_autoflush3rdParty = $this->params->get('autoFlush-ThirdParty'); if ($this->_autoflush3rdParty === null) $this->_autoflush3rdParty = 1; $this->_autoflushClientSide = $this->params->get('autoFlush-ClientSide'); if ($this->_autoflushClientSide === null) $this->_autoflushClientSide = 0; } /** * Heartbeat cache checking function. Will also monitor $_GET for the jSGCache parameter * (pressing the purge cache button in admin) * * * @access public * @return null */ public function onAfterInitialise() { if (!$this->_cacheEnabled || $this->_isBlacklisted($this->_applicationPath)) { JResponse::setHeader('X-Cache-Enabled','False',true); return; } if ($this->_cacheEnabled) { JResponse::setHeader('X-Cache-Enabled','True',true); } //Init the application url $this->_applicationPath = str_replace(array('administrator/index.php','index.php'),'',str_replace($_SERVER['DOCUMENT_ROOT'],'',$_SERVER['SCRIPT_FILENAME'])); //Check for any admin action and proceed to flushMonitor and 3rd party plugins if ( isset($_POST['task']) || isset($_GET['task']) || isset($_GET['cart_virtuemart_product_id'])) { $this->_flushMonitor(); if ($this->_autoflush3rdParty) $this->_monitorThirdPartyPlugins(); } //Check if we have a logged in user and enable cache bypass cookie 'task' => string 'user.login' $user = JFactory::getUser(); if (!$user->guest || (isset($_POST['task']) && preg_match('/login/i', $_POST['task']))) { $_POST[JSession::getFormToken()] = 1; //Force the correct token, since the login box on the page is cached with the 1st visitors' token //Enable the cache bypass for logged users by setting a cache bypass cookie setcookie('jSGCacheBypass',1,time() + 6000,'/'); } if ($user->guest || (isset($_POST['task']) && $_POST['task'] == 'user.logout')) { //Remove the bypass cookie if not a logged user if (isset($_COOKIE['jSGCacheBypass'])) setcookie('jSGCacheBypass',0, time() - 3600,'/'); } // Handle purge button press when get has jSGCache=purge, but only in admin with a logged user if(isset($_GET['jSGCache']) && $_GET['jSGCache'] == 'purge' && JFactory::getApplication()->isAdmin() && !$user->guest ) $this->_purgeCache(true); } /** * Admin panel icon display * * @access public * @param string $context * @return array */ public function onGetIcons( $context ) { return array(array( 'link'=>'?jSGCache=purge', 'image'=>'header/icon-48-purge.png', 'text'=>JText::_('Purge jSGCache'), 'id'=>'jSGCache' )); } /** * Calls the cache server to purge the cache * * @access public * @param string|bool $message Message to be displayed if purge is successful. If this param is false no output would be done * @return null */ private function _purgeCache( $message = true ) { $purgeRequest = $this->_applicationPath . '(.*)'; // Check if caching server is varnish or nginx. $sgcache_ip = '/etc/sgcache_ip'; $hostname = $_SERVER['SERVER_ADDR']; $purge_method = "PURGE"; if (file_exists($sgcache_ip)) { $hostname = trim( file_get_contents( $sgcache_ip, true ) ); $purge_method = "BAN"; } $cacheServerSocket = fsockopen($hostname, 80, $errno, $errstr, 2); if(!$cacheServerSocket) { JError::raise(E_ERROR,500,JText::_('Connection to cache server failed!')); JError::raise(E_ERROR,500,JText::_($errstr ($errno))); return; } $request = "$purge_method {$purgeRequest} HTTP/1.0\r\nHost: {$_SERVER['SERVER_NAME']}\r\nConnection: Close\r\n\r\n"; if (preg_match('/^www\./',$_SERVER['SERVER_NAME'])) { $domain_no_www = preg_replace('/^www\./', '', $_SERVER['SERVER_NAME']); $request2 = "$purge_method {$purgeRequest} HTTP/1.0\r\nHost: {$domain_no_www}\r\nConnection: Close\r\n\r\n"; } else $request2 = "$purge_method {$purgeRequest} HTTP/1.0\r\nHost: www.{$_SERVER['SERVER_NAME']}\r\nConnection: Close\r\n\r\n"; fwrite($cacheServerSocket, $request); $response = fgets($cacheServerSocket); fclose($cacheServerSocket); $cacheServerSocket = fsockopen($hostname, 80, $errno, $errstr, 2); fwrite($cacheServerSocket, $request2); fclose($cacheServerSocket); if($message !== false) { if(preg_match('/200/',$response)) { if ($message === true) JFactory::getApplication()->enqueueMessage(JText::_('SG Cache Successfully Purged!')); else JFactory::getApplication()->enqueueMessage(JText::_( $message )); } else { JError::raise(E_NOTICE,501, JText::_('SG Cache: Purge was not successful!')); JError::raise(E_NOTICE,501, jText::_('Error: ' . $response)); } } } /** * Check if url is in caching blacklist * * @param string $applicationPath * * @return bool */ private function _isBlacklisted($applicationPath) { $blacklistArray = explode("\n",$this->params->get('blacklist')); $blacklistRegexArray = array(); $indexIsBlacklisted = false; foreach($blacklistArray as $key=>$row) { $row = trim($row); if ($row != '/' && $quoted = preg_quote($row,'/')) $blacklistRegexArray[$key] = $quoted; if ($row == '/') $indexIsBlacklisted = true; } if ($indexIsBlacklisted && $_SERVER['REQUEST_URI'] == $applicationPath) return true; if (empty($blacklistRegexArray)) return false; $blacklistRegex = '/('.implode('|',$blacklistRegexArray) . ')/i'; return preg_match($blacklistRegex, $_SERVER['REQUEST_URI']); } /** * 3rd party plugin monitor * * @access private * @return null */ private function _monitorThirdPartyPlugins() { // Kunena & K2 if ($this->params->get('autoFlush-ThirdParty') == 1 && isset($_POST['option']) && ($_POST['option']=='com_k2' || $_POST['option' ]== 'com_kunena')) { $this->_purgeCache(false); } // VirtueMart if ( (isset($_POST['option']) && $_POST['option'] == 'com_virtuemart') || ( isset($_GET['option']) && $_GET['option'] == 'com_virtuemart' ) || isset($_GET['cart_virtuemart_product_id']) ) { if($this->params->get('autoFlush-ThirdParty') == 1) $this->_purgeCache(false); } } /** * Action monitor * * @access private * @return null */ private function _flushMonitor() { $user = JFactory::getUser(); if ((!JFactory::getApplication()->isAdmin() && !$this->_autoflushClientSide) || $user->guest) return; $autoflush = $this->params->get('autoFlush'); if ($autoflush === null) $autoflush = 1; if (isset($_POST['task']) && $_POST['task'] && !in_array($_POST['task'],self::$_ignoreTasks) && $autoflush == 1) $this->_purgeCache(false); } } From the eiderdown harvesting
banner1 banner10 banner11 banner12 banner13 banner14 banner15 banner16 banner17 banner18 banner19 banner2 banner20 banner21 banner22 banner3 banner4 banner5 banner6 banner7 banner8 banner9

Contact us

How many legs does a horse have?*


Follow us on facebook

Portfolio samples

Contact information
This email address is being protected from spambots. You need JavaScript enabled to view it.

mobile: 354-8453832

Finally I found some time to post these pictures taken when we were harvesting the eiderdown. 
I took them with a smartphone and in a hurry so the quality is maby not perfect, but you can well see some of the many impressions of the eidernesting area. Afterwards unfortunately I noticed that my finger was photographed with most of the photos, (well done Heiða.. ) but fortunately I could crop it of most pictures :)
Besides the finger you can for example see the different nesting spots and locations. It is clear that the taste of the eider ducks differs and some of them put extra effort in decorating the nests. In some cases we found big colourful feathers, seashells and spiral shells lying around and inside the nests.
The harvesting went pretty well, except we got a little stalled because of a very annoying wind. The protecting on the other hand has been very difficult and we have had unusually many foxes and other predators, including a mink ! That we hope to never see near the colony again. 
Now the seashore is filled with young ducklings and we are carefully protecting the coastline from flying predators who otherwise would eat them, one after the other, directly out of the sea.
The season is not quite over, but fortunately calming down a little bit. It can be a straining time but latest in the fall we start to look forward again to the next season.

duntynsla1The first duck to be harvested from in the row of about 2000 others ..

duntynsla2Nest in a tire, before harvesting the down

duntynsla3Same nest as above

duntynsla4Same nest, the eggs have been taken out ..

duntynsla5.. and here the down has been collected ..

duntynsla6.. finally dry hay has been put insted and the eggs carefully put back.

duntynsla7Hatching time

duntynsla8We had to watch our steps/crawling, because the birds are not always easy to see and can also be very close togther

duntynsla9Nesting spot

duntynsla10From the outer part of the nesting area

duntynsla11The oldest birds are turning light grey

duntynsla12Hanný collecting eiderdown


In the middle of the nesting area


Nest close to a small flag


Hardworking down-harvester. This year we tried these yellow bags for the first time and are very fond of them. 
They do not make any sound like the black plastic bags that we have been using for the last years and therefore the birds are calmer.

duntynsla16Looking from the nesting area to the "watchtower"




The tires are very popular amongst the ducks






As stubborn as it gets ! nobody is giving in.
We have never seen this before.




Adjusting the down. 


This one was very calm :)


and beautiful.


The houses are also very popular


same as in the picture above


Baby eiderducks ! 

duntynsla29Brand new. They got to keep their mothers down :)

duntynsla30I had the impression that the ducks laid more eggs than the last years. They were often 3-4 but now the most had 5-7 eggs.

duntynsla31The houses are good shelter from flying predators and the weather.

duntynsla32About to hatch. There were cracks on all eggs in this nest.

duntynsla33In the nesting area








Beautiful eiderdown




.. after




the ducks are experts in blending in with their surroundings



This could almost be a tire commercial ;)




Some of the ducks had to be lifted of their nests. Unbelieveably tame for wild birds.


Here you can see the flags we made this spring. We got this very nice material from the wool factory in Hvammstangi, Kidka.

duntynsla51New flags :)

duntynsla52In the nesting part down by the ocean






Roger??! (in this case it was Tobbi)




Hanný in an unstoppable harvesting mode. She started at 04 in the morning !


We could hear the youngs chattering :) :)






Shelter made by Hanný


Here a goose has chosen to nest under one of Hanný's shelters




Part of the eiderdown. There we are blowing warm air under it to make it dry.








Above you can watch a very short video of a eiderduck adjusting her down. I recommend that you watch it in the best possible quality.