• Quick-fix: MATLAB FMU import error

    MATLAB 2017b introduced support for the Functional Mock-up Standard by providing FMU-import blocks in Simulink. This open standard enables mixing of simulation models created with different tools, like prototype controllers before coding them. This is an extremely powerful feature that I will write more about in soon. This memo, however, is about an error that occurred to me when importing an FMU in Simulink and how to fix it. 

    The error is something like:

    Error parsing FMU <fmu-name>. Caused by:
    Error in supplied FMU: Dynamic library file <lib-file> does not exist in FMU <fmu-name>.
    The FMU error dialog, shown by MATLAB
    Error parsing FMU ‘dq.fmu’. Caused by: – Error in supplied FMU: Dynamic library file (‘dq.dylib’) does not exist in FMU ‘dq.fmu’.
  • Fixing: Vagrant LXC error, mount.nfs: mount to NFS server failed: timed out, giving up

    Vagrant-LXC is a plugin that provides integration of Vagrant with LXC containers, a modern virtualisation technology native to Linux. To share files between the host and the container, NFS can be used. The Vagrant NFS plugin ensures that a NFS server runs at the host that exports predefined locations of the host’s filesystem. Sometimes, an error pops up when starting a Vagrant box, indicating that a timeout occurred and that starting the box failed.

    A typical error is as follows:

    mount.nfs: mount to NFS server ‘’ failed: timed out, giving up

    Which means that the connection is blocked, often due to the firewall. Another error might be something like:

    mount.nfs: access denied by server while mounting

    This practically means that the container is not allowed to reach the NFS server of the host, often due to AppArmor policy. I experienced this issue some time ago and discussed it in an issue at Github.

  • Symlinks cause &#8216;Not valid template file&#8217; in Magento

    Keeping Magento shops up to date is important to reduce their vulnerability. Sometimes, security updates introduce breaking changes. The recent Magento update, version, includes such a breaking change that can cause blank pages on the front-end and back-end. This is caused by the way in which Magento handles symlinks. 

    When blank pages occur, take a look at Magento’s system.log file. You might find entries like the following:

    2017-07-20T20:53:05+00:00 CRIT (2): Not valid template file:frontend/theme/default/template/page/2columns-right.phtml
    2017-07-20T20:55:48+00:00 CRIT (2): Not valid template file:adminhtml/default/default/template/mstcore/toolbar.phtml
    2017-07-20T20:55:48+00:00 CRIT (2): Not valid template file:adminhtml/default/default/template/magmodules/beslist/notifications.phtml
  • Import Remote Database Directly over SSH

    Developing, maintaining and debugging web-applications often involves copying a remote database to a local or another remote machine. This post lists a number of methods that I find useful. It acts as a reference for myself which I happily update and improve based on comments and experience. My favourite method:  stream the database dump directly to the target machine.

    I assume a MySQL or MariaDB database on a Unix or Mac OS machine but by adjusting the appropriate commands most of these methods apply to other databases as well.

  • Configuring MySQL with .my.cnf file

    Connecting to a MySQL server often involves providing hostnames, usernames and passwords. Use a .my.cnf configuration file to provide defaults that simplify working with a MySQL server. 

    Providing a default password reduces security. Take effort to make sure that the password cannot be read by other users on the system. If the server runs locally, use credentials that are only allowed to connect locally.

  • Using Key-based SSH Authentication

    If you use Git or remote terminal session a lot, consider using key-based authentication. Key-based authentication is generally considered more secure than password-based authentication. 

    In key-based authentication, two key-files are used. One is the public key and may be distributed to other parties that should be able to authenticate you and your information. The other is the private encryption key and should be kept secure.

  • Developing for AVR with JetBrains CLion on Mac OS

    Previously I used Atmel Studio 7 to do AVR development. This integrated development environment is unsurpassed in terms of ease of use and features for AVR development. However, it is Windows only. I grew tired of the hassle with virtual machines and dual boot setups as my working device is a Mac running Mac OS 10.12. I already used some JetBrains products for C/C++ and PHP development so I wanted to try to get the whole AVR toolchain working on Mac OS in combination with JetBrains CLion.

    To serve as a suitable alternative to Atmel Studio I need both compilation, uploading and debugging to integrate nicely with CLion. Furthermore, I wanted to be able to use the Atmel Software Framework to have access to an enormous resource of services, drivers and examples.

  • Pick Random Values Array Php

    PHP provides the array_rand( $arr, $num )  function which returns an integer or array containing the keys of the array.

    To obtain an array of values the following one-liner can be used:

    array_intersect_key( $arr, array_flip( array_rand( $arr, $num ) ) );

    This picks $num random keys from $arr (array_rand), flips keys with values (array_flip), intersects the picked keys with those of $arr (array_intersect_keys) and returns the corresponding elements of $arr.

    Getting random values from an array.
  • Laravel 5 Cron expression validation

    A Cron expression validator is created in Laravel 5.3. Laravel provides a versatile and extendable Validation class. Introducing new validations is done by registering a validation function with the extend method on the Validation facade. A Cron expression validator is created by utilising a cron-expression parser.

    The cron-expression parser used here is the fantastic cron-expression Composer package by Michael Dowling.

  • Restore, Clone or Backup your Homebrew Setup

    Homebrew is a popular package manager for MacOS. It provides easy access to thousands of programs and applications. It is developed and maintained by an open-source community on Github. Use Homebrew bundle to backup and restore your Homebrew configuration. 

    If you haven’t installed it yet, go take a look quick on or just install it by running the following command in the MacOS terminal.

    /usr/bin/ruby -e "$(curl -fsSL"

    The installation should succeed without problems. Installing some nice tools is also easy:

    brew install htop

    To install a better alternative to the standard process viewer top.

subscribe via RSS