You are here


David Rowe: Outernet modem and LDPC using Octave

Planet Linux Australia - 1 hour 37 min ago

I’ve recently started a project to develop a L-band satellite modem with the good people at Outernet. The application is one way broadcast data into the developing world. The “earth station”, or user terminal hardware, is an Outernet LNB and purpose-built patch antenna connected to low cost USB SDR dongle receiver. The modem will use QPSK, a LDPC code, and deliver payload data at around 2400 bit/s in a 5kHz RF bandwidth. with the modem and LDPC codec running in software on a small Linux machine.

Here is the prototype Outernet L-band antenna:

These days I’m choosy about accepting contract work, as I am very focused on my HF/VHF Digital Voice work. I’m not interested in closed source jobs just to earn money, and/or build a closed product for commercial reasons alone. There needs to be a social bottom line. However, like me, Outernet are focused on “improving the world a little bit”, and they agreed to LGPL the code. So I’m in!

As well as satellite communication, this modem will be useful for terrestrial data. If you have the MIPs, it will scale to different bit rates. As usual, I will be producing Octave simulations and a real-time gcc-compilable C version of the modem.

CML LDPC and Octave

As a first step I’ve been bringing back to life some QPSK modem and LDPC Octave simulations that I developed as prototypes for HF FreeDV. They use the Coded Modulation Library (CML). These simulations were based on Octave code sent to me by Bill, VK5DSP, who helped me work out how to use the CML library.

These simulations will be useful for anyone who wants to try LPDC in Octave. I have documented how to install and use the CML library in ldpc.m, and written ldpcut.m to demonstrate how to use the CML LDPC functions.

Here is a plot of a 1152 bit codeword, rate 1/2 code, compared to uncoded PSK. Notice how the bit errors drop off a cliff at an Eb/No of 1.5dB? Pretty cool. It’s runs at about 20,000 bit/s on a single core of my modest laptop, without any attempt at optimisation.

Categories: thinktime

Andrew McDonnell: Distracting adventures in ZFS upgrades

Planet Linux Australia - Fri 04th Sep 2015 21:09

Last week I wanted to play around with some software packages for logging and charting of environmental measurements and events (specifically, two packages, openhab, and emoncms)

Wanting to save time (sweet irony!), rather than building up a VM and manually configuring the tools, I figured I’d use docker. Except that the workstation I wanted to use was running Debian Squeeze was still on kernel 3.2, which doesn’t support docker. Oh, and a ZfsOnLinux (ZoL) zraid for the root filesystem.

So the steps to get to docker involved upgrading the kernel, ZFS, and by the way, the nvidia drivers.

Mistake #1. I should have just built a Xubuntu 14.04 VM and run docker inside that!

Before upgrading the kernel from Debian backports, I decided to ensure ZfsOnLinux was updated. I (correctly, confirmed) anticipated the most problems with ZoL. Anyway, I knew that upgrading ZoL would be fraught with danger so I read all the documentation, and upgrade advice, and so on, and took all the recommended precautions.

But of course, after going through two cycles of apt-get and dpkg-reconfigure and  rebuilding the initramfs and so on, after rebooting, BAM! A variant of the dreaded “failed to mount the root filesystem” error. Reported close by was a missing kernel module error for something called zcommon.

After a bit of digging and breaking the virtual glass on an emergency boot partition I worked out that I had missed upgrading one of the packages required for ZoL. Why it was not an automatic dependency I don’t know, but after installing something called “libvnpair” the system booted further. And then stopped again.

This one would take rather a bit more work to track down. Semi-helpfully, the entire error message was:

Command: Message: Error: Manually import the root pool at the command prompt and then exit. Hint: Try: zpool import -R / -N ${ZFS_RPOOL}

At this point, the initramfs was dropping my system to a rescue shell, and via the above message advising me to import the ZFS pool containing the root filesystem. So I tried its helpful suggestion to execute the ‘zpool import’ command, which actually succeeded, and after some more fiddling manually mount various file systems proceeded to boot the system. However, this manual process only got me out of trouble once, and still needed to be resolved.

To get further I had to instrument the initramfs file scripts/zfs with a bunch of echo statements and rebuild the initramfs. (The script files bundled in when rebuilding initramfs on Debian are located under /usr/share/initramfs-tools/scripts) This let me reboot and work out where the zpool import was failing (or not even being called at all.)

As it turns out, zpool was not being called, at all, in a way that would work for my partitioning scheme. The logic in scripts/zfs runs a whole bunch of permutations trying to locate the pool, but if a variable called ROOT is empty it skips executing zpool as required. The solution, as it turns out, was to update my grub with ‘root=zfs:AUTO‘ – previously, my kernel did not require this kernel argument, but now, having upgraded ZoL, from 0.6.2 to 0.6.4, it did.

So, what caused this? There were a lot of year or so old threads discussing upgrade errors related to ZfsOnLinux but none of them quite matched my specific scenario.

One possibility is this:

* I run a separate boot filesystem from the usual /boot, containing a hand crafted grub, which can execute various tools such as Gparted, various minimal linux installs for rescue purposes, memcheckx86 and other tools.

* Whenever I upgrade the kernel on this system I need to copy over the vmlinux and initramfs files to this originating boot filesystem from /boot (which is never used by my grub)

* I wonder if ZoL  may have added the root=zfs:AUTO option to the Debian grub update facility, but I neglected to check for changes to the generated /boot/grub/grub.cfg and apply any changes to  my real grub.cfg. And wham!

However, I couldn’t find any references to zfs in /etc/grub.d, so this hypothesis may well be wrong. Via occams razor, perhaps its just that my setup on this particular workstation is more complex or unusual than most users of ZfsOnLinux. Anyway, onward and upwards.

I’ shortly to decide on which of OpenHAB or EmonCMS I’ll be using for my Hackaday Prize finals entry. Stay tuned!

Categories: thinktime

On doing your best

Seth Godin - Fri 04th Sep 2015 19:09
It's a pretty easy way to let ourselves (or someone else) off the hook. "Hey, you did your best." But it fails to explain the improvement in the 100-meter dash. Or the way we're able to somehow summon more energy...        Seth Godin
Categories: thinktime

First MOOC in Global Adolescent Health

Teaser:  The University of Melbourne is launching Global Adolescent Health, the first Massive Open Online Course addressing the health concerns and outcomes for adolescents. The University of Melbourne is launching Global Adolescent Health, the first Massive Open Online Course addressing the health concerns and outcomes for adolescents.  Today’s generation of adolescents is the largest in human history totalling 1.8 billion, more than 25% of the world’s population.

read more

Categories: thinktime

Rearranging our prejudices

Seth Godin - Thu 03rd Sep 2015 18:09
Change is the point. It's what we seek to do to the world around us. Change, actual change, is hard work. And changing our own minds is the most difficult place to start. It's also the only place to start....        Seth Godin
Categories: thinktime

Chris Smart: Cross-compiling a PowerPC64 LE kernel and hitting a GCC bug

Planet Linux Australia - Thu 03rd Sep 2015 18:09

Being new at OzLabs I’m dipping my toes into various projects and having a play with PowerPC and so I thought I’d cross-compile the Linux kernel on Fedora. Traditionally PowerPC has been big endian, however it also supports little endian so I wanted to build all the things.

Fedora uses a single cross toolchain that can build all four variants, whereas Debian/Ubuntu splits this out into two different toolchains (a BE and an LE one).

Install dependencies in Fedora:

$ sudo dnf install gcc make binutils-powerpc64-linux-gnu gcc-powerpc64-linux-gnu gcc-c++-powerpc64-linux-gnu bc ncurses-devel

Get the v4.2 kernel:

$ git clone --branch v4.2 --depth 1 && cd linux

Successful big endian build of the kernel, using the default config for pseries:

$ ARCH=powerpc CROSS_COMPILE=powerpc64-linux-gnu- make pseries_defconfig

$ ARCH=powerpc CROSS_COMPILE=powerpc64-linux-gnu- make -j$(nproc)

# clean after success

$ ARCH=powerpc CROSS_COMPILE=powerpc64-linux-gnu- make clean

$ ARCH=powerpc CROSS_COMPILE=powerpc64-linux-gnu- make mrproper

Building a little endian kernel however, resulted in a linker problem:

$ ARCH=powerpc CROSS_COMPILE=powerpc64-linux-gnu- make pseries_defconfig

$ ARCH=powerpc CROSS_COMPILE=powerpc64-linux-gnu- make menuconfig

# change architecture to little endian:

# Endianness selection (Build big endian kernel) --->

# (X) Build little endian kernel

$ ARCH=powerpc CROSS_COMPILE=powerpc64-linux-gnu- make V=1

Here was the result:

powerpc64-linux-gnu-gcc -mlittle-endian -mno-strict-align -m64 -Wp,-MD,arch/powerpc/kernel/vdso64/ -nostdinc -isystem /usr/lib/gcc/powerpc64-linux-gnu/5.2.1/include -I./arch/powerpc/include -Iarch/powerpc/include/generated/uapi -Iarch/powerpc/include/generated -Iinclude -I./arch/powerpc/include/uapi -Iarch/powerpc/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Iarch/powerpc -DHAVE_AS_ATHIGH=1 -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -msoft-float -pipe -Iarch/powerpc -mtraceback=no -mabi=elfv2 -mcmodel=medium -mno-pointers-to-nested-functions -mcpu=power7 -mno-altivec -mno-vsx -mno-spe -mspe=no -funit-at-a-time -fno-dwarf2-cfi-asm -mno-string -Wa,-maltivec -fno-delete-null-pointer-checks -O2 --param=allow-store-data-races=0 -Wframe-larger-than=2048 -fno-stack-protector -Wno-unused-but-set-variable -fomit-frame-pointer -fno-var-tracking-assignments -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -DCC_HAVE_ASM_GOTO -Werror -shared -fno-common -fno-builtin -nostdlib -Wl, -Wl,--hash-style=sysv -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(" -D"KBUILD_MODNAME=KBUILD_STR(" -Wl,-T arch/powerpc/kernel/vdso64/ arch/powerpc/kernel/vdso64/sigtramp.o arch/powerpc/kernel/vdso64/gettimeofday.o arch/powerpc/kernel/vdso64/datapage.o arch/powerpc/kernel/vdso64/cacheflush.o arch/powerpc/kernel/vdso64/note.o arch/powerpc/kernel/vdso64/getcpu.o -o arch/powerpc/kernel/vdso64/

/usr/bin/powerpc64-linux-gnu-ld: arch/powerpc/kernel/vdso64/sigtramp.o: file class ELFCLASS64 incompatible with ELFCLASS32

/usr/bin/powerpc64-linux-gnu-ld: final link failed: File in wrong format

collect2: error: ld returned 1 exit status

arch/powerpc/kernel/vdso64/Makefile:26: recipe for target 'arch/powerpc/kernel/vdso64/' failed

make[2]: *** [arch/powerpc/kernel/vdso64/] Error 1

scripts/ recipe for target 'arch/powerpc/kernel/vdso64' failed

make[1]: *** [arch/powerpc/kernel/vdso64] Error 2

Makefile:949: recipe for target 'arch/powerpc/kernel' failed

make: *** [arch/powerpc/kernel] Error 2

All those files were 64bit, however:

arch/powerpc/kernel/vdso64/cacheflush.o: ELF 64-bit LSB relocatable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), not stripped

arch/powerpc/kernel/vdso64/datapage.o: ELF 64-bit LSB relocatable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), not stripped

arch/powerpc/kernel/vdso64/getcpu.o: ELF 64-bit LSB relocatable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), not stripped

arch/powerpc/kernel/vdso64/gettimeofday.o: ELF 64-bit LSB relocatable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), not stripped

arch/powerpc/kernel/vdso64/note.o: ELF 64-bit LSB relocatable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), not stripped

arch/powerpc/kernel/vdso64/sigtramp.o: ELF 64-bit LSB relocatable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), not stripped

An strace of the failing powerpc64-linux-gnu-gcc command above showed that collect2 (and ld) were being called with an option setting the format to 32bit:

24904 execve("/usr/libexec/gcc/powerpc64-linux-gnu/5.2.1/collect2", ["/usr/libexec/gcc/powerpc64-linux"..., "-plugin", "/usr/libexec/gcc/powerpc64-linux"..., "-plugin-opt=/usr/libexec/gcc/pow"..., "-plugin-opt=-fresolution=/tmp/cc"..., "--sysroot=/usr/powerpc64-linux-g"..., "--build-id", "--no-add-needed", "--eh-frame-hdr", "--hash-style=gnu", "-shared", "--oformat", "elf32-powerpcle", "-m", "elf64lppc", "-o", ...], [/* 66 vars */]

Alan Modra tracked it down to some 32bit hard-coded entries in GCC sysv4.h and sysv4le.h and submitted a patch to the GCC mailing list (Red Hat bug).

I re-built the Fedora cross-gcc package with his patch and it solved the linker problem for me. Hurrah!

Categories: thinktime

An Hour with the Expert - Public Health

Location Facebook Australia See map: Google Maps Dr Melissa Russell 3 September 2015 - 5:15pm - 6:15pm Chat online to our Public Health Expert - Dr Melissa Russell! Ask about her current research and our Master of Public Health.

Chat online to our Public Health Expert - Dr Melissa Russell! Ask about her current research and our Master of Public Health.

Register Now

Categories: thinktime

Craige McWhirter: Craige McWhirter: Getting started with Xmonad

Planet Linux Australia - Wed 02nd Sep 2015 23:09

Over the years I've found window managers and desktop environments increasingly getting in my way. It was for this reason I ditched GNOME for Enlightenment 0.17 and again why I recently ditched Enlightenment 0.19 for Xmonad.

I'd tried Xmonad back in 2013 because Haskell but walked away after a fairly half-hearted look. I gave it a much more serious look this time and I'm happy to say that it's here to stay.

Xmonad is light, fast and behaves exactly how I expect it to.

Here's how I went about settling into Xmonad on Debian Jessie:

An Overview of My Xmonad Environment

The current environment I've settled on with Xmonad looks like this:


For the impatient, follow these steps below and you should be on your way:

$ sudo apt-get install xmonad libghc-xmonad-contrib-dev libghc-xmonad-dev suckless-tools trayer xscreensaver scrot $ wget myconfig and install it here $ wget this xinitrc to here $ wget -O /tmp/ $ mkdir -p ~/.fonts/OpenSans $ unzip -d ~/.fonts/OpenSans /tmp/ $ fc-cache -fv

Select "Default Session" when logging in via GDM, LightDM etc. Enjoy.

Get the Gear

For those of us that are a little more Zen about learning, let's install the packages:

$ sudo apt-get install xmonad libghc-xmonad-contrib-dev libghc-xmonad-dev suckless-tools trayer xscreensaver scrot Optional Font Installation:

The configuration I provide for xmobar uses the Open Sans font. You can change this to any font that you desire. However if you wish to use Open Sans, here is how you go about getting and installing it:

  1. Download the font:
$ mkdir ~/.fonts/OpenSans $ wget -O /tmp/
  1. Unzip the font:
$ cd ~/.fonts/OpenSans $ unzip /tmp/
  1. Rebuild the font cache information files:
$ fc-cache -fv

This will provide you with the all the tools that make up my Xmonad environment.

Configure Your Xsession

The very minimum that you'll need to do is edit / create ~/.xsession to have at least this line:


You can get more creative than this if you like, I recommend reading Getting started with xmonad and How can I use xmonad with a display manager?.

Configure Xmonad

Xmonad, unsurprisingly uses Haskell as it's configuration language. Here is the ~/.xmonad/xmonad.hs I used at the time of writing:

import XMonad import XMonad.Hooks.DynamicLog import XMonad.Hooks.ManageDocks import XMonad.Util.Run(spawnPipe) import XMonad.Util.EZConfig(additionalKeys) import System.IO main = do -- Spawn the xmobar status bar xmproc <- spawnPipe "/usr/bin/xmobar ~/.xmobarrc" xmonad $ defaultConfig -- Set your preferred mouse focus behaviour { focusFollowsMouse = False -- Set your default terminal , terminal = "terminology" -- Configure some default interactions between Xmonad and xmobar , manageHook = manageDocks <+> manageHook defaultConfig , layoutHook = avoidStruts $ layoutHook defaultConfig , logHook = dynamicLogWithPP $ xmobarPP { ppOutput = hPutStrLn xmproc , ppTitle = xmobarColor "green" "" . shorten 50 } , modMask = mod4Mask -- Rebind Mod to the Windows key -- Configure some additional keys } `additionalKeys` -- Lock the screen with Windows+Shift+z [ ((mod4Mask .|. shiftMask, xK_z), spawn "xscreensaver-command -lock") -- Capture the current window with control+PrintScreen , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s") -- Capture the current desktop with PrintScreen , ((0, xK_Print), spawn "scrot") -- Turn off the display port with Windows+d - Useful for undocking my laptop , ((mod4Mask, xK_d), spawn "/usr/bin/xrandr --output DP1 --off") -- Turn on the display port and set it as the primary display with Windows+Shift+d - tailor to your screen , ((mod4Mask .|. shiftMask, xK_d), spawn "/usr/bin/xrandr --output DP1 --primary ; /usr/bin/xrandr --output LVDS1 --mode 1280x800; /usr/bin/xrandr --output DP1 --mode 2560x1440; /usr/bin/xrandr --output DP1 --left-of LVDS1") -- Volume control keys, if needed. Yours may be different. , ((0 , 0x1008FF11), spawn "amixer set Master 2%-") , ((0 , 0x1008FF13), spawn "amixer set Master 2%+") , ((0 , 0x1008FF12), spawn "amixer set Master toggle") ] Configure xmobar

Xmobar uses ~/.xmobarrc as it's configuration file. I am using the Open Sans font. If you did not download and install that in the earlier steps, you may want to change the font = line to a font that you do have installed.

Here is my .xmobarrc file:

Config { font = "xft:Open Sans:size=10:antialias=true" , bgColor = "black" , fgColor = "grey" , position = TopW L 90 , lowerOnStart = True , commands = [ Run Cpu ["-L","3","-H","70","--normal","green","--high","red", "-t", "CPU <total>"] 10 , Run CpuFreq ["-t", "<cpu0>GHz <cpu1>GHz"] 10 , Run Memory ["-t", "MEM <usedratio>%"] 10 , Run Date "%a %b %_d %H:%M" "date" 10 , Run Battery ["-t","BAT <left>", "-h", "green", "60", "-l", "red", "10"] 10 , Run StdinReader , Run Weather "YSSY" ["-t"," <tempC>C","-L","10","-H","35","--normal","green","--high","red","--low","lightblue"] 36000 , Run DynNetwork [] 10 ] , sepChar = "%" , alignSep = "}{" , template = "%StdinReader% }{ %cpu% %cpufreq% | %memory% | %dynnetwork% | %battery% %YSSY% <fc=#ee9a00>%date%</fc>" }

I'd recommend looking up your nearest weather station here and replacing YSSY with that station's code. Unless you live in Sydney, Australia, in which case, you're set.

Configure Trayer

I use trayer as my system tray and I place it to the right of the screen in the gap left by my xmobar configuration:

trayer --edge top --align right --SetDockType true --SetPartialStrut true \ --expand true --width 10 --transparent true --alpha 0 --tint 0x000000 --height 19 &

I currently run this manually but it could easily be launched automatically elsewhere.

Login & Get Comfortable

There's a useful list of default key bindings and handy cheatsheet which you'll need to familiarise yourself with.

I've found xmonad to be fast and unobtrusive with default behaviour that continually surprises me by doing exactly what I expected.

Very happy convert here.

Categories: thinktime

No one knows

Seth Godin - Wed 02nd Sep 2015 19:09
No one knows the right answer, no one knows precisely what will happen, no one can produce the desired future, on demand. Some people are better at guessing than others, but not by much. The people who are supposed to...        Seth Godin
Categories: thinktime

BlueHackers: tears in rain | Wil Wheaton

Planet Linux Australia - Wed 02nd Sep 2015 10:09

I walked out of the loading dock, through a cloud of rotting garbage, and into the alleyway behind the theater. A curtain of rain fell between me and my destination, a little over a block away.

“Do you want to wait here, while I get you an umbrella?” Liz, the producer from Wizards of the Coast, asked me.

“No,” I said, stepping into the rain, extending my arms outward and turning my palms and face to the sky, “it’s been so long since I felt rain fall on my body, I’m not going to let this opportunity pass me by.”

I walked down the sidewalk, surrounded by other PAX attendees. Some were not bothered by the rain, while others held up programs and newspapers and other things to keep it away. A man walked his dog next to me. The dog was unperturbed by the weather. We got to the corner and waited for the light to change. The rain intensified and it was glorious.

“Are you sure this is okay?” She said.

“Oh yes, this is so much more than okay,” I answered, “this is perfect.”


I’ve been feeling pretty much the opposite of awesome for several weeks, now, and actually getting to sit down, face to face, in a semi-quiet few moments with real people who wanted to be there with me was … restorative, I guess is the best word. One player told me, “Thank you for everything you do. From Tabletop to Titansgrave — which is the best thing I’ve ever seen — to talking so openly about anxiety and depression.”


Read Wil’s entire post at

Categories: thinktime

"Don't touch it, you might break it."

Seth Godin - Wed 02nd Sep 2015 00:09
This is, of course, the opposite of, "Touch it, you can make it better." What's the default where you work?        Seth Godin
Categories: thinktime

Failing, again

Seth Godin - Tue 01st Sep 2015 18:09
Pema Chodron's new book is out this month. I was rendered speechless by her invitation to write the short foreword for the book, the first time I've ever agreed to do this. She's a caring, generous, magical person, a teacher...        Seth Godin
Categories: thinktime

Binh Nguyen: Native Instrument's 'pkg' File Format, Web Documentation Compiler/Scraper, Thoughts on the JSF/Counter-Stealth Technologies, and More

Planet Linux Australia - Tue 01st Sep 2015 13:09
Sometimes you get installation errors in Windows and it is absolutely infuriating because the manufacturer offers you no easy way of correcting (and understanding where the error actually is because of arcane error messages) the file short of re-downloading the entire ISO, etc... This is when some basic reverse engineering skills come in handy.

As you can see below, Native Instrument's 'pkg' file format is actually just a xar archive which includes several other archived files as well.

xar -x -f "Maschine 2 Factory Library Library Part 5.pkg"

user@machine:/media/sda1/NIMCN2FL100$ cd Folder

user@machine:/media/sda1/NIMCN2FL100/Folder$ ls

Bom  PackageInfo  Payload  Scripts

user@machine:/media/sda1/NIMCN2FL100/Folder$ file *

Bom:         Mac OS X bill of materials (BOM) file

PackageInfo: XML document text

Payload:     gzip compressed data, from Unix

Scripts:     gzip compressed data, from Unix

user@machine:/media/sda1/NIMCN2FL100/Folder$ mv Payload Payload.gz

user@machine:/media/sda1/NIMCN2FL100/Folder$ mv Scripts Scripts.gz

user@machine:/media/sda1/NIMCN2FL100/Folder$ gunzip Scripts.gz

user@machine:/media/sda1/NIMCN2FL100/Folder$ ls

Bom  PackageInfo  Payload.gz  Scripts

user@machine:/media/sda1/NIMCN2FL100/Folder$ vim Scripts

user@machine:/media/sda1/NIMCN2FL100/Folder$ gunzip Payload.gz

user@machine:/media/sda1/NIMCN2FL100/Folder$ ls

Bom  PackageInfo  Payload  Scripts

user@machine:/media/sda1/NIMCN2FL100/Folder$ file *

Bom:         Mac OS X bill of materials (BOM) file

PackageInfo: XML document text

Payload:     ASCII cpio archive (pre-SVR4 or odc)

Scripts:     ASCII cpio archive (pre-SVR4 or odc)

The trend towards placing all documentation online can be infuriating at times. It means you have to have a permanent connection on at all times for referencing. The only option is to run a web crawler/web site downloader over it but as I've discovered in the past the performance of such programs can be frustrating. Recently, I had a similar encounter with some trading software. I wrote a custom script to download all relevant files and then compiling them into a single PDF file.

This reminds me, you don't always have to resort to multi-threading to achieve parallelism/higher performance (I've come across some people who have almost basically assumed this). In fact, in some languages you can't even do it.

If you've ever watched some of the online courses from MOOCs and seen some of the better quality YouTube productions (or other free video upload sites out there) you're sometimes left wondering why you or others would want to pay. Anyhow, as stated previously I don't like being online all the time and want to download things for offline perusal. Recently, I had a problem with regards to merging them though. One, it wasn't being done properly and two, MP3 tag information was corrupted. I found out mp3wrap and vbrfix did the job.

You may have to chance some code in mp3wrap if you use more than 256 files though. ./configure, make, make install...

mp3wrap.h:#define MAXNUMFILE 512

Can't believe that in this day and age we don't have better mp3 file verification checking options. Guessing I haven't found the right tool yet?

- as stated before the US seems more guarded with regards to the program than most other people - most advances in 'stealth' have so far come from iterative science and technology advances. I think the next major advance will likely come from left field though. Something which affects the science in general rather than something more specific to stealth/defense technology alone. Like 'stealth' my guess is that it may take a bit of time before we feel the impact of such technology in the real world though

- if you look at the program more carefully it's much more obvious how savings can accrue over the life of the JSF program. It's clear that the core designs across each of the variants is no longer as similar as was originally intended but modular design, self diagnostics/testing, etc... will still play a role over the entire lifetime of the program

Marine In The F-35 Test Force Shares His Experiences

- the irony is that some of the primary mechanisms that are currently used to reduce temperature for IR stealth are actually used in satellite technology and more inauspicious areas like motorsport technology

- one of the odd things which has struck me about the Russia/Chinese with regards to their defense/intelligence setup is that even if they have the ability to re-produce some Western technologies they sometimes choose not to. Think about the Buran. They're generally more practical and economical with regards to use of technology. Look at the way finances were handled during the KGB era. They were miserly when it came to budgeting for possible assets when compared to their Western counterparts. That's why I'm not entirely certain that the reason why they are behind the eight ball on aircraft stealth is simply because they don't have the ability to bridge the gap... At various times throughout history they've held the lead with regards to submarine, missile, and various other core defense technologies. I think that it may simply come down to the fact that they may be trying to do their best allocate their resources in such a way that to acheive their defensive needs for the best price? Either way, I don't think that a war involving the US and near peer threats such as Russia and China is going to be clear cut as some people think (especially when the modernisation of their militaries are complete). It will be somewhat of a slugfest...

- even if the JSF can perform CAS duties relatively well there's something we're missing here. The JSF is incredibly expensive and the way that stealth is so integral to the aircraft means that every time the aircraft gets hit its RCS increases. For anyone to assume that the JSF is not going to get hit in CAS duties is nonsensical especially if it's going to try to takeover the role of the A10 (in a like for like replacement) at some point. I still prefer a group of loitering drones that can be called in for an immediate support at any point if and when required. It should be cheaper, quicker, and more survivable (if designed correctly)... This could be a moot point though if Allied nations only continue to engage in non near-peer threat engagements such as been the case recently though...

- the most common argument that the Russians/Chinese have when the West accuses them of something is that the West isn't any different. The funny thing about this is that technically they're right. It's just the level that each side is willing to stoop to. The US spies on friend and foe alike using mostly technological means though while the former is more reliant on HUMINT. In the context of economic intelligence I'd be very interested to know just exactly how the numbers add up knowing how much the West spends on technical intelligence and the same goes for the Russians/Chinese as well... Both sides sound rediculous at times accusing one another of any wrong doing...,7340,L-4696268,00.html

- if you think about the nature of defense now it's somewhat bemusing. Our concept of what defense seems to be almost completely focused around the notion of force projection and qualitative/quantitative superiority. To me some of what is done has little to do with defense anymore as it does attempting to shape the world in the way we want simply because we can...

- there's so much information out there regarding a lot of sensitive military technology I just find it hard to believe some of the classification levels for information that are held when it comes to some stuff and why we would hold people accountable for stuff that is already out in the open and confirmed by official sources. Sometimes it seems as though much of what the Russians/Chinese need to reverse engineer some technologies can either be purchased or else obtained from free and open sources

JSF Making Stealth productionJuly48 TEXT READABLE.pdf


F-35 High Energy Laser

Stealth question - Reduction in RCS

- as stated previously, most people who watch this space know that stealth bombers can be tracked from thousands of kilometers away provided equipment is tuned correctly, environmental conditions are favourable, etc... To me, a lot of the power projection capabilities (or anything which facilitates them) makes me feel as though they have homing beacons. This includes sensor technology which relies on any active measures such as long range RADAR, AWACS, re-fuelling, AEGIS class warships, aircraft carriers, etc... They're just asking to be hit (by near peer threats) which probably explains the reasons behind increasing sensory capabilities of 5th gen aircraft such as the JSF and increasing de-centralisation of capabilities in 6th gen aircraft designs

- if you know a little bit about military technology you'll be aware that one of the things that are of slight concern are electronic hardware which when illuminated by certain, unique frequencies basically become homing beacons. The thing is, if you think about this for a bit isn't it possible to achieve the same thing using microchips (or anything that is symmetrical on an aircraft)? I mean, one of the core tenets of RADAR stealth is incorporating non-planform design. Namely, reducing parallel and symmetrical shapes. The legs on a microchip are spaced evenly and symmetrically apart. Provided sufficient power and at favourable angles isn't it also possible to achieve the same thing using electronics (and other objects) aboard most aircraft (epsecially if their designs are unique)? The main issues would be power and projection of course...

- in the Iraq war much of the RADAR capabilities were knocked out extremely early. The opposite has been true in Syria where much equipment has been turned off and turned on only periodically. Much like my beacon idea I'm wondering why we couldn't use the same concept to detect SAM and RADAR systems. If we know the rough design, then we should know the rough frequency/wavelength that they operate with... Radiate at sufficient power and at the right angle and they should re-radiate? Perhaps a job for drones which would search for equipment based on rough intelligence estimates for mobile equipment in particular?

- people often harp on about how Western defense technology is superior but we've never really seen a genuine encounter between near peer threats for a long time. It's also clear that neither side. Operationally, both Russia and the United States have never really given in to their partners on national security concerns. Their partners often don't receieve the same information nor do they recieve the same technology (same fear that the US has regarding the F-22 Raptor. They don't want to have to go to war against equipment that is equally adept which they built. They also worry about OPSEC of allied nations believing that we could leak information since we spend less on national security). I wouldn't be surprised if (much like during the Cold War) much of the publicly available information we have regarding upper end equipment is substantially wrong

- much has been made of DAS in the JSF. Some Russian fighter aircraft have had much of this basic, core functionality (all around sensory capability) for decades

- a RAND defense analyst recently floated around the idea of a slow moving aircraft with large payload capabilities as an alternative to conventional fighter jets. It would actually render 5th gen fighters completely irrelevant if implemented correctly...

- I've been looking at the design of the PAK-FA slightly more closely and noticed how it had multi-band RADAR capabilities for various purposes. The thing which struck me was the updated R-77 capability whereby the jet provides information in unison with the missile's own internal targeting system. Even if one fails, the other system has enough redundancy to be able to potentially re-acquire a lock. Interestingly, if we think about this slightly what if we use the same idea in combination with jets and ships or jets and large RADAR. Updated information from longer wavelength RADAR in combination with the missiles' or jets' on targeting systems would allow for an increased chance of lock and reduced chances of being outwitted through decoys as well...

- modern rules of engagement may mean that visual identification may be necessary before a pilot can launch an attack rendering any BVR capabilities a moot point

- for a while now the defense and intelligence have used animals such as dolphins and sea lions for various purposes including recon as well as force proection. Something I've been curious about is whether or not we can use animals as radiators undersea as well as in the air... Think about this, if you are in a room with furniture and you scream it sounds different to if it were empty. It's the same if you scream in front of someone versus if you scream with nothing in front of you. If you can activate all animals in your surronding area (using beacons at abnormal frequencies or otherwise training them and attaching 'radiators' to them) to either create sound you can detect the presence of other objects in your immediate vicinity (without giving away your position as well). Roughly the same principle that allowed the detection and shooting down of the original F-117 stealth bomber

If you've ever worked with laptops (or any device) with dead batteries you've probably wondered about how to restore them to working condition...
Categories: thinktime

Arjen Lentz: Full Roof Cover Combining PV Solar and Heat |

Planet Linux Australia - Tue 01st Sep 2015 11:09

Bluescope unveils “world first” built-in solar array that generates electricity and heat, and acts as roofing.

Categories: thinktime

Day traders rarely make history

Seth Godin - Mon 31st Aug 2015 20:08
The short-term stuff is pretty easy to do well. Respond to incoming. Check it off your list. Next! The long-term stuff, on the other hand, is so easy to postpone, because tomorrow always sounds promising. And so we might hesitate...        Seth Godin
Categories: thinktime

Ben Martin: Inspecting ODF round trips for attribute retention

Planet Linux Australia - Mon 31st Aug 2015 20:08
Given an office application one might like to know which attributes are preserved properly across a load and save cycle. For example, is the background color or margin size mutated just by loading and saving an ODF file with OfficeAppFoo version 0.1.

The odfautotests project includes many tests on simple ODF documents to see how well each office application preserves the information in the document. Though testing ODF attribute preservation might not be as simple as one might first imagine. Consider the below document with a single paragraph using a custom style:


  <text:p text:style-name="style">hello world</text:p>


In the styles.xml file one might see something like the following:






     <style:text-properties fo:background-color="transparent" />


This input is obviously designed to see how well the fo:background-color style information is preserved by office applications. One thing to notice is that the style:family attribute in the above is paragraph.

If one loads and saves a document with the above fragments in it using LibreOffice 4.3.x then they might see something like the following in the output ODF file. In content.xml:

<text:p text:style-name="TestStyle">hello world</text:p>

And in the styles.xml file the background-color attribute is preserved:

<style:style style:name="TestStyle"



      <style:text-properties fo:background-color="transparent"/>


One can test if the attribute has been preserved using XPath selecting on the @style-name of the text:p and then making sure that the matching style:style has the desired fo:background-color sub attribute.

The XPath might look something like the below, which has been formatted for display:



  or (not(@s:display-name) and @s:name='TestStyle')]


Performing the load and save using Word 2016 is quite interesting. The resulting content.xml file might have:

<style:style style:name="P1"




     <style:paragraph-properties fo:break-before="page"/>



<office:text text:use-soft-page-breaks="true">

  <text:p text:style-name="P1">hello world</text:p>


and in styles.xml the background-color setting is pushed up to the paragraph style level.

<style:style style:name="TestStyle"



      <style:text-properties fo:hyphenate="false"/>


<style:default-style style:family="paragraph">


<style:text-properties ... fo:background-color="transparent"

So to see if the output ODF has the fo:background-color setting one has to consider not just the directly used style "P1" but also parent style elements which might contain the attribute instead. In this case it was pushed right up to the paragraph style.

For the Word output the above XPath doesn't necessarily work. If the attribute we are looking for has been pushed up to paragraph then we should look for it there instead. Also, if we are looking at the paragraph level then we need to be sure that there is no attribute directly at the lower, TestStyle, level. Also it helps to ensure in the selection that the paragraph is really a parent of the TestStyle, or P1 in the above.

After a bit of pondering I found an interesting solution that can evaluate using plain XPath1.0. To test the value I pick off the fo:background-color from both the TestStyle and also the paragraph level. If those values are passed to concat() then, if the attribute is only at the TestStyle or paragraph level we get something that can be used to test the value. If the attribute appears at both levels are are in trouble.

For example:

<style:style style:name="TestStyle"

<style:text-properties ... fo:background-color="transparent"  />


<style:default-style style:family="paragraph">

<style:text-properties ... fo:background-color="#FF0000"/>


Considering the semantic XPath query of concat( TestStyle/@fo:background-color, paragraph/@fo:background-color ) the result would be  transparent#FF0000 which would not match a string comparison with 'transparent'.

The trick is to use an array selector on the second item in the concat() call. If we only return the paragraph/@fo:background-color value if there is no value associated with the TestStyle then the concat will effectively only return one or the other (directly on TestStyle or nothing on TestStyle and the attribute from paragraph).

With this the query can allow the office application to move the information to a parent of the style and still match for a test.

Categories: thinktime

Michael Still: Walk to the Southern Most Point

Planet Linux Australia - Mon 31st Aug 2015 17:08
I've just realized that I didn't post any pics of my walk to the most southern point of the ACT. The CBC had a planned walk to the southern most point on the ACT border and I was immediately intrigued. So, I took a day off work and gave it a go. It was well worth the experience, especially as Matthew the guide had a deep knowledge of the various huts and so forth in the area. A great day.


See more thumbnails

Interactive map for this route.

Tags for this post: blog pictures 20150818-southernmostpoint photo canberra bushwalk

Related posts: Goodwin trig; Big Monks; Geocaching; Confessions of a middle aged orienteering marker; A quick walk through Curtin; Narrabundah trig and 16 geocaches

Categories: thinktime

Tridge on UAVs: An awesome day at CMAC

Planet Linux Australia - Mon 31st Aug 2015 16:08

Anyone who has been involved in aeromodelling for a while dreams of having one of those days when everything works right. It doesn't happen often, but when it does it sure is nice!

CanberraUAV had one of those days yesterday. It was a wonderful sunny winters day at our local flying field and we were test flying our latest creations.

First up was the "Vampire Mark 2", a combined plane quadcopter built by Jack Pittar. It consists of a senior telemaster with a 15cc petrol engine, but with the addition of 4 quadcopter motors. It was the maiden flight yesterday, and it was setup with a Pixhawk controlling the quad engines and the rest controlled manually as a normal RC model. We flew with two pilots (Justin Galbraith and Jack Pittar). The takeoff was vertical as a quadcopter, and it then transitioned to fixed wing flight using the extremely simple method of advancing the throttle on the plane while lowering the throttle on the telemaster. Transition was very easy and the plane reached 31m/s in forward flight at full throttle. The landing transition was equally easy. Jack lowered the throttle on the plane while Justin raised the throttle on the quadcopter. No problems!

Given this was the first flight of a highly experimental aircraft we were pretty pleased with the result! Jack is thinking of building an even bigger version soon that will be able to complete the 2016 OBC mission with plenty of room for equipment.

Next up was our JS90 helicopter, originally built by Ryan Pope and adapted for autonomous flight.

This is the flybar version of the JS90-v2 heli from Hobbyking, with a OS GT15HZ petrol engine fitted, along with a Pixhawk2 and a new "Blue Label" Lidar from pulsedlight. We've been flying (and crashing!) this heli for a while now, but yesterday was finally the day when we got to try high speed autonomous flight.

apart from a small gap where we lost telemetry in the north west corner you can see the tracking in the auto mission was great. Once we learned how to tune a flybar heli (which turns out to be extremely simple!) it flies really well. We did have some issues getting it to fly as fast as we want. Above about 17m/s it occasionally pulled back and stopped for a second before continuing. We knew it could do more as it happily flew at over 27m/s in ALT_HOLD mode. With some help from Randy and a small code change to help with tuning we think we've tracked down the cause of that issue and expect to be doing 27m/s AUTO missions next weekend.

Next up was another quad plane, this one quite different from the big telemaster build!

We had been trying to track down a problem with loiter on the Parrot Bebop when running ArduPilot. We suspected there may have been a GPS lag issue, so we wanted to get some flight data that would allow us to compare the performance of a uBlox GPS with the GPS in the Bebop for dynamic flight. We thought a good way to do that would be to strap the Bebop to a plane and take it for a fly. The results were very interesting! For this flight we saw a lag on the Bebop GPS of over 5 seconds, which must be some sort of buffering issue. We'll chat to Julien from Parrot to see if we can track down the issue.

Next we thought it would be fun to see if something else could lift the tiny Bebop. Peter had his Solo there, so we strapped the Bebop to it and went for a fast fly in drift mode. Great fun!

Overall it was a fantastic day! Next week we're really looking forward to trying the Trex700 petrol conversion that Greg has built which you can see in the background in this photo of our build day on Saturday. The build looks really good and we expect it to perform even better than the JS90, as Greg has managed to fit a Pixhawk while still being able to install the canopy. That should reduce drag quite a lot.

The switch of focus for CanberraUAV to VTOL aircraft has been a lot of work, but the results are really paying off and we're having a lot of fun in the process. We hope that we'll have a lot more weekends like this one in the future.

Categories: thinktime

David Rowe: FreeDV SM1000 v SSB demo

Planet Linux Australia - Mon 31st Aug 2015 10:08

Great demo of FreeDV 1600 (SM1000 at one end) and SSB between AA6E and K5MVP. You can really notice the reduced audio bandwidth and ever present noise of SSB compared to FreeDV. This is just the start – we are gradually improving the low SNR robustness and speech quality of FreeDV. Thanks so much Martin for posting this.

I like watching the fading FreeDV signal. I think there is a “lowpass” effect on the signal – more power allocated to low frequency carriers. This may be due to the transmitter tx filter, or possibly the SM1000. FreeDV is only as good as the SNR of the weakest carrier. Ideally they should all be the same power. This is one of the “tuning” issues I’d like to look into over the next few months.

Categories: thinktime

Sridhar Dhanapalan: Twitter posts: 2015-08-24 to 2015-08-30

Planet Linux Australia - Mon 31st Aug 2015 00:08
Categories: thinktime


Subscribe to kattekrab aggregator - thinktime