HifiBerry Pin Usage

Posted by in Hardware, Tutorial

The past few days I’ve been struggling with the unknown of how many pins from the GPIO interface are actually used by the HifiBerry sound card (or my clone). Fortunately, I’ve found the used pins: As you can see, there are quite a few pins left for other things, which means I won’t have to use an arduino to control things anymore :) HTH, A little experiment: If you find this post and ad below useful, please check the ad out :-)

Applications for EPSO/AD/331/16 – Second Phase

Posted by in EPSO

The number of applications are: No. Section Places Candidates Ratio 1 Data Analysis and IT Service 30 88 ~3x 2 Digital Workplace, Office Automation and Mobile Computing 25 75 3x 3 Enterprise Resource Planning (ERP) 14 41 ~3x 4 ICT Security 49 147 3x 5 IT Infrastructure 38 112 ~3x 6 IT Portfolio/Programme Management and Enterprise Architecture 24 72 3x Ratio: How many people compete for one place to the reserve list HTH, A little experiment: If you find this post and ad below useful, please check the ad out…read more

Change the File Extension in Typescript – Using Path

Posted by in Software, Tutorial

Following from my previous post, I’ve updated the function to use only the path module. Now, the code looks like:

I’ve updated the workflow presented previously to: isolate the dir, ext and root components of the path replace the ext with the new extension return the normalized version of the composed path Now, our function accepts complete paths, not only filenames. Note: The path.normalize() function does NOT calculate the absolute path. It only changes the path separators. A little experiment: If you find this post and ad below useful,…read more

My Raspberry Pi 3 Config.txt for Volumio

Posted by in Hardware

My stable configuration file for Volumio looks like this now: Basics:

Sound card:

WaveShare screen:


The only more convoluted configuration is the networking, which allows me to connect to my wireless network. Once the setup will be stabilised, I will be able to connect it via ethernet, making the whole last section obsolete. And the wpa_supplicant.conf file looks like:

HTH, A little experiment: If you find this post and ad below useful, please check the ad out :-)

Configure Volumio with PiFi DIGI DAC+

Posted by in Hardware, Tutorial

The other day I’ve got a Chinese clone of HiFiBerry, a PiFi DAC+ v2.0: Here are the steps to configure it with Volumio. First, you need to install Volumio 2 (2.129 at the moment of writing). You need to configure it to e.g. connect to the network, index songs. Note: Back up your config.txt (and wpa_supplicant.conf) Once you’ve got it up and running, select the Playback menu: … and select the Hifibetty DAC Plus for the Output Device and *DAC Model. Make sure you enable I2S DAC: For the options,…read more

Change the File Extension in Typescript (or Javascript)

Posted by in Software, Tutorial

TL;DR: You need to get the root name (without the extension) and append the new extension. Then, it only depends on how tolerant you are. The other day I figured I needed a function to change the file extension (from a .jpg to a .nfo). Since I haven’t found a ready made function to do this, I decided to create my own (it’s also a good exercise for my neurons…). The function ended up having the following steps: Prerequisite: the function input parameters are the file name (not the full…read more

Consistent Testing

Posted by in Software, Tutorial

TL;DR: Delete the settings file before starting the test. Today I implemented a simple wrapper over the electron-settings functionality to gibe me access to a set of properties via get/set methods. My scenario is simple: I have a property named path.backup and I want to be able to get, set andtest it’s set`. The code is:

Now, my testing code would be something along the lines:

And I was surprised to find the test failed in the second part (can detect it has source paths). Consistently. Then, I…read more

Delete Dependent Entries of a Table in Oracle PL/SQL

Posted by in Software, Tutorial

The other day I had a task to clean up a database which was populated with a list of records. Unfortunately, my main table is linked to a host of other tables via foreign key dependencies and, to make things worse, no CASCADE constraints are specified. The process I want to is as follows: Scan main table First, we need to find the records in the main table we want removed. This is a simple SELECT statement:

In my case, the statement is:

(the 80, and 122 are…read more

Poor Man’s Mocks in TypeScript

Posted by in Software, Tutorial

Today I went against my better judgement of usign a mock framework and decided to create my own mocks to allow coverage testing for an IPC-calling code. My reference code I wanted to test is:

The code would use an angular service named PathService which, for the purpose of this test only has a method named getSourcePaths(), which returns a Promise. Now, I needed to emulate that method, and the code I wrote to do that is:

It basically defines an object containing a method getSourcePaths() which returns…read more