Welcome to my new blog. There may not be a lot here yet. I may or may not import some of my older writings.

3KU Delta Printer

From here - http://www.aliexpress.com/item/2015-3KU-Easy-Install-Metal-Structure-Delta-3D-Printer-with-One-Filament-and-LCD-for-free/32364813740.html


  • Price
  • Mostly Metal parts (LCD screen and top plate held with 3d printed parts - not so important)
  • Pusher works really well compared to 3d printed designs
  • Includes a lot of extra stuff (Filament, Bed leveling sensor, LCD, Masking tape, paint scrapper, spare stepper driver and heater core, sd card, roll holder)
  • USB stick included with manuals, firmware and install videos
  • Install videos easy to follow
  • Seems to print fairly fast - still need to tune to see how far I can push it
  • The picture showed a 4 holes to mount the bed - it’s actually 3, which line up with common heatbeds.
  • Shipped via DHL and arrived in under 14 days
  • Came with Allen keys
  • Powersupply doesn’t have exposed 240v and uses a barrel jack. Figure 8 (C7/C8) lead
  • Has an on/off switch!
  • Belts not fishing wire
  • Seems like fairly good parts


  • No heatsinks on stepper drivers nor cooling fan for electronics - I don’t think this is required if drivers aren’t at max current
  • No heated bed
  • Some of the PDFs for install steps were a little confusing
  • Comes with a deathdapter (https://www.youtube.com/watch?v=hvOTiQKkQMo
  • Older version of Marlin that doesn’t support negative numbers (shows random ascii chars on screen lol)
  • Insutrctions didn’t cover autobed leveling
  • Doesn’t use a smoothieboard or ther controller with a dedicated FPU

Kodi OpenElec Keyboard Issue

Kodi / XBMC / OpenElec may have trouble with Apple Bluetooth Keyboards when numlock is stuck on. Only volume keys and a few others like backspace seem to work. When this is the case you can use a crude hack to force numlock/capslock to be off by create a file in /storage/.config/autostart.sh with the follow. Don’t forget to chmod +x it.

python -c 'from ctypes import *; X11 = cdll.LoadLibrary("libX11.so.6"); display = X11.XOpenDisplay(None); X11.XkbLockModifiers(display, c_uint(0x0100), c_uint(18), c_uint(2)); X11.XCloseDisplay(display)'

Depression Ramblings

Preamble: This post is about my encounter with depression. This is 100% honest and truthful. The reason I’m writing this is to raise money for Movember (http://au.movember.com/mospace/7219109) which supports several mental health programs (http://au.movember.com/programs/mental-health) along with raising awareness. I may not be able to grow a decent mo, so hopefully this suffices.


I think depression has been with me for most of my life. From a fairly young age I had my first encounters with suicidal thoughts and being around 6 or 7 at the time, I didn’t really know how to cope with it. Eventually I reached a breaking point, and I wanted to hurt family members that were trying to stop me from hurting myself. By the end of that incident there were two paramedics, my grandparents, my dad (who was called home), my mum and the next door neighbour trying to stop me. Thankfully neither my family members nor myself were hurt in that incident, but it is my first memory of having suicidal thoughts. After the incident I remember having an EEG test (http://en.wikipedia.org/wiki/Electroencephalography) and another test which did not reveal anything out of the ordinary.

Over the next several years, I went on my life thinking that the thoughts in my head were normal and most of the time I just ignored them. During primary school I found that making and maintaining friendships was more of an annoyance than a comfort.

Apart from the forced social interactions of school, I started to distance myself from most people. I only enjoyed being around a few people, and it felt like a chore to spend time with others. By grade 10 and 11, I had constant thoughts about taking my own life, which I never acted upon, or told anyone about. I suspected that this may have been to do with the pressure of planning my adult life and setting myself up for a good future. At this point, I found it very hard to meet new people and I could only hold a conversation with a few close friends.

After finishing school and starting a job, I started thinking about the future and what I would do next. Life was going well, but I had no goals or targets to aim for. It was around this time that I started to believe that I would never find a partner or want one, for that matter. This didn’t worry me as I was happy to go about my life trying not to disturb others as much as possible.

Thoughts about how I would take my own life still occurred, but less frequently now. Most of the time, the reason I did not take my life was that it would make my parents’ life miserable. At the same time I would think of how I would cope if they were to pass away, and ask myself questions like “If they were gone, maybe I should just let go as well?”.

After several years of not worrying about being alone, something changed in my life. At around the start of 2013, I suddenly realised that I didn’t want to die alone. By this time, I actively hated meeting new people, talking to others, and generally going out. If I was in public, I would always want to be back home. These factors made it really difficult to find new friends, let alone a life partner. This also coupled with various other stresses (such as work, uncertainty about sexual orientation, and a lack of life goals) and made me think more and more seriously about committing suicide. It was about 6-8 months ago that I figured out, that my suicidal thoughts were probably a bigger problem than I had originally thought and started trying to find solutions.

I started exercising more, trying to take in more sunlight and also forcing my sleeping pattern into a consistent rhythm, I stopped drinking caffeine and reduced my alcohol intake. There have been several times where I have decided to drink away my problems, but luckily nothing too bad has come from that terrible idea. While these changes have helped a little, they haven’t enough to stop some very, very close calls where I considered throwing myself in front of oncoming traffic.

It basically hit a downwards spiral though, which resulted in me not getting any help because I didn’t want to continue living, I was in stasis.

Around 3 months ago, I eventually got the help I desperately needed from my GP in the form of anti-depressant drugs and counseling. I’m currently finding this combination is helping me a lot. This type of help feels barely noticeable to me, but when I look back at the last two months, I see how far I’ve come and I can definitely see the difference it has made in my life.

The future looks bright for me and I’m more eager than ever to meet new people. I’ve had some great support from my family, friends and colleagues and without any one of them, I don’t think I could have made it this far, for that, I thank them.

If you have a small amount of time please consider donating to Movember (http://au.movember.com/mospace/7219109). Many men are living with similar mental health issues and unaware that there is a help out there for them.

Virgin Flight 1716 Gladstone to Brisbane

A boring blog post about waiting

After some unfortunate events at work, and the cancelation of my flight on Saturday I had my flight to LCA moved to Sunday 13:40. I arrived fairly early to the airport and checked in fairly quickly. Upon checking in the nice lady stated the plane was looking at being 2 hours late. Previous flights to LCA have in the past resulted in airport security checking all the bits and pieces in my bag (camera gear, networking gear, Ardiuno gear). My bag usually lights up like a Christmas tree, but this time no questions asked.

I found a nice spot to settle in, and caught up on recent news articles about the Gladstone floods. After a few minutes I spotted a familiar face, Matt, who was also heading to LCA, but on the Qantas flight departing at the same time (13:40). His flight was delayed for a bit, but after a bit of waiting he departed.

Some time past, and eventually an announcement was made to say our flight had been pushed out to 15:55, and that refreshment vouchers of $8 were being handed out. The unfortunate part of this is the Virgin service desk is on the outside of the security area, and the food was on the inside. So I left the security area, picked up the vouchers, of which I got two of and proceeded through security again. I’m not sure why I got two, maybe a mistake or because I am a Velocity Gold member. This time security paused the conveyor for my bag for a fairly long time and pointed at things on the screen. Luckily for me they let it go through with no bag search or anything fancy.

Since I had two of these vouchers I decided to pool them together rather than spend them on beverages. The main deciding factor for this was that they weren’t to be used for alcoholic beverages.

After this I decided to find a nice spot in the airport. With not too much effort I found an area which there was only one other person, a nice viewing windows, a display to show flight status. It also had a table for laptops full of power points.

The expected flight time came and past, with no notice. It even fell off the notice board list which got me a little worried. Not wanting to go through security again I sent Virgin Australia a twitter, in which they replied with the flight status.

Some more waiting for the plane to arrive, and yet another announcement is made to say it’s delayed. It wasn’t long after that the Internet stopped working at the airport, along with 3G. Since I had no phone, or internet, I wasn’t sure how wide spread the issue was, for all I know work may have lost it’s WAN again, but no one on site would be able to contact anyone off site to get help. I did ask around the airport if they had any pay phones that worked so I could check with site to no avail.

Eventually an announcement / page was made for my name and a few others (which were connecting flights). This required going out of security cleared area and to the service desk again. We were asked if we wanted to still take the flight, of which we did and they apologized for the delays. They also said that they couldn’t print any more meal tickets due to the computer network being down. Virgin also informed us that the incoming flight was mid air and was expected in 45 minutes.

The plane rocked up about 45 minutes later (now 20:45) and we had to undergo the offline check-in which took a very long time. At 21:10 we were actually on the plane, which made a lot of people happy, but practically had to wait 50 or minutes for them to finish the manual system checks. One issue that arose was that the baggage wait was on the computer system, so they had to unload all the baggage and reweigh it to get the correct weight information to the pilots.

Upon a very rough landing, we had to wait for 50 minutes before BNE airport could find us a parking spot for us. The captain humorously asked ground control if we could park under the wing of an A380.

I have to say the ATR 72-500 is a very nice plane for being prop driven. Even in the windy and rainy weather it was very smooth.

I had obviously missed my connecting flight. Virgin treated me as a rock star and put me up in a fancy hotel in the city. A short taxi drive there with another flight 1716 member. Virgin was able to provide me with cab charge for both getting to the hotel and back.

I only stayed in the hotel (very nice place) for a couple of hours, long enough to find that there was a 5am flight to Canberra. I waited in the service desk line for about 45 minutes then just ended up booking a new ticket online and using the priority check in line. Passed through security and made it (finally) into the Virgin lounge. It’s a very nice place.

Flight to Canberra was delayed numerous times, and then eventually at 10ish they announced it as nearly ready to board, then cancelled the flight entirely about 15 minutes later. What was really disappointing was the ladies in the Virgin lounge were unable to get me another flight. They could see one available but not actually put me on it, and just told me to ring the service desk number (with wait times of over 30 minutes). With my phone now flat I tried to talk to real people but that failed with extremely long lines for the service desk. Also tried to pick up my baggage only to find it not there. They appear to have a huge backlog of luggage to distribute due to all the cancelled flights.

What Virgin Australia did well

  • Offering refreshment vouchers
  • Answering peoples questions
  • Dealing with angry customers (and there were a lot)
  • Keeping track of my luggage

What Virgin Australia could do better at

  • Controlling the weather
  • Having better processes for being offline. The system seemed very slow and crew seemed unsure what to do. Maybe their IT system can worked in a cached mode or something
  • Automatically book me on a connecting flight, or have some sort of self service / online system for me to do it myself
  • The high number of calls caused me to be on the phone for 2 hours with no result, something that is hard to control, but I think could have been better. All I wanted to do was change my connecting flight due to missing when the GLT->BNE flight ran over. A web interface could have been useful here to cut down on calls.
  • Lounge staff should be able to rebook flights
  • Check-in terminals should also allow booking a flight. I can book a flight with my phone, then check-in using the terminal, why not have the whole process done on the terminals
  • Why is it that my Brisbane to Canberra flight (first one in the morning) got delayed, the one a couple of hours later was free to go. When I asked about this they said I couldn’t be moved to that flight at all. I’m presuming this is so they only delay one group of people, rather than two, but still very annoying to watch another flight take off while yours is grounded.

Beyond Virgin

With Virgin Australia staff unable to change my BNE to CBR flight to another on the same day I had to buy a nice expensive economy ticket with Qantas (last minute flights aren’t cheap). While waiting for this flight, I made use of the Virgin lounge again (which I think is against their TOS, but meh). This flight was delayed for boarding three times from 18:45 to 19:45. I suspect I’m the unluckiest person when it comes to air travel to LCA this year.

The refund

I waited some time after the event before calling up and asking for a refund on my flights. The first lady was confused at what I was trying to explain (I suspect that she thought I wanted to cancel the flights), however she transferred me to another lady who was able to issue the refunds. I suspect they had some issues refunding one set due to me paying via direct deposit (via POLi - a very scary and insecure online billing system that I think Virgin should drop infavor of BPAY or something), but all in all they were happy to refund the flights that were botched (1716 and the connecting flight).

AVR Libs


  • C++
  • Sits on top of AVR LibC
  • PROGMEM and pgm_read_byte to store read only data in Flash only
  • Sometimes have to break the API for the greater good
  • Prefer using 8 bit types
  • -function-sections
    • Every function has it’s own section, then the linker can discard those sections
  • Pass template parameters as the code will be computed and discarded to save space
  • Restructure code to be event driven
    • Saves power, stops using busy loop rather than waiting
    • Make the main loop just check events and sleep
  • More functions in a classes
  • Write documentation first to avoid scope creep
  • Avoid generic names in libraries since the linker just picks the fist one
  • Use namespaces for libs
  • Limit variables
  • Name variables INCLUDING counters
  • Use scope enums


  • Harvard Arch

    • RAM and Program are separate
    • Program is read only
  • AVR limited memory CPU

Bare Metal provisioning with OpenStack

Devananda van der Veen

  • Simplicity - use same tools to stand up both virtual machines and physical
  • Useful for perform or PCI card dependencies
  • Hypervisor driver for Nova (compute part of OpenStack)
    • Doesn’t actually run anything on the machine
  • Compute tells hypervisor to do stuff like start/stop/snapshot
  • Devstack
    • Sets up openstack quickly
    • Bootstrap node deploys images
  • Network issues with Quantum due to software switching / hardware switching

Future plans

  • Local persistent storage with Cinder
  • Openstack on Openstack

Requirements - Flat network - no DHCP -

Buffer Bloat

Stephen Hemminger

  • Most applications don’t choose the correct priority.
  • High priority queue will starve the other queues
  • Random Exponential Drop ok, but hard to work out what to drop when…
  • Hierarachical works when you know the traffic types and have someone to admin
  • Stochastic fair queue (128 bottles ). Random hash of the flow and goes into each queue.
  • Controlled delay. Drops out data that is 5ms too old
    • works regardless of speed
  • SFQ + Controlled delay (FQC)
    • If hash collision occurs, still 5ms
  • Bottle neck needs to be where you can control
  • Patch to make sockets not able to fill queues faster than they can exit the last queue
  • Some wireless cards have queues
  • FQC currently the best in the Linux Kernel


  • Get speed test, configure queues to be correct it at the router
  • Move bottle neck to router


  • Different speeds make moving the bottle neck harder


  • Run ICSI Netalyzr

Windows XP

  • Max windows 64k

Windows 7

  • Bandwidth 80mbit


The Storage Stack for OpenStack

Florian Haas - florian@hastexo.com

  • Friday tutorial for Ceph
  • Native Object Storage
  • Ignores permissions, hierarchy (eg directory), owners
  • Limited to GET PUT DELETE ect…
  • Not a file or a block, it’s an object
  • Can scale to exabytes
  • Stored redundantly
  • Ceph can be used directly or with a layer above it, eg with OpenStack
  • OpenStack can use Ceph to present a block device
    • Thin provisioned
    • Snapshotting, caching
  • ReSTful Object Storage
    • access via HTTP ResTful calls
  • Distributed Filesystem
    • POSIX stuff
  • Lots of client APIs / command line tools


  • Flat namespace
  • Objects are assigned placement groups
  • placement group has an ordered list of object storage devices
    • contents stored redundantly
  • Placement is algorytmically generated


  • CRUSH map - rules on how data is saved
    • Ceph defaults rules set to make sure no two copies of data are on the same device
    • More complicated setups to make datacentre redundant

Block storage

  • RADOS block device (RBD). thin-provisioned, striped across multiple RADOS objects. Only on
  • Easy snapshots and cloning (writable)
  • Used in OpenStack template based virtual machines / cloning VMs
  • rbd - kernel-level block device driver (/dev/rdb) Linux 2.6.37
    • most people use libvert / kvm then not preferred choice
  • qemu-rbd driver based on librados C API used for qemu and KVM
  • Intefrated with Glace for image storage
  • RBD also integrated with Cinder
    • Allows for boot and object storage
  • intergraded with nova boot from
  • cinder / nova handover


  • radosgw (rados gateway)
  • Supports S3 / OpenStack Swift APIs
  • native load balancing and scaleout
    • roundrobin dns, ect…
  • Supports keystone
    • doesn’t need separate auth now

Ease of use? - Few issues need to be ironed out - 3 nodes = ceph cluster - Targeted at private clouds - Suggests XFS for backend storage OSD