January 26, 2012

James Purser's hackergotchi

James Purser

Sigh, so that happened

So two things happened today.

The first was a near riot that necessitated the evacuation of the Prime Minister and the Opposition leader from an awards ceremony meant to highlight the work of emergency workers.

The second was WIN Television blowing it again.

If you haven't caught up on the events today then I heres a brief timeline I've put together from various sources:

  • Earlier today in Sydney, Tony Abbott made comments indicating that he thought it was "time to move on" from the thinking that led to the Aboroginal Tent Embassy being set up forty years ago.
  • Tony Abbott travels to Canberra to attend the awarding of the inaugeral National Emergency Medal along with the Prime Minister.
  • People at the Tent Embassy hear of Tony Abbotts comments and are, it could be said, greatly miffed. They are then told that he is actually in Canberra, not far from the Tent Embassy itself.
  • A number of people decide that they're going express their anger at the Opposition Leader and Prime Minister. They surround the restuaraunt, a glass walled building and start yelling and slamming on the glass.
  • Police are called and the Prime Ministers security detail advises her that the situation is getting dangerous and that she should leave. The PM agrees and also indicates that they should escort the Opposition Leader as well, as he doesn't have his own security detail.
  • The PM and Opposition leader are rushed out of the building surrounded by the biggest scrum of security personel. The PM trips on the way out and it appears the opposition leader is helped along by the security personel via the method of grabbing his belt and pushing.

That's it in a nutshell I think. I've probably missed something but that's what I've managed to pull out of the media.

Needless to say as I watched the tweets fly by with all sorts of claims and details (the original tweets I had seen claimed that the PM had been crash tackled by a protester), I waited for any sign that the MSM had picked up the story. It didn't take long for the papers to run with it, and the TV networks at least squeezing in an extra news bulletin to cover the basic details.

Well, most of the networks.

WIN Television's Wollongong station couldn't even be bothered following channel 9 by putting on an extra news bulletin after Wriddhiman Saha lost his wicket. Instead WIN simply continued on with it's pre-planned ads and it wasn't until it broadcast the 9 news bulletin at 6pm that the news finally reached the airwaves.

I basically have three things to say:

To Tony Abbott, on this day of days, a day which a large part of the indigenous community views as the day they started losing their rights, to suggest that perhaps the Tent Embassy wasn't needed was either a dog whistle of epic proportions, or simply a case of shoving both feet in at the speed of sound.

Oh and as for the snide little raised eye brows and snark when Gillard offered to remove you from the situation, that just makes you look like a petulant little child.

To the protesters, you did yourself and your cause no favours today. You managed to rise to the bait and make yourselves look like a rabble. And getting cute by offering to give the PM back her shoe tomorrow if she comes by the Embassy just really doesn't help.

Finally, to WIN Television. Convergance is coming, and it's not going to be nice to those who aren't ready for it. You've known about this for years now, unless you start doing something soon, you will be left behind.

Anyway, that was  my Australia day, how was yours?

Blog Catagories: 

January 26, 2012 11:40 AM

Ian Wienand

pylint and hiding of attributes

I recently came across the pylint error:

E:  3,4:Foo.foo: An attribute affected in foo line 12 hide this method

in code that boiled down to essentially:

class Foo:

    def foo(self):
        return True

    def foo_override(self):
        return False

    def __init__(self, override=False):
        if override:
            self.foo = self.foo_override

Unfortunately that message isn't particularly helpful in figuring out what's going on. I still can't claim to be 100% sure what the message is intended to convey, but I can construct something that maybe it's talking about.

Consider the following using the above class

foo = Foo()
moo = Foo(override=True)

print "expect True  : %s" % foo.foo()
print "expect False : %s" % moo.foo()
print "expect True  : %s" % Foo.foo(foo)
print "expect False : %s" % Foo.foo(moo)

which gives output of:

$ python ./foo.py 
expect True  : True
expect False : False
expect True  : True
expect False : True

Now, if you read just about any Python tutorial, it will say something along the lines of:

... the special thing about methods is that the object is passed as the first argument of the function. In our example, the call x.f() is exactly equivalent to MyClass.f(x). In general, calling a method with a list of n arguments is equivalent to calling the corresponding function with an argument list that is created by inserting the method’s object before the first argument. [Official Python Tutorial]

The official tutorial above is careful to say in general; others often don't.

The important point to remember is how python internally resolves attribute references as described by the data model. The moo.foo() call is really moo.__dict__["foo"](moo); examining the __dict__ for the moo object we can see that foo has been re-assigned:

>>> print moo.__dict__
{'foo': <bound method Foo.foo_override of <__main__.Foo instance at 0xb72838ac>>}

Our Foo.foo(moo) call is really Foo.__dict__["foo"](moo) -- the fact that we reassigned foo in moo is never noticed. If we were to do something like Foo.foo = Foo.foo_override we would modify the class __dict__, but that doesn't give us the original semantics.

So I postulate that the main point of this warning is to suggest to you that you're creating an instance that now behaves differently to its class. Because the symmetry of calling an instance and calling a class is well understood you might end up getting some strange behaviour, especially if you start with heavy-duty introspection of classes.

Thinking about various hacks and ways to re-write this construct is kind of interesting. I think I might have found a hook for a decent interview question :)

January 26, 2012 11:09 AM

Jeff Waugh's hackergotchi

Jeff Waugh

QotD: Jon Corbet on linux.conf.au and Linux Australia

In summary, LCA remains unique in its combination of strongly technical talks, freedom-oriented and hands-on orientation, wide variety of topics covered, and infectious Australian humor. There is a reason some of us seem to end up there every year despite the painful air-travel experiences required. Linux Australia has put together a structure that allows the conference to be handed off to a new team in a new city every year, bringing a fresh view while upholding the standards set in the previous years.

– LWN’s Jon Corbet on linux.conf.au, An LCA 2012 Summary

January 26, 2012 05:52 AM

January 25, 2012

James Purser's hackergotchi

James Purser

On Bogans and Racism

So, last night I got into one of those twitter arguments that I tend to (I have a bad case of "Someones wrong on the Internet").

In this case it was triggered by the following tweet:

Redglitterx: how do you know if youre an elitist, smug, over-priviledged racist? you make bogan jokes

Now, if you're not sure what a bogan joke is, a bogan is a name for someone who is considered ill-educated, with low income and not only ignorant, but revelling in their ignorance. As you may have noticed, this is actually a stereotype, a cardboard cutout that people use to mentally slot a group of people into the social heirachy. In this way, calling someone a bogan is very much LIKE racism.

However I have never considered the term itself to be racist.

This may be one of those cases where a term is whatever anyone wants it to be, but I really think that it doesn't help anyone to try and conflate anti-boganism with racism. If nothing else, "bogans" don't face the same extreme issues as those who suffer from racism. Bogans are not likely to be physically attacked because they are bogans, there is not a continual low level campaign by large sections of the media to seperate them out from the rest of the population, and let's be honest, there is a hell of a lot of government policy that is aimed at placating and winning the votes of those who might be called bogan.

As I said at the beginning, calling someone a bogan is like racism in that you are using a stereotype to mentally sort that person, just like calling someone an eastern sububs nancy boy, or a north shore soccer mum.

January 25, 2012 11:29 PM

Pia Waugh's hackergotchi

Pia Waugh

Moving on – the journey continues

Today is a complicated day. I’m both sad and excited in equal measure about what this year may hold in store.

I’m sad because this is my last day working for Senator Kate Lundy as her IT Policy Advisor and inhouse geek. Kate headhunted me almost 3 years ago at BarCamp Canberra, though we had known each other for a few years beforehand from when she was the Shadow Minister for IT. I was quite wary of going to work in a political office, but my curiosity about how the machine works combined with a desire to help make good tech policy and an immense amount of respect for Kate brought me into one of the most interesting, fun and challenging jobs I’ve ever had.

I particularly wanted to better understand the legislative and executive arms of government. How ideas turn into policy and policy into implementation. As a result, along with doing my job I’ve spent time researching the history of democracy, of Australian politics, of the ideological and historical premise of all the major Australian parties and the interaction between party politics and democracy over the years.  I’ve also spent time coming to understand some of the layout, responsibilities and challenges of a multi-tiered system of government.

I have learnt a great deal in this job about government, but also about human nature. Working in an electoral office gives one some insight to the difficulties faced by many, but also some insight to the challenge in maintaining a constructive and respectful dialogue. I think it is human nature to try to boil issues down to black and white. But we are essentially grey creatures with enormous complexity, and I think democracy is about finding ways to have a transparent, informed, respectful and constructive dialogue with all the people on complex policies and implementation, so governments can best implement the best policies for the communities they serve.

I have been lucky to work for a politician who is passionate and knowledgeable about technology and good policy. She has been a valuable teacher and mentor. I shall always be thankful for the wisdom, patience, compassion, critical thinking, strategy and policy development I have learnt in this role and from Kate. I’m sure these skills will continue to serve me well.

My work on Kate’s website, the Public Spheres, Open Government, assisting Kate in linking together different tech policies across a variety of portfolios are all things I am proud of. I also feel very lucky to have met and worked with such inspirational people from many different walks of life through this role and in Kate’s office.

Meanwhile, having developed some understanding of the legislative and executive arms of government, I realised that I wanted to have more experience in the administrative arm of government. I had done some tech work in a previous life within departments but always as the outsourced person. I knew I wanted to really get in and contribute to the public service, as well as learn more about the implementation of policy and the delivery of government services to citizens.

As such, I’m excited to say I am hopefully moving into a role in the APS in the coming weeks and I hope my efforts there will be broadly useful to others in the APS. I can’t say more at this stage as it is being finalised at the moment, but I’ll update this post in the weeks ahead with more information.

By working within the APS, I hope to get a better personal understanding of the specific challenges facing the APS with regards to technology, and hopefully assist in developing strategies to be a more agile, responsive and citizen-centric public service. I will also continue helping to move the Open Government agenda ahead both in my own time and, where appropriate, within my new role. My commitment to Open Government (and Gov 2.0) lies in my understanding that it provides a path to a public service and democracy that is most relevant to, engaged with, responsive to, representative of and accountable to its citizens.

I’ll finish by saying that after three years in her office, my respect for Kate has only grown. She is a person who has engaged fully in her role with integrity, responsibility, grace and a firm grip on her own principles. She is a politician that makes me believe politics isn’t just a dirty word and I wish we had more like her. Even in spite of the fact the last time I socialised with her, I ended up with a fractured scaphoid! I have learnt a keen respect for the torque of a 2 stroke, especially on a motocross track.

My shiny black carbon fibre cast. Shiny!My shiny black carbon fibre cast. Shiny!

So, I’m diving into the deep end and I look forward to seeing how well I swim. Wish me luck :)

January 25, 2012 07:00 AM

Sridhar Dhanapalan's hackergotchi

Sridhar Dhanapalan

Twitter Weekly Updates for 2012-01-25

January 25, 2012 06:15 AM

January 24, 2012

Robert Thomson

An Extensible Puppet ENC with class & parameter overrides (& more)

Puppet (http://www.puppetlabs.com/)'s a great tool for system automation - out of the box it comes with most of the functionality that you'll ever need, and a DSL that's easy enough to let junior sysadmins and developers maintain their own recipes. But, depending on the kind of workhorse you want puppet to be, it's possible to hit a wall. For my company, we had too many developers, many system administrators, multiple releases in production simultaneously, and a change control to rule them all (but managed nothing). We also had the odd typo in node definitions causing incidents.

One possible answer to this is to employ an External Node Classifier, which in simple terms means an external script that Puppet calls to get the node definition, or at least the classes and parameters (and the environment, but don't rely on that due to an outstanding bug). An ENC cannot call definitions or puppet functions directly however - it can just pass in classes, class parameters, and global parameters. It's therefore up to you to make your ENC more intelligent.

I think Dan Bode of Puppet Labs gave me the idea of using YAML at first, over a year ago, and I whipped up a basic version in a couple of hours.

Over my long weekend, I decided to write a new ENC library from scratch that would provide the basics that one might want in an ENC, but allows it to be extended with plugins. You instantiate it for a node with some seed data, pass in a loader object, and then include one or more input/override files. It will take care of class, parameter, and substitution-variable overrides, and will spit out a nice Puppet 2.6+ ENC-compatible hash.

The test_puppetenc.rb file is the best source of documentation.

The Code: https://github.com/rmt/puppetenc-ruby

January 24, 2012 06:24 AM

Erik de Castro Lopo

Benchmarking and QuickChecking readInt.

I'm currently working on converting my http-proxy library from using the Data.Enumerator package to Data.Conduit (explanation of why in my last blog post).

During this conversion, I have been studying the sources of the Warp web server because my http-proxy was originally derived from the Enumerator version of Warp. While digging through the Warp code I found the following code (and comment) which is used to parse the number provided in the Content-Length field of a HTTP header:


  -- Note: This function produces garbage on invalid input. But serving an
  -- invalid content-length is a bad idea, mkay?
  readInt :: S.ByteString -> Integer
  readInt = S.foldl' (\x w -> x * 10 + fromIntegral w - 48) 0

The comment clearly states that that this function can produce garbage, specifically if the string contains anything other than ASCII digits. The comment is also correct that an invalid Content-Length is a bad idea. However, on seeing the above code, and remembering something I had seen recently in the standard library, I naively sent the Yesod project a patch replacing the above code with a version that uses the readDec function from the Numeric module:


  import Data.ByteString (ByteString)
  import qualified Data.ByteString.Char8 as B
  import qualified Numeric as N

  readInt :: ByteString -> Integer
  readInt s =
      case N.readDec (B.unpack s) of
          [] -> 0
          (x, _):_ -> x

About 3-4 hours after I submitted the patch I got an email from Michael Snoyman saying that parsing the Content-Length field is a hot spot for the performance of Warp and that I should benchmark it against the code I'm replacing to make sure there is no unacceptable performance penalty.

That's when I decided it was time to check out Bryan O'Sullivan's Criterion bench-marking library. A quick read of the docs and bit of messing around and I was able to prove to myself that using readDec was indeed much slower than the code I wanted to replace.

The initial disappointment of finding that a more correct implementation was significantly slower than the less correct version quickly turned to joy as I experimented with a couple of other implementations and eventually settled on this:


  import Data.ByteString (ByteString)
  import qualified Data.ByteString.Char8 as B
  import qualified Data.Char as C

  readIntTC :: Integral a => ByteString -> a
  readIntTC bs = fromIntegral
          $ B.foldl' (\i c -> i * 10 + C.digitToInt c) 0
          $ B.takeWhile C.isDigit bs

By using the Integral type class, this function converts the given ByteString to any integer type (ie any type belonging to the Integral type class). When used, this function will be specialized by the Haskell compiler at the call site to to produce code to read string values into Ints, Int64s or anything else that is a member of the Integral type class.

For a final sanity check I decided to use QuickCheck to make sure that the various versions of the generic function were correct for values of the type they returned. To do that I wrote a very simple QuickCheck property as follows:


  prop_read_show_idempotent :: Integral a => (ByteString -> a) -> a -> Bool
  prop_read_show_idempotent freader x =
      let posx = abs x
      in posx == freader (B.pack $ show posx)

This QuickCheck property takes the function under test freader and QuickCheck will then provide it values of the correct type. Since the function under test is designed to read Content-Length values which are always positive, we only test using the absolute value of the value randomly generated by QuickCheck.

The complete test program can be found on Github in this Gist and can be compiled and run as:


  ghc -Wall -O3 --make readInt.hs -o readInt && ./readInt

When run, the output of the program looks like this:


  Quickcheck tests.
  +++ OK, passed 100 tests.
  +++ OK, passed 100 tests.
  +++ OK, passed 100 tests.
  Criterion tests.
  warming up
  estimating clock resolution...
  mean is 3.109095 us (320001 iterations)
  found 27331 outliers among 319999 samples (8.5%)
    4477 (1.4%) low severe
    22854 (7.1%) high severe
  estimating cost of a clock call...
  mean is 719.4627 ns (22 iterations)

  benchmarking readIntOrig
  mean: 4.653041 us, lb 4.645949 us, ub 4.663823 us, ci 0.950
  std dev: 43.94805 ns, lb 31.52653 ns, ub 73.82125 ns, ci 0.950

  benchmarking readDec
  mean: 13.12692 us, lb 13.10881 us, ub 13.14411 us, ci 0.950
  std dev: 90.63362 ns, lb 77.52619 ns, ub 112.4304 ns, ci 0.950

  benchmarking readRaw
  mean: 591.8697 ns, lb 590.9466 ns, ub 594.1634 ns, ci 0.950
  std dev: 6.995869 ns, lb 3.557109 ns, ub 14.54708 ns, ci 0.950

  benchmarking readInt
  mean: 388.3835 ns, lb 387.9500 ns, ub 388.8342 ns, ci 0.950
  std dev: 2.261711 ns, lb 2.003214 ns, ub 2.585137 ns, ci 0.950

  benchmarking readInt64
  mean: 389.4380 ns, lb 388.9864 ns, ub 389.9312 ns, ci 0.950
  std dev: 2.399116 ns, lb 2.090363 ns, ub 2.865227 ns, ci 0.950

  benchmarking readInteger
  mean: 389.3450 ns, lb 388.8463 ns, ub 389.8626 ns, ci 0.950
  std dev: 2.599062 ns, lb 2.302428 ns, ub 2.963600 ns, ci 0.950

At the top of the output is proof that all three specializations of the generic function readIntTC satisfy the QuickCheck property. From the Criterion output its pretty obvious that the Numeric.readDec version is about 3 times slower that the original function. More importantly, all three version of this generic function are an order of magnitude faster than the original.

That's a win! I will be submitting my new function for inclusion in Warp.

Update : 14:13

At around the same time I submitted my latest version for readInt Vincent Hanquez posted a comment on the Github issue suggesting I look at the GHC MagicHash extension and pointed me to an example.

Sure enough, using the MagicHash technique resulted in something significantly faster again.

January 24, 2012 12:52 AM

January 22, 2012

Scott Sinclair

Now available via IPv6

Quick Update - This site is now available via IPv6.

You don't have to do anything special, you will just use IPv6 if it is available and you have preferences for IPv6 connections.

If you want to test to see if you can get to the IPv6 site, try visiting http://v6.nullis.net

January 22, 2012 11:00 AM

James Purser's hackergotchi

James Purser

Talks to catchup on

Okay so I missed #lca2012 this year. However because the LCA team is awesome (continuing the grand tradition of awesome LCA teams), the talks have started appearing on the linuxconfau2012 youtube channel.

Squeeee.

Now I have a number of talks to watch on the googletv thing:

Tux in Space: High altitude ballooning - Joel Stanley,Mark Jessop

Lego + Kids + Arduino - James Muraca

Making video streaming interactive, heckling user groups from the clouds!

Android Accessories Made Easy With Arduino - Philip Lindsay

Desktop Home Hacks - Allison Randal

Now these are just the one's I want to watch immediately. If you have a love of hackery, FOSS and all things shiny then I think you need to go through those talks and queue them up on your device of choice.

Also remember, the videos will be made available on the Linux Australia Mirror shortly, so you will be able to grab all of the talks and watch them whether you're online or not.

As I said before: Squeeee

January 22, 2012 02:06 AM

January 21, 2012

Pia Waugh's hackergotchi

Pia Waugh

Twitter Weekly Updates for 2012-01-22

  • Saw the US Girl with the Dragon Tattoo movie. Apart from the gratuitous (but beautiful) intro, it was fantastic. Really well done :) #
  • Yays! :) RT @gavintapp: RT @maxious: Linux.conf.au 2013 Canberra (successful) bid website @ http://t.co/1xZykNtS #lca2012 #
  • #lca2012 was amazing. So many wonderful, inspiring, thought provoking, awesome ppl & discussions. Thx organisers, LA & every person there :) #
  • Yes. I wanna red one :) RT @emmajeans: @piawaugh This! http://t.co/rjCdKzUP #
  • Great point from @ioerror, encrypting data before you store it online helps with privacy/security issues of trusting the #cloud #lca2012 #
  • "I have nothing to hide" is a fallacy or a matter of privilege. — @ioerror #lca2012 #
  • .@ioerror talking about the panopticon and how people tend to self censor when they are under surveillance. See also Foucault. #lca2012 #
  • .@ioerror just took a photo of the crowd. Obviously to identify ALL THE PEOPLE. #lca2012 #gettingparanoid #
  • For those interested, the book ref'd last night is War on the Internet by @BernardKeane. I highly recommend. http://t.co/mltRTFp0 #lca2012 #
  • Last night I had a dream. A dream my cast was on the wrong hand. I woke up trying to pull it off *over* fractured scaphoid. Ouch :) #lca2012 #
  • .@nurhussein thanks, it's fantastic! Great content, ppl, discussions. It is wonderfully inspiring. #lca2012 #
  • I didn't mean it quite like how it came out :) RT @mibus: "With a name like Rusty, we had to get some type of tool…" — @piawaugh #lca2012 #
  • Cool RT @willozap: @piawaugh Ok, new way to start: Fun + Sarkozy: #society5 http://t.co/cVdh02nm http://t.co/t9d0dLbm http://t.co/sWaVur5L #
  • Interesting article by @dannolan on the scope creep (im)balance of policing http://t.co/QiUsXlmZ #
  • Elizabeth Garbee giving gr8 talk on astronomers trying to measure gravitational waves using millisecond pulsars. Ref'd Au SKA :) #lca2012 #
  • RT @kim_weatherall: Paper shows patents impact scientific research http://t.co/7Kb3xYGd (scientists avoid projects impacted) #lca2012 #
  • RT @kim_weatherall: This paper finds patents don't significantly help commercialization of inventions: http://t.co/Z5egwKiq #lca2012 #
  • In open data BoF @aimee_maree talked about Got Gastro, great website. http://t.co/sOtiQTK1 #lca2012 #gov2au #
  • Achieving open data: step 1) just publish, step 2) quality data (compliant systems, etc), step 3) collaborate #lca2012 http://t.co/x6EBDucM #
  • Hey @kim_weatherall, @felix42 said you have some research/stats around patents in Australia. Anything you can share? :) #lca2012 #
  • The Free Software Act, interesting idea. http://t.co/jJcvMe9U #lca2012 #
  • Tridge says independent invention as a defense & interoperability as fair use are two mods that would improve patents system #lca2012 #
  • Grin RT @patentology: FOSS headlines you will never see? What abt 'Blackburn decline Samba transfer request' http://t.co/2MIKrp2G #truestory #
  • Powerful statement on #SOPA from xkcd. Nice. http://t.co/YIglzRMQ #
  • Ta RT @trevclarke: @joshgnosis @j_hutch @gusworldau Slowest search ever, results for "open source" Herald Sun: http://t.co/UZ41UbkP #lca2012 #
  • Handy tip from @gusworldau: press releases are useful but personalise them, tell the journo why they'd be interested #lca2012 #
  • Handy tip for dealing with the press, press releases are useful but personalise them, tell the journo why they'd be interested #lca2012 #
  • Point from @gusworldau on falsity of broad assumption ads always dictate content in tech media. #lca2012 #
  • Linus' response to a media question from @gusworldau on how much it'd cost to get him to come to a geek party. #lca2012 http://t.co/Ypig34cD #
  • "journalists like free speech, they like free beer, but don't always want to get into the complexities in between." @gusworldau #lca2012 #
  • Fascinating, the top 10 tech media websites in Australia by @gusworldau #lca2012 http://t.co/9a7kxqIK #
  • I think we have a good community of tech journos in Australia. Doesn't always translate to coverage says @gusworldau #lca2012 #
  • Totally, voting now :) RT @chrisjrn: Hey, @gusworldau's talk on tech journalism is fantastic. #lca2012 #
  • Angus' talk about FOSS & media. Hilarious & informative. Gets my vote :) "The only way Linux would make the Sun Herald" http://t.co/Anqa5YCZ #
  • .@chrisjrn Hah! "With all due respect…" http://t.co/G4IEoSmp #talledaganights #lca2012 #
  • Whenever people start effectively with "no offense, but…" I am entertained and mildly annoyed. Thanks audience member :) #lca2012 #
  • Haha, jokes OH in @allisonrandal's talk: "man house", "apropos flush" #lca2012 #
  • Accidentally stumbled across this surprisingly interesting article on "Australian egalitarianism", starting w language http://t.co/anAwrkvn #
  • Karen's talk this morning has reminds me to turn off bluetooth/wireless on my phone now, and on my heart monitor later ;) #lca2012 #
  • Cool, RT to #lca2012 @lukeweston: @piawaugh: http://t.co/kAccnvxj #
  • .@Alegrya Big difference between striving for great user experience (similarity) & lock-in Apple imposes vs what FOSS tries to do #lca2012 #
  • .@ioerror Cool, thanks. Hey @supersat @aczeskis, is there a blog post or something about your car hacks? :) /cc @lukeweston #
  • Scary RT @ej_butler: @hackuador @piawaugh Did you see this story last year? Insulin Pump hacked http://t.co/if6ngxwD #medtronic #lca2012 #
  • Really enjoying the talk by Karen Sandler at #lca2012 Bring home the importance of software freedom to everyday life, esp health apps. #
  • Hand is aching today. Too much typing & Tweeting :( Retiring early to write blog & prepare for Martial Arts BoF tmrw morn at #lca2012 :) #fb #
  • Thanks @chrisjrn @kathyreid & @jaimekristene #
  • OK, I've forgotten and can't quickly find this on the wiki, how do I vote for talks for the "Best Of" slots at #lca2012 :) #
  • Fantastic talk by Bdale Garbee about FreedomBox, a great idea to make privacy easy for people online. This gets my vote :) #lca2012 #
  • Wikipedia has gone dark to protest SOPA. Fascinating. Be great to get stats after the blackout on how many click throughs & such #lca2012 #
  • For those I've chatted to about #society5 I've some early thoughts in my blog last year http://t.co/CWgkLcZt #lca2012 More coming v soon :) #
  • Hey @paulzee, you can see most tech related stuff from the last federal budget here http://t.co/HhJVwtrt #lca2012 #
  • OMG PWNIES! :) #lca2012 @caseopaya: @piawaugh link for you http://t.co/lEVUHaym #
  • If ppl want to read great book on critical thinking & failure (even in science!) read @tribalscientist's book http://t.co/q7sOuFAX #lca2012 #
  • Actually, bridge experiment isn't taking into account the variable of person type choosing to take a scary bridge vs safe bridge. #lca2012 #
  • Playing Tetris interferes with long term memory, scientifically proven apparently. Wow. That will be useful :) #lca2012 #
  • Listening to @pjf reminds me of Gladwell's Tipping point. Recognising different traits helps your project "connectors, mavens & salespeople" #
  • Hey @tribalscientist, @pjf is giving kenote (now) at #lca2012 & referencing the chicken and shovel split brain experiment :) You might enjoy #
  • Interesting analogy between taxes and club membership. Comments are quite diverse too. http://t.co/CPqmRWLz #
  • Also for @chrisjrn, other #lca2012 peeps may enjoy the Glenn Beck Conspiracy Theory Generator :) http://t.co/5d1UxIHM #
  • Yo @chrisjrn, you can find that song in my soundcloud favs http://t.co/Z5lhNzm3 "Burn (Angel of Destruction Mix) by TweakerRay" #
  • POLICY CIRCLES is interesting (made for Pacific consultation). Ppl might also be interested in #publicsphere http://t.co/zvI5NUPu #lca2012 #
  • Hearing about Pacific Institute of Public Policy http://t.co/V5XK93fL & Policy Circles http://t.co/Ky9UinMB Interesting projects #lca2012 #
  • Excited about the mix of martial arts lined up for the Martial Arts BoF. Come along if you are interested :) http://t.co/Ar5Y3aPi #lca2012 #
  • Interesting point from POLICY CIRCLES talk at #lca2012 "People are torn between the desire for peace and desire for justice". #
  • .@purserj Ah, BOFH culture, it is a dangerous and seductive path to darkness. Resist the user-hate people! ;) /cc @shorebuck #
  • I think there's something in that for all of us. RT @shorebuck as a user you can hate an editor. As tech support you can hate all of them (: #
  • Whenever I use OpenOffice I am reminded how annoying it can be. For the smug out there MSOffice is no better. I should stick to vim #lca2012 #
  • For @ajtowns, this is stunning! Manual 3D printing of fish -> painted layers between layers of resin. http://t.co/VVAXyEy5 #lca2012 #
  • Interesting read "APS employees have the same right to freedom of expression as other members of the community" http://t.co/aneyG1gd #gov2au #
  • Just linking to the Sarkozy speech for ppls interest, which I'm going over again for research. http://t.co/tA6y0EDM /cc @willozap #society5 #
  • Yes! RT @kattekrab: RT @rillian: #lca2012 remains an awesome group of people. #
  • Watching movie reader that describes video content as it plays. Demo is Elephants Dream which is hard to understand regardless ;) #lca2012 #
  • Really excited about @ioerror's talk Friday. Might feed into a project I'm working on atm so hoping to chat. Watch this space ;) #lca2012 #
  • Martial arts geeks at #lca2012 - Come to the Martial Arts BOF Thurs morn to train & share :) http://t.co/bjjOzUyY #
  • In multimedia miniconf. Jan makes a good point: DRM fundamentally flawed because limiting access to content you want ppl to access. #lca2012 #
  • Relevant to Haecksen #lca2012 RT @PennySharpemlc: From US: why women don't want to run for elected office. Worth a read http://t.co/5WjeEQmP #
  • Stunning RT @neerav: wow 1 of my photos (full moon last wk) http://t.co/ao3RR66Z was featured on the Flickr "Interesting" page. 1515 views #
  • Awesomes RT @BronyRT: RT @nekonoir: Linux + Bronies = all the squee #lca2012 #mylittlepony http://t.co/30RPmfV7 #
  • Tmrw I will bring my pwnies tshirt ;) RT @Tempestrix: Why are there ponies? #lca2012 #sysadminconf #
  • .@weezmgk ah, thanks :) and to the rest of you too :) #
  • In Haecksen miniconf at #lca2012 listening to stats on female representation at lca & of speakers. We have gone from 0% to 23% speakers :) #
  • Arrived at #lca2012 in time for the conf opening. Yays! I'll be tweeting this week about the conf, mostly just thoughts/links/blogs :) #
  • Interesting. Kind or kid? RT @bengrubb: Aussie wunderkind gets $US250k for technology that could revolutionise web http://t.co/1ds0Qtsr #
  • Hah! :) RT @linuxconfau: @piawaugh Safe travels Pia! We'd say break a leg, but we don't want to risk it :-) #
  • One for @johnf :) Moosli from the plane. http://t.co/O1ynQDPo #
  • One for @johnf :) Moosli from the plane. null #
  • Now just a bus ride away from #lca2012 Woot! #
  • On my way to #lca2012 Early start but it's a long way to Ballarat :) Will blog the week as usual. #

January 21, 2012 11:00 PM

Twitter Weekly Updates for 2012-01-22

  • Saw the US Girl with the Dragon Tattoo movie. Apart from the gratuitous (but beautiful) intro, it was fantastic. Really well done :) #
  • Yays! :) RT @gavintapp: RT @maxious: Linux.conf.au 2013 Canberra (successful) bid website @ http://t.co/1xZykNtS #lca2012 #
  • #lca2012 was amazing. So many wonderful, inspiring, thought provoking, awesome ppl & discussions. Thx organisers, LA & every person there :) #
  • Yes. I wanna red one :) RT @emmajeans: @piawaugh This! http://t.co/rjCdKzUP #
  • Great point from @ioerror, encrypting data before you store it online helps with privacy/security issues of trusting the #cloud #lca2012 #
  • "I have nothing to hide" is a fallacy or a matter of privilege. — @ioerror #lca2012 #
  • .@ioerror talking about the panopticon and how people tend to self censor when they are under surveillance. See also Foucault. #lca2012 #
  • .@ioerror just took a photo of the crowd. Obviously to identify ALL THE PEOPLE. #lca2012 #gettingparanoid #
  • For those interested, the book ref'd last night is War on the Internet by @BernardKeane. I highly recommend. http://t.co/mltRTFp0 #lca2012 #
  • Last night I had a dream. A dream my cast was on the wrong hand. I woke up trying to pull it off *over* fractured scaphoid. Ouch :) #lca2012 #
  • .@nurhussein thanks, it's fantastic! Great content, ppl, discussions. It is wonderfully inspiring. #lca2012 #
  • I didn't mean it quite like how it came out :) RT @mibus: "With a name like Rusty, we had to get some type of tool…" — @piawaugh #lca2012 #
  • Cool RT @willozap: @piawaugh Ok, new way to start: Fun + Sarkozy: #society5 http://t.co/cVdh02nm http://t.co/t9d0dLbm http://t.co/sWaVur5L #
  • Interesting article by @dannolan on the scope creep (im)balance of policing http://t.co/QiUsXlmZ #
  • Elizabeth Garbee giving gr8 talk on astronomers trying to measure gravitational waves using millisecond pulsars. Ref'd Au SKA :) #lca2012 #
  • RT @kim_weatherall: Paper shows patents impact scientific research http://t.co/7Kb3xYGd (scientists avoid projects impacted) #lca2012 #
  • RT @kim_weatherall: This paper finds patents don't significantly help commercialization of inventions: http://t.co/Z5egwKiq #lca2012 #
  • In open data BoF @aimee_maree talked about Got Gastro, great website. http://t.co/sOtiQTK1 #lca2012 #gov2au #
  • Achieving open data: step 1) just publish, step 2) quality data (compliant systems, etc), step 3) collaborate #lca2012 http://t.co/x6EBDucM #
  • Hey @kim_weatherall, @felix42 said you have some research/stats around patents in Australia. Anything you can share? :) #lca2012 #
  • The Free Software Act, interesting idea. http://t.co/jJcvMe9U #lca2012 #
  • Tridge says independent invention as a defense & interoperability as fair use are two mods that would improve patents system #lca2012 #
  • Grin RT @patentology: FOSS headlines you will never see? What abt 'Blackburn decline Samba transfer request' http://t.co/2MIKrp2G #truestory #
  • Powerful statement on #SOPA from xkcd. Nice. http://t.co/YIglzRMQ #
  • Ta RT @trevclarke: @joshgnosis @j_hutch @gusworldau Slowest search ever, results for "open source" Herald Sun: http://t.co/UZ41UbkP #lca2012 #
  • Handy tip from @gusworldau: press releases are useful but personalise them, tell the journo why they'd be interested #lca2012 #
  • Handy tip for dealing with the press, press releases are useful but personalise them, tell the journo why they'd be interested #lca2012 #
  • Point from @gusworldau on falsity of broad assumption ads always dictate content in tech media. #lca2012 #
  • Linus' response to a media question from @gusworldau on how much it'd cost to get him to come to a geek party. #lca2012 http://t.co/Ypig34cD #
  • "journalists like free speech, they like free beer, but don't always want to get into the complexities in between." @gusworldau #lca2012 #
  • Fascinating, the top 10 tech media websites in Australia by @gusworldau #lca2012 http://t.co/9a7kxqIK #
  • I think we have a good community of tech journos in Australia. Doesn't always translate to coverage says @gusworldau #lca2012 #
  • Totally, voting now :) RT @chrisjrn: Hey, @gusworldau's talk on tech journalism is fantastic. #lca2012 #
  • Angus' talk about FOSS & media. Hilarious & informative. Gets my vote :) "The only way Linux would make the Sun Herald" http://t.co/Anqa5YCZ #
  • .@chrisjrn Hah! "With all due respect…" http://t.co/G4IEoSmp #talledaganights #lca2012 #
  • Whenever people start effectively with "no offense, but…" I am entertained and mildly annoyed. Thanks audience member :) #lca2012 #
  • Haha, jokes OH in @allisonrandal's talk: "man house", "apropos flush" #lca2012 #
  • Accidentally stumbled across this surprisingly interesting article on "Australian egalitarianism", starting w language http://t.co/anAwrkvn #
  • Karen's talk this morning has reminds me to turn off bluetooth/wireless on my phone now, and on my heart monitor later ;) #lca2012 #
  • Cool, RT to #lca2012 @lukeweston: @piawaugh: http://t.co/kAccnvxj #
  • .@Alegrya Big difference between striving for great user experience (similarity) & lock-in Apple imposes vs what FOSS tries to do #lca2012 #
  • .@ioerror Cool, thanks. Hey @supersat @aczeskis, is there a blog post or something about your car hacks? :) /cc @lukeweston #
  • Scary RT @ej_butler: @hackuador @piawaugh Did you see this story last year? Insulin Pump hacked http://t.co/if6ngxwD #medtronic #lca2012 #
  • Really enjoying the talk by Karen Sandler at #lca2012 Bring home the importance of software freedom to everyday life, esp health apps. #
  • Hand is aching today. Too much typing & Tweeting :( Retiring early to write blog & prepare for Martial Arts BoF tmrw morn at #lca2012 :) #fb #
  • Thanks @chrisjrn @kathyreid & @jaimekristene #
  • OK, I've forgotten and can't quickly find this on the wiki, how do I vote for talks for the "Best Of" slots at #lca2012 :) #
  • Fantastic talk by Bdale Garbee about FreedomBox, a great idea to make privacy easy for people online. This gets my vote :) #lca2012 #
  • Wikipedia has gone dark to protest SOPA. Fascinating. Be great to get stats after the blackout on how many click throughs & such #lca2012 #
  • For those I've chatted to about #society5 I've some early thoughts in my blog last year http://t.co/CWgkLcZt #lca2012 More coming v soon :) #
  • Hey @paulzee, you can see most tech related stuff from the last federal budget here http://t.co/HhJVwtrt #lca2012 #
  • OMG PWNIES! :) #lca2012 @caseopaya: @piawaugh link for you http://t.co/lEVUHaym #
  • If ppl want to read great book on critical thinking & failure (even in science!) read @tribalscientist's book http://t.co/q7sOuFAX #lca2012 #
  • Actually, bridge experiment isn't taking into account the variable of person type choosing to take a scary bridge vs safe bridge. #lca2012 #
  • Playing Tetris interferes with long term memory, scientifically proven apparently. Wow. That will be useful :) #lca2012 #
  • Listening to @pjf reminds me of Gladwell's Tipping point. Recognising different traits helps your project "connectors, mavens & salespeople" #
  • Hey @tribalscientist, @pjf is giving kenote (now) at #lca2012 & referencing the chicken and shovel split brain experiment :) You might enjoy #
  • Interesting analogy between taxes and club membership. Comments are quite diverse too. http://t.co/CPqmRWLz #
  • Also for @chrisjrn, other #lca2012 peeps may enjoy the Glenn Beck Conspiracy Theory Generator :) http://t.co/5d1UxIHM #
  • Yo @chrisjrn, you can find that song in my soundcloud favs http://t.co/Z5lhNzm3 "Burn (Angel of Destruction Mix) by TweakerRay" #
  • POLICY CIRCLES is interesting (made for Pacific consultation). Ppl might also be interested in #publicsphere http://t.co/zvI5NUPu #lca2012 #
  • Hearing about Pacific Institute of Public Policy http://t.co/V5XK93fL & Policy Circles http://t.co/Ky9UinMB Interesting projects #lca2012 #
  • Excited about the mix of martial arts lined up for the Martial Arts BoF. Come along if you are interested :) http://t.co/Ar5Y3aPi #lca2012 #
  • Interesting point from POLICY CIRCLES talk at #lca2012 "People are torn between the desire for peace and desire for justice". #
  • .@purserj Ah, BOFH culture, it is a dangerous and seductive path to darkness. Resist the user-hate people! ;) /cc @shorebuck #
  • I think there's something in that for all of us. RT @shorebuck as a user you can hate an editor. As tech support you can hate all of them (: #
  • Whenever I use OpenOffice I am reminded how annoying it can be. For the smug out there MSOffice is no better. I should stick to vim #lca2012 #
  • For @ajtowns, this is stunning! Manual 3D printing of fish -> painted layers between layers of resin. http://t.co/VVAXyEy5 #lca2012 #
  • Interesting read "APS employees have the same right to freedom of expression as other members of the community" http://t.co/aneyG1gd #gov2au #
  • Just linking to the Sarkozy speech for ppls interest, which I'm going over again for research. http://t.co/tA6y0EDM /cc @willozap #society5 #
  • Yes! RT @kattekrab: RT @rillian: #lca2012 remains an awesome group of people. #
  • Watching movie reader that describes video content as it plays. Demo is Elephants Dream which is hard to understand regardless ;) #lca2012 #
  • Really excited about @ioerror's talk Friday. Might feed into a project I'm working on atm so hoping to chat. Watch this space ;) #lca2012 #
  • Martial arts geeks at #lca2012 - Come to the Martial Arts BOF Thurs morn to train & share :) http://t.co/bjjOzUyY #
  • In multimedia miniconf. Jan makes a good point: DRM fundamentally flawed because limiting access to content you want ppl to access. #lca2012 #
  • Relevant to Haecksen #lca2012 RT @PennySharpemlc: From US: why women don't want to run for elected office. Worth a read http://t.co/5WjeEQmP #
  • Stunning RT @neerav: wow 1 of my photos (full moon last wk) http://t.co/ao3RR66Z was featured on the Flickr "Interesting" page. 1515 views #
  • Awesomes RT @BronyRT: RT @nekonoir: Linux + Bronies = all the squee #lca2012 #mylittlepony http://t.co/30RPmfV7 #
  • Tmrw I will bring my pwnies tshirt ;) RT @Tempestrix: Why are there ponies? #lca2012 #sysadminconf #
  • .@weezmgk ah, thanks :) and to the rest of you too :) #
  • In Haecksen miniconf at #lca2012 listening to stats on female representation at lca & of speakers. We have gone from 0% to 23% speakers :) #
  • Arrived at #lca2012 in time for the conf opening. Yays! I'll be tweeting this week about the conf, mostly just thoughts/links/blogs :) #
  • Interesting. Kind or kid? RT @bengrubb: Aussie wunderkind gets $US250k for technology that could revolutionise web http://t.co/1ds0Qtsr #
  • Hah! :) RT @linuxconfau: @piawaugh Safe travels Pia! We'd say break a leg, but we don't want to risk it :-) #
  • One for @johnf :) Moosli from the plane. http://t.co/O1ynQDPo #
  • One for @johnf :) Moosli from the plane. null #
  • Now just a bus ride away from #lca2012 Woot! #
  • On my way to #lca2012 Early start but it's a long way to Ballarat :) Will blog the week as usual. #

January 21, 2012 11:00 PM

Sonia Hamilton

reload mutt configuration

To reload your mutt configuration (for example after editing muttrc):

:source /path/to/muttrc

For example:

:source /home/sonia/.muttrc

January 21, 2012 08:43 PM

ssh – DISPLAY is not set – Failed to allocate internet-domain X11 display socket

A little ssh error I came across while trying to work remotely on an Ubuntu machine. ssh X Display Forwarding wasn’t working, and I was getting an error:

DISPLAY is not set

Digging through /var/log/auth.log, I also noticed this error:

Failed to allocate internet-domain X11 display socket

After much Googling, it seems that IPv6 was causing the problem. It was solved by adding:

AddressFamily inet

to /etc/ssh/sshd_config, and restarting the ssh server.

January 21, 2012 08:43 PM

More Balintawak Videos

I’ve added some more Balintawak Arnis videos to my Youtube page. They are edits of my training in the Philippines.

Some warmup drills:

www.youtube.com/watch?v=v2sacUPkEGc

And Groups 1, 2, and 3 of the Balintawak “Grouped Training System”:

www.youtube.com/watch?v=K0z_o2lTLlQ

www.youtube.com/watch?v=rahw63pQgbk

www.youtube.com/watch?v=Cu_0N_4804U

January 21, 2012 08:43 PM

WordPress Clearline Theme – Display Tags not Categories

The WordPress Clearline theme displays categories not tags for posts, and doesn’t have a way of modifying it’s behaviour through the settings area. This is easily fixed with a one line code change:

Edit the file /var/www/wp-content/themes/clear-line/functions.php, and at approximately line 340 replace:

<?php the_category(', '); ?>

with this:

<?php the_tags('', ', '); ?>

The path to the functions.php file may be slightly different on your server; you can quickly locate it using find:

find / -type f -name functions.php 2> /dev/null

January 21, 2012 08:42 PM

January 18, 2012

Sridhar Dhanapalan's hackergotchi

Sridhar Dhanapalan

Twitter Weekly Updates for 2012-01-18

January 18, 2012 06:15 AM

January 16, 2012

Sonia Hamilton

First Day at Google – Floating Fish

My first day at Google – a fish floated through the kitchen…

www.youtube.com/watch?v=FoTRfO6BqIc

January 16, 2012 07:03 PM

Migrating from Palm to Android

My venerable Palm Treo 550 is showing it’s age (as is the company), so I’ve been looking for a new phone platform to migrate to for a few years. And since I’m now working for Google, Android is the obvious choice (dog-fooding and all that).

Some tricks and tools I’ve find useful in my migration from Palm to Android:

  • Synthesis SyncML clients are great for syncing to a SyncML server. Not $free like Funambol, but Synthesis has nice extra things like syncing of memos.
  • for a SyncML server I’m using Memotoo. I could’ve setup my own SyncML server, but at $5/month Memotoo is cheap, and I know it works…
  • on the Android Market there’s a Keyring client, thus enabling me to bring across my Palm Treo Keyring (full of Secret Squirrel Stuff, like passwords for servers, etc). I’m yet to work out how I’m going to back this up, but probably something with Memotoo

So, I’m using SyncML clients on my Treo and Android to sync up to Memotoo, keeping both in sync. Memotoo gives me a nice desktop that sort of replaces the JPilot desktop (so I can type stuff in at a real keyboard and sync it to my phones). Shweeeet, I’m almost migrated!

 

January 16, 2012 07:03 PM

January 14, 2012

Pia Waugh's hackergotchi

Pia Waugh

Twitter Weekly Updates for 2012-01-15

  • Sharing again for back to work crowd :) BEST XMAS POPPER THING EVER! Why did the chicken cross the road, Machiavelli. http://t.co/tgGyZzUy #
  • Field Of Dreams mushroom burger at Grill'd (Belconnen). Oh wow. #
  • Listening to cover of Tomorrow ny Killing Heidi in a cafe. I prefer the original, but it is quite sweet. #
  • .@graceless_me that's right, follow us to land of awesome! Hopefully we'll find it soon ;) /cc @ScottRhodie @techAU @Asher_Wolf @nanopunk #
  • This will get annoying pretty fast :/ #fracturedscaphoid #firstworldproblems I still loved dirt bike riding/jumping :) http://t.co/s5KIllmN #
  • In xray, likelihood of fracture = high. Wrist feels heaps better than after dirt bike accident, but still tender bone. #firstworldproblems #
  • Wow RT @Liberationtech: Combating Net Copyright Infringement While Protecting Open & Innovative Net http://t.co/7c2CIvWT #
  • Very excited about #lca2012 :) I had to delay coming early (house painting) but I arrive first thing Monday morning. Yays! #getyourgeekon #
  • Packing up ones house you find the strangest things :) #lca2012 #lca2003 http://t.co/Cukpw8MA #
  • .@JoAllebone Heh, I hear ya! In exactly the same boat. Trying to find somewhere to live in Canberra whilst doing 100 other things = hard! :/ #
  • Painting my house today, am EXHAUSTED and it is only day 1. Ceiling looks a million times better though :) Tomorrow, WALLS! :) #
  • Fascinating RT @nigroeneveld: How China Thinks About the Future of Cyberspace Conflict http://t.co/0UiKudjH #china #cyberwar #infosec #
  • .@patentology heh, yeah :) Be interesting to get actual gender stats on diff games, but AFAIK women are roughly half of gamers /cc @IDEALAW #
  • .@reijin64 My mum was a computer technician. Jokes about women/mothers & tech have always seemed rly dumb to me :) /cc @IDEALAW @patentology #
  • Implying? #gamer RT @IDEALAW: LOL RT @patentology: 'Angry Birds' more popular with women over 30 than 'Call of Duty'? Who would've thought?! #
  • SM still maturing RT @peterjblack: hmm this is interesting "Study: Social networkers have more ethics problems at work" http://t.co/R970OfGj #
  • Always awesome to meet inspiring clever ppl. Thx @mia_will for the catch up and the intro :) #
  • Interesting RT @sanchezjb: Hacked memo leaked: Apple, Nokia, RIM supply backdoors for gov intercepts? http://t.co/sNBchf23 #netfreedom #

January 14, 2012 11:00 PM

Twitter Weekly Updates for 2012-01-15

  • Sharing again for back to work crowd :) BEST XMAS POPPER THING EVER! Why did the chicken cross the road, Machiavelli. http://t.co/tgGyZzUy #
  • Field Of Dreams mushroom burger at Grill'd (Belconnen). Oh wow. #
  • Listening to cover of Tomorrow ny Killing Heidi in a cafe. I prefer the original, but it is quite sweet. #
  • .@graceless_me that's right, follow us to land of awesome! Hopefully we'll find it soon ;) /cc @ScottRhodie @techAU @Asher_Wolf @nanopunk #
  • This will get annoying pretty fast :/ #fracturedscaphoid #firstworldproblems I still loved dirt bike riding/jumping :) http://t.co/s5KIllmN #
  • In xray, likelihood of fracture = high. Wrist feels heaps better than after dirt bike accident, but still tender bone. #firstworldproblems #
  • Wow RT @Liberationtech: Combating Net Copyright Infringement While Protecting Open & Innovative Net http://t.co/7c2CIvWT #
  • Very excited about #lca2012 :) I had to delay coming early (house painting) but I arrive first thing Monday morning. Yays! #getyourgeekon #
  • Packing up ones house you find the strangest things :) #lca2012 #lca2003 http://t.co/Cukpw8MA #
  • .@JoAllebone Heh, I hear ya! In exactly the same boat. Trying to find somewhere to live in Canberra whilst doing 100 other things = hard! :/ #
  • Painting my house today, am EXHAUSTED and it is only day 1. Ceiling looks a million times better though :) Tomorrow, WALLS! :) #
  • Fascinating RT @nigroeneveld: How China Thinks About the Future of Cyberspace Conflict http://t.co/0UiKudjH #china #cyberwar #infosec #
  • .@patentology heh, yeah :) Be interesting to get actual gender stats on diff games, but AFAIK women are roughly half of gamers /cc @IDEALAW #
  • .@reijin64 My mum was a computer technician. Jokes about women/mothers & tech have always seemed rly dumb to me :) /cc @IDEALAW @patentology #
  • Implying? #gamer RT @IDEALAW: LOL RT @patentology: 'Angry Birds' more popular with women over 30 than 'Call of Duty'? Who would've thought?! #
  • SM still maturing RT @peterjblack: hmm this is interesting "Study: Social networkers have more ethics problems at work" http://t.co/R970OfGj #
  • Always awesome to meet inspiring clever ppl. Thx @mia_will for the catch up and the intro :) #
  • Interesting RT @sanchezjb: Hacked memo leaked: Apple, Nokia, RIM supply backdoors for gov intercepts? http://t.co/sNBchf23 #netfreedom #

January 14, 2012 11:00 PM

Erik de Castro Lopo

A Simple Telnet Client Using Data.Conduit.

Below is a simple telnet client written using Haskell's new Conduit library. This library was written by Michael Snoyman the man behind the Yesod Web Framework for Haskell.

The Conduit library is a second generation approach to the problem of guaranteeing bounded memory usage in the presence of lazy evaluation. The first generation of these ideas were libraries like Iteratee, Enumerator, and IterIO. All of these first generation libraries use the the term enumerator for data producers and iteratee for data consumers. The new Conduit library calls data producers "sources" and data consumers "sinks" to make them a little more approachable.

The other big difference between Conduit and the early libraries in this space is to do with guaranteeing early clean up of potentially scarce resources like sockets. Although I have not looked in any detail at the IterIO library, both Iteratee and Enumerator simply rely on Haskell's garbage collector to clean up resources when they are no longer required. The Conduit library on the other hand uses Resource transformers to guarantee release of these resources as soon as possible.

The client looks like this (latest available here):


  import Control.Concurrent (forkIO, killThread)
  import Control.Monad.IO.Class (MonadIO, liftIO)
  import Control.Monad.Trans.Resource
  import Data.Conduit
  import Data.Conduit.Binary
  import Network (connectTo, PortID (..))
  import System.Environment (getArgs, getProgName)
  import System.IO


  main :: IO ()
  main = do
      args <- getArgs
      case args of
          [host, port] -> telnet host (read port :: Int)
          _ -> usageExit
    where
      usageExit = do
          name <- getProgName
          putStrLn $ "Usage : " ++ name ++ " host port"


  telnet :: String -> Int -> IO ()
  telnet host port = runResourceT $ do
      (releaseSock, hsock) <- with (connectTo host $ PortNumber $ fromIntegral port) hClose
      liftIO $ mapM_ (`hSetBuffering` LineBuffering) [ stdin, stdout, hsock ]
      (releaseThread, _) <- with (
                            forkIO $ runResourceT $ sourceHandle stdin $$ sinkHandle hsock
                            ) killThread
      sourceHandle hsock $$ sinkHandle stdout
      release releaseThread
      release releaseSock

There are basically three blocks, a bunch of imports at the top, the program's entry point main and the telnet function.

The telnet function is pretty simple. Most of the function runs inside a runResourceT resource transformer. The purpose of these resources transformers is to keep track of resources such as sockets, file handles, thread ids etc and make sure they get released in a timely manner. For example, in the telnet function, the connectTo function call opens a connection to the specified host and port number and returns a socket. By wrapping the connectTo in the call to with then the socket is registered with the resource transformer. The with function has the following prototype:


  with :: Resource m
       => Base m a             -- Base monad for the current monad stack
       -> (a -> Base m ())     -- Resource de-allocation function
       -> ResourceT m (ReleaseKey, a)

When the resource is registered, the user must also supply a function that will destroy and release the resource. The with function returns a ReleaseKey for the resource and the resource itself. Formulating the with function this way makes it hard to misuse.

The other thing of interest is that because a telnet client needs to send data in both directions, the server-to-client communication path and the client-to-server communication run in separate GHC runtime threads. The thread is spawned using forkIO and even though the thread identifier is thrown away, the resource transformer still records it and will later call killThread to clean up the thread.

The main core of the program are the two lines containing calls to sourceHandle and sinkHandle. The first of these lines pulls data from stdin and pushes it to the socket hsock while the second pulls from the socket and pushes it to stdout.

It should be noted that the final two calls to release are not strictly necessary since the resource transformer will clean up these resources automatically.

The experience of writing this telnet client suggests that the Conduit library is certainly easier to use than the Enumerator or Iteratee libraries.

January 14, 2012 02:22 AM

January 11, 2012

James Purser's hackergotchi

James Purser

New Purser Explores The World Episode is out

Man it's been a little while since I last posted here, need to fix that.

First up though, there is a new episode of Purser Explores The World out:

Ice Hockey in the land of Sun and Surf

Australia is famous for its sporting prowess. Everyone knows that when it comes to sports such as Cricket, Rugby (of either variety) and Swimming, Australia is up there with the best in the world.

However what people may not be aware of is that Australia, the land of Sun and Surf is home to a thriving and competitive Ice Hockey community.

I'm going to take you into the world of the Australian Womens Ice Hockey competition and we're going to find out what it takes to be a player on a team that can challenge European nations.

Links will be put up in the Angry Beanie Reddit as usual

Audio:

MP3

OGG

Torrent:

MP3

OGG

January 11, 2012 10:57 AM

Sridhar Dhanapalan's hackergotchi

Sridhar Dhanapalan

Twitter Weekly Updates for 2012-01-11

January 11, 2012 06:15 AM

January 07, 2012

Pia Waugh's hackergotchi

Pia Waugh

Twitter Weekly Updates for 2012-01-08

January 07, 2012 11:00 PM

Twitter Weekly Updates for 2012-01-08

January 07, 2012 11:00 PM

Sridhar Dhanapalan's hackergotchi

Sridhar Dhanapalan

OLPC Australia XO-AU OS 12 beta 1

The OLPC Australia XO-AU OS 12 has reached beta 1. This is based on OLPC OS 11.3.1 and Dextrose 3.

We’d really appreciate some testing. Please direct your feedback to the OLPC Australia mailing list.

Here is the notice I sent out to teachers:

———- Forwarded message ———-
From: Sridhar Dhanapalan
Date: 24 December 2011
Subject: Taking part in improving new XO software

Friends,

The 2012 OLPC Australia operating system, XO-AU OS 12, has reached a
beta stage of development. It has many improvements, and we looking
for feedback on how it works to help us create the final product. This
beta is suitable for testing, documentation and developing lesson
plans.

In early February, we will have a near-final release candidate,
suitable for trialling in classrooms. We are looking for clever
teachers to provide us with real-world feedback on how the software
works with their classes.

This is an opportunity for you to take part in XO development and
ensure that the device suits the needs of your classroom. We would be
especially interested to know how the connectivity and collaboration
works on your school’s networks.

To get started, visit our release notes page:
https://dev.laptop.org.au/projects/xo-au/wiki/120_release_notes

This page outlines the main changes in the new operating system. Go to
the “Beta 1″ part of the Installation section. Installing the beta is
no different from installing the XO-AU USB 3 stable release: extract
the zip file to a USB stick and you’re ready to go.

To provide feedback, join our technical mailing list:
https://dev.laptop.org.au/projects/general/wiki/Technical_mailing_list

Following this, you can send your comments or ask questions at
olpc-au at lists dot laptop dot org

The OLPC Australia Engineering team are active participants on this
list, and we will reply. Remember, the better you can help us with
quality information, the better we can make the product for you :)

Regards,
Sridhar

January 07, 2012 07:37 AM

January 06, 2012

Robert Collins

Public service announcement: signals implies reentrant code even in Python

This is a tiny PSA prompted by my digging into a deadlock condition in the Launchpad application servers.

We were observing a small number of servers stopping cold when we did log rotation, with no particularly rhyme or reason.

tl;dr: do not call any non-reentrant code from a Python signal handler. This includes the signal handler itself, queueing tools, multiprocessing, anything with locks (including RLock).

Tracking this down I found we were using an RLock from within the signal handler (via a library…) – so I filed a bug upstream: http://bugs.python.org/issue13697

Some quick background: when a signal is received by Python, the VM sets a status flag saying that signal X has been received and returns. The next chance that thread 0 gets to run bytecode, (and its always thread 0) the signal handler in Python itself runs. For builtin handlers this is pretty safe – e.g. for SIGINT a KeyboardInterrupt is raised. For custom signal handlers, the current frame is pushed and a new stack frame created, which is used to execute the signal handler.

Now this means that the previous frame has been interrupted without regard for your code: it might be part way through evaluating a multi-condition if statement, or between receiving the result of a function and storing it in a variable. Its just suspended.

If the code you call somehow ends up calling that suspended function (or other methods on the same object, or variations on this theme), there is no guarantee about the state of the object; it becomes very hard to reason about.

Consider, for instance, a writelines() call, which you might think is safe. If the internal implementation is ‘for line in lines: foo.write(line)’, then a signal handler which also calls writelines, could have what it outputs appear between any two of the lines in writelines.

True reentrancy is a step up from multithreading in terms of nastiness, primarily because guarding against it is very hard: a non-reentrant lock around the area needing guarding will force either a deadlock, or an exception from your reentered code; a reentrant lock around it will provide no protection. Both of these things apply because the reentering occurs within the same thread – kindof like a generator but without any control or influence on what happens.

Safe things to do are:

  • Calling code which is threadsafe and only other threads will be concurrently calling.
  • Performing ‘atomic’ (any C function is atomic as far as signal handling in Python is concerned) operations such as list.append, or ‘foo = 1′. (Note the use of a constant: anything obtained by reading is able to be subject to reentrancy races [unless you take care :) ])

In Launchpad’s case, we will be setting a flag variable unconditionally from the signal handler, and the next log write that occurs will lock out other writers, consult the flag, and if needed do a rotation, resetting the flag. Writes after the rotation signal, which don’t see the new flag, would be ok. This is the only possible race, if a write to the variable isn’t seen by an in-progress or other-thread log write.

That is all.


January 06, 2012 05:35 AM

December 31, 2011

Pia Waugh's hackergotchi

Pia Waugh

Twitter Weekly Updates for 2012-01-01

December 31, 2011 11:00 PM

December 25, 2011

Matthew Palmer's hackergotchi

Matthew Palmer

The Other Way...

Chris Siebenmann sez:

The profusion of network cables strung through doorways here demonstrates that two drops per sysadmin isn’t anywhere near enough.

What I actually suspect it demonstrates is that Chris’ company hasn’t learnt about the magic that is VLANs. All of the reasons he cites in the longer, explanatory blog post could be solved with VLANs. The only time you can’t get away with one gigabit drop per office and an 8 port VLAN-capable switch is when you need high capacity, and given how many companies struggle by with wifi, I’m going to guess that sustained gigabit-per-machine is not a common requirement.

So, for Christmas, buy your colleages a bunch of gigabit VLAN capable switches, and you can avoid both the nightmare of not having enough network ports, and the more hideous tragedy of having to crawl around the roofspace and recable an entire office.

December 25, 2011 05:00 AM

December 24, 2011

Pia Waugh's hackergotchi

Pia Waugh

Twitter Weekly Updates for 2011-12-25

  • Finishing off a lovely Xmas day with watching The Machinist for the first time. Bale is incredible in this. #
  • MT @3AW693: Tornado warning for Melbourne Area cancelled. Severe thunderstorms. Destructive winds, flash flooding, large hail. cc @shorebuck #
  • BEST XMAS POPPER THING EVER! Why did the chicken cross the road, by Machiavelli. WIN http://t.co/tgGyZzUy #
  • 0710 I receive a musical merry Xmas voicemail from my brother. I live my family. Still laughing at it :) #fb #
  • Incredible remix - How to Destroy Angels - The Space in Between [Dead Errant Soul Remix] by @deaderrantsoul #soundcloud http://t.co/HUJwDNMC #
  • Just updated "Without Warning" on #soundcloud to a version with better mixed vocals. Hope you all like :) http://t.co/G0jrdfxH #music #
  • Wow, "metalstep". That is all. http://t.co/tgQ45gGC #music #procrastinating #
  • Merry xmas, jovial solstice, happy new years and all that jazz to everyone! Hugs to all and to all a good hug :) #
  • Pressie wrapping complete! Now to cook! Rum balls and quiche, hopefully some will make it till tomorrow ;) #
  • I love flowers. Love them! :) It is cool having a garden. http://t.co/QppkWI8N #
  • YUM! My Christmas lunch dessert looks amazing! http://t.co/8HTOK3DR #
  • Just want to say I love Internode! So professional, efficient,great to deal with. <3 #
  • I love my friends! Just got a home made Xmas cake as a pressie :) http://t.co/4hDB5EER #
  • Doesn't it :) I know fight choreography guy, inc Gandalf style :D RT @joshgnosis The Hobbit trailer looks quite decent. http://t.co/KChzg09u #
  • The Team2x people are awesome :) Picking up garbage, with stylez http://t.co/OR4c8M2O /cc @andrewyager @Dries @purserj #
  • Great to see @kim_weatherall & @BiellaColeman quoted in @bernardkeane's War On The Internet. They are teh awesomes :) #
  • Finished @bernardkeane's War On The Internet. Whilst I don't completely agree with every premise or conclusion it is a fantastic & must read #
  • Starting to understand why people wear headphones everywhere. I feel chilled wandering around a mall, usually a highly irritating experience #
  • RT @jethrocarr Awesome, didn't realise Rammstein had a new track http://t.co/RQkkpk3P (via @AllanMLoveday) #
  • Feeling more productive than I have in a long while. My hols going to be committed to overdue socialising, writing & projects. Stay tuned ;) #
  • Looking through photos from @anthonybaxter's travellings to Ethiopia and UNHCR camps on Somalia border. Amazing work. Photos -> @arbabroad #
  • Scary, very much so. Thanks @BernardKeane RT "Indefinite detention formalised in US — and the world is a war" http://t.co/H4rdfCfO #
  • Did anyone else think of Wolverine when they saw the little guy at 00:35? :) Sloths orphanage from @crikey_news http://t.co/1vuARSMg #
  • Hilarious. RT @WestWingReport: Every child wants to find this under the tree. http://t.co/P6i9G7Zn #
  • .@BeesleyPaul Wow, that was a terrible segway, you really shouldn't give up your day job ;) #troll #
  • Hey #gov2au #opendata #opengov foks in Aus, join the discussion about gov 2.0 community devel for 2012 on mailing list https://t.co/GhCHMtwM #
  • All I want for xmas is SOME 3D PRINTED SNOWFLAKES! Thanks @__anat for bringing the awesome :) http://t.co/J1Z06Alp #

December 24, 2011 11:00 PM

December 22, 2011

Dave Airlie

update on hotplug server

No new videos yet, need to fix some more rendering bugs so it looks nicer :)

So I've been working towards 3 setups:

a) intel rendering + nouveau offload
b) nouveau rendering + DVI output + intel LVDS output
c) hotplug USB with either intel or nvidia rendering.

Categorisation of devices roles:
I've identified 4 devices roles so far:
preferred master: the device is happy to be master
reluctant master: the device can be a master but would rather not be
offload slave: device can be used as an additional DRI2 renderer for a master
output slave: device can be used an additional output for a master

For the 3 setups above:
a) intel would be preferred master, nvidia would be offload slave
b) nvidia would be preferred master, intel would be output slave
c) usb devices would be output slaves, however if no master exists, usb device would be reluctant master.

I've rebased the prime work[1] on top of the dma-buf upstream work, and worked through most of the lifetime problems. Some locking issues still exist, and I'll have to get back to them. But the code works and doesn't oops randomly which is good.

prime is the kernel magic needed for this work, as it allows sharing of a buffer between two drm drivers, so for (a) it shares the dri2 front pixmap between devices, for (b/c) it shares a pixmap that the rendering gpu copies dirty updates to and the output slaves use as their scanout pixmap.

So I've done nearly all the work to share between intel and nouveau and I've done the kernel driver work for udl, but I haven't done the last piece in userspace for (c), which is to use the shared pixmap as usb scanout via the modesetting driver.

Today I hacked in a switch on the first randr command, so I can start the X server with intel as master and nouveau in offload mode. I can run gears on intel or nouveau, then after the randr command and another randr command to set a mode, the X server migrates everything to the nouveau driver, puts it in master mode, and places the intel driver into output slave mode. It seems to render my xterm + metacity content fine.

So the current short-term TODO is:
fix some issues with my nouveau/exa port rendering
fix some issues with xcompmgr
add usb output slave support.

Medium-term TODO:
worked out how to control this stuff, via randr protocol. How much information do we need to expose to clients about GPUs, and how do we control them. Open issues with atomicity of updates to avoid major uglys. Switching from intel master to nvidia master + intel outputs, means we have to reconfigure the Intel output to point at the new pixmap, but the more steps we put in there for clients to do, the more ugly and flashing we'll see on screen, however we probably want a lot of this to be client driven (i.e. gnome-settings-daemon).

Longer term TODO:
Get GLX_ARB_robustness done, now that Ian has done the context creation stuff, this should be a lot more trivial. (so trivial someone else could do it :)

[1] http://cgit.freedesktop.org/~airlied/linux/log/?h=drm-prime-dmabuf

December 22, 2011 05:28 PM

December 21, 2011

Sridhar Dhanapalan's hackergotchi

Sridhar Dhanapalan

Twitter Weekly Updates for 2011-12-21

December 21, 2011 06:15 AM

December 20, 2011

Andrew Cowie's hackergotchi

Andrew Cowie

Poisoning DNS perhaps a bad idea

This is insane. I’m sitting at a café in Sydney using their hotspot. Went to search for something, and I kept getting strange looking “site not found” pages. Huh? Thy were working a few hours ago. So I started digging.

The café’s upstream ISP is “Optus”, one of the major Australian carriers. To my astonishment I found that Optus’s DNS servers are interfering with Google searches, stealing their DNS lookups and serving results pages on their own (shitty quality) branded search instead! Try https:? No connection; and Google+ wouldn’t load either.

Obviously as soon as realized what’s going on I immediately changed DNS servers to something reliable. Before I did I found a tiny “about this page” link at the bottom of the heinous Optus search results page, where I was told how great this was for me, but how I could opt out of their “default” search engine if I wanted to but was warned this was an “advanced setting”.

Seriously, what do Optus think they’re doing? From a commercial standpoint, do they really think that their captive audience matters to anyone advertising on the web? Of course not, but in the mean time they’re certainly going to alienate customers who just maybe actually do want to use (in this case) Google sites.

There’s a bigger issue, though. Unaltered answers to DNS queries is a backbone of net neutrality. That’s our problem, but once carriers start poisoning nameservers in their own favour it will be but a blink before everyone is doing it to each other and lookups will become worthless. While I’m sure the morons in Marketing who thought that sabotaging DNS queries would be a good idea won’t be worried about the wreckage that will cause for everyone else, such a war wouldn’t be good for any of the companies involved, either. And meanwhile, if they really want everyone to learn how to install an app to “fix” the internet…

Of course, this is only a taste of what we’ll be in for when the communications minister finally gets his compulsory Great Firewall of Australia censorship in place, but one thing at a time. If you’re looking for internet access down here, clearly Optus or anything that uses their network should be blacklisted.

AfC

December 20, 2011 04:00 AM

December 19, 2011

James Purser's hackergotchi

James Purser

Who's going to lead the IT revolution in the Illawarra?

The Illawarra Mercury ran an article on the weekend entitled "IT tipped to boom in Illawarra", the basic premise being that as manufacturing winds down, Information Technology and Communications are tagged to grow and fill the gap.

Excellent, I personally think that Wollongong and the Illawarra makes a perfect spot to setup an IT shop if you want to be close to sydney without the costs of being based in Sydney.

However we have a little problem. Naturally, the Illawarra faces competition from other regions in NSW (and Australia) who are facing the same pressures, if we're going to succeed at making Wollongong synonymous with ICT, then we're going to need people fighting for us who have some idea of what they're talking about. This means our political reps need to be on the ball when it comes to this internet thing.

With that in mind, I thought I would do a quick poll of the state members that represent the Illawarra (from Heathcote through to Kiama) and see what sort of web presence they have.

Before I give the full details here's a quick summary:

2 MPs have their own website, the rest rely on their state party sites which are essentially brochure pages.

3 MPs are on twitter (and use it actively)

4 MPs use facebook, althought Anna Watson may as well not have bothered setting up her page and Lee Evans uses  his page to simply redirect people to his website.

Based on this, I'm not super convinced that our state reps really have an understanding of the opportunities offered to the region by the expanding online world, or of the challenges that will need to be faced if we really want to see a real ICT boom in the Illawarra.

Update:

Since posting this article I've since been informed that I missed Lee Evans presence on twitter, facebook and his own website. However even taking this into account, I'm sticking to my original thoughts. It's only a minority of our state reps who actually get how this stuff works, the rest either don't get it at all or view it as simply another broadcast exercise.

Heathcote:

MP: Lee Evans

Party: Liberals

Website: http://leeevansheathcote.com.au/

Twitter: https://twitter.com/#!/heathcotelee

Facebook: http://www.facebook.com/LeeEvansHeathcote

Keira:

MP: Ryan Park

Party: Labor

Website: http://www.ryanpark.com.au/

Twitter: http://twitter.com/ryanpark_keira

Facebook: http://www.facebook.com/RyanParkforKeira

Wollongong:

MP: Noreen Hay

Party: Labor

Website: http://www.nswalp.com/people/electorate-search/noreen-hay/

Twitter: no

Facebook: no

Shellharbour:

MP: Anna Watson

Party: Labor

Website: http://www.nswalp.com/people/electorate-search/anna-watson/

Twitter: no

Facebook: http://www.facebook.com/pages/Anna-Watson-for-Shellharbour/140207352706523 (last updated February 16th)

Kiama:

MP: Gareth Ward

Website: https://www.nsw.liberal.org.au/nsw-candidates/gareth-ward.html

Twitter: http://twitter.com/garethjward/

Facebook: http://www.facebook.com/pages/Gareth-Ward/247989970679

 

Blog Catagories: 

December 19, 2011 01:30 AM

December 18, 2011

Sridhar Dhanapalan's hackergotchi

Sridhar Dhanapalan

OLPC Australia talk at OSDC 2011

Update: my talk has been covered by OLPC News.

Here’s the video of the talk I said I’d be giving at OSDC 2011, titled Australia’s Toughest Linux Deploy­ment:

In it, I outline our educational programme and how the technology fits into it. Some key points:

  • we have a better version on YouTube of the video I show in the talk
  • we maintain a Policy Document, which provides an overview of our overall programme
  • OLPC Australia have two core principles in addition to OLPC’s original five
  • we have some support in government at different levels — for example, we were praised in federal parliament and the print media (paywall) by a prominent federal Member of Parliament
  • we have deployments across remote Australia — a feat that can only be managed through building self-sufficiency
  • our programme is showing beneficial results, and we are engaged in longitudinal and detailed evaluation
  • we have a comprehensive educational programme, with online training and certifications (such as our XO-cert course)
  • we are breaking dependence on special expertise and infrastructure — building sustainability and grass-roots support is key
  • deployments are made at the classroom level, which is more manageable than saturating a whole school at once
  • we don’t provide XOs without training — a teacher must earn a certification before they can receive XOs for their class
  • our support is focused on enabling schools and communities to help themselves, and each other
  • we have innovated in the technology space, with offerings such as the XO-AU OS, XO-AU USB, XOP and XS-AU
  • contextualising learning, for example through localisation, is a powerful tool to improve engagement from the child, school and community
  • we invite people to join our development efforts
  • there’s a nice surprise mentioned towards the end, which I shall elaborate upon in the near future :)

For those of you who have seen me speak about OLPC Australia at SLUG, this is a much more polished talk.

December 18, 2011 05:17 AM

December 17, 2011

Matthew Palmer's hackergotchi

Matthew Palmer

Rethtool: How I Learned to Stop Worrying and Love the ioctl

Damn those unshaven yaks

I’m trying to write a Nagios plugin for work that will comprehensively monitor network interfaces and make sure they’re up, passing traffic, all those sorts of things. Of course, I’m doing it all in Ruby, because that’s how I roll.

So, I need to Know Things about the interface. Everyone does that with ethtool. Right? Sure, if your eyeballs are parsing it. But have you ever tried to machine parse it? To put it as eloquently as possible:

# ethtool eth0
Settings for eth0:
 Supported ports: [ TP MII ]
 Supported link modes:   10baseT/Half 10baseT/Full 
                         100baseT/Half 100baseT/Full 
                         1000baseT/Half 1000baseT/Full 
 Supports auto-negotiation: Yes
 Advertised link modes:  10baseT/Half 10baseT/Full 
                         100baseT/Half 100baseT/Full 
                         1000baseT/Half 1000baseT/Full 
 Advertised pause frame use: No
 Advertised auto-negotiation: Yes
 Link partner advertised link modes:  10baseT/Half 10baseT/Full 
                                      100baseT/Half 100baseT/Full 
                                      1000baseT/Half 1000baseT/Full 
 Link partner advertised pause frame use: No
 Link partner advertised auto-negotiation: Yes
 Speed: 1000Mb/s
 Duplex: Full
 Port: MII
 PHYAD: 0
 Transceiver: internal
 Auto-negotiation: on
 Supports Wake-on: pumbg
 Wake-on: g
 Current message level: 0x00000033 (51)
 Link detected: yes

Parse that, bitch!

Or… perhaps not.

At any rate, I decided that it would be most advantageous if I went straight to the source and twiddle the ioctl until it did my bidding.

And thus, about 5 hours later, was Rethtool born.

Once I worked out a less-than-entirely-crackful way of dealing with C structs in Ruby (after a bit of digging around, I went with the appallingly-undocumented-but-sufficiently-featureful CStruct), and after I finally worked out I was passing the wrong damned struct to ioctl(SIOCETHTOOL) (speaking of appallingly-undocumented: fuck you, ioctl, and all your twisty-passages children), it was smooth sailing.

So, if you’re one of the eight or so people on earth who will ever need to get at the grubby internals of your network interfaces using Ruby (and can’t do it via some sysfs magic), Rethtool is for you.

December 17, 2011 05:00 AM

December 12, 2011

James Purser's hackergotchi

James Purser

A Letter to the Editor

I've just submitted the following to the Illawarra Mercury over this article

"I am writing to you regarding your article entitled “Gay marriage battle in Throsby” in which we are told that state MP Noreen Hay has led the charge in trying to muzzle federal representative Stephen Jones over the topic of same sex marriages.

As a resident of Throsby in general, and Dapto in particular, can I just say that Mrs Hay does NOT represent my views on this matter.

I am a husband and a father and to be honest I’m a little tired of people claiming to fight to protect my marriage when I have given them no permission to do so and feel that there is no need. Believe it or not, allowing two gay or lesbian people to bind their lives together and call it a marriage will not cause the end of the world. I do not feel that if gay marriage is allowed I will suddenly be struck by the urge to divorce my wife and shack up with a big hairy guy called Steve.

I support Stephen Jones in his move to amend the marriage act to allow LGBT people to marry the ones they love."

Blog Catagories: 

December 12, 2011 09:49 AM

December 09, 2011

James Purser's hackergotchi

James Purser

Testing, Testing

Just a test of the Drupal 7 version of this blog.

December 09, 2011 10:44 AM

December 07, 2011

Sridhar Dhanapalan's hackergotchi

Sridhar Dhanapalan

Twitter Weekly Updates for 2011-12-07

  • “The Camero — the ultimate American muscle car. Designed in Australia, made in Canada.” — AU National Press Club #
  • There are only 13 countries that can design, engineer and manufacture a car — Australia is one #
  • >60 car brands available in AU, compared with ~30 in the USA and Japan #

December 07, 2011 06:15 AM

Daniel Stone

why you don't actually want dpi

Inspired by a discussion in #wayland today, here are snippets from three people explaining why X declares its DPI as 96, and why a single 'DPI' sledgehammer isn't actually what basically anyone* wants. Please read them. Thanks.

Adam Jackson:

I am clearly going to have to explain this one more time, forever. Let's see if I can't write it authoritatively once and simply answer with a URL from here out.

Matthew Garrett:

But what about the single monitor case? Let's go back to your Vaio. It's got a high DPI screen, so let's adjust to that. Now you're happy. Right up until you plug in an external monitor and now when you run any applications on the external display your fonts are twice the size they should be. WOOHOO GO TEAM of course that won't make us look like amateurs at all. So you need another heuristic to handle that, and of course "heuristic" is an ancient african word meaning "maybe bonghits will make this problem more tractable".

Federico Mena-Quintero:

People who know a bit of typography may know a few factoids:
- Printed books generally use fonts which can be from about 9 to about 12 points in size.
- A point is roughly 1/72 of an inch. For people in civilized countries, this translates to "I have no idea what the fuck a quarter pounder is".

*: Yes, I know you need to have actual point equivalence, and you've had all your displays and printer colour-calibrated for the past ten years too. You're doing all this in the GIMP or some other kind of design tool, so please yell at them to use the display size information that XRandR gives you right now, already, today.

December 07, 2011 05:00 AM

December 05, 2011

James Purser's hackergotchi

James Purser

New episode of Purser Explores The World Is Up

Okay folks the next episode of Purser Explores The World is up over at angrybeanie.com

In this episode we take the spirit of DIY and see how it's being applied to disaster management.

First up we chat with Pieter Franken from safecast.org about the work they are doing building and operating a crowd sourced radiation monitoring system in Japan, then we sit down with Dr Paul Gardner-Stephen and talk about the Serval Project, a project that could turn your mobile phone into an essential part of a post disaster communications network.

To find the sites of the projects mentioned in this episode, please visit our Reddit at:

http://www.reddit.com/r/angrybeanie

Audio

MP3

OGG

Torrents

MP3

OGG

December 05, 2011 10:19 PM

December 02, 2011

Craige McWhirter

Nicola in the Spring

Wandering through one of our paddocks today, I noticed all the alpaca's staring intently in one direction, like they do when there's a threat (usually a dog). I headed in the direction they were looking and begin to hear faint, plaintive goat bleats, although I could see no goats in the paddock.

It didn't take long to discover one of this year's kids had found a hole exposing one of our many underground spring flows.

This hole is big enough for me to get into and spring flow underneath is large enough for me to crawl in. It's worth noting that this paddock is almost 100% covered in blackberries. If you look closely, despite abundant blackberries, Nicola had leaned across this opening, managed to take two bites from the blackberry leaves before slipping into the hole.

After I stopped laughing and put the camera away, I pulled out one cold, wet and muddy kid who immediately bolted through the sunshine in search of her mum (who licked off all the mud).

Blog topics: 

December 02, 2011 08:00 AM

November 30, 2011

Daniel Stone

some meaningless numbers

My current running Xorg server, built with -O0 -g3 -ggdb, having been through a few suspend cycles, hosting a full GNOME Shell session with several billion tabs in a long-running Chromium instance, a couple of terminals, and a freshly-opened gedit, is currently sitting at 20MB resident memory usage, of which 11MB is shared. The freshly-opened gedit instance has 25MB resident, of which 17MB is shared. Bloat is in the eye of the beholder, I guess.

(Those numbers are RES/SHR respectively in top. Correct me if I'm wrong about what they mean.)

November 30, 2011 10:00 AM

Sridhar Dhanapalan's hackergotchi

Sridhar Dhanapalan

Twitter Weekly Updates for 2011-11-30

November 30, 2011 06:15 AM

November 28, 2011

Andrew Cowie's hackergotchi

Andrew Cowie

Learning Haskell

In the land of computer programming, newer has almost always meant better. Java was newer than C, and better, right? Python was better than Perl. Duh, Ruby is better than everything, so they’d tell you. But wait, Twitter is written in Scala. Guess that must be the new hotness, eh?

Haskell has been around for quite a while; somehow I had it in my head that it was outdated and only for computer science work. After all, there are always crazy weirdos out there in academia working on obscure research languages — at least, that’s the perspective from industry. After all, we’re the ones getting real work done. All you’re doing is sequencing the human genome. We invented Java 2 Enterprise Edition. Take that, ivory tower.

The newness bias is strong, which is why I was poleaxed to find people I respect like Erik de Castro Lopo and Conrad Parker working hard in, of all things, Haskell. And now they’re encouraging me to program in it, too (surely, cats and dogs are sleeping together this night). On their recommendation I’ve been learning a bit, and much to my surprise, it turns out Haskell is vibrant, improving, and really cutting edge.

The next thing

I get the impression that people are tired of being told that the some cool new thing makes everything else they’ve been doing irrelevant. Yet many professional programmers (and worse, fanboy script kiddies) are always looking to the next big thing, the next cool language. Often the very people you respect about a topic have already moved on to something else (there’s a book deal in it for them if they can write it fast enough).

But still; technology is constantly changing and there’s always pressure to be doing the latest and greatest. I try my best to resist this sort of thing, just in the interest of actually getting anything done. Not always easy, and the opposite trap is to adopt a bunker mentality whereby you defend what you’re doing against all comers. Not much learning going on there either.

There is, however, a difference between the latest new thing and learning something new.

One of the best things about being active in open source is the opportunity to meet people who you can look up to and learn from. I may know a thing or two about operations and crisis and such, but my techie friends and colleagues are my mentors when it comes to software development and computer engineering. One thing they have taught me over the years is the value of setting out deliberately to “stretch” your mind. Specifically, experimenting with a new programming language that is not your day-to-day working environment, but something that will force your to learn new ways of looking at problems. These guys are professionals; they recognize that whatever your working language(s) are, you’re going to keep using them because you get things done there. It’s not about being seduced by the latest cool project that some popular blogger would have you believe is the be-all-and-end-all. Rather, in stretching, you might be able to bring ideas back to your main work and just might improve thereby. I think there is wisdom there.

Should I attempt to learn Haskell?

I’ve had an eye on functional programming for a while now; who hasn’t? Not being from a formal computer science or mathematics background — (“damnit Jim, I’m an engineer, not an english major” when called upon to defend my atrocious spelling) — the whole “omigod, like, everything is function and that’s like, totally cool” mantra isn’t quite as compelling by itself as it might be. But lots of people I respect have been going on about functional programming for a while now, and it seemed a good direction to stretch. So I asked which language should I learn?

My colleagues suggested Haskell for a number of reasons. That cutting edge research was happening there and that increasingly powerful things were being implemented in the compiler and runtime as a result sounded interesting. That Haskell being a pure functional language (I didn’t know yet what that meant but that’s beside the point) would really force me to learn a functional way of doing at things (as opposed to some others where you can do functional things but can easily escape those constraints; pragmatic, perhaps, but since the idea was to learn something new, that made Haskell sound good rather than perceiving this as a limitation). Finally, they claimed that you could express problems concisely (brevity good, though not if it’s so dense that it’s write-only).

Considering a new language (or, within a language, considering various competing frameworks for web applications, graphical user interface, production deployment, etc) my sense is that when we look at such things we are all fairly quick to judge, based on our own private aesthetic. Does it look clean? Can I do things I need to do with this easily? How do the authors conceive of the problem space? (in web programming especially, a given framework will make some things easy and other things nigh on impossible; you need to know what world-view you’re buying into).

I don’t know about you, but elegance by itself and in the abstract is not sufficient. Elegance is probably the most highly valued characteristic of good engineering design, but it must be coupled with practicality. In other words, does the design get the job done? So before I was willing to invest time learning Haskell, I wanted to at least have some idea that I’d be able to use it for something more than just academic curiosity.

Incidentally, I’m not sure the Haskell community does itself many favours by glorifying in how clever you can be in the language; the implied corollary is that you can’t do anything without being exceedingly clever about it. If true, that would be tedious. I get the humour of the commentary that as we gain experience we tend to overcomplicate things, as seen in the many different ways there are to express a factorial function. But I saw that article linked from almost every thread about how clever you can be with Haskell; is that the sort of thing that you want to use as an introduction for newcomers? Given the syntax is so different from what people are used to in mainstream C-derived programming languages, the code there just looks like mush. The fact that there are people who studied mathematics are doing theorem proving in the language is fascinating, but the tone is very elevated as a result. A high bar for a newcomer — even a professional with 25 years programming experience — to face.

It became clear pretty fast that I wouldn’t have the faintest idea what I was looking at, but I still tried to see if I could get a sense of what using Haskell would be like. Search on phrases like “haskell performance”, “haskell in production”, “commercial use of haskell”, “haskell vs scala”, and so on. You get more than enough highly partisan discussion. It’s quick to see people love the language. It’s a little harder to evidence see it being used in anger, but eventually I came across pages like Haskell in Industry and Haskell Weekly News which have lots of interesting links. That pretty much convinced me it’d be worth giving it a go.

A brief introduction

So here I am, struggling away learning Haskell. I guess I’d have to say I’m still a bit dubious, but the wonderful beginner tutorial called Learn You A Haskell For Great Good (No Starch Press) has cute illustrations. :) The other major starting point is Real World Haskell (O’Reilly). You can flip through it online as well, but really, once you get the idea, I think you’ll agree it’s worth having both in hard copy.

Somewhere along the way my investigations landed me on discussion of something called “software transactional memory” as an approach to concurrency. Having been a Java person for quite some years, I’m quite comfortable with multi-threading [and exceptionally tired of the rants from people who insist that you should only write single threaded programs], but I’m also aware that concurrency can be hard to get right and that solving bugs can be nasty. The idea of applying the database notion of transactions to memory access is fascinating. Reading about STM led me to this (short, language agnostic) keynote given at OSCON 2007 by one Simon Peyton-Jones, an engaging speaker and one of the original authors of GHC. Watching the video, I heard him mention that he had done an “introduction to Haskell” earlier in the conference. Huh. Sure enough, linked from here, are his slides and the video they took.

Watching the tutorial implies a non-trivial investment in time, and a bit of care to manually track the slides with him as he is presenting, but viewing it all the way through was a very rewarding experience. By the time I watched this I’d already read Learn You A Haskell and a goodly chunk of Real World Haskell, but if anything that made it even more fascinating; I suppose I was able to concentrate more on what he was saying for the emphasis on why things in Haskell are the way they were.

I was quite looking forward to how he would introduce I/O to an audience of beginners; like every other neophyte I’m grinding through learning what “monads” are and how they enable pure functional programming to coexist with side effects. Peyton-Jones’s discussion of IO turns up towards the end (part 2 at :54:36), when this definition went up on a slide:

IO (a) :: World -> (a, World)

accompanied by this description:

“You can think of it as a function that takes a World to a pair of a and a new World … a rather egocentric functional programmer’s view of things in which your function is center of the universe, and the entire world sort of goes in one side of your function, gets modified a bit by your function, and emerges, in a purely functional way, in a freshly minted world which comes out the other…”

“Oh, so that’s a metaphor?” asked one of his audience.

“Yes. The world does not actually disappear into your laptop. But you can think of it that way if you like.”

Ha. :)

Isolation and reusability

A moment ago I mentioned practicality. The most practical thing going these days is the web problem, i.e. using a language and its toolchain to do web programming. Ok, so what web frameworks are there for Haskell? Turns out there are a few. Two newer ones in particular, Yesod and the Snap Framework. Their raw performance as web servers looks very impressive, but the real question is how does writing web pages & application logic go down? Yesod’s approach, called “Hamlet“, doesn’t do much for me. I can see why type safety across the various pieces making up a web page would be something you’d aspire to, but it ain’t happening (expecting designers to embed their work in a pseudo-but-not-actually HTML language has been tried before. Frequently. And it’s been a bust every time). Snap, on the other hand, has something called “Heist“. Templates are pure HTML and when you need to drop in programmatically generated snippets you do so with a custom tag that gets substituted in at runtime. That’s alright. As for writing said markup from within code there’s a different project called “Blaze” which looks easy enough to use.

Reading a thread about Haskell web programming, I saw explicit acknowledgement on the part of framework authors from all sides that it would be possible to mix and match, at least in theory. If you like Yesod’s web server but would rather to use Snap’s Heist template engine, you could probably do so. You’d be in for all the glue code and knowing what you’re about, but this still raises an interesting point.

A big deal with Haskell — and one of the core premises of programming in a functional language that emphasizes purity and modularity — is that you can rely on code from other libraries not to interfere with your code. It’s more than just “no global variables”; pure functions are self contained, and when there are side effects (as captured in IO and other monads) they are explicitly marked and segregated from pure code. In IT we’ve talked about reusable code for a long time, and we’ve all struggled with it: the sad reality is that in most languages, when you call something you have few guarantees that nothing else is going to happen over and above what you’ve asked for. The notion of a language and its runtime explicitly going out of its way to inhibit this sort of thing is appealing.

Hello web, er world

Grandiose notions aside, I wanted to see if I could write something that felt “clean”, even if I’m not yet proficient in the language. I mentioned above that I liked the look of Snap. So, I roughed out some simple exercises of what using the basic API would be like. The fact that I am brand new at Haskell of course meant it took a lot longer than it should have! That’s ok, I learnt a few things along the way. I’ll probably blog separately about it, but after an essay about elegance and pragmatism, I thought I should close with some code. The program is just a little ditty that echos your HTTP request headers back to you, running there. You can decide for yourself if the source is aesthetically pleasing; ’tis a personal matter. I think it’s ok, though I’m not for a moment saying that it’s “good” style or anything. I will say that with Haskell I’ve already noticed that what looks deceptively simple often takes a lot of futzing to get the types right — but I’ve also noticed that when something does finally compile, it tends to be very close to being done. Huh.

So here I am freely admitting that I was quite wrong about Haskell. It’s been a bit of a struggle getting started, and I’m still a bit sceptical about the syntax, but I think the idea of leveraging Haskell shows promise, especially for server-side work.

AfC

November 28, 2011 05:35 AM

James Purser's hackergotchi

James Purser

An open letter to the "Creatives"

To whom it may concern,

I have money. It is good money, in fact, being australian money, it is both pretty and hard wearing money. I would like to give you that money in exchange for the music you sell, the films and video productions you make and the books you write.

But I can't.

With rare exception, the things I wish to purchase are either locked into a system that prevents me from using the content as I wish (note, as I wish legally, not sharing it around with other people, just watching on the devices I choose to watch it on), or is simply unavailable because the services that would be taking my pretty, durable money are stuck with the old, region based ideology.

For example, I am quite fond of the show "Eureka". I can either purchase this via iTunes for $2.99 an episode and be limited to only viewing it on iDevices or I could... um. I could setup a proxy in the states, get myself a proxy address so I can get a pre-paid US credit card and then I could purchase it off Amazon for $1.99 US an episode.

It's exactly because of this reluctance to take our shiny money via the interwebs that piracy is an issue. People, if they can't find a legal, convenient way to get their entertainment, are going to gravitate towards convenient, illegal ways of doing so. It's also why any move to crack down on illegal content sharing is going to fail. If you don't replace the illegal convenience with a legal convenience, people are just going to migrate to the next model, like they did when bittorrent popped up to replace gnutella and (shudder) limewire.

Oh and on another personal note, cancelling Eureka was a terrible, terrible thing.

Thankyou for your time.

Blog Catagories: 

November 28, 2011 04:32 AM

November 27, 2011

Sridhar Dhanapalan's hackergotchi

Sridhar Dhanapalan

Are you sick of highly paid teachers???

This has been making the rounds lately and is an absolute gem:

Teachers’ hefty salaries are driving up taxes, and they only work 9 or 10 months a year! It’s time we put things in perspective and pay them for what they do — babysit! We can get that for minimum wage. That’s right. Let’s give them $3.00 an hour and only the hours they worked; not any of that silly planning time, or any time they spend before or after school. That would be $19.50 a day (7:45 to 3:00 PM with 45 min off for lunch and planning that equals 6 1/2 hours). Each parent should pay $19.50 a day for these teachers to baby-sit their children. Now how many students do they teach in a day… maybe 30? So that’s $19.50 x 30 = $585.00 a day.

However, remember they only work 180 days a year!!! I am not going to pay them for any holidays. LET’S SEE.… That’s $585 X 180 = $105,300 per year. (Hold on! My calculator needs new batteries.) What about those special education teachers and the ones with Master’s degrees or higher duties? Well, we could pay them minimum wage ($7.75), and just to be fair, round it off to $8.00 an hour (but we shouldn’t get carried away). That would be $8 X 6 1/2 hours X 30 children X 180 days = $280,800 per year. Wait a minute — there’s something wrong here! There sure is!

The average teacher’s salary (nation wide) is $50,000. $50,000/180 days = $277.77/per day/30 students=$9.25/6.5 hours = $1.42 per hour per student — a very inexpensive baby-sitter and they even EDUCATE your kids!) WHAT A DEAL!!!!

Make a teacher smile; re-post this to show appreciation for all educators.

I don’t think the dollar values are for Australia — our minimum wage is higher than $3.00. The point should be obvious nonetheless: we seriously undervalue the people who are responsible for educating our children.

November 27, 2011 01:31 PM

November 23, 2011

Andre Pang

Two new mixes

I've been pretty dormant in my music for the past few years, but I have been working on two two mixes in my sparse spare time: "Tes Lyric":/music/tes_lyric, a weird blend of electronica, classical and rock, and "Stage Superior":/music/ss, a progressive house mix. They're up on my "music":/music page now; enjoy!

November 23, 2011 04:10 PM

Sridhar Dhanapalan's hackergotchi

Sridhar Dhanapalan

Twitter Weekly Updates for 2011-11-23

November 23, 2011 06:15 AM

November 21, 2011

Andrew Cowie's hackergotchi

Andrew Cowie

A good GNOME 3 Experience

I’ve been using GNOME 3 full time for over 9 months, and I find it quite usable. I’ve had to learn some new usage patterns, but I don’t see that as a negative. It’s a new piece of software, so I’m doing my best to use it the way it’s designed to be used.

Sure, it’s different than GNOME 2. It’s vastly different. But it is a new UI paradigm. The GNOME 2 experience was over 9 years old, and largely based on the experience inherited from the old Windows 95 muxed with a bit of CDE. There were so many things that the GNOME hackers wanted to do — and lots of things all the UI studies said needed changing — that the old pattern simply couldn’t support.

Still, a lot of people are upset. Surprise. Most recently it’s been people running Debian Testing who just recently found that their distro has migrated its packages from GNOME 2.32 to GNOME 3.x. Distros like Ubuntu have been shipping GNOME 2.32 for ages; but it has been well over 2 years since anyone actually worked on that code. It’s wonderful that nothing has changed for you in all that time [a true Debian Stable experience!] but I think it’s a bit odd not to expect that something that was widely advertised as being such a different user experience is … different.

What I find annoying about these conversations is that if they had gone and bought an Apple laptop with Mac OS X on it they would be perfectly reasonably working through learning how to use a new Desktop and not complaining about it at all. But here we are admonishing the GNOME hackers had the temerity to do something new and different.

Installing

I went to some trouble to run GNOME 3 on Ubuntu Linux during the Natty cycle; that was a bit of work but I needed to be current; now with Oneiric things are mostly up to date. GNOME 3.0 was indeed a bit of a mess, but then so was GNOME 2.0. The recently released 3.2 is a big improvement. And it looks like the list of things that seem targeted to 3.4 will further improve things.

I’m now running GNOME 3 on a freshly built Ubuntu Oneiric system; I just did a “command line” install of Ubuntu and then installed gdm, gnome-shell, xserver-xorg and friends. Working great, and not having installed gnome-desktop saved me a huge amount of baggage. Of course a normal Oneiric desktop install and then similarly installing and switching to gnome-shell would work fine too; either way you probably want to enable the ppa:gnome3-team/gnome3 PPA.

Launchers

One thing I do recommend is mapping (say) CapsLock as an additional “Hyper” and then Caps + F1 .. Caps + F12 as launchers. I have epiphany browser on F1, evolution on F2, my IRC client on F3 and so on. Setting up Caps + A as to do gnome-terminal --window means you can pop a term easily from anywhere. You do the mapping in:

    System Settings → Keyboard Layout → Layout tab → Options...

and can set up launchers via:

    System Settings → Keyboard → Shortcuts tab → "Custom Shortcuts" → `[+]` button

(you’d think that’d all just be in one capplet, but anyway)

Not that my choices matter, per se, but to gives you an idea:

AcceleratorLaunchesDescription
Caps + F1 epiphany Web browser (primary)
Caps + F2 evolution Email mail
Caps + F3 pidgin IRC client
Caps + F4 empathy Jabber client
Caps + F5 firefox Web browser (alternate)
Caps + F6 shotwell Photo manager
Caps + F7 slashtime Timezone utility
Caps + F8 rhythmbox Music player
Caps + F9 eclipse Java IDE
Caps + F10 devhelp GTK documentation
Caps + F11 gucharmap Unicode character picker
Caps + F12 gedit Text editor
Caps + Z gnome-terminal --window New terminal window

That means I only use the Overview’s lookup mechanism (ie typing Win, T, R, A… in this case looking for the Project Hamster time tracker) for outlying applications. The rest of the time it’s Caps + F12 and bang, I’ve got GEdit in front of me.

Of course you can also set up the things you use the most on the “Dash” (I think that’s what they call it) as favourites. I’ve actually stopped doing that (I gather the original design didn’t have favourites at all); I prefer to have it as an alternative view of things that are actually running.

Extensions

People love plugin architectures, but they’re quite the anti-pattern; over and above the software maintenance headache (evolving upstream constantly breaks APIs used by plugins, for one example; the nightmare of packaging plugins safely being another) before long you get people installing things with contradictory behaviour and which completely trash the whole experience that your program was designed to have in the first place.

Case in point is that it didn’t take long after people discovered how to use the extension mechanism built into gnome-shell for people to start using it to implement … GNOME 2. Gawd.

Seeking that certainly is not my recommendation; as I wrote above the point of GNOME 3 and it’s new shell is to enable a new mode of interaction. Still, everyone has got their itches and annoyances, and so for my friends who can’t live without their GNOME 2 features, I thought I’d point out a few things.

There are a collections of GNOME Shell Extensions some of which appear to be packaged, i.e. gnome-shell-extensions-drive-menu for an plugin which gives you some kind of menu when removable devices are inserted. I’m not quite sure what the point of that is; the shell already puts something in the tray when you’ve got removable media. Whatever floats your boat, I guess. Out in the wild are a bunch more. The charmingly named GNOME Shell Frippery extensions by Ron Yorston has a bunch of plugins to recreate GNOME 2 features. Most are things I wouldn’t touch with a ten-foot pole (a bottom panel? Who needs it? Yo, hit the Win key to activate the Overview and you see everything!).

My personal itch was wanting to have 4 fixed workspaces. The “Auto Move Workspaces” plugin from gnome-shell-extensions was close (and would be interesting if its experience and UI were properly integrated into the primary shell experience), but the “Static Workspaces” plugin from gnome-shell-frippery did exactly the trick. Now I have four fixed workspaces and I can get to them with Caps + 1 .. Caps + 4. Hurrah.

You install the plugin by dropping the Static_Workspaces@rmy.pobox.com/ directory into ~/.local/share/gnome-shell/extensions/, then restarting the Shell via Alt + F2, R, and then firing up gnome-tweak-tool and activating the extension:

    Advanced Settings → Shell Extension tab → switch "Static Workspaces Extension" to "On"

Hopefully someone will Debian package gnome-shell-frippery soon.

Not quite properly integrated

Having to create custom launchers and fiddle around with plugins just to get things working? “Properly integrated” this ain’t, and that’s my fault. I respect the team hacking on GNOME 3, and I know they’re working hard to create a solid experience. I feel dirty having to poke and tear their work apart. Hopefully over the next few release cycles things like this will be pulled into the core and given the polish and refined experience that have always been what we’ve tried to achieve in GNOME. What would be really brilliant, though, would be a way to capture and export these customizations. Especially launchers; setting that up on new machines is a pain and it’d be lovely to be able to make it happen via a package. Hm.

AfC

November 21, 2011 06:28 AM

November 17, 2011

Sonia Hamilton

git patch add

My new favourite git option:

    git add -p

It’s like doing an interactive add, then choosing ‘p’ for patching. From the manual:

       -p, –patch

Interactively choose hunks of patch between the index and the work tree and add them to the index. This gives the user a chance to review the difference before adding modified contents to the index. This effectively runs add –interactive, but bypasses the initial command menu and directly jumps to the patch subcommand. See “Interactive mode” for details.

November 17, 2011 12:49 AM

November 16, 2011

Sonia Hamilton

RFC 1178 and server naming

Whenever I come across servers with names like chpvuat01, I’m reminded of RFC 1178 “Choosing a name for your computer”. Especially when ch stands for crack house, pv stands for paid verbiage, but uat doesn’t stand for user acceptance testing: the box used to be in UAT, was moved to SIT (System Integration Testing), but kept it’s old name because renaming it would be too hard…

From the RFC:
Using a word that has strong semantic implications in the current context will cause confusion. Don’t choose a name after a project unique to that machine.

Name machines after D&D characters, LOTR characters, planets, flowers, animals, whatever, but not their function!

(Hostname has been obfuscated to protect the not-so-innocent, though the project may as well be called crack house).

November 16, 2011 04:33 AM

Balintawak Arnis Cebu

I’m in Cebu, the Philippines at the moment, learning Balintawak Arnis (stick fighting). A little video of my training – I’m still very much a beginner…

www.youtube.com/watch?v=JPD_59EEdlc

November 16, 2011 02:32 AM

November 13, 2011

James Purser's hackergotchi

James Purser

Logitech CEO Slams GoogleTV - Or does he?

Hrmm, interesting.

The media has been all over the Logitech "slamming GoogleTV" angle from the recent phone conference. However if you read the actual Call Transcript:

http://seekingalpha.com/article/306966-logitech-ceo-hosts-analyst-amp-investor-day-conference-call-transcript

You'll find that what the Logitech CEO was railing against was the Logitech implementation and the content blocking by the Cable and FTA channels in the US.

"Google TV is a great concept, Google TV has the potential to completely disrupt living room, except that was not the case when we launched Logitech Revue. Logitech Revue was launched with some, I wouldn’t call it beta properly but a software that was not complete and not tuned to what the consumers want at the living room..."

He then goes on to admit that the original sales strategy was massively flawed:

"We’ve made commitment we just build a lot because we expected everybody to line up for Christmas and buy these boxes $300 that was a big mistake."

$300 was just too much for the Revue, and to be honest it's a mistake that a lot of android manufacturers have been making. However once they shifted the price to $99 we get this:

"As you know, we dramatically reduced the price of the box to what we thought the consumers valued it and actually doing fine."

So, from a "Logitech CEO slams GoogleTV, won't every play with them again" we now have "I like GoogleTV, we had some problems, and we made a sales strategy mistake." These are actually two very different things. Especially when you throw in the following quote:

"I would do it again, I would definitely want to have Google establish Google TV, but with a significantly smaller and more prudent approach. It’s always the case people will tend to overestimate the short-term and underestimate the long-term."

It's amazing what happens when you go to the source ;)

Blog Catagories: 

November 13, 2011 03:34 AM

November 12, 2011

Matthew Palmer's hackergotchi

Matthew Palmer

Misleading error messages from blktrace

If you ever get an error message from the blktrace tool that looks like this:

BLKTRACESETUP(2) /dev/dm-0 failed: 2/No such file or directory
Thread 3 failed open /sys/kernel/debug/block/(null)/trace3: 2/No such file or directory
Thread 2 failed open /sys/kernel/debug/block/(null)/trace2: 2/No such file or directory
Thread 0 failed open /sys/kernel/debug/block/(null)/trace0: 2/No such file or directory
Thread 1 failed open /sys/kernel/debug/block/(null)/trace1: 2/No such file or directory
FAILED to start thread on CPU 0: 1/Operation not permitted
FAILED to start thread on CPU 1: 1/Operation not permitted
FAILED to start thread on CPU 2: 1/Operation not permitted
FAILED to start thread on CPU 3: 1/Operation not permitted

Don’t be alarmed – your disk hasn’t suddenly disappeared out from underneath you. In fact, it means quite the opposite of what “No such file or directory” might imply. In fact, it means that there is already a blktrace of that particular block device in progress, and you’ll need to kill that one off before you can start another one.

Thank $DEITY for the kernel source code – it was the only hope I had of diagnosing this particular nit before I went completely bananas and smashed my keyboard into small pieces.

November 12, 2011 05:00 AM

November 09, 2011

James Purser's hackergotchi

James Purser

GooglePlus - Not A Facebook Thing

Google Plus is dead! cries Farhad Manjoo in Slate. It's chance to compete with Facebook has come and gone and thus GooglePlus is effectively a dead man walking, destined to join Googles other social projects such as Buzz or Wave (which wasn't a social project but the media do like to pretend that it was).

Except, here's a thought. What if GooglePlus isn't all about competing with the Facebook? What if, instead, it's about being a part of a greater whole? What if instead of going for the short term, Google was playing the long game.

Think about it.

Google's aim is to become the platform de-riguer for people who work online. Through services such as Gmail, Gdocs, Gcalendar, Gvoice and Gapps, Google provides a virtual workplace that meets most peoples needs. Wave was an attempt to improve that workplace through a truly collaborative environment (and still is by the way Wave Ain't Dead).

GooglePlus adds two things to the virtual office. It adds a virtual whiteboard (just create a circle of your fellow employees) and it adds the ability to meet without everyone having to be in the same office. Hangouts mean that a distributed business, or even a bricks and mortar business with multiple branches can conduct meetings, access shared resources and make decisions without having to a) Pay through the nose for dedicated comms gear or b) Organise transport, accomodation and so on for IRL meetings.

I'm not saying Google is perfect by any stretch. They've only just released the Brand Pages and they themselves have a few issues, and of course there is Googles now well know communication issues. However to write off GooglePlus because it hasn't killed Facebook I think is short sighted.

Blog Catagories: 

November 09, 2011 02:14 AM

November 05, 2011

Craige McWhirter

Penelope and Creampuff take a Dip

On a hot November Saturday I've let the alpacas into fresh pasture. Instead of diving into the fresh pasture, they dived straight into the small dam for a swim.

Blog topics: 

November 05, 2011 10:50 PM

October 28, 2011

Matthew Palmer's hackergotchi

Matthew Palmer

rsync for LVM-managed block devices

If you’ve ever had to migrate a service to a new machine, you’ve probably found rsync to be a godsend. It’s ability to pre-sync most data while the service is still running, then perform the much quicker “sync the new changes” action after the service has been taken down is fantastic.

For a long time, I’ve wanted a similar tool for block devices. I’ve managed ridiculous numbers of VMs in my time, almost all stored in LVM logical volumes, and migrating them between machines is a downtime hassle. You need to shutdown the VM, do a massive dd | netcat, and then bring the machine back up. For a large disk, even over a fast local network, this can be quite an extended period of downtime.

The naive implementation of a tool that was capable of doing a block-device rsync would be to checksum the contents of the device, possibly in blocks, and transfer only the blocks that have changed. Unfortunately, as network speeds approach disk I/O speeds, this becomes a pointless operation. Scanning 200GB of data and checksumming it still takes a fair amount of time – in fact, it’s often nearly as quick to just send all the data as it is to checksum it and then send the differences.1

No, a different approach is needed for block devices. We need something that keeps track of the blocks on disk that have changed since our initial sync, so that we can just transfer those changed blocks.

As it turns out, keeping track of changed blocks is exactly what LVM snapshots do. They actually keep a copy of what was in the blocks before it changed, but we’re not interested in that so much. No, what we want is the list of changed blocks, which is stored in a hash table on disk.

All that was missing was a tool that read this hash table to get the list of blocks that had changed, then sent them over a network to another program that was listening for the changes and could write them into the right places on the destination.

That tool now exists, and is called lvmsync. It is a slightly crufty chunk of ruby that, when given a local LV and a remote machine and block device, reads the snapshot metadata and transfers the changed blocks over an SSH connection it sets up.

Be warned: at present, it’s a pretty raw piece of code. It does nothing but the “send updated blocks over the network”, so you have to deal with the snapshot creation, initial sync, and so on. As time goes on, I’m hoping to polish it and turn it into something Very Awesome. “Patches Accepted”, as the saying goes.

  1. rsync avoids a full-disk checksum because it cheats and uses file metadata (the last-modified time, or mtime of a file) to choose which files can be ignored. No such metadata is available for block devices (in the general case).

October 28, 2011 05:00 AM

October 24, 2011

James Purser's hackergotchi

James Purser

Pollies to the left of me, Journos to the right of me

Here I am stuck in the middle with you. 

(Warning, rambling rant follows)

Here's the thing. The political debate in this country sucks. It really does. Either we have Captain No leading the opposition, or we have a government that continuously seems to fail comms 101. 

The media is just as bad. News as entertainment has become the fashion. No one wants to hear about details on policies, what they want to hear about is Leadership spills, leaks in cabinet and whether Tony Abbott is going to be able to find a shop in Goulburn that he hasn't already done a Press Event at.

And you know what the journos and pollies are doing about this current state of play?

Blaming each other.

Now before I go on, I should mention that I think there are good hard working politicians and good hard working journalists out there who are trying to buck the trends, never let it be said that I have tarred everyone with the same brush.

However, let it also be said that neither side is solely to blame for the current swamp. Nope. They both are.

Politicans and journalists live in a symbiotic relationship (though I'm sure some would called it parasitic, who the parasite is depends on your point of view). They feed each other and nourish each other so they can both gain the benefit. Politicians get the coverage and journalists get the stories, any imbalance in the system is a result of both politicians and journalists looking for the easy route.

Take Tony Abbott for example. Abbott is a man who long ago realised that his best bet was treating the electorate like a bunch of six year olds. Time and time again he's released a sound bite as his policy statement, "Great big new tax" and "Stop the boats" are probably the two that get the most exercise these days. Time and again we've seen these Sound Bite Policy's re-printed in the papers and broadcast on the news with barely a whisper of actual analasys.

The politician is feeding the media what they want, short, sharp statements that can fit into the attention span of a six year old. The media then responds with favourable coverage of that politician, thus confirming the behaviour. It's like Pavlovs bloody dog.

Look, I have a lot of respect for people like Laurie Oakes and Lyndsay Tanner. Both of them are well respected in their fields and both speak a lot of sense. What needs to happen is for both of them to come together and join forces in some sort of super Poli-Journalist amalgam that can smack some sense into both sides.

October 24, 2011 04:59 AM