Planet Linux Australia

Syndicate content
Planet Linux Australia - http://planet.linux.org.au
Updated: 52 min ago

Andrew Pollock: [life] Day 223: Kindergarten, a lot of running around and some startup stuff

Wed, 2014-09-10 08:25

Yesterday was a very busy day. Zoe had a great night's sleep in the top bunk, despite a persistent cough. It rained early in the morning, but it cleared before I had to take Zoe to Kindergarten on the bike. I left the trailer at the Kindergarten, and then biked to Morningside station to collect the car, where Anshu had left it before taking the train to the airport.

I put the bike on the back of the car and drove home to unload it, and then turned around and drove to the Valley for a meeting.

After the meeting, I spent a few hours studying for the next module of my real estate license course, and then popped out to run some errands.

After that I briefly dropped into a "look and see" for the new Thermomix TM5 that came out on Friday. Due to unfortunate timing, I need to make a decision on if I want to continue with being a Thermomix Consultant (and purchase a TM5). The TM5 was impressive, but I'd be perfectly happy sticking with my TM31 if I weren't looking to become a Consultant. I'm still mulling it over.

I then drove to Kindergarten for pick up and Zoe's tennis lesson. I'd remembered to bring some zip ties with me to repair the shadecloth that wrapped around the outside of the viewing area. It was very satisfying fixing that, because it was really annoying last week when it was windy.

After tennis, I loaded the bike trailer into the back of the car and we went home.

Zoe wanted to play "run around the house like a mad thing" for a bit once we got home, so we did that, and then I started on dinner while she watched some TV.

Zoe wanted to sleep in the top bunk again. It's funny how she just decided with no prompting to swap bunks.

Jeremy Visser: Configuring Windows for stable IPv6 addressing

Tue, 2014-09-09 18:00

By default, Windows will use randomised IPv6 addresses, rather than using stable EUI-64 addresses derived from the MAC address. This is great for privacy, but not so great for servers that need a stable address.

If you run an Exchange mail server, or need to be able to access the server remotely, you will want a stable IPv6 address assigned.

You may think this is possible simply by editing the NIC and setting a manual IPv6 address. Unfortunately this doesn’t work, as if your router has Router Advertisement enabled, you will still acquire a randomised address that will be used as your source address. It is obvious why I don’t need to explain why this is a problem for your Exchange server.

You can tell Windows to ignore Router Advertisements, but this is a bad idea. For example, many routers do not support changing their LAN IPv6 address and enforce EUI-64, making it hard to rely on a hardcoded gateway within the server settings should you ever need your router replaced.

So the criteria we want is:

  • Stable IPv6 address assigned to interface
  • No privacy or randomised addresses
  • Default gateway learned via Router Advertisement

To do this, run the following from an elevated command prompt:

netsh interface ipv6 set privacy state=disabled store=active netsh interface ipv6 set privacy state=disabled store=persistent netsh interface ipv6 set global randomizeidentifiers=disabled store=active netsh interface ipv6 set global randomizeidentifiers=disabled store=persistent

Why this is not the default on a server operating system is really beyond me. It’s not like anybody pointed DNS records towards a Windows server before.

linux.conf.au News: Open Radio Miniconf confirmed for Linux.conf.au 2015

Tue, 2014-09-09 17:27

The Linux.conf.au team are excited to announce the Open Radio Miniconf will be part of Linux.conf.au 2015 in Auckland, New Zealand this coming January.

Participants of the Miniconf will learn about Software Defined Radio, a little about RF and licensing, data encoding and open source radio software. then build, test and debug their very own Software Defined Radio using a low cost kit. The kit will cover reception of HF spectrum and allow transmission over short range.

The Miniconf will held on Monday the 12th of January and run by Kim Hawtin with assistance from Mark Jessop and David Rowe. All three are veterans of Linux.conf.au, they have many years of experience with Linux and Amateur Radio.



Linux.conf.au Miniconfs

Miniconfs are one day miniature conferences, within the main LCA2015 conference, which are targeted towards specific communities of interest and offer delegates an opportunity to network with other enthusiasts while immersing themselves in a specific topic or project.

LCA2015 miniconfs will be run on Monday 12th and Tuesday 13th of January 2015. Each miniconf's schedule is organised by the miniconf's organiser and will be published ahead of time, listing speakers and sessions for the day.

Chris Yeoh: Nova V2.1 API

Tue, 2014-09-09 15:26

Early in 2014 there was a very long discussion on the openstack-dev mailing list about the future of the Nova V3 API development. There were two main concerns. The first was the willingness and ability for users to port their applications from the V2 to the V3 API. The second was the the level of maintenance required to keep two Nova APIs up to date since it was becoming increasingly clear that we would not be able to deprecate the V2 API in only 2-4 cycles. As part of this discussion I wrote a document describing the problems with the V2 API and why the V3 API was developed. It also covered some ideas on how to minimise the dual maintenance overhead with supporting two REST APIs. This document describes most of the differences for clients between the V2 and V3 API.

During the Juno Design summit, the development cycle and the Nova mid cycle update there were further discussions around these ideas:

Not long after the community finally reached consensus on the first part of the work required to implement a V2.1 API which is implemented using the original V3 API code. The details of the work being carried out in Juno is described in the nova specification.

In short, from a client point of view, the V2.1 API looks exactly the same as the original V2 API with the following exceptions:

  • Strong input validation. In many cases the V2 API code does not verify properly the data passed to it. This can lead to clients sending data to the REST API which is silently ignored because there is a typo in the request. The V2.1 API primarily using jsonschema is very strict about the data it will accept and will reject the request if it receives bad data. Client applications will need to fixed before using the V2.1 API if they have been sending invalid data to Nova.
  • No XML support. The V2 XML API is not widely used and was marked as deprecated in Juno. The V2.1 API has no support for XML, only for JSON.

From an operator’s point of view:

  • The V2.1 API can be simultaneously deployed alongside the original V2 API code. By default the V2 API is exposed on /v2 and the V2.1 API on /v2.1/. This may make it easier for users to test and transition their applications over time rather than all at one time when the OpenStack software is upgraded. The V2.1 API is however not enabled by default in Juno.
  • The number of extensions has been reduced. A number of extensions in the original V2 code are dummy or minimalistic extensions which were only added because adding a new extension was the only way to signal to a client that new functionality is available. In these cases the V2.1/V3 API code removed the extra extension and incorporated the newer functionality into the original extension and enabled it by default. Note that from the perspective of clients they still see the extra extensions if the functionality is enabled. So no changes are required on the client side.

Because of the late acceptance of the V2.1 specification we have not been able to merge all of the required patches to implement the V2.1 API in Juno. However, there is support for most of the equivalent of the V2 API with the exception of networking. It is expected that the remaining patches will be completed soon after Kilo opens. I will cover the V2.1 work and discussions on how we plan on handling backwards incompatible API changes in a future article.

Chris Yeoh: Filtering calls with Asterisk

Tue, 2014-09-09 15:26

I mentioned on Google+ that I get Asterisk to filter my calls during times when it’s inconvenient to answer the phone and someone asked me to post the details. I’m definitely not an Asterisk expert so there’s probably a better way of doing this.

The PSTN line is answered through a SPA3102 and it is configured not to automatically make the phone on the FXS port ring on incoming calls. There is an option in the advanced settings on the PSTN Line tab on the SPA3102 web config interface that allows you to do this:

Ring Thru Line 1: No

The means that the phone on the FXS port does not ring at all unless the call gets through the filtering in Asterisk and Asterisk tells it to ring.

Below is the relevant excerpt from the extensions.conf file.

; Whitelist various phone numbers

exten => s,n,GotoIf($["${CALLERID(number)}" = "0403XXXXXX"]?ring-all-phones,s,1)

; Check to see if we want to block all calls currently

exten => s,n,GotoIf($[${DB(phonecontrol/state)} = "block"]?out_of_hours,1)

; Check to see if its the right time period to accept calls

exten => s,n,GotoIfTime(9:00-23:00|mon-fri|*|*?ring-all-phones,s,1)

exten => s,n,GotoIfTime(11:00-21:00|sat-sun|*|*?ring-all-phones,s,1)

; Check to see if we want to accept all calls regardless of the time

exten => s,n,GotoIf($[${DB(phonecontrol/state)} = "accept"]?ring-all-phones,s,1)

exten => s,n,Goto(out_of_hours,1)

; Message about not accepting calls

exten => out_of_hours,1,Background(custom/out_of_hours)

exten => out_of_hours,n,WaitExten(5)

exten => out_of_hours,n,Goto(1)

; Ring phone anyway (1)

exten => 1,1,Goto(ring-all-phones,s,1)

; Leave voicemail (2)

exten => 2,1,VoiceMail(3000@default,u)

exten => 2,n,Hangup

The DB entry for phonecontrol/state which is controls whether or not I want to override whether calls are accepted or not is toggled through a web interface.

Chris Yeoh: Controlling the house lighting via MQTT

Tue, 2014-09-09 15:26

The lights and some other electrical devices in our new house are controlled by a C-Bus system. Essentially this means that rather than the light switches switching the power to the lights directly, they instead sit on a bus which is connected up to relays which control the power to individual lights. This makes it easy to have smart switches which can control multiple lights and a do a series of tasks (eg dim some lights, pull down a projector screen etc). The most interesting part for me is that when we had the C-Bus system installed is also had an ethernet interface module for the system installed so we can talk to it directly from any of our other computers.

C-Gate is a program which mediates access to the C-Bus interface so multiple programs can access it simultaneously, and fortunately although it was written for windows it’s written in java and runs ok on Linux. The input/output format is not particularly nice for programmatic control, and I ended up writing some scripts that allow for synchronisation of the state between the C-Gate server and an MQTT server.

I already use MQTT as a mechanism to communicate data about power usage in the house. Incidentally I’m also now using the Open Source implementation of MQTT, Mosquitto which for me has been just a drop in replacement of a proprietary version. MQTT can provide a nice uniform interface for apps which insulates them from the details of how data is transferred to and from backend systems. It avoids a bunch of work when the backends change.

I have one perl script which listens for state changes (for example caused by someone pressing a physical light switch) from the C-Bus system and updates the state in MQTT under a simple hierarchy:



lights/<light_num>/state

And another one which listens for changes in a similar hierarchy in MQTT and sends those changes to the C-Bus system:



lights/<light_num>/set_state

The same hierarchy is not used for both to reduce the problem of race conditions and loops occurring. Light numbers are defined in the physical C-Bus setup.

This makes command line control of the lights very straightforward (as long as you know what number a light has been assigned):



mosquitto_pub -h stitch -t lights/<light_num>/set_state -m 255

but I wanted something a bit more user-friendly. So using a bit of javascript, php and a very useful, but slightly hacked version of phpMQTT, I put together a dodgy web page which shows the state of all the lights and exhaust fans in the house as well as allowing us to control them.

So what’s next on the list to work on?

  • Display the state of the lights and allow control of them through an image of the floorplan of the house
  • Add other inputs such as water and gas usage, which computers are currently on and being used, alarm sensors etc into MQTT
  • Add temperature and humidity sensors in all the rooms in the house as well as outside
  • Experiment with little agent programs that sit around monitoring the data from the MQTT server and try to do smart things – eg warn us when we leave lights or appliances on, perhaps even proactively turn them off, warn us when there has been an unusual pattern of electricity/gas/water usage, open windows when its too hot inside and the temperature outside has dropped below the inside temperature, etc

Chris Yeoh: W510 & Ubuntu Lucid 10.04.1

Tue, 2014-09-09 15:26

My work laptop was upgraded to a Lenovo W510 recently, replacing a 3 year old T60p. The setup and install of Ubuntu 10.04.1 was fairly straightforward, just a couple of problems:

  • ureadahead package needs to be upgraded to a version in lucid-proposed. Otherwise it will randomly OOM on boot and fail to start
  • For suspend to work have to both:

So far seems like a pretty fast machine – 4 cores (8 with HT). Should be a big improvement on the T60p.

    An of course a new laptop requires new stickers (thanks Sarah!)

    Chris Yeoh: Wireless Ambient Orb

    Tue, 2014-09-09 15:26

    I’ve been tracking our household electricity usage live for a while. We have an LCD display but its not something that we remember to check very often to make sure that everything that should be turned off is off.

    I noticed some cheap rgb led strips on deal extreme and thought I’d make my own ambient orb. I dug out an old arduino I wasn’t using and found some information from this site on how to control the strip using a darlington array. I added a perl script to bridge between the microbroker which receives the power usage information and translates it to a color for the ambient orb to display.

    At what is our normal minimum power usage the orb glows blue and as the power usage increases turns green, yellow, orange, and then red. This makes it pretty easy to see at a glance when leaving the house or going to bed if the household power usage is about right. After a bit of testing I added purple at the end for when Kelly turns on the kettle and the toaster at the same time

    I’ve been interested in playing with xbees for a while, so rather than get a 802.11b wifi shield for communication I bought an arduino xbee shield and a couple of xbees. It turned out pretty easy to setup the xbees and I think I’ll end up with a little mesh network at home with both sensors and display devices like ambient orbs.

    I found some really cheap giant usb driven plastic keys on ebay. It just lights up with a white color when pressed but was easy to disassemble and put the led strips and arduino inside instead.

    The white plastic does a better job of diffusing the led light than in the photo above.

    Now Kelly wants an orb of her own, so I’m helping her make a smaller and cheaper version using an Arduino Pro Mini 328 instead of an Arduino Duemilanove.

    Chris Yeoh: Seedlings!

    Tue, 2014-09-09 15:26

    About a week after planting the seeds we have little seedlings appearing All the cucumber seeds have sprouted as well as a couple of the tomato plants. So far no sign of life from the eggplant or cherry tomato plant seeds.

    Apparently its a bit too cold to plant the seedlings yet and warming the soil a bit can also help. So I’ve put down some black plastic where we’re planning on planting the seedlings when they’re ready. I dug some organic fertiliser into the ground and we picked up some pea straw for mulch so are already once the seedlings have matured enough to go outside.

    Chris Yeoh: Practicing photography

    Tue, 2014-09-09 15:26

    The weather forecast for Saturday was clear and sunny so Kelly and I decided to take Alyssa out to see if we could get some good high resolution outdoor photos of her. Most of the photos we have of her are low resolution ones taken with our iPhones. So I got out my D70s and 50mm f/1.8 portrait lens and we headed out to Tusmore Park near to where I grew up. Its a really nice green grassy park with a good playground, creek and tall trees.

    By the time we had arrived at the park Alyssa had fallen asleep in her car seat and we lay her down on the grass until she woke up. Although I took almost 200 photos my favourite photo of the set was taken right near the beginning when she was still asleep on the grass.

    I like it so much I’m thinking of getting a large canvas print done. When she woke up and realised she was in the park with a playground she was very happy! The lens has such a narrow depth of field that taking photos of her in focus while on the swing was quite difficult.

    Same problem with the slide, although this action shot is not framed well, I love the expression on her face it captured.

    I think this one would have been really nice if I’d rotated the camera 90 degrees like the one after it. I think she’s lit really well in these two photos and it might have been because of the light coloured pool floor reflecting light up from below her.

    I think this one is pretty cute as we didn’t realise she was able to climb up steps that high:

    Although it would have been much nicer if I’d framed it like the following which shows how tall the trees in the background are.

    It turned out to be a lot cloudier than we expected so the light wasn’t as nice as we were hoping for. I’m really pleased with how some of the photos turned out and I learned quite a bit, so next time there is bright sunny day on the weekend we’ll be out at a park again.

    Chris Yeoh: Growing our own vegies

    Tue, 2014-09-09 15:26

    We’ve been thinking of growing some of our own vegetables for a while now. Finally this weekend got around to buying some seeds. Its still a bit cold to plant anything outside, but we’re using a couple of egg cartons in the kitchen window to start the seedlings which should be ready when the weather warms up.

    We have a row each of tomatoes, cucumber, cherry tomatoes and eggplant. If these sprout ok in couple of weeks we’ll start another lot of the same.

    Andrew Pollock: [life] Day 222: Kindergarten, running, and a lot of knot tying

    Tue, 2014-09-09 11:25

    I had trouble motivating myself in the morning, but eventually got going an did an 8 km run. It was a real slog after the 5 km mark. My pace was pretty good, it was too bad I couldn't last the distance.

    After that, I pretty much spent the rest of the day practising knots and making a start on my exam paper for my upcoming rock climbing course. Knots are not a speciality of mine, so it's taking some serious practice.

    The weather was looking a bit dubious on the afternoon, so I drove to Kindergarten to pick Zoe up. She wanted to go to Megan's house for a play date, but Jason said the house was a bit of a construction site today, so Megan came back with us for a play date.

    The girls did some painting and played dress ups and some Lego while I made a start on dinner. Then Anshu came over and Jason arrived to pick Megan up.

    Zoe decided to sleep in the top bunk tonight, for the first time in ages.

    Sridhar Dhanapalan: Twitter posts: 2014-09-01 to 2014-09-07

    Mon, 2014-09-08 00:27

    BlueHackers: Anxiety Attack felt like Heart Attack :-(

    Sun, 2014-09-07 11:22

    I had my first anxiety attack the other day. My lady was off picking a wedding dress. I was looking after our son whom was asleep and it just came on. I got our neighbour who luckily was home that day in his garage working on his cars. It felt like a heart attack. It stopped me from moving my right shoulder properly. I guess now I know I need help, more than a psychiatrist can help with (as they only prescribe medication if you did not know already). I’m looking into a Physiologist. I pay for private health with an awesome company called ahm. I don’t ever want to return to needing to go into hospital though. This will be a short post, but never discredit anyone who says they suffer anxiety as it’s a serious thing that causes actual physical pain. It wasn’t until the GP gave me the all clear I felt better again. Oh, and now I wear glasses as I’m short sighted from many years of looking at computer screens.

    Maxim Zakharov: SEO Meetup: Ensuring Googlebot can crawl your javascript/AJAX/HTML5 site

    Sat, 2014-09-06 14:25

    The video of the main talk at Sydney SEO Meetup on 4 September 2014:

    Roger Qiu, Founder of Polyacademy demonstrates SnapSearch.

    SnapSearch is a search engine optimisation (SEO) and robot proxy for complex front-end javascript & AJAX enabled (potentially realtime) HTML5 web applications.

    This tool implements Google recommendations on making AJAX-driven sites crawlable as a service hiding all technical details under hood.

    Andrew Pollock: [life] Day 219: A big bike ride, a swim and a dash of Science Friday

    Fri, 2014-09-05 22:25

    Zoe had a bit of a sleep in this morning, which wasn't surprising. We had a slow start to the day.

    It was a beautiful day, and Zoe was up for a bike ride, so I packed some morning tea and we biked along some bits of the Moreton Bay Cycleway to get underneath the Gateway Bridge, where we stopped for a late morning tea and Zoe had a bit of a run around.

    She was very interested in a storm water drain, and when I found the other end of it, we used it for some an impromptu Science Friday physics lesson about how sound traveled, and used it to yell to each other. She thought that was pretty cool.

    We ended up grabbing lunch out in a cafe off the bikeway in the middle of the Metroplex office park.

    Zoe wanted to go to the pool again after lunch, so we biked home and drove back to Colmslie Pool for a swim. Zoe's so confident in the water now, it's really impressive. We borrowed a kickboard and a pool noodle from the lost property, and that added to the fun.

    After that, I dropped into Bunnings to make a donation request on behalf of the Kindergarten, and then grabbed a copy of this month's Practical Parenting, which has a small article on me in it.

    I decided to drop Zoe around to Sarah, since we were already out in the car, so after swinging by the Valley to check my post office box, I dropped Zoe off and then headed home. Zoe almost fell asleep on the way to Sarah's. She said she really enjoyed her bike ride today.

    linux.conf.au News: Our first Emperor Sponsor...

    Fri, 2014-09-05 19:27

    One of the highest priorities of the LCA 2015 team has been to have as much local involvement as possible. Yes, this is linux.conf.au but it will be in Auckland! We're really excited about that so couldn't wait another minute to announce our first Emperor Sponsor - Catalyst IT.

    We are so thrilled! The team at Catalyst IT has already made a significant contribution to the preparation of our conference and have gone out of their way, giving more than just financial support, to ensure that LCA 2015 is a success. Their overall contribution has been invaluable - and now this!

    Catalyst says: "linux.conf.au is the jewel in the crown for open source conferences in the Southern Hemisphere. We are delighted to be able to support this event for the Open Source community and the Catalyst team is very much looking forward to starting 2015 by catching up with other technologists and geeks, sharing and learning, and contributing to the growth of free and open source software."

    Scheduled to be held at the University of Auckland from the 12th to the 16 January 2015, linux.conf.au is widely regarded by delegates as one of the best community run Linux conferences worldwide. Each year open source geeks from across the globe gather in Australia or New Zealand to meet their fellow technologists, share the latest ideas and innovations, and spend a week discussing and collaborating on open source projects.

    linux.conf.au is continuing to seek sponsorship for the event, with several sponsorship levels still available. However, sponsorship seats are filling up fast! If your company is interested in becoming a sponsor, then act quickly and contact sponsors@lca2015.linux.org.au

    We look forward to a successful LCA 2015, and we thank Catalyst IT for their involvement, enthusiasm and generous support.

    Steven Ellis

    Co-Chair and Sponsor Liaison

    Donna Benjamin: Estimating Story Points

    Fri, 2014-09-05 08:26
    Friday, September 5, 2014 - 08:23

    A couple of days ago I found myself describing how to estimate the size of a story. It was coming out in my own words, without references. It felt... right.

    One agile approach for "sizing" up a task is to use a relative scale to describe a mixture of effort, complexity and uncertainty.

    1pt - Oh I know what that it is, and exactly how to do it.

    2pts - Oh that's about twice as hard as a 1.

    4pts - Twice as much effort again.

    8pts - Hmmm, there's some tricky bits in there I'm not sure about, but know someone who knows.

    16pts - A few unknowns in there. I can't be confident about what's involved.

    32pts - Need more information before I can begin to estimate what's involved.

    64pts - Epic. No way we could do that in one sprint. We need to break this down into smaller pieces, but we can do that later if it's not a priority.

    Swap out unknowns for complexity. If a task is understood but complex, the chance of error is higher, as is the need for greater review and testing. Build that in when estimating. Don't devalue review and quality assurance, they are critical steps to agile success.

    It also makes sense to add points to stories known to be simple but incredibly time-intensive. A simple, but tedious and repetitive task introduces risk because the person doing it may get tired, bored or hungry. Tired, bored, hungry human beings don't produce their best work. Again, you will need to factor in additional time for review and testing by someone with fresh eyes, or break that task down into smaller steps.

    It's way too easy to get caught up matching Story Points to time, especially when doing quotes or reconciling budgets. Story Points are best for helping a team and their product owner to focus on what can be achieved now, in this sprint. Keeping it real.

    What do you think?

    Image: Shamelessly "borrowed" from http://www.powerhouse360.com/2012/03/story-points/ <= also a good post on this topic!

    James Morris: New GPG Key

    Fri, 2014-09-05 08:26

    Just an FYI, I lost my GPG key a few months back during an upgrade, and have created a new one.  This was signed by folk at LinuxCon/KS last month.

    The new key ID / fingerprint is: D950053C / 8327 23D0 EF9D D46D 9AC9  C03C AD98 4BBF D950 053C

    Please use this key and not the old one!

    Andrew Pollock: [life] Day 218: Play date, Father's Day at Bunnings

    Thu, 2014-09-04 21:25

    Zoe slept well last night. I was a bit tired from a late night, so we had a slow start to the day.

    Zoe wanted to go around to Megan's place, and I wanted to make some clam chowder with the leftover clams from a paella I made on the weekend, so I asked Jason if he liked clam chowder. After grabbing some ingredients from the Hawthorne Garage, we headed over to Megan's house via the bakery.

    Long story short, the clam chowder was pretty watery by New England-style clam chowder standards, and the bread that I got was a far cry from a sourdough bread bowl, so I wasn't very satisfied with the result. It turns out that 800 grams of clams only yields about 100 grams of meat, and the recipe called for 400 grams of clam meat, so it was pretty light on in the clam department.

    After we got back from Megan's place, we just bummed around at home doing nothing in particular for a few hours until it was time to go to Zoe's make up swim class for last week's canceled one. We had enough time up our sleeves, so Zoe scootered there. It took about 15 minutes to get there without too much mucking around.

    By the time we got back home from swim class it was time to head out to Bunnings for their free family fun night for Father's Day. We had a really good night. They had some reptiles. Zoe got to hold a snake. They had some pirates. Zoe got a tattoo and got to have a sword fight. They had some mini golf. They had a clown that did a funny magic act and was doing balloons all night. They had a free sausage sizzle. It was a really fun night out and Zoe really enjoyed herself.

    We got home well past her bedtime, so getting her settled and into bed quickly was a little bit of a challenge, but we got there eventually.