Planet Linux Australia
Celebrating Australians & Kiwis in the Linux and Free/Open-Source community...

February 27, 2015

clintonroy

I went to bed really early last night due to my weird ongoing headache. I had a little help getting to sleep. This meant I basically had a full nights sleep by three o’clock. So I ended up walking to work stupidly early and arriving before five am. I still had some residual effects of the whatever-the-heck headache in the morning, but it’s gone by the evening.

The internet was really weird today, llamas and dresses for some reason.

Doing some conf stuff at The Edge. See three friends walk past on the walkway :)



Filed under: diary

Fried Rice Recipe

This is based on a family recipe, recipes online, and an interpretation by local restaurants that I used to frequent. While there are other alternative recipes that possibly taste better, I find that this is the quickest and easiest version.

- chinese sausage

- rice

- eggs

- onion

- garlic

- tomato sauce

- salt
- sugar

- soy sauce

- spring onion (optional)

 - dried shrimp (optional)

- shitake mushrooms (optional)

- lettuce (optional)

- fried shallot (optional)

- prawns (optional)

- Chinese BBQ Pork (also called char-siu/charsiu. See elsewhere on this blog for this recipe)



Sautee onion, garlic, chinese sausage in pan. Fry egg and then shred so that it can be mixed through rice more easily later on. Add rice and then add the rest of the diced/chopped ingredients. Add salt, sugar, soy sauce, etc... to taste. Garnish with shredded lettuce and fried shallots.



The following is what it looks like.

http://www.taste.com.au/recipes/1351/chinese+fried+rice

http://www.taste.com.au/recipes/15297/easy+fried+rice

http://www.taste.com.au/recipes/collections/fried+rice+recipes

A(nother) new era of WordPress

The other night at WordPress Sydney, I dropped a five minute brain-dump about some cool things going on in the web ecosystem that herald a new era of WordPress. That’s a decent enough excuse to blog for the first time in two years, right?

I became a WordPress user 9 years ago, not long after the impressive 2.0 release. I was a happy pybloxsom user, but WordPress 2.0 hit a sweet spot of convenience, ease of use, and compelling features. It was impossible to ignore: I signed up for Linode just so I could use WordPress. You’re reading the same blog on (almost) the same Linode, 9 years later!

WordPress 2.0

WordPress

Fast forward to 2015 and WordPress powers 20% of the web. It’s still here because it is a great product.

It’s a great product because it’s built by a vibrant, diverse Open Source community with a fantastic core team, that cares deeply about user experience, that mentors and empowers new contributors (and grooms or cajoles them to become leaders), and isn’t afraid of the ever-changing web.

Another reason for the long term success of WordPress is that it’s built on the unkillable cockroach of the world wide web: PHP.

I won’t expound on the deficiencies of PHP in this post. Suffice to say that WordPress has thrived on PHP’s ubiquity and ease of adoption, while suffering its mediocrity and recent (albeit now firmly interrupted) stagnation.

HHVM

The HipHop Virtual Machine is Facebook’s high performance PHP runtime. They started work on an alternative because PHP is… wait for it… not very efficient.

Unless you’ve goofed something up, the slowest part of your PHP-based application should be PHP itself. Other parts of your stack may exhibit scaling problems that affect response times, but in terms of raw performance, PHP is the piggy in the middle of your web server and data stores.

“But like I said, performance isn’t everything.” — Andi Gutmans

What is the practical implication of “performance isn’t everything”? Slow response times, unhappy users, more servers, increased power utilisation, climate change, and death.

Facebook’s project was released in 2010 as the HipHop compiler, which transpiled PHP code into C++ code, which was then compiled into a gigantic monolithic binary, HTTP server included.

In early 2013, HipHop was superseded by HHVM, a jitting virtual machine. It still seemed pretty weird and awkward on the surface, but by late 2013 the HHVM developers added support for FastCGI.

So today, deployment of HHVM looks and feels familiar to anyone who has used php-fpm.

Want to strap a rocket to your WordPress platform? I strongly recommend experimenting with HHVM, if not putting it into production… like, say, Wikipedia.

Hack

Not content with nuking PHP runtime stagnation, the HHVM developers decided to throw some dynamite in the pants of PHP language stagnation by announcing their new Hack language. It’s a bunch of incremental improvements to PHP, bringing modern features to the language in a familiar way.

Imagine you could get in a DeLorean, go back to 2005, and take care of PHP development properly. You’d end up with something like Hack.

Hack brings performance opportunities to the table that the current PHP language alone could not. You’ve heard all those JavaScript hipsters (hi!) extolling the virtues of asynchronous programming, right? Hack can do that, without what some describe as “callback hell”.

Asynchronous programming means you can do things while you wait. Such as… turning database rows into HTML while more database rows are coming down the wire. Which is pretty much what WordPress does. Among other things.

Based on the WordPress team’s conservative approach to PHP dependency updates, it’s unlikely we’ll see WordPress using Hack any time soon. But it has let the PHP community (and particularly Zend) taste the chill wind of irrelevance, so PHP is moving again.

WP-API

Much closer to WordPress itself, the big change on the horizon is WP-API, which turns your favourite publishing platform into a complete and easy-to-use publishing API.

If you’re not familiar with APIs, think about it this way: If you cut off all the user interface bits of WordPress, but kept all the commands for managing your data, and then made them really easy to use from other applications or web sites, you’d have a WordPress API.

But what’s the point of stripping off all the user interface bits of WordPress? Aren’t they the famously good bits? Well, yes. But you could make even better ones built on top of the API!

Today, there’s a huge amount of PHP code in WordPress dedicated to making the admin user interface so damn good. There’s also a lot of JavaScript code involved, making it nice and interactive in your browser.

With WP-API, you could get rid of all that PHP code, do less work on the server, and build the entire admin user interface in the browser with JavaScript. That might sound strange, but it’s how most modern web applications are built today. WordPress can adapt… again!

One of the things I love about WordPress is that you can make it look like anything you wish. Most of the sites I’ve worked on don’t look anything like traditional blogs. WP-API kicks that up a notch.

If you’ve ever built a theme, you’ll know about “the loop”. It’s the way WordPress exposes data to themes, in the form of a PHP API, and lots of themers find it frustrating. Instead of WordPress saying, “here are the posts you wanted, do what you like”, it makes you work within the loop API, which drip-feeds posts to you one at a time.

WP-API completely inverts that. You ask WordPress for the data you want — say, the first ten posts in May — then what you do with it, and how, is 100% up to you.

There’s way more potential for a WordPress API, though. A fully-featured mobile client, integration with legacy publishing systems at your newspaper, custom posting interfaces for specific kinds of users, etc., etc., etc.

The best bit is that WP-API is going to be part of WordPress. It’s a matter of “when”, not “if”, and core WordPress features are being built today with the WP-API merge in mind.

React

According to its creators, “React is a JavaScript library for building user interfaces”, but it’s way cooler than that. If you’re building complex, interactive interfaces (like, say, the admin back-end of a publishing platform), the React way of thinking is fireworks by the megaton.

For all the hype it enjoys today, Facebook launched React in 2013 to immense wailing and gnashing of teeth. It mixed HTML (presentation) and JavaScript (logic) in a way that reminded developers of the bad old days of PHP. They couldn’t see past it. Some still can’t. But that was always a facile distraction from the key ideas that inspired React.

The guts beneath most user interfaces, on the web or desktop, look like a mad scientist’s chemistry lab. Glass everywhere, weird stuff bubbling over a Bunsen burner at one end, an indecipherable, interdependent maze of piping, and dangerous chemical reactions… you’d probably lose a hand if you moved anything.

React is a champagne pyramid compared to the mad chemistry lab of traditional events and data-binding.

It stresses a one-way flow: Data goes in one end, user interface comes out the other. Data is transformed into interface definitions by components that represent logical chunks of your application, such as a tool bar, notification, or comment form.

Want to make a change? Instead of manipulating a specific part of the user interface, just change the data. The whole user interface will be rebuilt — sounds crazy, right? — but only the changes will be rendered.

The one-way data flow through logical components makes React-based code easy to read, easy to reason about, and cranks your web interface to Ludicrous Speed.

Other libraries and frameworks are already borrowing ideas, but based on adoption to date, number of related projects, and quality of maintenance, I reckon React itself will stick around too.

Connecting the Dots

It won’t happen overnight, but WP-API will dramatically reduce the amount of active PHP code in WordPress, starting with the admin back-end. It will become a JavaScript app that talks to the WP-API sooner than anyone suspects.

Front-end (read: theme) development will change at a slower pace, because rendering HTML on the server side is still the right thing to do for performance and search. But themers will have the option to ditch the traditional loop for an internal, non-remoting version of the WP-API.

There’ll be some mostly-dead code maintained for backwards compatibility (because that’s how the dev team rolls), but on the whole, the PHP side of WordPress will be a lean, mean, API-hosting machine.

Which means there’s going to be even more JavaScript involved. Reckon that’s going to be built the same way as today? Nuh-uh. One taste of React in front of WP-API, and I reckon the jQuery and Backbone era will be finished.

In WordPress itself, most of this will affect how the admin back-end is built, but we’ll also see some great WordPress-as-application examples in the near future. Think Parse-style app development, but with WordPress as the Open Source, self-hosted, user-controlled API services layer behind the scenes.

What about HHVM? You’re going to want your lean, mean, API-hosting machine to run fast and, in some cases, scale big. Unless the PHP team surprises everyone by embracing the JVM, I reckon the future looks more like HHVM than FPM (even with touted PHP 7 performance improvements).

Once HHVM is popular enough, having side-by-side PHP and Hack implementations of  core WordPress data grinding functions will begin to look attractive. If you’ve got MySQL on one side, a JSON consumer on the other, and asynchronous I/O available in between, you may as well do it efficiently. (Maybe PHP will adopt async/await. See you in 2020?)

End

Look, what I’m trying to say is that it’s a pretty good time to be caught up in the world of WordPress, isn’t it? :-)

Champagne Pyramid

February 26, 2015

Chicken Curry Recipe

This is based on a family recipe.

- chicken

- sugar

- salt

- pepper

- garlic

- curry

- onion

- carrot

- potato

- fish sauce

- coconut milk

- curry mix (powder or liquid)(optional)

- tomatoes (optional)



Marinate chicken in sugar/salt/pepper/garlic/curry powder mixture. Brown off chicken in pan. In the meantime, dice vegetables and put into microwave for short period to speed up cooking time. Put all vegetables into pan. Add coconut milk and possibly a curry mix (to boost the flavour) to pan to create sauce. Use fish sauce to taste. Goes well with white rice or else bread.



The following is what it looks like. 

http://www.taste.com.au/recipes/7378/coconut+chicken+curry

http://www.bbcgoodfood.com/recipes/1993658/homestyle-chicken-curry

Szechuan Pork Mince Recipe

This is based on recipes online and an interpretation by a local restaurants that I used to frequent. While there are other alternative recipes that possibly taste better, I find that this is the quickest and easiest version.  
- pork mince

- salt

- sugar

- pepper

- chilli bean paste

- rice wine

- soy sauce

- tofu (fried or fresh)

- soy sauce

- garlic (optional)

- ginger (optional)

- caramel (optional)

- green beans (optional)



Marinade pork mince in salt/sugar/pepper/rice wine/soy sauce. Fry off off mince in wok/pan. Add chilli bean taste. Add sugar, pepper, soy, caramel, etc... sauce to taste. Slice tofu, put into microwave for 30 seconds and drain liquid, and stir through sauce. Fry off green beans in the meantime and add into mixture if you want at this point. Water down sauce if it gets too thick.



Goes well with a asian chicken soup (use pre-made or make a quick one using carrots, celery, onion, chicken bones, water, pepper, salt, pepper, soy sauce, and fish sauce) and steamed white rice.



The following is what it looks like.

http://www.girlichef.com/2014/03/Szechuan-Green-Beans-with-Ground-Pork.html

http://www.cookinglight.com/food/in-season/green-bean-recipes/szechuan-green-beans-ground-pork

Vietnamese Grilled Lemongrass Pork Chop Recipe

This is based on recipes online and an interpretation by a korean/japanese fusion restaurant that I used to frequent. While there are other alternative recipe that possibly taste better, I find that this is the quickest and easiest version. 
- pork chops
- sugar

- garlic

- shallot or yellow onion
- lemongrass

- pepper

- soy sauce

- fish sauce
- rice wine vinegar

- oil


Coat pork with bicarbonate soda if desired (meat tenderiser) and then wash off in cold water. Create marinade sauce by starting with liquids and then adding sugar, soy sauce, garlic, etc... Marinade pork with sauce. Cook rice in meantime. Pan fry pork and then place under grill for quicker results or else place directly in grill/oven/bbq from start to finish. 

 
Goes well with a asian chicken soup (use pre-made or make a quick one using carrots, celery, onion, chicken bones, water, pepper, salt, pepper, soy sauce, and fish sauce) and steamed white rice, fried eggs, pickled carrot or cucumber (sliced finely and dressed with vinegar and sugar) and nuoc mam as a sauce.




The following is what it looks like. 

Chinese Roast (BBQ/Char-Siu) Pork Recipe

This is based on recipes online and an interpretation by local restaurants that I used to frequent. While there are other alternative recipe that possibly taste better, I find that this is the quickest and easiest version.
- pork

- soy sauce

- hoisin sauce

- Chinese rice cooking wine

- sugar

- garlic

- honey (optional)
- pepper (optional)
- oyster sauce (optional)

- star anise (optional)

- red food colouring (powder or liquid)
Split (if too large to fit into oven/grill) pork if required. Coat pork with bicarbonate soda if desired (meat tenderiser) and then wash off in cold water. Create marinade sauce by starting with hoy sin sauce and then adding sugar, soy sauce, garlic, etc... Marinade pork with sauce. Cook rice in meantime. Pan fry pork and then place under grill for quicker results or else place directly in grill/oven/bbq from start to finish. 


Goes well with a asian chicken soup (use pre-made or make a quick one using carrots, celery, onion, chicken bones, water, pepper, salt, pepper, soy sauce, and fish sauce) and steamed white rice.


The following is what it looks like.

Korean/Japanese Pork Bolgogi (BBQ Pork) Recipe

This is based on recipes online and an interpretation by a korean/japanese fusion restaurant that I used to frequent. While there are other alternative recipe that possibly taste better, I find that this is the quickest and easiest version.
- pork (purchase offcuts/pre-sliced pork belly in some stores for a more timely meal)

- bolgogi sauce

- sugar

- mirin or rice cooking wine

- crushed/diced garlic or powder

- soy sauce

- ginger (optional)

- pepper (optional)

- spring onion (optional)

- shichimi togarashi spice mix

http://en.wikipedia.org/wiki/Shichimi



Slice pork if required. Coat pork with bicarbonate soda if desired (meat tenderiser) and then wash off in cold water. Create marinade sauce by starting with bolgogi sauce and then adding sugar, soy sauce, garlic, ginger, shichimi togarashi spice mix, etc... Marinade pork with sauce. Cook rice in meantime. Pan fry pork and then place under grill for quicker results or else place directly in grill/oven/bbq from start to finish.


Serve with Miso soup, sweet potato fries, and rice. Garnish pork with shichimi togarashi spice mix and rice with soy sauce. Add kimchi to meal if desired.



You can change the meat to chicken or even beef if the sauce is changed to the appropiate one.



The following is what it looks like.

http://zenkimchi.com/featured/recipe-dwaeji-bulgogi-grilled-korean-spicy-pork/

http://crazykoreancooking.com/recipe/spicy-pork-bulgogi-spicy-marinated-pork

Simple Pasta Recipes

As the title states the following are a bunch of recipes that I sometimes use for pasta. This is being placed here for my own possible records and for others to use if so desired.


The point of these recipes is to achieve the best taste, in the quicket possible time, at the cheapest possible price. That's why the ingredients are somewhat non-traditional at times. Here's the other thing, it's obvious that they can be altered quickly and easily to suit other core ingredients. Don't be afraid to experiment.


Bacon and Mushroom Carbonara with Pasta

- white pasta sauce (can be any. We will modify to suit our tastes but most are roughly the same. Alfredo is often the easiest/closest to what we finally want though)

- mushrooms (buy them pre-sliced and you'll have the sauce done for this recipe done in no time)

- bacon (buy it pre-diced and you'll have the sauce done for this recipe done in no time)

- sugar (to taste)

- salt (to taste)
- soy sauce (to taste)

- pepper (to taste)
Fry off bacon then mushroom in a pan. Add pasta sauce. In the meantime, cook pasta with some salted water. Use sugar/salt/soy sauce to change sauce if too tart, sweet, etc... Garnish pasta and sauce with parmessan if desired.


Spaghetti Bolognese with Pasta

- pasatta or tomato based pasta sauce

- beef mince
- onion (optional)

- garlic (optional)

- fresh chilli or chilli flakes (to taste)
- salt (to taste)

- sugar (to taste)

- soy sauce (to taste) 
- pepper (to taste)
- tomato sauce (to taste)
Sautee onion, garlic, and chilli. Brown mince (remove excess liquid if desired. It will change the nature of the sauce if there is excess liquid). Add pasta sauce. In the meantime, cook pasta with some salted water. Use sugar/salt/pepper/soy sauce to change sauce if too tart, sweet, etc... Garnish pasta and sauce with parmessan if desired.


Spaghetti Bolognese (Asian Interpretation) with Pasta

- pasatta

- sliced beef
- onion (optional)

- garlic (optional)

- fresh chilli, sriracha chilli sauce, or chilli flakes (to taste)
- salt (to taste)

- sugar (to taste)

- soy sauce (to taste) 
- fish sauce (to taste) 
- pepper (to taste)
Sautee onion, garlic, and chilli. Brown mince (remove excess liquid if desired. It will change the nature of the sauce if there is excess liquid). Add pasta sauce. In the meantime, cook pasta with some salted water. Use sugar/salt/pepper/sriracha chilli sauce/soy sauce to change sauce if too tart, sweet, etc... Garnish pasta and sauce with parmessan if desired.


Seafood or Chill Prawn Tomato Sauce with Pasta

- pasatta or tomato based pasta sauce

- prawns or seafood

- onion (optional)

- garlic (optional)

- fresh chilli or chilli flakes (to taste)
- sriracha chilli sauce, sambal oelek, or chilli bean paste (to taste)
- salt (to taste)

- sugar (to taste)

- soy sauce (to taste) 
- pepper (to taste)
- tomato sauce (to taste)
- diced fresh tomato (optional)(buy pre-diced canned if pressed for time)

- olives (optional)(buy canned, pre-sliced, and drain holding liquid if pressed for time)
Sautee onion, garlic, and chilli. Sear seafood (remove excess liquid if desired. It will change the nature of the sauce if there is excess liquid). Add pasta sauce, and fresh tomato and olives (if desired). In the meantime, cook pasta with some salted water. Use sugar/salt/pepper/sriracha chilli sauce/soy sauce to change sauce if too tart, sweet, etc... Garnish pasta and sauce with parmessan if desired.


Pork Chops With White Sauce with Pasta

- pork chops

- cream
- tomato sauce
- garlic
- salt (to taste)

- sugar (to taste)

- soy sauce (to taste) 
- pepper (to taste)
- tomato sauce (to taste)
Sear pork chop with garlic to level desired (remove excess liquid if desired. It will change the nature of the sauce if there is excess liquid) and remove from pan. Add cream to deglaze pan and create sauce. In the meantime, cook pasta with some salted water. Use sugar/salt/pepper/tomato sauce/soy sauce to change sauce if too tart, sweet, etc... Garnish pasta and sauce with parmessan if desired.

clintonroy

Another weird day really.

The headache from yesterday did not improve, after physio and tablets. I went to bed early and woke up around 2am with my head still banging.

Work has a construction site across the road and it’s still very noisy at times, it was very difficult dealing with both a headache throbbing inside my head and the builders machines throbbing the outside of my head.

I had lunch offsite with H, who is always doing a million and one things and making me feel lazy.

I decided I didn’t want to deal with the headache and noise in the afternoon and headed home.



Filed under: diary

February 25, 2015

clintonroy

Bit of an odd day today.

Physio appointment in the morning, specifically looking at my right forearm, I was concerned I was seeing the initial stages of RSI, but the physio relieved those anxiety’s at least. They physio used dry needles to  settle down the muscle that was acting up, that was a first and quite an interesting experience.

Next up I went out to the UQ Market day to rendezvous with the UQCS club, to give them some pamphlets describing PyCon Australia  and Humbug a little. Most of our volunteers last year were UQ students, and I’d be delighted if that were the case again this year.

I’ve ended up with a headache at the end of the day, maybe because I didn’t have any coffee till after lunch?



Filed under: diary

clintonroy

Walked to work.

While doing some conference stuff, discovered that I hate printers. It took something like an hour to print out two pages of basic text and one image. Whatever pdf version every tool was spitting out, was not handled at all well by either printer.



Filed under: Uncategorized

clintonroy

Did not walk in today.

Did go and see _Juptier Ascending_ which I really quite liked. If the main baddy wasn’t so completely over the top, I would have quite enjoyed it.



Filed under: diary

February 24, 2015

Minimalist VHF Software Defined Radio Part 1

I think the future of radio hardware is a piece of wire connected to a GPIO pin.

The rest of the radio will be “gcc compilable” free software running on commodity CPU horsepower. I spoke about this at length in my recent linux.conf.au 2015 talk.

For the last two weeks I’ve been developing a simple radio architecture that is moving in that direction. The motivation is hardware to test our VHF FreeDV ideas. I’ve got to the point where I can tune 146 MHz VHF radio signals. The performance largely meets my design specs. The radio consists of about 20 off the shelf parts and a STM32F4 Discovery board with a Bill of Materials (BOM) cost of a few $. With another design pass it will be capable of good RF performance and also run FreeDV (or the mode of your choice). Completely stand alone – no PC.

Boo Baseband IQ, Chip-sets and FPGAs

I’m not a fan of baseband IQ designs, due to issues with phase and amplitude balance, and carrier feed through. This means development time and engineering pain. IQ signals should live only in software. Nor am I a fan of semi-closed chip-sets, FPGAs, or fixed point. More pain, development time, inaccessible tools, complex hardware designs, multilayer PCBs (even for prototypes), vendor lock-in, non-portable and proprietary issues.

I’m using the STM32F4, NE602 mixer, and Si5351 LO as that’s what I had laying about. However I’m not hung up on any of them. Please free free to subsitute your favourites. What I do care about is radio architectures that minimise hardware and maximise free software.

No chip-sets or lock-in here. The hardware is very simple so major changes can be made in minutes, and prototyped by anyone who can hold a soldering iron next to a piece of blank PCB.

Design Walk Through

I prototyped the radio on a few square inches of blank PCB:

In the foreground is the Open Radio that I’m using for the Si5351 LO.

High Q filters and MacGyver Filter Tuning

It took me a few days to get a decent 10.5MHz Band Pass Filter (BPF) working. Learned all about loaded and unload Q of various inductors, filters, and rigged up a way to sweep filters using some Si5351 code:



  float f;

  unsigned long long f_ull;

  

  si5351.init(SI5351_CRYSTAL_LOAD_8PF,25000000);

 

  while(1) {

    for (f=8.0; f<12; f += 0.1) {

      f_ull = f*100000000ULL;

      si5351.set_freq(f_ull, 0, SI5351_CLK0);

      delay(1000);

    }

  }



Using my oscilloscope’s FFT function with infinite persistence selected on the display I can get a good feel for the filter performance:

I needed a pretty high Q for the BPF so I tested several inductors in a parallel 10MHz LC tuned circuit. I swept the circuit with the Si5351 and measured the insertion loss at resonance. At resonance the only impedance is the effective resistance of the inductor Rl. This forms a voltage divider with the source impedance (1500 ohms in my case).

Inductor Insertion Loss (dB) Rl Xl Qu
6T 6mm air core 200nH 16 281 12.5 22.5
FT37-61 3T 1uH 4 2565 60 43
Jaycar moulded inductor 1uH 3 1500 60 85

I eventually settled on a T50-2 toroid, which could achieve an unloaded Q of over 100 at 10MHz. A two stage coupled resonator BPF gets 40dB attenuation at 10.5 +/- 1MHz. I’m still climbing the RF learning curve but this testing was fun and useful for me. A crystal filter designed for FM radios (16 kHz bandwidth) would also do the job.

Band pass Sampling

We are using the neat trick of band pass sampling. This is a bit confusing – how do we sample a 10.5MHz signal with a sample rate of 2MHz?

OK, say you want to sample a signal at frequency f with an ADC having a sample rate Fs. Turns out the ADC can’t tell the difference between between f, Fs+f, 2Fs+f etc.

Here’s an example of a f1 = 5 Hz and f2 = 105 Hz signal sampled at Fs = 100 Hz. Note how the sampled signal is exactly the same!

That’s why we usually put a low pass filter in front of the ADC, to limit the “images” that the ADC would otherwise sample. By using a band pass filter, we can intentionally select one of the images.

So the sample and hold of the ADC can also perform a frequency translation step, saving us the need for a mixer and second local oscillator. In practice, the ADC tends to be less sensitive when sampling higher frequencies. In the case of the STM32F4 the sample and hold is a RC circuit with a -3dB point of 7MHz. As a simple RC filter rolls off slowly it still has plenty of gain at 10.5MHz.

Software IIR Tuner

The big challenge with this architecture is how to handle 2 MS/s from the ADC on a uC that is only clocked at 168 MHz. That’s only 84 instructions per sample at 100% CPU load. In this small budget we need to “tune” the 500 kHz signal so that other adjacent signals are filtered out. Then re-sample down to 44 or even 8 kHz, hopefully with enough MIPs left over to run the FreeDV stack (a GMSK modem and Codec 2).

Here is the block diagram of the tuner, the C source code is in iir_tuner.c

The ADC sees our 10.5 MHz signal as a 500 kHz signal. We use an Infinite Impulse response (IIR) bandpass filter to stomp on everything else except the signal centred on 500 kHz. IIR just means it’s recursive (uses previous outputs). This filter is the exact DSP equivalent of a LC tuned circuit, as used in the analog BPF. Once filtered, we can then safely decimate the signal (reduce the sample rate) by a factor of 45 so our poor little uC can start breathing again. Much easier to process the signal at a sampling rate of 44.4 kHz (ish) than 2 MHz.

The IIR filter is implemented in C like this:



  y[n] = x[n] - 2*sqrt(beta1)*cos(w)*y[n-1] - beta1*y[n-2]

y[n] is the latest output, x[n] the input. The w is the centre frequency of the filter in radians (w = 2*pi*f/Fs) and beta1 is the “Q” of the filter, i.e. sets how sharp it is. If you set beta1 = 0.999 you get the filter we are using. Make beta1 = 1 you get an oscillator. If you make beta1 > 1 you get overflow errors.

As we are MIPs-shy we set w=pi/2, which is one quarter of the sampling frequency of 2 MHz, or 500 kHz. This makes cos(w) = 0 and the the whole filter reduces to:



   y[n] = x[n] - beta1*y[n-2]



This executes in about 12% of the STM32F4 without any particular effort in optimisation. Good enough.

The IIR filter does make the spectrum of the signal a little spikey in the middle so we use an equaliser to flatten it out again. This is a simple Finite Impulse Response (FIR) filter that is the exact inverse of the IIR filter, but scaled for the lower sampling rate:



   y[n] = x[n] + beta2*x[n-2]

I started by simulating the tuner in Octave (adcres.m), which produced these fine plots:

I set a spec of 40dB rejection of adjacent signals, which is a function of the IIR tuner and the analog 10.5 MHz BPF.

In the plots above there are 4 signals. First the “wanted” signals at f+8 and f-7kHz (6dB down), at the edges of the desired bandwidth we need for nasty old legacy analog FM. Then I popped in an interferer f-207kHz away. If we don’t filter well enough the interferer will get aliased into the pass band. You can see that in the lower plot – the f-207kHz signal now appears about 30dB down in the pass band. Hopefully the analog BPF will push it down a bit more in practice.

The fourth signal is an impulse that effectively has energy at all frequencies, and neatly shows us the shape of the filters that implement the tuner. That’s the continuous line in each plot (0dB on top plot). I set the level of this broadband signal to 40dB less than the f+8kHz pass band signal.

Results

Here’s an example output for a 146.0025 MHz CW signal at -30dBm and -60dBm:

These are FFTs of 10 seconds of output samples. The x axis spans about 4 kHz, and the y axis is in dB, but not relative to any reference level. The central line is at about 2 kHz, so we have down converted by 146.005MHz from the input.

There is no gain apart from the mixer. Still, we can see at the -30dBm level we have about 60dB between the wanted signal and the highest spurious lines. At the -60dBm level the signal drops 30dB as expected.

Even at -30dBm the ADC is only being driven at about 10% of it’s maximum level, so we have another 20dB of headroom available there. Some gain would let us detect signals down to an appropriate MDS.

The spurious spurs appear to be 500Hz (ish) apart, which is the ADC interrupt service routine frequency. This is probably some power supply noise which we can clean up, as I did in the SM1000 development. The current prototype construction is pretty rough, so there are bound to be some issues in a VHF plus high speed digital system.

I wrote a FM demodulator in C and ran it on the STM32F4, sampling the results. Here is a strong local signal and here is a sample of Mark, VK5QI from a repeater.

The sample from the repeater is a scratchy. The periodic noise I think is at the rate buffers are transferred up to the Host PC I used for collecting samples. However please bear in mind this is not a finished radio, there is currently only about 10dB gain in total, and no input BPF! Off air reception at this early stage was just a long shot I thought I’d try for fun. Gain is cheap, we can add that in the next pass.

The real innovation here is the extreme simplicity of the hardware.

Being an on-chip ADC I’m not expecting sparkling performance. However it might be “good enough” – especially given it comes for free and the low SNR requirements (about 6dB) we need for GMSK. We shall see.

I measured the adjacent channel rejection as -30dB at 1 MHz and -40dB at a 25 kHz offset. The 25 kHz figure is exactly as designed (40dB). The 1MHz offset figure is 10dB worse than designed for. This could be due to the ADC input impedance loading the BPF and reducing the Q.

For a real radio these figures need to be much better, so another design pass is required. However I don’t think there is any risk here, just engineering effort. This first pass has shown that the architecture works.

Next Steps

  1. Replace the NE602 mixer with one that can deliver good strong signal performance.
  2. Have another design pass to meet a reasonable spec, like MDS of -120dBm for 1200 bit/s GMSK, adjacent channel rejection of -60dB, 100dB blocking of signals at +/- 1MHz. Rationalise the sampling rates (e.g. uC clock, ADC clock) so we get exactly Fs=48kHz at the output of the tuner.
  3. Put a proper 144-148MHz BPF on the input of the mixer.
  4. See if we can tune 70cm signals as well, e.g. with a harmonic of the LO. The mixer is good to 500 MHz.
  5. Determine if the Si5351 is OK in terms of phase noise, spurious lines. We could just about use a crystal oscillator, and tune chunks of the 2M band using banks of BPFs and IIR tuner software. The ADC sample clock might also be causing problems, e.g. spectral lines or phase noise. We can test that by measuring the implementation loss of the demodulator for a given receiver input C/No.
  6. Work out a clever way to transmit a 1W constant envelope signal at VHF. Perhaps a similar architecture operating in reverse, i.e. DAC running at 2MHz, tune to the 10.5 MHz image, up convert that to VHF. However as linearity is not required, the mixer could be a XOR logic gate.
  7. With a different BPF ahead of the ADC can we tune HF signals directly (i.e. delete the NE602)? What sort of performance will it have? Will the ADC dynamic range limit adjacent signal rejection?

LUV Main March 2015 Meeting: CoderDojo / OpenPower and POWER8

Mar 3 2015 19:00
Mar 3 2015 21:00
Mar 3 2015 19:00
Mar 3 2015 21:00
Location: 

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

Speakers:

• Kieran Nolan and Martin Harris: CoderDojo

• Stewart Smith: OpenPower and POWER8

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 http://www.trinity.unimelb.edu.au/about/location/map

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:

http://www.metlinkmelbourne.com.au/route/view/725

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.

March 3, 2015 - 19:00

read more

February 23, 2015

APM:Plane 3.2.3 and 3.3.0beta1 released

The ArduPilot development team has a special treat for fixed wing users today - a double release!

  • A new stable 3.2.3 release with 3 fixes for 3.2.2
  • A new 3.3.0beta1 release with a lot more changes for wider testing

The 3.2.3 release is a minor update to 3.2.2 with 3 fixes:

  • A fixed to relative altitude drift when on the ground before takeoff
  • fixed TKOFF_THR_DELAY to be able to be up to 127 (for 12.7 seconds)
  • fixed INS_PRODUCT_ID (it was being reported as zero)

The most important fix is for the altitude drift, which could cause a poor altitude reference if your GPS altitude drifted while disarmed. The bug showed up as a significant drift in the reported relative altitude on the ground station when the aircraft was disarmed with the EKF enabled. The root cause of the bug was a disconnect between the EKF origin and the planes origin for relative altitudes. It only happened when the GPS altitude varied significantly while disarmed.



Start of 3.3.0 beta releases

The 3.3.0beta1 release has a lot more changes in it. The largest of the changes are internal, such as performance improvements in the NuttX operating system on Pixhawk, but given the size of the changes we want as many test users as possible.

Changes in 3.3.0beta1 include:

  • a new SerialManager library which gives much more flexible management of serial port assignment
  • changed the default FS_LONG_TIMEOUT to 5 seconds
  • raised default IMAX for roll/pitch to 3000
  • lowered default L1 navigation period to 20
  • new BRD_SBUS_OUT parameter to enable SBUS output on Pixhawk
  • large improvements to the internals of PX4Firmware/PX4NuttX for better performance
  • auto-formatting of microSD cards if they can't be mounted on boot (PX4/Pixhawk only)
  • a new PWM based driver for the PulsedLight Lidar to avoid issues with the I2C interface

I'm expecting a lot more changes will go into the 3.3.0 release as we still have a lot of pending pull requests. I will be doing regular beta updates as new patches go in (once they are flight tested).

Happy flying!

Oakey trig

I've got to say, this trig was disappointing. It was a lunch time walk, so a bit rushed, but the trig was just boring. Not particularly far, or particularly steep, or in a particularly interesting area. That said, it wasn't terrible. It just felt generic compared with other trigs I've walked to.



         



Interactive map for this route.



Tags for this post: blog pictures 20150223-oakey_trig photo canberra tuggeranong bushwalk trig_point

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



Comment

February 22, 2015

Twitter posts: 2015-02-16 to 2015-02-22

Geocaching

I've been trapped at home with either a sick child or a sick me for the last four or five days. I was starting to go a bit stir crazy, so I ducked out for some local geocaching. An enjoyable shortish walk around the nearby nature park.



Interactive map for this route.



Tags for this post: blog canberra tuggeranong bushwalk geocaching

Related posts: Another lunch time walk; Lunchtime geocaching; Big Monks; Confessions of a middle aged orienteering marker; Geocaching in the evening, the second; Geocaching in the evening



Comment

Error while running "git gc"

If you see errors like these while trying to do garbage collection on a git repository:

$ git gc
warning: reflog of 'refs/heads/synced/master' references pruned commits
warning: reflog of 'refs/heads/annex/direct/master' references pruned commits
warning: reflog of 'refs/heads/git-annex' references pruned commits
warning: reflog of 'refs/heads/master' references pruned commits
warning: reflog of 'HEAD' references pruned commits
error: Could not read a4909371f8d5a38316e140c11a2d127d554373c7
fatal: Failed to traverse parents of commit 334b7d05087ed036c1a3979bc09bcbe9e3897226
error: failed to run repack

then the reflog may be pointing to corrupt entries.

They can be purged by running this:

$ git reflog expire --all --stale-fix

Thanks to Joey Hess for pointing me in the right direction while debugging a git-annex problem.

clintonroy

Waking up at two for no discernible reason.

Breakfast with C was a better start to the morning.

Afternoon at The Edge doing conference stuff.



Filed under: diary

clintonroy

Coder Dojo down at Sunnybank Hill library. Quite exhausting after a bad night’s sleep!



Filed under: diary

clintonroy

Walked to work.

Caught up with a C after work, as a surprise thing rather than a planned thing.



Filed under: diary

clintonroy

A bit of a nothing apart from work day.



Filed under: diary

clintonroy

Walked to and from work, in an attempt to have a good night sleep tonight..

Tropical Cyclone Marcia has degenerated to a tropical low and is hovering around Brisbane today, making for a lot of rain. I quite like walking in the wet, as long as I’ve got my wet weather gear. Most of the work colleagues are cats and stayed home.

Conference planning later at The Edge.



Filed under: diary

clintonroy

Walked to and from work today.

Doing some conference planning later on.



Filed under: diary

February 21, 2015

Command and Control







ISBN: 9780141037912

LibraryThing

I finished this book a while ago and it appears that I forgot to write it up. This book is by the author of Fast Food Nation and it is just as good as his other book. The history of America's nuclear weapons and their security (or lack thereof) is as compelling as it is terrifying. I found this book hard to put down while reading it, and would recommend it to others.



Tags for this post: book eric_schlosser nuclear weapons safety

Related posts: Random linkage; Fast Food Nation; Starfish Prime; Why you should stand away from the car when the cop tells you to; Random fact for the day; More nuclear bunkers
Comment Recommend a book

Systemd joke

Since a few people seemed to like it on Twitter..

This item originally posted here:



Systemd joke

Forster trig

Its been too long since I've attempted a trig walk -- 15 days to be exact. That's mostly because I've been really busy at work these last couple of weeks. That said, it was time for another trig, and this one was a bit of an adventure.



Forster Trig is in the Bullen Nature Reserve and is one of the least urban trigs I've attempted so far, which is why this post is a bit more detailed than normal. Big Monks is probably the other trig walk most similar to this one. One of the challenges with this trig is that there is no track to the trig point. Reading John Evan's walk notes from his single assent of this trig, it seems that many people follow the 132kV power lines to the trig, but I consider this "cheating" as the power line is on private land and I didn't want to spend effort on getting permission to walk on someone's farm.



Instead, I followed the Kambah Pool to Cassurina Sands track, and then turned right to bush bash to the trig when I got reasonably close. There wasn't any formed track this way, so I don't think this is a common approach. On the map you'll notice a fence marked -- that's where I had to jump a barbed wire fence, which wasn't the best plan ever. On the way back down from the summit I found a vehicle track, and I'd recommend that others follow that route (the one on the map with two gates marked and some stairs). The stairs are interesting -- a previous walker has mounded stones on both sides of the fence to make it easier to cross.



Either way, its a bush bash up the hill itself, which is covered in reasonably dense spiky vegetation. You're going to want gaiters or long pants.



             



Interactive map for this route.



Tags for this post: blog pictures 20150220-forster_trig photo canberra tuggeranong bushwalk trig_point

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



Comment

February 18, 2015

Confessions of a middle aged orienteering marker

I was an orienteering marker for the kid's scout troop tonight -- I guess it could have been a trick, but I think they were genuine. The basic idea was I went and stood at where the mark on the map was, and then noted which kids found me. Nice little hill in MacArthur, with pleasant views. I think I've found a good place for a geocache as well.



Interactive map for this route.



Tags for this post: blog canberra bushwalk tuggeranong

Related posts: Big Monks; Geocaching; Point Hut Cross to Pine Island; A walk around Mount Stranger; Another lunch time walk; Forster trig



Comment

February 17, 2015

Little Black Mountain

I went on a walk on Monday with the Canberra Bushwalking Club up Little Black Mountain. Its a nice area and I mostly enjoyed the walk. I say mostly because the walk leader was quite un-welcoming. There was the lecture about emergency beacons, and then the lecture about how he's never been bitten by a snake. It was quite an odd experience. I think I might avoid that leader in the future.



Interactive map for this route.



Tags for this post: blog canberra bushwalk

Related posts: Big Monks; Geocaching; Confessions of a middle aged orienteering marker; Cooleman and Arawang Trigs; Point Hut Cross to Pine Island; A walk around Mount Stranger



Comment

clintonroy

Bus to work, after discovering that I had no spare clothes at work, somehow. That won’t be a problem for a couple of weeks now.

Horrible nights sleep meant I had to skip the new software engineering meetup.



Filed under: diary

February 16, 2015

Protected: Expanding Horizons

This content is password protected. To view it please enter your password below:

February 15, 2015

Twitter posts: 2015-02-09 to 2015-02-15

clintonroy

Felt rather ill after Humbug, I’m assuming it was the sushi place at Sunnybank yesterday.

Catching up on these here diary notes..



Filed under: diary

clintonroy

My first CoderDojo down at Sunnybank Hills.

I find the connection between shopping centres and libraries rather confusing, for former are loud, commercial and horrible places, very different to the latter.

I think the CoderDojo group went well, with some obvious room for improvement. Don’t try to lecture kids, give them a small, simple instruction and get them doing stuff immediately. One slide, one thing to try. If a kid has interest in a subject, don’t try to teach them something else, and that goes for both parents and teachers.

Have been asked to help with a Python course in the next few weeks..

Humbug later that night, some discussion with Russell around the sponsor prospectus.



Filed under: diary

clintonroy

Early morning walk to work.

A little bit of anatomy work later at The Edge.



Filed under: diary

clintonroy

Early morning walk to work.

Catch up meeting at The Edge, broached the subject of running the PyCon Australia workshops here again.

3D printing induction, which went quite well, except for running out of time. Tinker cad is quite a fun easy tool to get into. I attempted to design a key holder that my key could slide into, it ended up being too short, but the sliding mechanism was perfect.



Filed under: diary

clintonroy

Worky work. There’s a building site across the road from work, and the three jackhammers are *really* starting to get to me. It used to be the case that I could kind of ignore them until later in the day, and only then would they get on my nerves. Now, ten minutes after I get in and I’m grumpy.

A Humbug member organised an OpenBSD hackathon at UQ this week, and tonight they held a few talks about what they’d been working on. Some of it was interesting, just to get an insight of where BSD is. A lot of it was just complaining about other Open Source projects and standards committees not doing things in the correct way. They are trying to do something things to improve the situation, but I still feel like they’re being arrogant about much of it.



Filed under: diary

clintonroy

Waking up in Brisbane again.

After work I organised a bowling night for my birthday. It ended up working out quite well I think, except that the dj outside the venue and the constant music inside bore down on me.



Filed under: diary

The Vicious Circle of Documentation

Ever worked at a company (or on a codebase, or whatever) where it seemed like, no matter what the question was, the answer was written down somewhere you could easily find it? Most people haven’t, sadly, but they do exist, and I can assure you that it is an absolute pleasure.

On the other hand, practically everyone has experienced completely undocumented systems and processes, where knowledge is shared by word-of-mouth, or lost every time someone quits.

Why are there so many more undocumented systems than documented ones out there, and how can we cause more well-documented systems to exist? The answer isn’t “people are lazy”, and the solution is simple – though not easy.

Why Johnny Doesn’t Read

When someone needs to know something, they might go look for some documentation, or they might ask someone else or just guess wildly. The behaviour “look for documentation” is often reinforced negatively, by the result “documentation doesn’t exist”.

At the same time, the behaviours “ask someone” and “guess wildly” are positively reinforced, by the results “I get my question answered” and/or “at least I can get on with my work”. Over time, people optimise their behaviour by skipping the “look for documentation” step, and just go straight to asking other people (or guessing wildly).

Why Johnny Doesn’t Write

When someone writes documentation, they’re hoping that people will read it and not have to ask them questions in order to be productive and do the right thing. Hence, the behaviour “write documentation” is negatively reinforced by the results “I still get asked questions”, and “nobody does things the right way around here, dammit!”

Worse, though, is that there is very little positive reinforcement for the author: when someone does read the docs, and thus doesn’t ask a question, the author almost certainly doesn’t know they dodged a bullet. Similarly, when someone does things the right way, it’s unlikely that anyone will notice. It’s only the mistakes that catch the attention.

Given that the experience of writing documentation tends to skew towards the negative, it’s not surprising that eventually, the time spent writing documentation is reallocated to other, more utility-producing activities.

Death Spiral

The combination of these two situations is self-reinforcing. While a suitably motivated reader might start by strictly looking for documentation, or an author initially be enthused to always fully documenting their work, over time the “reflex” will be for readers to just go ask someone, because “there’s never any documentation!”, and for authors to not write documentation because “nobody bothers to read what I write anyway!”.

It is important to recognise that this iterative feedback loop is the “natural state” of the reader/author ecosystem, resulting in something akin to thermodynamic entropy. To avoid the system descending into chaos, energy needs to be constantly applied to keep the system in order.

The Solution

Effective methods for avoiding the vicious circle can be derived from the things that cause it. Change the forces that apply themselves to readers and authors, and they will behave differently.

On the reader’s side, the most effective way to encourage people to read documentation is for it to consistently exist. This means that those in control of a project or system mustn’t consider something “done” until the documentation is in a good state. Patches shouldn’t be landed, and releases shouldn’t be made, unless the documentation is altered to match the functional changes being made. Yes, this requires discipline, which is just a form of energy application to prevent entropic decay.

Writing documentation should be an explicit and well-understood part of somebody’s job description. Whoever is responsible for documentation needs to be given the time to do it properly. Writing well takes time and mental energy, and that time needs to be factored into the plans. Never forget that skimping on documentation, like short-changing QA or customer support, is a false economy that will cost more in the long term than it saves in the short term.

Even if the documentation exists, though, some people are going to tend towards asking people rather than consulting the documentation. This isn’t a moral failing on their part, but only happens when they believe that asking someone is more beneficial to them than going to the documentation. To change the behaviour, you need to change the belief.

You could change the belief by increasing the “cost” of asking. You could fire (or hellban) anyone who ever asks a question that is answered in the documentation. But you shouldn’t. You could yell “RTFM!” at everyone who asks a question. Thankfully that’s one acronym that’s falling out of favour.

Alternately, you can reduce the “cost” of getting the answer from the documentation. Possibly the largest single productivity boost for programmers, for example, has been the existence of Google. Whatever your problem, there’s a pretty good chance that a search or two will find a solution. For your private documentation, you probably don’t have the power of Google available, but decent full-text search systems are available. Use them.

Finally, authors would benefit from more positive reinforcement. If you find good documentation, let the author know! It requires a lot of effort (comparatively) to look up an author’s contact details and send them a nice e-mail. The “like” button is a more low-energy way of achieving a similar outcome – you click the button, and the author gets a warm, fuzzy feeling. If your internal documentation system doesn’t have some way to “close the loop” and let readers easily give authors a bit of kudos, fix it so it does.

Heck, even if authors just know that a page they wrote was loaded N times in the past week, that’s better than the current situation, in which deafening silence persists, punctuated by the occasional plaintive cry of “Hey, do you know how to…?”.

Do you have any other ideas for how to encourage readers to read, and for authors to write?

clintonroy

A very early start for the flight back to Brisbane.

Collapse into bed basically as soon as I get home.



Filed under: diary

clintonroy

Melbourne!

Went to a few of the exhibits that had caught my eye when looking for things to do in Melbourne.

The Walkley photography in journalism exhibit at the State Library of Victoria was a small set of high quality, moving photos.

Spent a large chunk of the day at the National Gallery of Victoria, practically everyone else was there to see some Paul Gaultier fashion thing, while I was there to see Alex Prager who does elaborate photography and film work. I was a little surprised that every exhibit, bar Gaultier, was free, so went through pretty much everything there, history, design, jewellery, art, modern.

A nice long dinner with F followed by a cup of tea at her place with M.



Filed under: diary

clintonroy

Melbourne!

Catch up and breakfast with F. Straight after went for a walk with F&M to do a little shopping..and to make sure I got on the right tram for my next appointment.

Coffee and tea and lunch with M followed by a park wedding critique.

Killing some time in a gift store, found a world map covered in scratchy material that you scratch off once you’ve travelled to a place, bought for a Brisbane friend who travels a lot.

Dinner with D&P, then laps of Melbourne looking for a parking spot to grab gelato. Way too many people for me to be comfortable down there.



Filed under: diary

clintonroy

Bringing more stuff into work for this evenings Melbourne flight.

Flew to Melbourne, it was kind of hot! I tried to use the several phone apps to figure out the trams, but despite google maps knowing I was in Melbourne, all the apps still thought I was in Brisbane. With help from a local friend got the tram to the hotel.



Filed under: diary

clintonroy

Bringing more stuff into work for the Melbourne trip, bus is easier than walking with all that.

Walked home from work.



Filed under: diary

clintonroy

Bringing stuff to work for the Melbourne trip.



Filed under: diary

clintonroy

Walked to work.

Lunch with a friend at her workplace, bumped into another friend who just started working there :)



Filed under: diary

February 14, 2015

All big UK parties committing to phase out coal | SMH

Related Posts:

  • No related posts

Why the modern world is bad for your brain | Guardian UK

February 13, 2015

lguest Learns PCI

With the 1.0 virtio standard finalized by the committee (though minor non-material corrections and clarifications are still trickling in), Michael Tsirkin did the heavy lifting of writing the Linux drivers (based partly on an early prototype of mine).

But I wanted an independent implementation to test: both because OASIS insists on multiple implementations before standard ratification, but also because I wanted to make sure the code which is about to go into the merge window works well.

Thus, I began the task of making lguest understand PCI.  Fortunately, the osdev wiki has an excellent introduction on how to talk PCI on an x86 machine.  It didn’t take me too long to get a successful PCI bus scan from the guest, and start about implementing the virtio parts.

The final part (over which I procrastinated for a week) was to step through the spec and document all the requirements in the lguest comments.  I also added checks that the guest driver was behaving sufficiently, but now it’s finally done.

It also resulted in a few minor patches, and some clarification patches for the spec.  No red flags, however, so I’m reasonably confident that 3.20 will have compliant 1.0 virtio support!

Save the Date — Linux Security Summit 2015, August 20-21, Seattle WA, USA

The Linux Security Summit for 2015 will be held across 20-21 August, in Seattle, WA, USA.  As with previous events, we’ll be co-located with LinuxCon.

Preliminary event details are available at the event site:

http://events.linuxfoundation.org/events/linux-security-summit

A CFP will be issued soon — stay tuned!

Thank you to Máirín Duffy, who created wonderful logos for the event.



Preliminary results from POWER8 optimized CRC32 for MySQL

So, Anton got some useful code working that I could patch into a MySQL server for testing purposes – a POWER8 optimized CRC32 implementation.

I went with a pretty stock MySQL 5.6.22 (one patch) with sysbench preparing a single 2GB table (10,000,000 rows). I then hacked up innochecksum so that it would only do the correct CRC32 (rather than trying each checksum type). Using the standard CRC32 algorithm it took around three seconds to verify all of the checksums. With a POWER8 optimized CRC32: 0.4-0.5 seconds. Useful speed-up!

I then ran sysbench read/write with 16 threads with oltp-table-size=10000 (on the larger table) to see if there would be an improvement in a “real world” workload. I got about 30% better performance on read/write operations!

Using perf to see where CPU was going, CPU time spent doing CRC32 calculations went down from ~2.5% to ~0.25%!

In theory, we should be able to get about 52GiB/sec of CRC32 out of a 4.1Ghz POWER8 core. I don’t think we’ll be hitting this in MySQL any time soon.

Give us another week or two and we’ll likely have a patch that’s ready to merge.

Initial benchmarks look promising though!

Amounts of RAM for devices so that I no longer have to worry about it.

I think this is my current “okay, I don’t have to worry about RAM” list currently:

  • Phone/Tablet: 2GB
  • Laptop: 8GB (although 8GB is better… 4GB is tolerable IFF SSD)
  • Development server: 16GB (32GB if shared) (emacs+gcc)
  • Box for testing things: 128GB (virtualization, databases)

This is… kind of mind bending.

February 12, 2015

More Scripting (Copy), Reaktor, and Musical Experimentation

I guess the following script is an iteration of another script that I wrote.


It's a script that I created to save space.  It creates a copy of the filesystem hierarchy at a remote location locally with zero sized files to save space. https://sites.google.com/site/dtbnguyen/create_empty_structure-1.00.zip


Have been trying to build more complex software synthesisers of late within Reaktor. To this I've had to learn some other stuff including how to mix sound sources from various sources using a mixer. You can download my experiment from here:


Added a new playlist called, 'Fun-17-Jan-15' to my YouTube profile.
https://www.youtube.com/channel/UCwVJG67iHHPbmBxuHVbyOlw/playlists



I've been wondering what the fuss regarding 'pinterest' was all about. Pretty pictures...


Apple's iTunes isn't the only way of synchronising your iPod. There are alternative third party applications as well.

http://www.makeuseof.com/tag/6-ways-sync-ipod-computer-itunes/

http://www.wikihow.com/Sync-Music-to-Your-iPod

http://sourceforge.net/projects/songbird.mirror/

https://amarok.kde.org/en/releases/2.7Win

http://www.ephpod.com/

http://www.yamipod.com/main/modules/downloads/

http://download.cnet.com/windows/ipod-backup/



If you've spent most of your life in the developed world or have had a relatively privileged upbringing some of the stuff that happens around the world is shocking. Even if you never make a donation just reading some of what happens out there puts things into perspective.

http://www.amnesty.org.au/



If you've ever used a non-persistent operating system there are often some incogruities. One of them are odd security difficulties. Do the following to get access to the web CUPS interface.

sudo usermod -aG lpadmin

sudo /etc/init.d/cups restart

https://help.ubuntu.com/community/PrintingCupsWebInterface



Sound stretching utility. Basically turns a standard sound file into a 'Soundscape'.

http://hypermammut.sourceforge.net/paulstretch/



If you've ever wanted free Internet access this is one option although there are limitations.

http://kindleworld.blogspot.com.au/p/countries-with-free-kindle-3g-access.html

http://forums.whirlpool.net.au/archive/1566378


If you've never worked with REX files (with Ableton and Recycle particularly) before the following may be of use to you.


Basically social networking/a website for musical collaboration.
https://www.facebook.com/blendhq

https://blend.io/

https://blend.io/dtbnguyen/



I've been struggling with how to work more easily (I prefer to work purely based on sound or based on memorisation but sometimes even this is not possible with the way some synthesisers are designed so having these removes another issue from the 'problem set') with scales under Ableton for a while now. These preset files should hopefully make things a bit easier.

https://www.ableton.com/en/blog/explore-new-scales-40-free-presets/

http://db.tt/aUn4TLYf

http://techsture.net/wp/?p=273

http://www.techsture.net/f/Scales.zip 


If you don't have the money for the Ableton Push there are lots of other options out there if you look carefully.


Other ways to make money as a musician while studying:
- offer to lease out studio
- offer to sell (produce/compose/teach) your skills
- buy/sell/lease out equipment at a profit

Geocaching in the evening, the second

I went geocaching while the kids were at scouts. Overall, a very successful evening. The first hour was a phone call with Tristan Goode, and what I learnt is I should call Tristan more because every call (based on a data set of one walk) is 5km.



Interactive map for this route.



Tags for this post: blog canberra tuggeranong geocaching

Related posts: Geocaching; Geocaching in the evening; Another lunch time walk; Lunchtime geocaching; Big Monks; Confessions of a middle aged orienteering marker



Comment

February 11, 2015

FUD from the Apache Foundation

At Bradley Kuhn’s talk at linux.conf.au this year, I was surprised and disappointed to see a slide quoting some FUD (in the traditional Fear-Uncertainty-Doubt model, a la the Microsoft Halloween documents from back in the day) about the GPL and the SFLC’s enforcement thereof. Here’s the quote:

This is not just a theoretical concern. As aggressively as the BSA protects the interests of its commercial members, [GPL enforcers] protect the GPL license in high-profile lawsuits against large corporations. [FSF] writes about their expansion of “active license enforcement”. So the cost of compliance with copyleft code can be even greater than the use of proprietary software, since an organization risks being forced to make the source code for their proprietary product public and available for anyone to use, free of charge. [...]

The Apache Advantage

However, not all open source licenses are copyleft license. A subset of open source licenses, generally called “permissive” licenses, are much more friendly for corporate use.

The quote/slide is available at about 20m into Bradley’s talk. A quick google reveals the source of this as a page from openoffice.org which is, indeed, an Apache project. The revision history for that page is available via subversion.

The elisions in Bradley’s quote changed “the Software Freedom Law Centre” (Bradley’s employer) to “GPL enforcers”, simplified the reference to the FSF, and dropped off a couple of sentences of qualification:

To mitigate this risk requires more employee education, more approval cycles, more internal audits and more worries. This is the increased cost of compliance when copyleft software is brought into an organization. This is not necessarily a bad thing. It is just the reality of using open source software under these licenses, and must be weighed in considered as one cost-driver among many.

I don’t really think any of that changes Bradley’s point: the Apache Foundation is really saying that the GPL and the SFLC is worse than the BSA and proprietary licenses.

After getting home from LCA, I thought it was worth writing to the Apache Foundation about this. I tried twice, on 22nd January and again on 1st February. I didn’t receive any response.

From: Anthony Towns

I was at Bradley Kuhn’s talk at linux.conf.au 2015 last week, and was struck by a quote he attributed to the Apache Software Foundation which compared the SFLC’s efforts to enforce GPL compliance with the BSA’s campaigns on software piracy, and then went on to call the SFLC worse. The remarks and slide can be found at approximately the 20 minute mark in the recording on youtube:

www.youtube.com/watch?v=-ItFjEG3LaA#t=19m52s

Doing a google search for the quote, I found a hit on the Apache OpenOffice.org website:

http://www.openoffice.org/why/why_compliance.html

which although it’s a (somewhat major) project rather than the apache site itself, doesn’t give any indication that it’s authored or authorised by someone other than the Apache Foundation.

I couldn’t find any indication via web.archive.org that that page predated Apache’s curation of the OpenOffice.org project (I wondered if it might have been something Oracle would write, rather than the Apache Foundation).​ Doing some more searching, I found a svn log that seems to indicate it’s primarily authored by Rob Weir with minor edits by Andrea Pescetti (who I understand is the VP for Apache OpenOffice):

​http://svn.apache.org/viewvc/openoffice/ooo-site/trunk/content/why/why_compliance.mdtext?view=log

Is this really an accurate representation of the Apache Foundation’s current stance on copyleft licenses, the GPL and the SFLC’s enforcement efforts?

Apparently we now live in a world where Microsoft happily releases GPL-licensed software, while the Apache Foundation happily spreads FUD against it.

Some more last minute Mini Sponsors

Thanks to Vroom Vroom Vroom, Student Flights and Dejan SEO for coming on Board with Mini Sponsorship Tickets:

VroomVroomVroom.com.au is an innovative website idea, comparing the prices of car rentals for web users. This save customers valuable time, replacing numerous phone calls with a few simple clicks on the internet. VroomVroomVroom is the leading web site offering this kind of service in Australia and continues to progress in making the car rental process more transparent, nationwide.

StudentFlights.com.au is a website geared towards budget travellers. With customers such as students, backpackers and under 25 year olds; the site remains relevant to a younger, more internet savvy and price conscious customers.

Dejan SEO is pleased to be able to give back to WordCamp by securing these three internet businesses to as mini sponsors.

Freenet Antennas came to our rescue to help out with getting Wireless access for the weekend, without them, we’d have had more Wireless problems over the weekend than we had!

More Mini Sponsors

Some more mini sponsors, Flight Centre, The Events Centre, Dejan SEO & 123SEO

As you probably already know, WordPress is the leading content management system in use on the web today. Dejan SEO consistently uses WordPress when managing clients’ web pages, finding it’s user friendly attributes an advantage when collaborating with clients. Dejan SEO, always keeping on top of the latest in WordPress, also utilises a broad range of Word Press plugins, even creating several WordPress plugins of their own, with more to come in the future. Dejan Petrovic, founder of Dejan SEO will be making a presentation for the Gold Coast weekend.

123 SEO is a sister brand of Dejan SEO, focusing on providing SEO services to smaller businesses. Realising a neglect of specialised services for small businesses in Australia at a time when such businesses should be focusing on internet marketing more than ever, 123 SEO was created to fill the gap, helping to help small businesses fulfil their potential.

Dejan SEO and 123 SEO are happy to sponsor the WordCamp Gold Coast weekend, being thoroughly impressed with the speakers and topics alike.

Flight Centre Australia’s website is and continues to be one of the strongest online booking agents for flights and holidays in the Australian market. Having a massive online presence, it is usually a web surfers’ first port of call when seeking out the latest flight deals and packages.

Flight Centre is proud to be involved with WordCamp, noting its significant influence on the Word Press community.

 

 

 

 

 

 

 

 

 

 

Thanks to our Mini Sponsors

A special thank you to our mini sponsors. We want to thank them for coming on board to help make WordCamp possible:

EscapeTravel.com.au is a provider of package holidays, cruise holidays and more. Having a strong online presence, their website delivers an experience that is pleasant for people seeking the cruises and flights on the web.

GetPrice.com.au is a free online service that serves to compare prices of products across Australia. Done in an independent fashion, without corporate influence of product placement, the site helps consumers determine the correct product for them and the cheapest way to obtain it.

CompareCourses.com.au was set up to give prospective students a chance to learn about courses they may want to do in the future in a way that let’s them peruse the many options available. Giving web searches a comparison between different TAFE institutes, Universities and online modes of delivering study, people wanting to start study are well informed of their choices before making a decision.

YourLocalMovers.com.au is a removalist service that has taken the initiative to handpick their staff members and hire them full-time, rather than using sub contractors. This unique quality makes them a rarity in the industry, actually offering staff reliable in house jobs and, making the business solid and passing on the reliability to customers.

Dejan SEO has enlisted the help of the above sites, who are long term business partners of Dejan SEO, as sponsors of the Word Camp Gold Coast event.

TheEventsCentre.com.au  was built and officially opened in 1980 by the former Landsborough Shire Council. In December 1999 Caloundra City Council set up a task-force to investigate the concept of the Caloundra Cultural Centre being transformed into a not for profit, separate legal entity, for the purpose of managing the Centre on Council’s behalf.

Sponsor: BigCommerce

We are very excited to announce another sponsor, BigCommerce, who has graciously helped us make WordCamp Gold Coast even better.

BigCommercer is an e-commerce platform that lets you setup your own online store. It also has over 25 built-in marketing tools to attract traffic and drive orders, such as the ability to sell on Facebook, list your products on eBay, rank in the search engines, push your products to Google Products and much, much more

BigCommerce makes it easy to setup your own professional online store – no coding or design experience required. Using our built-in marketing tools, you can also drive lots of traffic to your new online store from places like Facebook, Google, Yahoo, eBay, Shopzilla, iPhones, iPads and more.

BigCommerce have been in business since 2009 and have two offices – one in Austin, Texas and one in Sydney, Australia. They serve over 20,000 clients in over 65 countries and they are passionate about e-commerce and what it means to business owners.

Make sure you check out the BigCommerce website. If you have a blog with WordPress then why not compliment it with your own online store, powered by BigCommerce?

BigCommerce is currently hiring talented software engineers in their Surry Hills office in Sydney. Go to http://www.bigcomerce.com/careers.php if you’re interested!

WordCamp: What you need to know on the day

With WordCamp this weekend, here’s some handy tips you’ll need to know:

Schedule

  • Registration is @ 8:30am and the event will commence @ 9am sharp!
  • The speakers schedule and happiness bar schedule show the times that speakers and happiness volunteers are available over the course of the weekend

Getting there

Coming from South:

Coming from North:

  • Take the Robina Parkway exit (The 2nd Robina Town Centre exit)
  • Turn Right at the 2nd Roundabout
  • Follow the Bond University signs,
  • Map: http://g.co/maps/ssb9d

Coming from the Coastal areas (Via Gold Coast Hwy): http://g.co/maps/5ckfq

Once you’ve reached Bond University

  1. You’ll enter via 2 large roundabouts drive straight through the first
  2. Turn right at the 2nd (This is the Bus Drop off zone as well)
  3. Coming up on the right after 100m is a (well hidden to some) turn off
  4. It’s requested that you park in the 2nd parking lot here (PG3) as this is the closest to the venue, and is reserved for Events usage. (If it’s full, please just park in the vicinity, being a weekend there should be plenty of parking)

PLEASE NOTE: The Google Maps satellite imagery is out of date, There’s no signs of construction work to give you a reference point!

Parking

Please park in PG3 (or vicinity) parking lot.

Train / Bus

For those of you catching Public Transport (good on you!) there’s 2 bus routes which service Bond University, 748 (Robina) & 750 (Broadbeach/Main Beach), be sure that you’re looking at the weekend schedules. It’s suggested that you aim to arrive at Bond University at 8.30 if you’re arriving by bus, as the next bus arrives at 9.10, which is when the days schedule is starting!

Once you’ve arrived at Bond university, you’re only be a short walk away from the venue. To the right of the main entrance there’s a smaller shaded path heading into the uni along one side (not along the road!) which will take you to the venue (which is inside the second set of buildings you arrive at, just follow the signs to the “Cerum Theatre”. If you’re not sure of where you are, have a look for a directions sign, there are plenty, and most people you come across will be able to give you directions if need be!

If you’re staying at a hotel which has organised a bus for transport, please check with the hotel as to the departure times of your bus.

Taxi

Gold Coast Cabs: http://www.gccabs.com.au/ 131 008

Bond University is a well known location in the area, Your Cab driver should have no problems with finding the venue, Once you’re at the venue, Just follow the on-foot directions above for public transport.

Map of the venue

http://www.bond.edu.au/about-bond/campus-map/index.htm

Wifi

There’s Wifi available on the day, but it never hurts to supply your own, so please bring your own 3G wireless adapter if you have one!

We’ve arranged for there to be wireless available on the day (What would a Blogging conference be without internet access?), however, we’d ask that if you have access to a 3G connection, that you please bring it along to lighten the load on the wireless. We’ll have limited bandwidth unfortunately due to the number of you coming so every user counts! The Wireless Network and Pass-phrase will be available when you arrive (Ask at registration if you’re not sure!)

Didn’t get your ticket in time?

Don’t worry, Walk-in Tickets ARE available at the door, $50/day, Just show up (But be early and bring the correct change please!)

Early Bird Shirts

For those of you who have ordered a shirt, They’ll be available for pickup in the morning during registration. If you haven’t pre-ordered one, we have very limited number of extras available on a first-come first-serve basis, however, those who have pre-ordered will get priority.

If you’re not at registration in time, flag down one of the Organisers during morning tea and we’ll fix you up.

Food

We’ve arranged for morning tea and lunch to be provided on the Saturday and lunch and afternoon tea on the Sunday (Check the schedule for the options)

Morning Coffees

If you’d like your morning coffee, this will be available for purchase in the registration foyer on both mornings. If you’ve got special dietary requirements (and have noted on your ticket) we’ll be accommodating you. Check with one of the organisers on the day if you’re unsure of the deal.

After Party!

We’re all heading to Hotel CBD immediately after WordCamp on Saturday for a few beverages and some networking. Sunday speakers be careful how many beers you have because we need you in great form on Sunday…Saturday speakers, please drink away and be merry and all attendees can drink away to their hearts content! :)

Map: http://g.co/maps/6uhwk

Sponsor: GetShopped.org

We’re less than a week away from WordCamp Gold Coast 2011 and we have yet another fabulous sponsor to announce! Please welcome aboard GetShopped.org, who make the wonderful WP e-Commerce  plugin!

WP e-Commerce was the first WordPress e-Commerce Plugin to embrace Custom Post Types, making it the perfect choice for WordPress developers and theme creators alike!

WP e-Commerce is just like WordPress. From a user perspective, adding and managing your product catalogue couldn’t be easier. Use WordPress? Use the WP e-Commerce Plugin. The GetShopped crew takes every possible precaution to make sure WP e-Commerce is as secure as it can be.

WP e-Commerce is a free WordPress Shopping Cart Plugin that lets customers buy your products, services and digital downloads online. We make setting up a shop easy, and with over 1.3 Million downloads, we have unparalleled experience.

WP e-Commerce has the best Payment Gateway API out of all e-Commerce Plugins.


You can follow GetShopped on Twitter. You should also follow WordCamp Gold Coast on Twitter.

If you want to join the awesome line-up of WordCamp Gold Coast sponsors, apply now!

Speaker: Andy Henderson – SEO For WordPress Workshop

Andy Henderson

Andy Henderson

Andy Henderson has been involved with the web since the mid 1990s (yes, they even had search engines way back then), has run his own Web Consulting agency for the last 10 years, (specialising in Search Engine Optimisation for 8 years) and has been using WordPress for the last 6 years – so is very well qualified to present Sunday’s SEO for WordPress Workshop.

More recently Andy has co-founded a training organisation called In a Day – which focuses on Hands on Training Workshops – (with a BIG emphasis on Hands On), where students don’t just learn how to do stuff.. they actually do it – and at the end of the day have actually achieved something.

Their flagship workshop – Website In a Day – (which is ONLY possible because of WordPress), guides students through the process of Domain registration, Hosting setup, WordPress installation, Theme selection and customisation, and Content creation – so at the end of the day, they have a fully functioning website , that they have created themselves. Graduates also have the skills and experience to be able to continue improving and maintaining the sites themselves.

In a Day also offer WordPress Training/ Consulting, SEO, Marketing, and other courses aimed at dragging guiding small businesses into the world of the web.

The SEO for WordPress Workshop will include sections on SEO Friendly themes, and “must have” SEO Plugins (and how to configure them properly), but also includes tips, tricks and tactics for using standard WordPress functionality to maximise your online exposure.

The workshop topics include:

  •          SEO Fundamentals
  •          WordPress Out of the Box
  •          Basic Configuration
  •          SEO Friendly Themes
  •          SEO Plugins (of course)
  •          SEO Content Strategies

Speaker: Dan Petrovic – Google, Angry Panda & WordPress

Dan Petrovic

Dan Petrovic

Before you begin reading this in detail, take a moment and follow these steps:

  1. Open a new tab in your browser
  2. Go to Google
  3. Type in ‘SEO’
  4. Scroll down just a fraction and notice where DejanSEO is placed for ‘SEO

Based on that quick task you have verified results that Dan Petrovic is one of Australia’s most creative and leading SEO specialists. Dan is completely obsessed with search engine optimisation and all things that relate to Google’s wonderful algorithm, so much so that it only takes a trip to his office at Brisbane Technology Park to see the equations scribbled in whiteboard marker on the office walls! This is either the work of a genius…or a crazed madmen! I’d definitely say it’s a mix of 95% of the former and 5% of the latter.

Dans’ team at DEJAN SEO has consultants in Australia and Europe who all collaborate to deliver results for all kinds of businesses, from all over the world. Dan prefers an open and transparent approach to his work, choosing to involve clients at every step of their SEO campaign, which is why he is a known and trusted entity when it comes to SEO.

We asked Dan a few questions in the lead up to his talk which he has kindly answered below:

You’ve been working with SEO ever since your university days, what was it that caught your interest about search engines and their ranking algorithms?

I was going to be a scientist you know, but my creative drive lead me to study multimedia instead. I soon realised that SEO satisfies both the scientist and artist in me. It was an obvious choice when I think about it.

Ranking so incredibly highly for the term ‘SEO’ is an amazing achievement in itself, however I would imagine that remaining in that position would be an ongoing task. How much planning and monitoring takes place in your office to maintain your ranking?

Our strategy has always been to stay focused, work hard and share all the awesome things that we discover. My team and I spend a fraction of our time each day to write something of value. This is not only good for karma, but it also generates free links.

The HTML5 standard now allows multiple heading tags <H1> tags because of the new HTML5 <article> tags. Have you conducted any experiments with this to see if Google ranks HTML5 markup in a different way because of these new tags?

No. There are much more exciting experiments in our queue at the moment. Contrary to belief of many webmasters H tags are not as potent as they are believed to be. Although they do help a fraction, I recommend that you do not obsess over it and maintain a good semantic structure of your headings to benefit both search engines and users. Here’s a good example:

-H1: Vehicles

–H2: Cars

—H3: Sedans

—H3: SUVs

–H2: Motorbikes

—H3: Dirtbikes

—H3: Roadbikes

—-H4: Harley Davidson

—H3: Sportsbikes

—-H4: Suzuki

—–H5: SFV650

——H6: SFV650 Engine Specifications

What has been your favourite SEO campaign for a client and why?

How do you pick a favorite child? But if I had to highlight one cool company we worked with it would have to be Atlassian. I think those guys have a healthy corporate culture and support their products well. It’s good to work for a brand that others love.


You can follow Dan on Twitter. You should also follow WordCamp Gold Coast on Twitter.

Speaker: John Ford – How Automattic Works Across 20 Countries With 95 Employees

John Ford

John Ford

We’re very lucky to have another international speaker on our fabulous lineup for WordCamp Gold Coast 2011! John Ford can’t get enough of Australia so he’s back again from North Carolina, USA (via Budapest). John works for Automattic on VaultPress which is an invaluable WordPress plugin that provides real-time backups and security scanning of your WordPress site.

Automattic are a distributed company with employees all around the world. Running a distributed company is a rather unusual concept for anyone who isn’t running a business that revolves around technology and the internet. Automattic explain the way they work briefly on their website:

Everyone works from their own home or office, and we’re spread out all over the world — California, Texas, New York, Canada, Ireland, Japan, Bulgaria, Australia, and more. We track about 70% of our projects on P2-themed WordPress.com blogs, 25% on private IRC channels, and the rest on Skype or AIM. Because of the geographic variance, we’re active pretty much 24/7. You’ll set your own hours — what’s important is what gets done, not when or where it got done.

John will be giving us an insiders look into ‘How Things Work At Automattic’ and he’s summed up his talk as follows:

There are a number of benefits and challenges in a distributed work environment. At Automattic, the company behind WordPress.com, nearly 100 employees interact on a daily basis while living all around the world. The heart of the operation is fueled by constant communication and open source tools that help build awesome products. We’ll look at how the Automatticians work on a day-to-day basis, the tools they use, and ways to collaborate on projects when you’re not in the same location as your colleagues.

I know this is a session that I can’t wait to participate in as I’m a director in a WordPress based web design firm and I’ve always wondered how challenging it would be to manage a team of developers in remote locations.


You can follow John on Twitter. You should also follow WordCamp Gold Coast on Twitter.

Speaker: Timothy Ferguson, Running an Online Bookclub with WordPress

Timothy Ferguson

Timothy Ferguson

The wonderful thing about WordPress is that there are an infinite number of ways that the software can be used on the internet. WordCamp Gold Coast 2011 already has a number of amazing uses of the software ranging from: capturing memories right through to running a business based around WordPress!

One usage of WordPress that I’d never considered before is using WordPress to manage and online bookclub! Timothy Ferguson is one of the maintainers of the Gold Coast Library WordPress site gcbooks.wordpress.com. The Gold Coast Library setup their online book club as their staff training platform for Web 2.0 and are using WordPress as part of their new Online Branch strategy in 2012! Timothy and his team have also trained people on how to set up blogs and post on a regular basis.

Timothy has been an IT trainer with various library systems for fifteen years. In his session he’ll share experiences about building communities of readers online. Timothy even uses WordPress for his own freelance writing, (19 non-vanity published books so far) at timothyferguson.wordpress.com.

February 10, 2015

DrupalEight @ DrupalSouth

DrupalSouth

The number of critical issues holding up the release of Drupal 8 is now in the 50s. When will it be released? When it's ready. In the meantime there are some great opportunities around to start to get up to speed on what Drupal 8 is all about. Not least of which are 7 sessions at DrupalSouth in Melbourne next month.

Check them out:

First up, our keynote by Angela "webchick" Byron: Drupal 8: What you need to know

Since March 2011, the community has been hard at work on Drupal 8, which is currently undergoing active development. This revolutionary new release sports tons of improvements, and Angela Byron, Drupal core committer and long-time core developer, will lead you through the most important ones and how they'll impact your future site building endeavors.
 
Get answers to your frequently asked questions, learn about the changes coming down the pipe for clients, site builders, designers, and developers. You'll also find out more about the core development process, some tips and tricks on how the community works and how to contribute. Best of all, you'll take away some action steps on how you too can help make Drupal 8 the most awesome release of Drupal yet!
 
 

Lee "larowlan" Rowlands: Contributing to Core without losing your mind

Contributing to Drupal core can be satisfying, educational, overwhelming, frustrating and many more emotions, all in the one issue.
 
In this session I'll share some things I've learned from contributing to Drupal 7 and Drupal 8 core.
 
Topics covered
  • Negotiating issue queues
  • Finding your niche
  • Git and patch workflows
  • Dealing with politics and personalities
  • Not sweating details
  • Development approaches
  • Learning through reviews
  • Building networks and friendships
  • Automating your processes with phing
  • Automated tests

 

Justin "beejeebus" Randell: Best practices for configuration management in Drupal 8

Drupal 8 ships with a new Configuration Management System (CMI) that vastly improves on Drupal 7. A Drupal site's configuration can be expressed as a set of yaml files, and stored and managed just like source code.
 
In this talk I'll explore the powerful new CMI features, and present best practice workflows for managing configuration across Drupal 8 projects.
 
Trying to figure out how Drupal 8's new CMI features will work with your development team? Come to this presentation and we'll try to work it out.
 
 

Vladimir R and Josh Martin: Services in Drupal 8: using Drupal as data storage for mobile apps, web apps and websites

Web services is one of the official Drupal 8 incentives. Known as "headless Drupal", web services allow us to use Drupal as a data storage for applications and websites using various frameworks and technologies. 
 
In this presentation we will cover
  1. Introduction to web services. We will cover origins and types of web services, crucial componets and basics to get us going. We will look into the difference between Drupal 7 and Drupal 8 service setup and why it was crucial to get services into the core. 
  2. Examples of use. Modern web applications, mobile application and a lot of web sites are using web services for reusing exisitng application components or connecting existing applications together. For this presentation we've built mobile application, simple website and booking web app using Drupal 8 as well as various other libraries to demonstrate the practical use of web services.
  3. Drupal 8 services configuration. In this section we will cover how to get your hands dirty "under the hood" by configuring Drupal to work in examples from the previous section.

 

David Peterson: How Everything is Connected - Drupal 8 and Schema.org

The world is complex and is full of connections and relationships amongst "real things". The web is complex and full of links between text, video and images.
 
How do we bridge this divide between the real world and the online web? The Graph. The knowledge graph defines what is important to us and how it relates to the things we care about.
 
When you publish a Drupal site is built with rich Content Types and fields, relationships link things together in a way that provides unique value to your end users. Then this wonderful data is hidden away as soon you you save the page and HTML is generated. Schema.org integration within Drupal 8 uncovers these hidden "things" and relationships and describes them as rich data within your HTML. 
 
So, that sounds great, right? But why would you want to do this? Schema.org was created by the largest search engines in the world Google, Bing, Yahoo and Yandex. They are consuming this data to provide end users with a much richer and more relevant search experience. Google has stated that 15% of all websites it has indexed use schema.org. That adds up to ... A LOT :) 
 
SEO is no longer a dark art. SEO is about encoding the rich relationships and entities from your website and sharing them to the wider world.
 
Come to this session and hear about this wonderful new and interconnected world -- the Knowledge Graph.
 

Magda Kostrzewa: How to create a custom theme in Drupal 8

In this session we will look at some of the new features that are in Drupal 8 theming as well as demonstrate how to create and configure a Drupal 8 sub-theme from Classy, the new core theme in Drupal 8.

This session is for current Drupal themers who want a glimpse into how to get started creating your own sub-theme in Drupal 8 as well as those new to Drupal who want an introduction to Drupal 8 theming.

 

Jibran Ijaz: Create your own bespoke Views Style Plugins for Drupal 8

Views in Drupal Core was the first initiative to reach feature completion in Drupal 8. Like all other core systems Views has embraced PSR , Plugin Systems, Annotations and ConfigEntities.
 
This session is about how Drupal 8 makes it easy and painless to create a ViewsStyle Plugin.
 
We'll learn:
  • How to add a custom theme to a plugin.
  • How to add a display option to a plugin.
  • How to use configuration options to customise the HTML output.
  • We'll also take a look into some contributed views style plugin modules.

 

Grab a ticket now!

LUV Beginners February Meeting: MythTV party

Feb 21 2015 12:30
Feb 21 2015 16:30
Feb 21 2015 12:30
Feb 21 2015 16:30
Location: 

South Yarra (RSVP for address)

PLEASE NOTE CHANGED VENUE. The March meeting will return to the usual venue.

LUV committee member Deb Henry will be hosting a follow-up to her August 2014 talk on MythTV at her home in South Yarra, where she will demonstrate her system and talk about remote frontends, remote control setup and some plugins for MythTV. Please RSVP on 0409 338 182 for the address, limited to no more than 20 attendees. Bring finger food and drink if convenient.

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 21, 2015 - 12:30

read more

February 09, 2015

APM:Plane 3.2.2 released

The Ardupilot development team has released version 3.2.2 of APM:Plane. This is a bugfix release for some important bugs found by users of the 3.2.1 release.



The changes in this release are:

  • fixed a bug that could cause short term loss of RC control with some receiver systems and configurations
  • allowed for shorter sync pulse widths for PPM-SUM receivers on APM1 and APM2
  • fixed HIL mode altitude
The most important bug fix is the one for short term loss of RC control. This is a very long standing bug which didn't have a noticeable impact for most people, but could cause loss of RC control for around 1 or 2 seconds for some people in certain circumstances.



The bug was in the the AP_HAL RCInput API. Each HAL backend has a flag that says whether there is a new RC input frame available. That flag was cleared by the read() method (typically hal.rcin->read()). Callers

would check for new input by checking the boolean hal.rcin->new_input() function.



The problem was that read() was called from multiple places. Normally this is fine as reads from other than the main radio input loop happen before the other reads, but if the timing of the new radio frame

exactly matched the loop frequency then a read from another place could clear the new_input flag and we would not see the new RC input frame. If that happened enough times we would go into a short term RC

failsafe and ignore RC inputs, even in manual mode.



The fix was very simple - it is the new_input() function itself that should clear the flag, not read().



Many thanks to MarkM for helping us track down this bug by providing us with sufficient detail on how to reproduce it. In Marks case his OpenLRSng configuration happened to produce exactly the worst case timing needed to reproduce the issue. Once I copied his OpenLRS settings to my TX/RX I was able to reproduce the problem and it was easy to find and fix.



A number of users have reported occasional glitches in manual control where servos pause for short periods in past releases. It is likely that some of those issues were caused by this bug. The dev team would like to apologize for taking so long to track down this bug!



The other main change was also related to RC input. Some receivers use a PPM-SUM sync pulse width shorter than what the APM1/APM2 code was setup to handle. The OpenLRSng default sync pulse width is 3000 microseconds, but the APM1/APM2 code was written for a minimum sync pulse width of 4000 microseconds. For this release I have changed the APM1/APM2 driver to accept a sync pulse width down to 2700 microseconds.
This release also fixes HIL mode altitude. I am hoping this will be the last release where you need to have a separate firmware for HIL mode and normal flight mode. In the future we will have a HIL_MODE parameter, and if that is set at boot then the board will run in HIL mode. That will make it easier to run HIL on all boards (eg. Pixhawk, NavIO, Erle etc) without having to recompile and reload firmware.
Happy flying!

February 08, 2015

Netgear CG3100D-2 investigation

The Netgear CG3100D-2 is the default cable-modem you get for Telstra Cable, at least at one time. Having retired it after changing service providers, I wanted to see if it was somewhat able to be re-purposed.

In short it's hackability is low.

First thing was to check out the Netgear Open Source page to see if the source had anything interesting. There is some source, but honestly when you dig into the platform code and see things like kernel/linux/arch/mips/bcm963xx/setup.c:

/***************************************************************************
 * C++ New and delete operator functions
 ***************************************************************************/

/* void *operator new(unsigned int sz) */
void *_Znwj(unsigned int sz)
{
    return( kmalloc(sz, GFP_KERNEL) );
}

/* void *operator new[](unsigned int sz)*/
void *_Znaj(unsigned int sz)
{
return( kmalloc(sz, GFP_KERNEL) );
}
...

there's a bit of a red-flag that this is not the cleanest code in the world (I guess it interfaces with some sort of cross-platform SDK written in some sort of C++).

So next we can open it up, where it turns out there are two separate UARTs as shown in the following image.

UART connections on Netgear CG3100D 2BPAUS

One of these is for the bootloader and eCOS environment, and the other seems to be connected to the Linux side.

A copy of the boot-logs for the bootloader and eCOS and Linux don't show anything particuarly interesting. The Linux boot does identify itself as Linux version 2.6.30-V2.06.05u while the available source lists its version as 2.6.30-1.0.5.83.mp2 so it's questionable if the source matches whatever firmware has made it onto the modem.

We do see that this identifies as a BCM338332 which seems to be one of the many sub-models of the BCM3383 SoC cable-modem solution. There is an OpenWrt wiki page that indicates support is limited.

Both Linux and eCos boot to a login prompt where all the usual default combinations of login/passwords fail. So my next thought was to try and get to the firmware via the bootloader, which has a simple interface

BCM338332 TP0 346890
Reset Switch - Low GPIO-18 50ms
MemSize:            128 M
Chip ID:     BCM3383G-B0

BootLoader Version: 2.4.0alpha14R6T Pre-release Gnu spiboot dual-flash reduced DDR drive linux
Build Date: Mar 24 2012
Build Time: 14:04:50
SPI flash ID 0x012018, size 16MB, block size 64KB, write buffer 256, flags 0x0
Dual flash detected.  Size is 32MB.
parameter offset is 49944

Signature/PID: a0e8


Image 1 Program Header:
   Signature: a0e8
     Control: 0005
   Major Rev: 0003
   Minor Rev: 0000
  Build Time: 2013/4/18 04:01:11 Z
 File Length: 3098751 bytes
Load Address: 80004000
    Filename: CG3100D_2BPAUS_V2.06.02u_130418.bin
         HCS: 1e83
         CRC: b95f4172

Found image 1 at offset 20000

Image 2 Program Header:
   Signature: a0e8
     Control: 0005
   Major Rev: 0003
   Minor Rev: 0000
  Build Time: 2013/10/17 02:33:29 Z
 File Length: 3098198 bytes
Load Address: 80004000
    Filename: CG3100D_2BPAUS_V2.06.05u_131017.bin
         HCS: 2277
         CRC: a6c0fd23

Found image 2 at offset 800000

Image 3 Program Header:
   Signature: a0e8
     Control: 0105
   Major Rev: 0002
   Minor Rev: 0017
  Build Time: 2013/10/17 02:22:30 Z
 File Length: 8277924 bytes
Load Address: 84010000
    Filename: CG3100D_2BPAUS_K2630V2.06.05u_131017.bin
         HCS: 157e
         CRC: 57bb0175

Found image 3 at offset 1000000

Enter '1', '2', or 'p' within 2 seconds or take default...
. .

Board IP Address  [0.0.0.0]:           192.168.2.10
Board IP Mask     [255.255.255.0]:
Board IP Gateway  [0.0.0.0]:
Board MAC Address [00:10:18:ff:ff:ff]:

Internal/External phy? (e/i/a)[a]
Switch detected: 53125
ProbePhy: Found PHY 0, MDIO on MAC 0, data on MAC 0
Using GMAC0, phy 0

Enet link up: 1G full


Main Menu:
==========
  b) Boot from flash
  g) Download and run from RAM
  d) Download and save to flash
  e) Erase flash sector
  m) Set mode
  s) Store bootloader parameters to flash
  i) Re-init ethernet
  p) Print flash partition map
  r) Read memory
  w) Write memory
  j) Jump to arbitrary address
  X) Erase all of flash except the bootloader
  z) Reset

Flash Partition information:

Name           Size           Offset
=====================================
bootloader   0x00010000     0x00000000
image1       0x007d0000     0x00020000
image2       0x007c0000     0x00800000
linux        0x00800000     0x01000000
linuxapps    0x00600000     0x01800000
permnv       0x00010000     0x00010000
dhtml        0x00200000     0x01e00000
dynnv        0x00040000     0x00fc0000
vennv        0x00010000     0x007f0000

The "read memory" seems to give you one byte at a time and I'm not certain it actually works. So I think the next step is solder some leads to dump out the firmware from the flash-chip directly, which is on the underside of the board. At that point, I imagine the passwords would be easily found in the image and you might then be able to leverage this into some sort of further hackability.

If you want a challenge and have a lot of time on your hands, this might be your platform — but practically I think the best place for this is the recycling bin.

Twitter posts: 2015-02-02 to 2015-02-08

Tuggeranong Stone Wall

Its not every day that your walk is to a 140 year old stone wall that you've been driving past for years without even knowing its there. That however was today's walk, inspired by a walk post by John Evans. I really enjoyed this walk, and it was a good length too. It would have been nice to return by a different route though, although such a thing was not obvious to me while doing the walk.



     



Interactive map for this route.



Tags for this post: blog pictures 20150208-tugg_stone_wall photo canberra tuggeranong bushwalk

Related posts: Big Monks; Geocaching; Confessions of a middle aged orienteering marker; Point Hut Cross to Pine Island; A walk around Mount Stranger; Another lunch time walk



Comment

February 07, 2015

Point Hut Crossing to Pine Island

Andrew and I decided to walk from Point Hut Crossing (near our house) to Pine Island yesterday. Its a nice walk, about 4km and mostly flat with a track the whole way. We even found some geocaches along the way. I think this route would be a good one for cubs.



     



Interactive map for this route.



Tags for this post: blog pictures 20150207-point_hut_pine_island photo canberra tuggeranong bushwalk

Related posts: Big Monks; Geocaching; Confessions of a middle aged orienteering marker; A walk around Mount Stranger; Another lunch time walk; Forster trig



Comment

Korora 21 available

It has taken a few weeks longer than we had hoped, but Korora 21 images are now available. I strongly recommend downloading with BitTorrent if you can.

The 21 beta was quite successful and we were able to make some minor changes to help improve the overall experience. Users who are currently on the beta need not re-install, updates are provided via the package manager. Users who are on 20 may consider upgrading, however this is not necessary as version 20 is supported for another 6 months or so.

MySQL-next = Drizzle 5 years ago?

With JSON functionality, alternate protocols (HTTP, memcache), a move towards saner defaults and crash safety, pluggable logging etc it really looks like MySQL is following what we did in Drizzle years ago, which is great!

February 06, 2015

hacksa2015

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 linux.conf.au 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 web.py)  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!

Pizza!

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!

 

Linux.conf.au 2015 : working backwards from the end… and things that go bang!

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:

The rockets launch from the middle of a paddock.

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 linux.conf.au’ers Augur posted some other vides to YouTube: https://www.youtube.com/channel/UCcFwcKbYU3Q66PIUck_Haew

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…

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.

February 05, 2015

Two trigs and a first attempt at finding Westlake

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



Comment

APM:Plane 3.2.1 released

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 http://uavcan.org 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!

Codec 2 and GMSK over VHF Radio Part 1

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.

Results

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 I think 53dB FM is sounding better (although still noisy), so the cross over point is perhaps around 48dB, which suggests 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 as well, 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: Attaching Multiple Network Interfaces and Floating IPs to OpenStack Instances with Neutron

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.

Assumptions:

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 192.168.71.0/24  |
+--------------------------------------+--------------+-------------------------------------------------------+

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": "192.168.71.180"} |
| 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                 | 192.168.71.180, 192.168.71.181

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 192.168.71.181
fa:46:7e:21:4f:f3 | {"subnet_id": "8f987932-48ee-4262-8b44-0c910512a387", "ip_address": "192.168.71.181"} |
% 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 | 192.168.71.180   | 999.999.999.124     |         |
| f983b10d-454c-4c19-8f65-d9b96c4d7aa6 | 192.168.71.181   | 999.999.999.125     |         |
+--------------------------------------+------------------+---------------------+---------+

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

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

You're done :-)

Scientists pledge to increase interference with the Church | The Guardian

Related Posts:

  • No related posts

For people who use the web

Demonstrates relationships for different components of the web accessibility guidelines. Described in detail at http://www.w3.org/WAI/intro/components-desc#guide

 

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. 

February 04, 2015

February 03, 2015

clintonroy

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

clintonroy

Did a few conference things.

Caught up with a dear friend for dinner.



Filed under: diary

clintonroy

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

February 02, 2015

What’s the difference between 0xffffffff and 0xffffffffu?

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:

Building OpenPower firmware for use in POWER8 Simulator

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 git@github.com:open-power/op-build.git
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!

Big Monks

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



Comment

LUV Main February 2015 Meeting: R / linux.conf.au reports

Feb 3 2015 19:00
Feb 3 2015 21:00
Feb 3 2015 19:00
Feb 3 2015 21:00
Location: 

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

Speakers:

• Andrew Robinson, R: A Statistical Package on Linux

• Reports and video from linux.conf.au 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 http://www.trinity.unimelb.edu.au/about/location/map

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:

http://www.metlinkmelbourne.com.au/route/view/725

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

February 01, 2015

Standards vs Compilers: Warning C4146

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.

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

MariaDB turns 5!

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 kb.askmonty.org to its current location) from the old front page wiki install that we had at askmonty.org.

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!

Memorable Quotes - Part 9



- " The pursuit of normality is the ultimate sacrifice of potential. " -- Faith Jegede

http://www.autismspectrum.org.au/content/services-location
- "Pride is stupid, but it is necessary"

Jacques Villeneuve is proud to be able to run flat-out through Eau Rouge, 2005
- "The bottom line is that we need a global financial system that supports stability and growth," she said.

"In too many cases -- from the United States in 2008 to Cyprus today -- we have seen what happens when a banking sector chooses the quick buck over the lasting benefit, backing a business model that ultimately destabilizes the economy."

http://au.news.yahoo.com/latest/a/-/article/16673224/lagarde-says-some-eurozone-banks-may-need-to-close/

- There can be slain

No sacrifice to God more acceptable

Than an unjust and wicked King

-- Seneca, "Hercules Furens"

http://opinionator.blogs.nytimes.com/2013/05/11/in-syria-and-beyond-the-tyrant-as-target/
- "What we saw from that is if you're talking about everything all the time, it's harder for the public to distinguish the things that are most important," he said.

http://www.nytimes.com/2013/07/16/us/politics/in-second-term-obama-is-seen-as-using-hidden-hand-approach.html?hp
- There's a Chinese saying, "with a new king comes new followers".

- As Karl Marx was one of the earliest to point out, economics (though so much less interesting) is far more important than politics.



Marx considered all political events as epiphenomena. He viewed great men as blind instruments of irresistible forces which they themselves could hardly comprehend.



The Marxist vision of society has been disproved many times, always at epic human cost. However, his doctrine that productive forces propel history has stood the test of time - and is invaluable for an understanding of the current predicament of the European Union.

http://www.telegraph.co.uk/news/worldnews/europe/eu/11286161/The-euro-is-heading-for-disaster-what-luck-for-David-Cameron.html

- "I use Sylenth, one compressor, Ableton Live and its basic effects. I like to keep it super simple. It's actually pretty boring but it works for me and it keeps me making music."

https://illmethodology.com/2014/06/flume-dont-need-gear-via-musicradar/
- H.P. Lovecraft

"The oldest and strongest emotion of mankind is fear, and the oldest and strongest kind of fear is fear of the unknown"

- H.P. Lovecraft, Supernatural Horror in Literature

...

"Do we really want to be rid of our resentments, our anger, our fear? Many of us cling to our fears, doubts, self-loathing or hatred because there is a certain distorted security in familiar pain. It seems safer to embrace what we know than to let go of it for fear of the unknown.

(Narcotics Anonymous Book/page 33)"

- Narcotics Anonymous

...

"Sometimes painfully lost people can teach us lessons that we didn't think we needed to know, or be reminded of---the more history changes, the more it stays the same."

- Shannon L. Alder

http://www.goodreads.com/quotes/tag/fear-of-unknown

- C. JoyBell C.

"You will find that it is necessary to let things go; simply for the reason that they are heavy. So let them go, let go of them. I tie no weights to my ankles."

- C. JoyBell C.



C. JoyBell C.

"People have to forgive. We don't have to like them, we don't have to be friends with them, we don't have to send them hearts in text messages, but we have to forgive them, to overlook, to forget. Because if we don't we are tying rocks to our feet, too much for our wings to carry!"

- C. JoyBell C.



Marvin J. Ashton

"Be the one who nurtures and builds. Be the one who has an understanding and a forgiving heart one who looks for the best in people. Leave people better than you found them."

- Marvin J. Ashton 
http://www.goodreads.com/quotes/tag/forgiving

- In the realm of law, the RSS wants the passage of a stringent nationwide bill that would ban religious conversions. In the public sphere, it has arrogated the right to pronounce not just on the future of minorities in India but that of India's Hindu majority as well. In the war of the religions, it seeks to spread the news that there is now a Hindu fundamentalism eager to goad and trump well-established Christian and Islamic fundamentals in India and around the world. And among its own vast cadre, it has generated the sense that it, much more than the government of the day or the diverse institutions of civil society and business, holds the key to India's future.

...

As a Hindu, I have some sympathy with this viewpoint. Missionary activity has always seemed to me unacceptably crude and arrogant, not only in its conviction that there is a single truth that must be propagated, but also in its contempt for two of the forces that most strongly influence religious belief: The accident of birth in a certain religion, which is then followed by many years of socialisation into its worldview.
http://gulfnews.com/opinions/columnists/a-new-vision-of-india-that-is-100-hindu-1.1433102

- "It is not conversion, it is reconversion," said the professorial Abdeo, national secretary of Vishva Hindu Parishad, a pro-Hindu organisation. "A thousand years ago, all the Muslims and Christians in India were Hindu. They were converted by the sword. We are just bringing them back to their original faith."



Hindu fundamentalists, saying Christian missionaries and Muslim conquerors converted Indians by force centuries ago, have for years quietly sought to win them back. This year, seemingly invigorated by the rise of a right-wing Hindu government in New Delhi, they have organised mass reconversion "camps", including some where people have alleged they were duped or threatened into changing faiths.

http://www.smh.com.au/world/hindu-activists-organise-mass-reconversion-camps-in-india-20141229-12et35.html

- "When we start to doubt ourselves, when we start questioning our own identity, when we start distrusting everything, we cannot win, including against extremists, those who want to destroy who we are, threaten our values, turn France into something it is not".

http://www.france24.com/en/20150105-france-fran%C3%A7ois-hollande-media-offensive-tv-radio-2015-sarkozy/ 
- Khomeini himself put it this way: "Allah did not create man so that he could have fun. The aim of creation was for mankind to be put to the test through hardship and prayer. An Islamic regime must be serious in every field. There are no jokes in Islam. There is no humor in Islam. There is no fun in Islam. There can be no fun and joy in whatever is serious."

...

A solemn and dignified Ramadan indeed. Sometimes it takes a clown to speak the truths that others won't face.

http://www.smh.com.au/national/islam-is-no-laughing-matter-20150109-12kzr3.html

- Yun's quest - a modern version of the age old dream of tapping the fountain of youth - is emblematic of the current enthusiasm to disrupt death sweeping Silicon Valley. Billionaires and companies are bullish about what they can achieve. In September 2013 Google announced the creation of Calico, short for the California Life Company. Its mission is to reverse engineer the biology that controls lifespan and "devise interventions that enable people to lead longer and healthier lives". Though much mystery surrounds the new biotech company, it seems to be looking in part to develop age-defying drugs. In April 2014 it recruited Cynthia Kenyon, a scientist acclaimed for work that included genetically engineering roundworms to live up to six times longer than normal, and who has spoken of dreaming of applying her discoveries to people. "Calico has the money to do almost anything it wants," says Tom Johnson, an earlier pioneer of the field now at the University of Colorado who was the first to find a genetic effect on longevity in a worm.

http://geneticliteracyproject.org/2015/01/12/can-silicon-valley-fix-the-aging-problem/

- But let's remember that central bank quantitative easing (QE) of the kind that Europe is now embarking on is always just a Band-Aid on economic troubles, not a solution to underlying structural issues in a country (or in this case, a region). Just as the Fed's $4 trillion QE money dump bolstered the markets but didn't fix the core problems in our economy--growing inequality, a high/low job market without enough work in the middle, flat wages, historically low workforce participation--so the ECB QE will excite markets for a while, but it won't mend the problems that led Europe to need this program to begin with.

http://time.com/3679154/european-union-quantitative-easing/

- Europe's future was "not the future of austerity - it is the future of democracy, solidarity and cooperation," he added.

http://www.theguardian.com/world/2015/jan/25/greece-election-vote-austerity-leftwing-syriza-eu?google_editors_picks=true

- "Medicine doesn't happen very much in breakthroughs. It happens in lots and lots of little steps, and we still have a long way to go."

http://www.smh.com.au/national/dr-jeremy-chapman-receives-australia-day-honour-20150125-12uze3.html

- "It is wrong to imagine that we can only gain and grow from revelling in past glory," he said. "True patriots don't shrink from historical truth -- they welcome it, they learn from it.

"I believe Australians are smart enough and generous enough to know that our national story is not a 'choose-your-own adventure', where we pick and mix the chapters that portray us in the best light.

...

"No leader can 'settle' the question of Australia's global role and responsibilities, and no leader should take pride in trying."

http://www.theaustralian.com.au/national-affairs/bill-shorten-lets-revive-republic-debate/story-fn59niix-1227196364113?nk=f2f9c38ea04dc0479d039b85079e3103
- "The problem is he just wants to pour that additional money into the broken, existing system -- which a lot of people graduate with AA degrees that don't lead to anything but another four-year degree that may not lead to a job," Sen. Marco Rubio, R-Florida -- a prospective 2016 presidential candidate -- suggested recently on CBS' Face the Nation. "What we need to do is create competition with alternative methods where people can acquire certification programs that take less than two years, and get you to work right away as a welder, electrician, and airplane mechanic. I wish he would spend more time on that, and less time trying to raise taxes and pour money into an outdated model that no longer works in the 21st Century."

http://www.cbsnews.com/news/state-of-the-union-finally-an-agenda-for-the-21st-century/

- The test was anything but scientific - it says as much about my proficiency with the different input methods as it does about the input methods themselves - but the results were interesting and not at all what I expected. Swype, the keyboard you use by drawing lines over the letters without lifting your finger, was by far the slowest for me, due to the fact it coped very poorly indeed with longer, not-so-common words in the text. Next slowest was the handwriting recognition on Samsung's Galaxy Note 4, using its stylus, due to the fact it kept capitalising words that shouldn't be capitalised. I really thought it would be one of the faster ones. Then came the stock Android keyboard, then second fastest was the keyboard on the iPhone, thanks to its uncanny auto-correction ability that lets you type at an insane pace and still have near perfect accuracy.



But fastest of all by some margin, twice as fast as Swype and 30 per cent faster than the iPhone, was the keyboard on the Classic. Not only that, but it was the only input device that allowed me to take my eyes off the keyboard and look at the stopwatch while entering text. It's so easy to use, and so fast.

http://www.afr.com/f/free/technology/digitallife/blackberry_classic_is_faster_than_7uzwvj1NNSc2gwMgq042pM

- In this day and age confidence is king. You can embark on all of the education you like but if you can't back yourself, or make it clear to others that you're up for the fight then others will pass you by. Nick Kyrgios is definitely letting everyone know he's not holding back, and he's having one hell of a crack.

...

Some are saying Nick is one of the most exciting sporting prospects Australia has seen in a long while, so lets not cook the golden goose, instead let it run wild, and who knows what will eventuate.

http://www.theroar.com.au/2015/01/27/let-nick-kyrgios-run-wild/

- Canada's number one problem in personal finance is not lack of saving, he said, but people spending beyond their means. "Eric and Ilsa show us that it's a problem uniting people of all backgrounds. This couple is you and me, only with a higher income."

http://www.news.com.au/finance/money/barely-getting-by-on-25k-a-month-couples-plea-for-financial-advice-draws-scorn/story-e6frfmcr-1227194539834

http://www.theglobeandmail.com/globe-investor/personal-finance/mortgages/debt-doubts-cast-a-shadow-for-this-professional-couple-with-five-kids/article22496585/

- The most successful companies need a vision, and both Apple and Microsoft have one. But Apple's was more radical and, as it turns out, more farsighted. Microsoft foresaw a computer on every person's desk, a radical idea when IBM mainframes took up entire rooms. But Apple went a big step further: Its vision was a computer in every pocket. That computer also just happened to be a phone, the most ubiquitous consumer device in the world. Apple ended up disrupting two huge markets.

...

Mr. Cihra noted that Microsoft already dominates its core businesses, leaving little room for growth. But, he said, "Apple still doesn't have massive market share in any of its core markets. Even in smartphones, its share is only in the midteens. Apple's strategy has been to carve out a small share of a massive market. It's pretty much a unique model that leaves plenty of room for growth."

http://www.afr.com/p/technology/how_apple_left_microsoft_for_dust_8DjgBmV0XlDq44KQX5JpQI

- The new administration said the sackings of the heads of the Hellenic Republic Asset Development Fund will put an end to "close-out sale" privatisation policies, Greek media reported. From now on, privatisations will take place when they create new jobs and generate economic growth, the government said.



Privatisations of state companies are an important part of a reform program the previous government agreed to with its international creditors in return for a EUR240 billion ($350 billion) bailout. Interest from investors for the state offerings, however, has been low, and the revenues from the sales have come in sharply below expectations.

...

"The wind of change is starting to blow in Europe," party leader Pablo Iglesias, a 36-year-old former university professor, said in Greek and Spanish as he addressed supporters. "We dream but we take our dream seriously. More has been done in Greece in six days than many governments did in years."

...

Born out of the "Indignants" protest movement that filled Spanish squares in 2011 with demands for change, Podemos says it wants to prevent profitable companies firing workers, promote fully state-controlled healthcare and enact a "significant" minimum-wage hike.

http://www.smh.com.au/world/greece-puts-privatisations-on-ice-as-antiausterity-wave-arrives-in-madrid-20150201-1332aw.html

http://www.france24.com/en/20150131-tens-thousands-rally-support-spain-anti-austerity-party-podemos/

- The team carried out the research using astero-seismology -- listening to the natural resonances of the host star which are caused by sound trapped within it. These oscillations lead to miniscule changes or pulses in its brightness which allow the researchers to measure its diameter, mass and age. The planets were then detected from the dimming that occurs when the planets transited, or passed across, the stellar disc. This fractional fading in the intensity of the light received from the star enables scientists to accurately measure the size of the planets relative to the size of the star.

http://timesofindia.indiatimes.com/home/science/Solar-system-with-5-Earth-sized-planets-dicovered/articleshow/46034238.cms

- In DJ parlance, a break is where all elements of a song (e.g., pads, basslines, vocals), except for percussion, disappear for a time. This is distinguished from a breakdown, a section where the composition is deliberately deconstructed to minimal elements (usually the percussion or rhythm section with the vocal re-introduced over the minimal backing), all other parts having been gradually or suddenly cut out.[1] The distinction between breaks and breakdowns may be described as, "Breaks are for the drummer; breakdowns are for hands in the air".[1]



In hip hop and electronica, a short break is also known as a "cut", and the reintroduction of the full bass line and drums is known as a "drop", which is sometimes accented by cutting off everything, even the percussion.

http://en.wikipedia.org/wiki/Break_(music)

- Mobile users are increasingly driving traffic to Facebook, and advertisers have responded by purchasing large numbers of mobile ads. More than $1 in every $5 spent on Facebook advertising now goes to mobile, even though mobile ads command a premium cost-per-click rate of $1.38 -- compared to $0.81 for desktop ads. Also of note: The majority of tablet users access Facebook using an Apple product, but when it comes to phones, the Android operating system drives more traffic. -- AllFacebook

http://www.entrepreneur.com/blog/225499
- Robotics executives say even though blue-collar jobs will be lost, more efficient manufacturing will create skilled jobs in designing, operating and servicing assembly lines.

A report commissioned by the International Federation of Robotics last year found that 150,000 people are already employed by robotics manufacturers worldwide in engineering and assembly jobs.

http://www.theage.com.au/world/robots-take-on-skilled-labour-20120819-24gdr.html

Upgrading Lenovo ThinkPad BIOS under Linux

The Lenovo support site offers downloadable BIOS updates that can be run either from Windows or from a bootable CD.

Here's how to convert the bootable CD ISO images under Linux in order to update the BIOS from a USB stick.

Checking the BIOS version

Before upgrading your BIOS, you may want to look up which version of the BIOS you are currently running. To do this, install the dmidecode package:

apt-get install dmidecode

then run:

dmidecode

or alternatively, look at the following file:

cat /sys/devices/virtual/dmi/id/bios_version

Updating the BIOS using a USB stick

To update without using a bootable CD, install the genisoimage package:

apt-get install genisoimage

then use geteltorito to convert the ISO you got from Lenovo:

geteltorito -o bios.img gluj19us.iso

Insert a USB stick you're willing to erase entirely and then copy the image onto it (replacing sdX with the correct device name, not partition name, for the USB stick):

dd if=bios.img of=/dev/sdX

then restart and boot from the USB stick by pressing Enter, then F12 when you see the Lenovo logo.

Cooleman and Arawang Trigs

Doug and I went out to walk Doug's dog at short notice yesterday evening, and managed to sneak in two trigs while we were at it. A nice walk, although it took longer than I expected it to, with our average speed only being about 3.5 kilometers an hour. I wonder how much of that was the two peaks to climb, versus the puppy in tow.



Along the way we found this super cool telegraph line, which appears to still have an active Telstra service on it. I wonder if we'll one day see fiber strung on these telegraph poles?



                       



Interactive map for this route.



Tags for this post: blog pictures 20150131-cooleman_and_arawang photo canberra western_creek bushwalk trig_point urban_trig

Related posts: Harcourt and Rogers Trigs; A quick walk to Tuggeranong Trig; Big Monks; A walk around Mount Stranger; Forster trig; Two trigs and a first attempt at finding Westlake



Comment

January 31, 2015

What is -1u?

In C++, what exactly is -1u?

It doesn’t seem like it should be difficult to answer — it’s only three characters: -, 1, and u. And, knowing a little bit about C++, it seems like that’ll be (-1) negative one with that u making ((-1)u) an unsigned int. Right?

To be more specific, on an architecture where int is a 32 bit type, and negative numbers are represented using two’s complement (i.e. just about all of them), negative one has the binary value 11111111111111111111111111111111. And converting that to unsigned int should … still be those same thirty two ones. Shouldn’t it?

I can test that hypothesis! Here’s a program that will answer the question once and for all:

#include <stdio.h>
#include <type_traits>

int main()
{
 static_assert(std::is_unsigned<decltype(-1u)>::value, 
               "actually not unsigned");
 printf("-1u is %zu bytes, with the value %#08x\n ", 
        sizeof -1u, -1u);
}

Compile and run it like this:

g++ -std=c++11 minus_one_u.cpp -o minus_one_u && minus_one_u

If I do that, I see the following output:

-1u is 4 bytes, with the value 0xffffffff

I’m using -std=c++11 to be able to use std::is_unsigned, decltype and static_assert which combine to assure me that (-1u) is actually unsigned as the program wouldn’t have compiled if that wasn’t the case. And the output shows the result I had hoped for: it’s a four byte value, containing 0xffffffff (which is the same as that string of thirty two ones I was looking for).

I have now proven that -1u means “convert -1 to an unsigned int.” Yay me!

Not so much.

It just so happened that I was reading about integer literals in a recent draft of the ISO C++ standard. Here’s the part of the standard that describes the format of decimal integer literals:

2.14.2 Integer literals

1 An integer literal is a sequence of digits that has no period or exponent part, with optional separating single quotes that are ignored when determining its value. An integer literal may have a prefix that specifies its base and a suffix that specifies its type. The lexically first digit of the sequence of digits is the most significant. A decimal integer literal (base ten) begins with a digit other than 0 and consists of a sequence of decimal digits.

Can you see where it describes negative integer literals?

I can’t see where it describes negative integer literals.

Oh.

I though -1u was ((-1)u). I was wrong. Integer literals do not work that way.

Obviously -1u didn’t just stop producing an unsigned int with the value 0xffffffff (the program proved it!!1), but the reason it has that value is not the reason I thought.

So, what is -1u?

The standard says that 1u is an integer literal. So now I need to work out exactly what that - is doing. What does it mean to negate 1u? Back to the standard I go.

5.3.1 Unary operators

8 The operand of the unary – operator shall have arithmetic or unscoped enumeration type and the result is the negation of its operand. Integral promotion is performed on integral or enumeration operands. The negative of an unsigned quantity is computed by subtracting its value from 2n, where n is the number of bits in the promoted operand. The type of the result is the type of the promoted operand.

I feel like I’m getting closer to some real answers.

So there’s a numerical operation to apply to this thing. But first, this:

Integral promotion is performed on integral or enumeration operands.

Believe me when I tell you that this section changes nothing and you should skip it.

I have an integral operand (1u), so integral promotion must be performed. Here is the part of the standard that deals with that:

4.5 Integral promotions

1 A prvalue of an integer type other than bool, char16_t, char32_t, or wchar_t whose integer conversion rank (4.13) is less than the rank of int can be converted to a prvalue of type int if int can represent all the values of the source type; otherwise, the source prvalue can be converted to a prvalue of type unsigned int.

I’m going to cut a corner here: integer literals are prvalues, but I couldn’t find a place in the standard that explicitly declares this to be the case. It does seem pretty clear from 3.10 that they can’t be anything else. This page gives a good rundown on C++ value categories, and does state that integer literals are prvalues, so let’s go with that.

If 1u is a prvalue, and its type is unsigned int, I can collapse the standard text a little:

4.5 Integral promotions (prvalue edition)

A value of an integer type whose integer conversion rank (4.13) is less than the rank of int …

and I’m going to stop right there. Conversion rank what now? To 4.13!

4.13 Integer conversion rank

1 Every integer type has an integer conversion rank defined as follows:

Then a list of ten different rules, including this one:

— The rank of any unsigned integer type shall equal the rank of the corresponding signed integer type.

Without knowing more about conversion ranks, this rule gives me enough information to determine what 4.5 means for unsigned int values: unsigned int has the same rank as int. So I can rewrite 4.5 one more time like this:

4.5 Integral promotions (unsigned int edition)

1 [This space intentionally left blank]

Integral promotion of an unsigned int value doesn’t change a thing.

Where was I?

Now I can rewrite 5.3.1 with the knowledge that 1u requires no integral promotion:

5.3.1 Unary operators (unsigned int operand edition)

8 The [result of] the unary – operator … is the negation of its operand. The negative of an unsigned quantity is computed by subtracting its value from 2n, where n is the number of bits in the promoted operand. The type of the result is the type of the operand.

And, at long last, I get to do the negating. For an unsigned value that means:

[subtract] its value from 2n, where n is the number of bits in the promoted operand.

My unsigned int has 32 bits, so that would be 232 – 1. Which in hexadecimal looks something like this:

  0x100000000
- 0x000000001
  0x0ffffffff

But that leading zero I’ve left on the result goes away because

The type of the result is the type of the (promoted) operand.

And I am now certain that I know how -1u becomes an unsigned int with the value 0xffffffff. In fact, it’s not even dependent on having a platform that uses two’s complement  — nothing in the conversion relies on that.

But… when could this possibly ever matter?

For -1u? I don’t see this ever causing actual problems. There are situations that arise from the way that C++ integer literals are defined that can cause surprises (i.e. bugs) for the unsuspecting programmer.

There is a particular case described in the documentation for Visual C++ compiler warning C4146, but I think the rationale for that warning is wrong (or, at least, imprecise), but not because of something I’ve covered in this article. As I’ve already written far too many words about these three characters, I’ll keep that discussion for some time in the future.