Planet Linux Australia

Syndicate content
Planet Linux Australia -
Updated: 31 min 29 sec ago

Andrew McDonnell: hacksa2015

Sat, 2015-02-07 00:27

In the middle of last year I attended Unleashed/Govhack 2014, I blogged about it here.

Barely over a week ago by pure chance I stumbled across another hackathon, this time being hacksa. This was an Adelaide only event that was designed to tie in with Entrepreneurs Week here. It seemed like an excellent opportunity to practice for the next GovHack (and a chance to meet some new people) so I entered a team! Also, I discovered that one of the people running the event was a friend of mine from uni over from Sydney for the event, so it was a good chance to catch up.

Hacksa was also going to be a small event, being first time, held at short notice, in one city, and also more focused to a specific domain (music industry) compared to GovHack. So I figured that if I managed to put into practice some of what I think I learned at Unleashed in 2014 we might stand a chance of earning some conference tickets (one of the prizes is entry to a conference called NetWorkPlay) or maybe if lucky enough cash!

Having entered a team, I had to find some teammates. So I press-ganged Mr 13, and then convinced a friend from who was in another team at Unleashed, and another friend of mine who knows a bit about business, to join in, and we set to work.

Spread Out in Time

Unlike GovHack, hacksa released the API (well, some of them) the Friday before the event. So we had the weekend to work on it. Actually we only had the weekend because the hacksa event proper was strangely held on a Wednesday, and we all had work or school.  But this was OK, we only had to show up in the evening to finalise things and do the video interview. This was another difference (and I think improvement), we didn’t have to shoot our own video.

Actually we really only had Sunday, because of life and stuff, so I put in a late one on the Saturday evening pulling together a VPS and web infrastructure for our entry, along with libraries (I decided to use twitter bootstrap to get moving in  hurry, along with Python  I’d had two ideas, one for a visualusation/infographic and the other a web app, and learning from Unleashed I intentionally stopped thinking too hard at that point and went with the web app, which was to be a mash up based initially on the V-channel chart APIs. Ultimately I think going for a web app will prove to be a good idea, we’ll see in due course.

On the Sunday we congregated at a local library and polished off the prototype. Mr 13 put together a snazzy landing page for us using weebly, and a request page using launch rock. Its pretty handy being able to divvy out tasks and keep in involved and motivated!


The hackathon event was held at a place called St Pauls Creative Center in the CBD.  It was actually a pretty nice venue for this event. We got there about 6pm which gave us a couple more hours to refine Sundays efforts and then do the video interview. Of course we got pizza which was good too because Mr 13 was pretty hungry by then :-)

Overall it felt good to actually pull something together that was essentially a working ‘minimal viable product’ (in the parlance), and we also had a good ‘story’ to tell, thanks to my friends.

I’ll probably blog more about the app itself and the API feeds a bit later.

Even if we don’t win anything, I think I’ll finish it off and we’ll go live as an experiment to see if anyone actually uses it and maybe make enough to pay for the VPS hosting for a few cups of coffee from google ads!


Andrew McDonnell: 2015 : working backwards from the end… and things that go bang!

Fri, 2015-02-06 23:26

Some of the most awesome things about LCA are events that are not part of the official programme.  These include the affectionately named BOFs, and also various things happening before and after the conference proper.

On the Saturday just after the conference, I was lucky enough that I had sufficient time before my flight home to be able to tag along to a hobbyist rocket launch meet, and watch the friendly locals, as well as the well known to the open source community rocket enthusiasts Bdale Garbee and Keith Packard, send a variety of projectiles high up into the sky! I jumped at the chance to go because my son who is 13 did a launch of a small rocket through scouts, so I thought I’d better get some pictures and video for him :-)

The next shot gives an idea of the scale of an assembled rocket:

rocket scale by Andrew Mc on 500px

The rockets launch from the middle of a paddock.

distance away by Andrew Mc on 500px

The rocketry club is really into safety, for obvious reasons. They have to get licenses to be allowed to launch, and there is a ritual each time a rocket is launched – yelling out “Sky Is Clear”, “Range Is Clear” before a launch can proceed.

This video I shot is of a small rocket launching.

One of the other’ers Augur posted some other vides to YouTube:

Watching things go bang is always fun, but these guys take it to a whole new level. If you listen carefully to the video a few minutes after the launch, notice the Android phone and the laptop actually speak the telemetry data…

This works roughly as follows: there is a computer built on Altus Metrum components in the rocket, this sends position and other data back to a receiver connected to an antenna that the flyer (is that the right word?) is holding and pointing in the general direction of the rocket… the data is then relayed via bluetooth to the phone or laptop and reported via speech synthesis. “Range one thousand two hundred seventy metres. Bearing thirty degrees south west elevation forty two degrees.”

I believe one of the rockets made it over eight kilometers high (I didn’t manage to record the exact amount!)

Eventually they run out of puff and start falling back. A parachute then deploys bringing it to ground, and a couple of km hike ensues.

I believe the following rocket is known as the Pink Freak. My daughter loved the shoes when I showed her the pics…

thepinkfreak by Andrew Mc on 500px

Alongside everything else, there was a quadcopter. When I first arrived, this was keeping a couple of the younger kids amused. But once the meet started moving, I realised it had a HD camera, and was used to monitor the rocket launches – and the pilot (this must be the right word!) had a VR headset, not an Occulus, but a new one I had not heard of, a SkyZone(?), to fly the thing way up and record the launch! It sounds like a mosquito in the videos.

I had a lot of other photos and video but many had people and I haven’t managed to make contact with the club to check if it is OK to post them, so for now I haven’t.

Michael Still: Two trigs and a first attempt at finding Westlake

Fri, 2015-02-06 09:28
I have to do HR paperwork for work at the moment, so I was looking for a quiet place to progress such things. I ended up beside Lake Burley Griffin working away on my laptop, which was quite pleasant. While in the area, it seemed like a good idea to have a quick first attempt at finding Westlake, which is the ruins of an abandoned builders camp from when Canberra was being constructed. I found some evidence, but I think I need to go further west in a subsequent wander.


Interactive map for this route.

There was a planned walk to Davidson trig by the Facebook trig sweating group this evening, so I went along to that. Beforehand I was killing time in Yarralumla and bumped into the cub leader for my kids' troop. She's interested in trig walks suitable for cubs, so I am going to have to keep an eye out for some. Davidson was a nice on-track walk, probably suitable for cubs.


Interactive map for this route.

Davidson finished about an hour earlier than expected, so I dropped in to walk to Mike on the way home in an entirely unplanned manner. This walk would be perfect for cubs if it wasn't almost entirely bush bashing. This is probably the lowest elevation trig I've been to so far.


Interactive map for this route.

Tags for this post: blog pictures 20150205-westlake_davidson_and_mike photo canberra tuggeranong bushwalk trig_point

Related posts: Big Monks; A walk around Mount Stranger; Forster trig; Taylor Trig; Oakey trig; Urambi Trig


Tridge on UAVs: APM:Plane 3.2.1 released

Thu, 2015-02-05 21:28

The ardupilot development team is proud to announce the release of version 3.2.1 of APM:Plane. This is primarily intended as a bugfix release, but does have some new features.

The major changes in this release are:

  • fixed a mission handling bug that could cause a crash if jump commands form an infinite loop (thanks to Dellarb for reporting this bug)
  • improved support for in-kernel SPI handling on Linux (thanks to John Williams)
  • support UAVCAN based ESCs and GPS modules on Pixhawk (thanks to Pavel, Holger and and PX4 dev team)
  • Multiple updates for the NavIO+ cape on RaspberryPi (thanks to Emlid)
  • multiple automatic landing fixes, including improvements in flare detection, glide slope calculation and lag handling
  • fixed a bug that could cause a change altitude MAVLink command from causing a sudden descent
  • re-enable CLI on non-APM1/APM2 boards
  • Lots of EKF changes, including reducing impact of ground magnetic interference, reducing the impact of a GPS outage and integrating optical flow support
  • added initial support for the PX4 optical flow sensor. Just logging for this release.
  • added support for MAVLink packet routing
  • added detection and recovery from faulty gyro and accel sensors
  • improved arming checks code to detect a lot more error conditions, and change the ARMING_CHECK default value to check all error conditions.
  • added support for BBBMini Linux port
  • increased number of AVR input channels from 8 to 11
  • auto-set system clock based on GPS in Linux ports
  • added SBUS FrSky telemetry support (thanks to Mathias)

IMU Failure detection

Perhaps the most important change for this release is the improvement to the detection and recovery of bad IMUs. We have had a number of reports of bad IMU data in flight from both the mpu6000 and lsm303d. Where possible the drivers how try to detect the failing sensor and reset it. Sometimes it can't be reset, in which case it will be locked out and the other IMU will be used, unless it is the last available IMU, in which case it will still be used. In either case the user is notified of the failure via the GCS so they can land.

UAVCAN support

The main new feature in this release is support for UAVCAN ESCs, GPS modules, compasses and barometers. Note that while support is in for UAVCAN ESCs and I have been flying with a UAVCAN ESC on my test plane for a few weeks very successfully, support for configuring the ESC is still fairly basic. You will need a debug cable to connect to the ESC to configure it as per the website. We hope to add MAVLink enabled configuration soon.

Many thanks to everyone who contributed so much to this release with bug reports, patches and suggestions. My apologies that we didn't get everything done that we wanted to get done. We have pushed some things out to the next release to prevent the release date sliding back any further.

Happy flying!

David Rowe: Codec 2 and GMSK over VHF Radio Part 1

Thu, 2015-02-05 16:30

In the previous post comparing GMSK modem algorithms, I had some results suggesting we can build a Codec 2 VHF “mode” that outperforms legacy analog FM by 10dB (that’s a factor of 10 in power). It seemed to good too be true. So for the past few weeks I’ve been working with Daniel, VA7DRM, to test these ideas using real radios.

The Experiment

Starting with the “ideal” GMSK modem I developed in the previous post, I added the various building blocks required to make it operate over a real radio channel. For example initial frequency offset estimation, timing estimation, fine frequency and phase tracking, and frame sync.

Meanwhile, over in Canada Daniel has set up an experimental system to enable testing the modem over real radios. Here is a block diagram and photo:

We use a multi-mode 2M radio as the transmitter. We use it in SSB mode to play the GMSK modem signal over the air. In this mode, it’s up-converting the GMSK modem signal from a low IF of 1500Hz to 146 MHz. The GMSK modem signal is about 1200Hz wide, so fits neatly in the SSB radio passband.

We don’t use the radio in FM mode for GMSK as my work in the previous post shows that is how you build a crappy GMSK modem.

The tx is switched to FM for sending FM test signals. The SNR of the system is adjusted to be exactly the same for GMSK and FM.

A RTL style SDR dongle is used as the receiver in both modes. By adjusting the rx gain we can set up the SNRs we require to perform our tests. The gmsk.m GNU Octave simulation pops out a file of errors that can be used to simulate Codec 2 over this channel. The end result is we can listen to Analog FM and Codec 2 over GMSK for a range of channel SNRs.

I send a fixed frame of test data over the GMSK modem rather than Codec 2 data. A fixed frame makes it easier to measure bit error rates and do frame sync. I XOR the transmit an received bits to get an error pattern which can be used to simulate the exact effect of those bit errors on the Codec 2 bit stream. I actually cheated and used the 1300 bit/s Codec 2 mode instead of 1200, as it’s somewhat more robust to it errors. This is worth 0.35dB over the channel.

Here is a spectrogram (sideways waterfall) of one of the test samples from the SDR:

The GMSK signal is centred on 1500 Hz on the left. On the right is the FM signal, centred on a 12 kHz carrier. The FM signal is about 16 kHz wide, so we needed a higher centre frequency. First we send a 1000 Hz test tone, after FM modulation that produces the lines you can see in the FM spectrum. Then we switch to a sample of Daniel’s voice. That’s the fuzzier FM signal, as the carrier is bouncing all over the place.

The keenies will notice a small bit of DC at the lower far left hand side. That’s the nasty DC offset you get from SDR radios when the IQ balance is a bit off. It fades away as we nail it with a high pass filter. If it’s too high it upsets our GMSK demod.

If we average the spectrum over the entire run we get:

Note how much narrower the GMSK signal is than FM. This sample is for the C/No=43dB run in the table below.


To measure SNR requires a known noise bandwidth (e.g. 3000 Hz is common for HF SSB). However the bandwidth of the GMSK and FM signals is different. If we used a 3000 Hz noise bandwidth the FM signal wouldn’t fit. We could measure SNR using a 16 kHz bandwidth for both signals. However another way is to measure the noise using a 1 Hz noise bandwidth. This is known as C/No, or the carrier power divided by the radio channel noise power in a 1 Hz bandwidth.

The GMSK modem is about 1.5dB off theoretical performance. This is not bad, as it takes into account imperfections with the modem algorithms (e.g. errors in timing and phase estimation) and the experimental SSB radio/SDR signal path (e.g. SSB transmit filter, PA non-linearities). The FM demod software gives us a SNR about 3dB worse than theoretical FM demod performance for a given input C/No, possibly because of a non ideal FM modulator or perhaps under deviation. Once again, that’s acceptable.

Here are the results. Warning – turn down your volume control! The first FM sample is just loud noise. There are a few odds errors with the Codec 2 sample, e.g. it gets “four” wrong, possibly due to clipping of the input sample, or maybe a pitch estimation error. Must look into that some time, sure it can be fixed. Too busy playing modems lately!

C/No Analog FM Codec 2 BER Speex 35.5 Listen Listen 0.035 n/a 37.2 n/a Listen 0.008 n/a 43 Listen Listen 0.00 n/a 53 Listen Listen 0.00 Listen 63 Listen Listen 0.00 n/a

In these tests, Codec 2 is working at a much lower C/No than analog FM, with the system gains predicted gains in the previous blog post. Codec 2 starts to deliver intelligible speech (with some errors) at a C/No of 35dB. By 53dB FM is sounding better (although still noisy), so I estimate the cross over point at 48dB, a 13dB gain for the Codec 2/GMSK system over Analog FM. I suspect we also have a similar system gain over 1st generation, closed source codec VHF digital voice systems like DSTAR and DPMR.

I am interested in your thoughts on the relative speech quality, please feel free to comment. The FM samples sound a bit noisy to me, but Daniel thinks they are about right.

There are a lot of knobs we can twiddle with this spare system gain:

  1. The Codec 2 speech quality could be improved with some more work.
  2. We can do 2 channel, no diplexer TDMA for a 3dB hit in C/No (as we would need to double the bit rate).
  3. We can cover a much larger geographical area. IIRC radio waves get attenuated by 6dB as the distance doubles. So a 12dB gain is 4 times the range, which (Area = pi*r*r) means about 16 times the area for the same power. That would help repeaters, developing world, and emergency communications networks.
  4. We can change the Codec bit rate as the channel C/No improves. Who says the speech quality has to remain static under all channel conditions? For less C/No than required by current FM systems we could run a 8000 bit/s speech codec like Speex (see sample above). A little bit higher and it could sound like Skype (using Opus). Wideband audio on your HT anyone? Or mobile in your car?
  5. We can use power control like cell phones, e.g. tell the far end to back off the tx power. Saving battery and RF interference. Would be really useful for ad-hoc mesh networks too (managing the hidden transmitter problem)

Help Us Change VHF Voice Forever!

The key to our improvements is “we own the stack”. Codec open, modem open, protocol open. No one telling us where we can and can’t experiment. We are only limited by imagination and the laws of physics. By we I mean you – it’s open source.

Two guys half way around the world from each other are working on improving VHF voice by a factor of 10. With second hand laptops running open software, a $20 SDR dongle, Ham Radio, good modem design and a little foil.

This is a once in 100 year opportunity. We really need some help, e.g. VHF radio front end design, Octave refactoring, Octave to C porting, GUI C/C++ coding (also see list of tasks at the end of this post). It’s fun and rewarding work. Do you want to be a part of it? Please email me.

If you can’t contribute technically, here’s the donate button:

Donation in US$:

It all helps! Thanks.

Craige McWhirter: Craige McWhirter: Attaching Multiple Network Interfaces and Floating IPs to OpenStack Instances with Neutron

Thu, 2015-02-05 14:28

There are a number of use cases where you may need to connect multiple floating IPs to existing OpenStack instances. However the functionality to do this is not exposed via the Horizon Dashboard. This is how I go about attaching multiple network interfaces and floating IPs to OpenStack instances with Neutron.


Port Creation and Assignment

When you have your environment sourced appropriately, get a list of networks for this tenant:

% neutron net-list +--------------------------------------+--------------+-------------------------------------------------------+ | id | name | subnets | +--------------------------------------+--------------+-------------------------------------------------------+ | 85314baa-a022-4dd1-918c-a73c83c8cad6 | ext-net | 9248bc58-6cfe-4ff8-b33e-286a60c96c6d 999.999.999.0/23 | | ee31dc0e-e226-423d-a7fe-f564dc17614e | DemoTutorial | 5821de82-3843-46ce-a796-c801bf40fd4c | +--------------------------------------+--------------+-------------------------------------------------------+

We're interested in the non-external network. In this case "DemoTutorial". I normally set this to $OS_NET. Now we can create a new port on that network.

% export OS_NET=ee31dc0e-e226-423d-a7fe-f564dc17614e % neutron port-create $OS_NET Created a new port: +-----------------------+---------------------------------------------------------------------------------------+ | Field | Value | +-----------------------+---------------------------------------------------------------------------------------+ | admin_state_up | True | | allowed_address_pairs | | | binding:vnic_type | normal | | device_id | | | device_owner | | | fixed_ips | {"subnet_id": "af150a1e-067a-4641-89a4-24c5b6b8fe3b", "ip_address": ""} | | id | fd2f78df-cf78-4394-84eb-9e37ed1e5624 | | mac_address | fa:54:6e:f2:ce:a9 | | name | | | network_id | ee31dc0e-e226-423d-a7fe-f564dc17614e | | security_groups | b1240686-7ad9-4d29-a679-d219f76648ca | | status | DOWN | | tenant_id | abcd639c50804cf3end71b92e6ced65e | +-----------------------+---------------------------------------------------------------------------------------+

We now need to note the id or as I do, assign it to $PORT_ID. Next we fire up nova. I'm going to assume that you know either the instance name or ID and have assigned it to $INSTANCE.

% export PORT_ID=fd2f78df-cf78-4394-84eb-9e37ed1e5624 % export INSTANCE=3c7ae1b9-8111-4f15-9945-75e0af157ead % nova interface-attach --port-id $PORT_ID $INSTANCE

You should now have successfully added a second network interface to your OpenStack instance. Let's double check that:

% nova show $INSTANCE | grep network | DemoTutorial network |,

Great! Now you have two internal IP addresses, one for each port assigned to that tenant.

Assigning Floating IPs

You can now add floating IPs either via the Horizon Dashboard or via the neutron client. I'll cover how to do this via the CLI. Fire up neutron, locate the original port and assign it's UUID to $PORT_ID0:

% neutron port-list | grep fa:46:7e:21:4f:f3 | {"subnet_id": "8f987932-48ee-4262-8b44-0c910512a387", "ip_address": ""} | % export PORT_ID0=8f987932-48ee-4262-8b44-0c910512a387

Then we get a list of available floating IPs and assign those to variables too:

% neutron floatingip-list +--------------------------------------+------------------+---------------------+---------+ | id | fixed_ip_address | floating_ip_address | port_id | +--------------------------------------+------------------+---------------------+---------+ | 390e4676-0e05-40c3-9012-e5d27eb85dbe | | 999.999.999.123 | | | 16f7ca27-1d11-4967-9f0c-04f578590b01 | | 999.999.999.124 | | | f983b10d-454c-4c19-8f65-d9b96c4d7aa6 | | 999.999.999.125 | | +--------------------------------------+------------------+---------------------+---------+ % export FIP0=16f7ca27-1d11-4967-9f0c-04f578590b01 % export FIP1=f983b10d-454c-4c19-8f65-d9b96c4d7aa6 % neutron floatingip-associate $FIP0 $PORT_ID Associated floating IP 16f7ca27-1d11-4967-9f0c-04f578590b01 % neutron floatingip-associate $FIP1 $PORT_ID0 Associated floating IP f983b10d-454c-4c19-8f65-d9b96c4d7aa6

We can then verify this assignment:

% neutron floatingip-list +--------------------------------------+------------------+---------------------+---------+ | id | fixed_ip_address | floating_ip_address | port_id | +--------------------------------------+------------------+---------------------+---------+ | 390e4676-0e05-40c3-9012-e5d27eb85dbe | | 999.999.999.123 | | | 16f7ca27-1d11-4967-9f0c-04f578590b01 | | 999.999.999.124 | | | f983b10d-454c-4c19-8f65-d9b96c4d7aa6 | | 999.999.999.125 | | +--------------------------------------+------------------+---------------------+---------+

For good measure you can double check how Nova sees this assignment:'

% nova show $INSTANCE | grep network | DemoTutorial network |,, 999.999.999.124, 999.999.999.125

You're done :-)

Arjen Lentz: Scientists pledge to increase interference with the Church | The Guardian

Thu, 2015-02-05 14:25

Dean Burnett: If the Church can interject on scientific matters, surely scientists can interject on religious ones?

Related Posts:
  • No related posts

Donna Benjamin: For people who use the web

Thu, 2015-02-05 12:27
Thursday, February 5, 2015 - 11:48


Accessibility matters. For everyone. For those of us who build the web, and for those who use it too. All of us.

Here's some great resources that caught my attention in recent days.

Anne Gibson writes that "Web accessibility means that people can use the web." in an article on List Apart about Reframing Accessibility for the Web. It's really good. She advocates creating a test matrix for accessibility and putting the focus back on the technology available, rather than the abilities of the people who use it. This is strong, clear practical advice we should all consider.

Jeremy Fields has repurposed the WCAG and WebAIM reccomendations to create an Interactive WCAG guide. This makes it easy to link to a specific principal or guideline. 

Ollie Campbell highlights some of the ways that older people use the web, and digital devices is different to how young people do, and to be mindful about our assumptions when designing for the elderly.

Discovering these resources pushed me to reframe some recent conversations about meeting accessibility guidelines.  We often get stuck debating compliance details, when really we should be thinking about setting our content free as flexibly and cleanly as possible.  We're not just ticking boxes.  At least, I hope we're not.

Drupal is one of the best content platforms for web accessibility, but it still has shortcomings. Unfortunately, many people who lack the deep understanding of what makes accessibility important still build sites that don't meet WCAG guidelines.  I think it's up to all of us to spend a bit more time getting up to speed on the intricacies, and build it into our practice, and not just meet those guidelines, but exceed them!

[Image from from the W3C's Web Accessibility Initiative Guidelines and Techniques page - Read a description of this image ]

Update 6 Feb: Included Ollie's article on designing for the elderly. 

Clinton Roy: clintonroy

Tue, 2015-02-03 20:28

After a very early start, walked to work.

Had a doctors appointment in the evening.

Basically collapsed into bed quite early. Had half an hour of sleep before waking up from a bad dream.

Filed under: diary

Clinton Roy: clintonroy

Tue, 2015-02-03 20:28

Did a few conference things.

Caught up with a dear friend for dinner.

Filed under: diary

Clinton Roy: clintonroy

Tue, 2015-02-03 20:28

Humbug day, with both the lca debrief and the election, double excitement! Unfortunately my partner in crime, Russell, had to attend to an emergency situation and couldn’t stay for the debrief, a large part of the enjoyment I get out of the debrief is disagreeing with Russell. Fortunately Tomas stepped in and added a great deal of information including a number of talks that I never would have bothered looking at, which is after all the entire point of the debriefs.

Filed under: Uncategorized

Jonathan Adamczewski: What’s the difference between 0xffffffff and 0xffffffffu?

Tue, 2015-02-03 10:27

In C++, what is the difference between 0xffffffff and 0xffffffffu?

This one’s pretty easy to answer with this information from the C++ standard:

The type of an integer literal is the first of the corresponding list in Table 6 in which its value can be represented.

0xffffffff is a hexadecimal constant, it’s too big to be represented in a (signed) int, so — by the terms of the standard — the type of 0xffffffff is unsigned int.

Furthermore, each of these hexadecimal literals will have a different type:

0x7fffffff // int 0xffffffff // unsigned int 0x1ffffffff // long int (or long long int) 0x1ffffffffu // unsigned long int (or unsigned long long int)

But to answer the original question, there is no difference between 0xffffffff and 0xffffffffu apart from this:

@twoscomplement One is a commonly used curse when the compiler screws up.

— Colin Riley (@domipheus) January 30, 2015

Stewart Smith: Building OpenPower firmware for use in POWER8 Simulator

Tue, 2015-02-03 10:27

Previously, I blogged on how to Run skiboot (OPAL) on the POWER8 Simulator. If you want to build the full Open Power firmware environment, including the Petitboot bootloader and kernel, you can now do so!

My pull request for an op-build target for the simulator has been merged, so you can now do the following three steps to compile a kernel+initramfs to use with your built skiboot for development purposes:

git clone --recursive cd op-build . op-build-env op-build mambo_defconfig && op-build

Then you wait for a whole bunch of time while everything compiles! Afterwards, you should be left with a zImage.epapr in output/images/ that you can copy into your skiboot directory.

With zImage.epapr in your skiboot directory, when you run “make check”, the skiboot test suite will actually launch the simulator to verify that your skiboot code boots all the way to the petitboot prompt!

We now have two boot tests as part of “make check” for skiboot!

Michael Still: Big Monks

Mon, 2015-02-02 16:28
I'm going to be honest here and say I got this one pretty wrong. Looking at Google Earth, Big Monks is about 1.7 km from the access road (which I got right), what I failed to notice is that it is super steep and that much of the walk is off the trail. So... A walk I thought would take 30 or 45 minutes took 2 hours. I didn't die though, so that's good.

Fantastic views at the top, and found a couple of geocaches. There is obviously a lot of walking potential in Rob Roy Nature Park.


Interactive map for this route.

Tags for this post: blog pictures 20150202-big_monks photo canberra tuggeranong bushwalk trig_point

Related posts: A walk around Mount Stranger; Forster trig; Two trigs and a first attempt at finding Westlake; Taylor Trig; Oakey trig; Urambi Trig


Linux Users of Victoria (LUV) Announce: LUV Main February 2015 Meeting: R / reports

Mon, 2015-02-02 12:29
Start: Feb 3 2015 19:00 End: Feb 3 2015 21:00 Start: Feb 3 2015 19:00 End: Feb 3 2015 21:00 Location: 

The Buzzard Lecture Theatre. Evan Burge Building, Trinity College, Melbourne University Main Campus, Parkville.



• Andrew Robinson, R: A Statistical Package on Linux

• Reports and video from 2015

The Buzzard Lecture Theatre, Evan Burge Building, Trinity College Main Campus Parkville Melways Map: 2B C5

Notes: Trinity College's Main Campus is located off Royal Parade. The Evan Burge Building is located near the Tennis Courts. See our Map of Trinity College. Additional maps of Trinity and the surrounding area (including its relation to the city) can be found at

Parking can be found along or near Royal Parade, Grattan Street, Swanston Street and College Crescent. Parking within Trinity College is unfortunately only available to staff.

For those coming via Public Transport, the number 19 tram (North Coburg - City) passes by the main entrance of Trinity College (Get off at Morrah St, Stop 12). This tram departs from the Elizabeth Street tram terminus (Flinders Street end) and goes past Melbourne Central Timetables can be found on-line at:

Before and/or after each meeting those who are interested are welcome to join other members for dinner. We are open to suggestions for a good place to eat near our venue. Maria's on Peel Street in North Melbourne is currently the most popular place to eat after meetings.

LUV would like to acknowledge Red Hat for their help in obtaining the Buzzard Lecture Theatre venue and VPAC for hosting.

Linux Users of Victoria Inc. is an incorporated association, registration number A0040056C.

February 3, 2015 - 19:00

read more

Jonathan Adamczewski: Standards vs Compilers: Warning C4146

Mon, 2015-02-02 10:27

warning C4146: unary minus operator applied to unsigned type, result still unsigned

I saw this warning recently.

“Aha!” I thought. “A common source of errors, able to strike down the unsuspecting programmer. Thank you crafters of Visual C++ compiler warnings, tirelessly laboring to uncover wrong assumptions and naively written code.”

“What?” I exclaimed. “Of course the result is still unsigned. That’s how the language is designed, and that’s what I wanted!”

Nevertheless, I read the documentation for the warning to see if there was anything I could glean from it — particularly to see if I could find sufficient reason to not just #pragma disable it.

This is what you can find in the documentation:

Unsigned types can hold only non-negative values, so unary minus (negation) does not usually make sense when applied to an unsigned type. Both the operand and the result are non-negative.

Negation of an unsigned value may not make sense if you don’t know what it means — it is well defined. Regardless, this is a level 2 warning. It is designed to catch common mistakes and misunderstandings and notify the programmer to have them look more closely. It may be an entirely reasonable thing to warn about.

The documentation continues with some rationale:

Practically, this occurs when the programmer is trying to express the minimum integer value, which is -2147483648. This value cannot be written as -2147483648 because the expression is processed in two stages:

  1. The number 2147483648 is evaluated. Because it is greater than the maximum integer value of 2147483647, the type of 2147483648 is not int, but unsigned int.
  2. Unary minus is applied to the value, with an unsigned result, which also happens to be 2147483648.

The first point is wrong. Wrong for a standards-conformant C++ implementation, anyway. The second would be accurate if the first was accurate (because 232 - 231 == 231)

Here’s what the most recent draft of the C++ standard says about the integer literal types:

The type of an integer literal is the first of the corresponding list in Table 6 in which its value can be represented.

2147483648 is a decimal constant with no suffix. When using VC++ with it’s 32 bit long int type, the first of the corresponding list in which its value can be represented is the 64 bit long long int. An unsigned type is never an option.

Unary minus should then be applied to long long int 2147483648, which should result in long long int -2147483648. There’s nothing unsigned in this process

Use of the result should behave in an unsurprising way, too — long long int -2147483648 can be assigned to a variable of type int and nothing unexpected will happen. The type can be converted without affecting the value.

According to the standard, the rationale is flawed, and the warning seems pointless to me.

In theory, there’s no difference between theory and practise

So I tried compiling the example program from the documentation to see what would happen.

// C4146.cpp // compile with: /W2 #include <stdio.h> void check(int i) { if (i > -2147483648) // C4146 printf_s("%d is greater than the most negative int\n", i); } int main() { check(-100); check(1); }

The documentation predicts the following outcome:

The expected second line, 1 is greater than the most negative int, is not printed because ((unsigned int)1) > 2147483648 is false.

If I build the program with gcc 4.9.2, both lines print.

If I build the program with Visual C++ 2012, or even 2015 Preview, only one line is printed (as was predicted).

So there is legitimacy to this warning — this is an area that Visual C++ is not compliant with the standard.

Maybe it’s because the standard has changed? I looked at the earliest version of the text available in the cplusplus github repo dating from late 2011, and that has the same rules as quoted above.

I went back further and found copies of the standard from 2003 and 1998, both of which state:

The type of an integer literal depends on its form, value, and suffix. If it is decimal and has no suffix, it has the first of these types in which its value can be represented: int, long int; if the value cannot be represented as a long int, the behavior is undefined.

So it’s a detail that was previously undefined, which means that the compiler is permitted to do whatever it wants. In this case, we’ll get a warning, but only if the programmer has asked for it using option /W2.

The documentation is accurate, and Visual C++ hasn’t kept up with changes in the standard. This shouldn’t be surprising.

Update: long long int was added to the standard as part of C++11. It appears that VC++ has had long long support since at least Visual Studio .NET 2003

So what?

This investigation arose from my reading of Visual C++ documentation in the context of what I knew of a recent draft of the C++ standard. It turns out that these two things are less connected than I had assumed. Unsurprisingly, the Visual C++ documentation describes Visual C++, not the standard.

While it would be nice if deviations from the standard were clearly marked in the documentation, and even nicer if the Visual C++ compiler was consistent with the ISO standard, the reality is that they are not and it is not.

One should always pay close attention to context, which happens to apply as much when reading about the C++ language as it does when writing C++ code.

Sridhar Dhanapalan: Twitter posts: 2015-01-26 to 2015-02-01

Mon, 2015-02-02 01:27

Colin Charles: MariaDB turns 5!

Mon, 2015-02-02 01:25

I stopped working on MySQL at Sun Microsystems in late 2009 (after a lengthy period of garden leave), to join Monty Program Ab, and was greatly anticipating a MariaDB release that we could take to market. The first GA release of MariaDB came out February 1 2010 – MariaDB 5.1.42. Today is MariaDB Server’s 5th birthday!

We didn’t even want to call it GA back then — we referred to it as a “stable” release. We didn’t make our own builds because we figured source code tarballs were good enough; so builds were made and hosted at OurDelta. It took some months (around August 2010) when we moved release notes to the Knowledgebase (which you’ll notice has moved from to its current location) from the old front page wiki install that we had at

I didn’t go to the first company meeting in Malaga due to having the chickenpox, so my first meeting was the one we did in Reykjavik, Iceland. We did it towards the end of February 2010, and planned it literally in a month – maybe a celebration that we brought 5.1 to market on time, and also to plan 5.2.

Speaking of companies, we were Monty Program Ab (professionally this quickly became MariaDB Services Ab), then SkySQL Ab (via merger), and finally MariaDB Corporation Ab (via re-branding). Shortly before the SkySQL Ab merger, we even have the MariaDB Foundation appear.

Anyway, what have we released? MariaDB 5.1, MariaDB 5.2, MariaDB 5.3, MariaDB 5.5, MariaDB 10.0, MariaDB Galera Cluster 5.5 & 10.0, a special MariaDB 5.5 with TokuDB build and a special MariaDB with FusionIO improvements build. To boot, we also have three client libraries (connectors, if you must): C, Java, and ODBC.

So 5 major server releases (7 if you count the Galera series), and we’re now working on MariaDB 10.1. I count 88 releases of the server across various versions (with breakdowns: 9 alphas, 11 betas, 7 release candidates and 61 GAs). We’ve had 23 Galera releases and 15 releases for the various client libraries.

We are shipping in all major Linux and BSD distributions. In many, we are even the default

This birthday is a nice time to look back at our achievements, but also to remind ourselves to not rest on our laurels and continue to focus on growth. The last sanctioned press release talks of over 2 million users globally. 

Thank you to all our users. Thank you to all the contributors and developers. Here’s to a lot more adoption, growth, releases and technology improvements!

Related posts:

  1. MariaDB 10 – XtraDB & InnoDB versions
  2. MariaDB 5.1.44 released
  3. MariaDB 10.0.5 storage engines – check the Linux packages

Binh Nguyen: Scripting, Electronic, and Musical Experimentation

Sun, 2015-02-01 18:47
A script that I created to save space. It works by using dd to reduce all relevant files to zero size. It contains comments to make it customisable and creates log files just in case something goes wrong.

Came across one of these during the week. I looked at it, did a bit more research though and found out that the battery was dying, that the company was in trouble, and that no spare parts were being manufactured which meant that you would have to retrofit your own battery from another source if it came down to it (I found out that a HTC ChaCha battery actually fits the physical dimensions required and actually has the characteristics to get the job done. Since, I don't like risking the possiblity of overheating I decided to pass on the purchase. I obviously thought about the chance of fitting an iPod battery in there as well which explains the links... Not enough information available online though regarding physical dimensions.

If you've ever wanted a more memorable username to link to your Facebook profile here's some help.

Was working an automatically deployed Amazon Web Services (AWS)/Unified Threat Management (UTM) device/node while I was working on the 'Cloud and Internet Security' report. Don't like leaving things unfinished. Relaunching the project until it's conclusion. It'll be interesting to see whether there is an actual market for these type of things whether for or not for profit. One curious thing is that a lot of information is actually more easily obtained via SNMP and other existing monitoring protocols...

The following is just a good reference guide...

drum and bass averages a BPM of 160-180

dubstep is around 140 BPM

House varies between 118 and 135 BPM

hip-hop is around 115 BPM

Concert marches are typically ~120 BPM.

Screamers are usually 130-150 BPM

Largo is 40-60 BPM

Larghetto is 60-66 BPM

Adagio is 66-76 BPM

Andante is 76-108 BPM

Moderato is 108-120 BPM

Allegro is 120-168 BPM

Presto is 168-200 BPM

Prestissimo is 200+ BPM (These last according to my Sabine Zipbeat.)

Have been doing more research on understanding the concept of 'layering' in song composition. The consensus seems to be that in electronic music (anything that features heavily synthesised sounds), you basically start from percussion/a drumline and then you work your way upwards, adding synths, basses, and so on (you can start the other way around to but if you have sufficient knowledge of percussion but it doesn't quite have that some feeling/sensation to it). You may even start with a pattern of single notes to create a melody and then base your lyrics around that based on what I've read. For this particular reason, I've been looking more into percussion and patterns that are peculiar to each particular (keywords "percussion music pdf" in Google). Some really interesing stuff. I didn't realise that notation in percussion could be 'customised' because there were so many different instruments that were possibly available? (you'll need this to understand the notation) (none of this will make any sense without an understanding of notation)

I took a big look at Dubstep because percussion is a core part of that stype of music.

------> Huge Guide to Producing Dubstep! <------ br="">

Dubstep Music Mastering tutorials/tips

Obviously, once you have a percussion part that is suitable to he genre of music you can begin to layer up. For instance, think about common elements/instruments/sounds. Layer based on genre, thinking about what you have, what you can adjust, what you can find, what you can create or imagine whether it is via software or hardware... One thing you should know, writing songs isn't really an incremental process. It's like some other things I've experienced in life. Once you hit a plateau and begin to understand the next step, you gain a whole bunch of extra bits and pieces. While you were previously only able to write half a song, now you can write three-quarters of it, or you suddently discover a way to take your sound quality to a completely new level.

You listen to enough music (out on the Internet, at concerts/bars/out on the streets, purchasing from retail, etc...) and you basically get the impression that a lot of what is released out there isn't actually all that great (the supposed idea behind the Apple Music Store) which is a good thing and a bad thing. Think in terms of marketing. You name a genre, there is likely a website that is dedicated to that particular style of music. Here's the problem though. Remember the premise of the Apple Music Store. Out of every album you purchase you're only going to like anywhere between one and a maximum of four songs on it (average based on my collection and personal experience). Factor in the fact that the barrier to entry for online music is much lower and you basically have very little chance of making it unless you can churn out consistently good music or else you create the 'song of your life' at some point along the line because that is basically what it will take to rise above the rabble.

The irony is this. By reading, taking courses, and so on... you end up with a baseline knowledge of how to compose but it also means that you may end up with some very formulaic songs. Watch for DJ's, producers, composers, engineers, etc... Just like a person's character there tend to be idiosyncracies in the sound that they produce (whether that may be down to preference, talent, equipment, etc...).

Some websites where you can preview some artists work (not including the usual places such as the Apple Store, etc...)

Nnote that what is House, Chilled, or Lounge over here doesn't necessarily mean the same thing in Asia, Europe, America, etc...

Some interesting artists/groups/shows I've come across recently...