A month ago I attended my seventh Linux.conf.au, LCA2014 in the lovely Perth. January rushes by so fast I often neglect to write about it at all, but this time I would like to highlight my two favourite talks.
The first is Friday’s keynote, “Deploying software updates to ArduSat in orbit” by Jon Oxer. I would call this talk: “A school class can do a science experiment in space for a week for $300”. CubeSats are a “standard micro-satellite” (about 10×10cm). Jon got involved with a Kickstarter campaign called ArduSat and helped them design an Arduino board to go in the CubeSat, as well as a prototyping board that students could use in their classroom to design their experiment.
Jon shows the web-based interface where a class would submit their Arduino design, which includes an “upload to satellite” button. Really. :)
(My title for this talk is a little bit of an over-sell, as at the moment the ArduSats have massive waiting queues for anyone to book time on them. But Jon’s intention is to get lots more of them up there, so hopefully that will change sometime soon. I’m not sure where the best place to stay in the loop on that is. I would also love to read a blog or something where schools talked about how their experiments went.)
So his talk (youtube, mp4) was wonderful, highly recommended if you want to feel inspired and amazed and hopeful.
The second is a little more down to earth! I was really into the talk on Visual Editor by James Forrester and Roan Kattouw of the Wikimedia Foundation. (Youtube, mp4, slides) Visual Editor is the WYSIWYG-ish/rich text/Google Docs-ish editor that Wikimedia has developed to avoid people having to learn arcane mark-up and help drag MediaWiki’s interface into this decade.
First of all I think this is inherently interesting, that they have solved (or are well on the way to solving) this problem, as it is one that loomed so large that it has threatened to topple Wikipedia and the other Wikimedia projects many times. Large vibrant communities have certainly been destroyed (or destroyed themselves) over less.
Secondly, they needed to build something that would largely work for the existing corpus that is millions and millions of Wikipedia articles, in over 300 languages. OVER 300 LANGUAGES.
What was most fascinating was hearing about how they tried to reproduce “expected behaviour”. For example, in a right-to-left script, when you press the right arrow, should you move right in the text or “forward” in the text? And in bidirectional text such as numbers embedded in Hebrew, which direction is “forward” anyway? And do Windows apps behave in a similar way to OSX? Or phone OSes? What about IME software for inputing non-alphabetic scripts?
You would think the simple design of moving a cursor around some text was a well-solved problem, but not necessarily. It must have been a nightmare. A fascinating nightmare.
Oh, and if you work on some web-based software and think a nice HTML editor could be an improvement over whatever your default is, they would love to help you try and integrate VisualEditor into another project, like Drupal or Wordpress.
Last written in 104 days ago, huh? This blog isn’t dead, it’s just been… hibernating.
Well, since I last wrote about LCA, it’s well and truly finished. As I mentioned in that post, I gave 2 talks and a lightning talk on Monday, the first day of miniconfs, so now there are videos. Distributed wikis (40 min), An approach to natural language generation (28 min), and Neurosexism (10 min).
Shortly after LCA I moved house, and my new house was flooded, and one casualty was my desktop tower, which was sitting on the floor. (I assume the hard drive is probably OK, but since hooking my keyboard and monitor up to my netbook, I haven’t been so motivated to check.) So that was a big drama that was fairly disruptive (but my life has been back to normal for some months now).
Anyway at the moment there are
twothree geeky activities that I am actively pursuing.
The first is attending Girl Geek Dinners Melbourne (see also Meetup, Facebook). They are being driven by Jes Lowry, who has done a great job at securing a suitable venue and being really dedicated about having events consistently, and even beyond that organising a really diverse set of events designed to interest as many different sets of girl geeks as possible. So if you are a geeky woman in Melbourne, I really recommend coming along sometime.
The second is an attempt to start doing some Zookeepr hacking. Zookeepr is the conference software used by LCA, written in Python, uses the Pylons framework. Open source, natch. There was a code sprint-style event in mid April which was very useful as I was able to lean over the shoulder of someone else learning, and get an overview of the system components and how they came about and so on. Previously I was only familiar with the public/registrant components of the website, and the papers reviewing section (having been on the papers ctte for a couple of years). Naturally there is heaps of admin stuff that I had never seen, or even thought about existing. Just before the code sprint, the codebase was moved to Github, so learning enough Git to get by is also, well, overdue.
Sidenote: Github is great, right, so why is their Issues system so rubbish? One thing I like to do when exploring a new project is poke around the bugtracker, try and make order from the chaos. Like assign tags/categories, fix tags, make new tags. Re-write a bug title/description to be more precise or explanatory. All that kind of stuff. Seems impossible if you are not a project admin in Github. One area Launchpad beats Github hands down, then, is in the issue tracking.
My first attempted task is going to be working on a script for automated deployment. I’m going to try it in Fabric, being familiar with that from my workplace. Using Fabric seems quite common in Django-land, but I haven’t found many (anyone?) talking about using it with a Pylons project. I’m not sure if I should try and figure out why that is, or not.
Apart from that I would like to look at the testing, roles/ACLs, papers reviewing workflow-ish stuff, setting up a plain default theme and online demo instance, docs… OK that’s enough. :)
Finally I am making some progress in the world of Arduino. After LCA2010 I was inspired to buy a starter Arduino kit, and a Rainbowduino. However what the Rainbowduino offers in shiny, it completely and utterly lacks in beginner-friendly documentation. So after I bought it I tried to figure out how to use the Seeedstudio library to program it, but mostly failed, and then was rather stuck. So it all sat in a box for a long time for Another Day.
Then a few months ago, Andy Gelme came and spoke at GGD Melbourne , and brought lots of toys. :) He encouraged us to come and get involved in the hackerspace. One of the other women who attended was interested in going along, and eventually we coordinated enough to go along to the weekly Tuesday workshops a couple of times. Our timing was not great as most attendees were busily working on their project for the Great Global Hackerspace Challenge. However I did some poking around and still made some small progress.
One of my initial problems has been being able to successfully send programs to the Rainbowduino board. The recommendations on the web are to do it via another Arduino board. However I would often get an ‘avrdude’ error, which Google shed little light on. Last week Andy spent some time to sit down with me and suggested that the chip on my Arduino board may be getting the way, and intercepting my program instead of faithfully passing it onto the surrogate Rainbowduino board. (That’s my impression of what’s going on. :)) So he suggested using a FTDI board instead of an Arduino board as the messenger… which unequivocally worked! Success!
So on the basis of ordering one of these from Little Bird Electronics, I picked up a couple of other useful bits as well:
(click image to view on Flickr for annotations)
The FTDI board is connected to the computer via miniUSB, which I already have a cable for, and to the Rainbowduino via jumper cables (there may be some soldering this week to make a connector thing suitable for my Rainbowduino… ooh-err!).
Anyway in cursing the poor Seeedstudio documentation for the hundredth time, I reflected that I had not picked the gentlest introduction to Arduino by choosing a Rainbowduino. I thought, maybe there is something else I could use that could help me get a grip on I2C and so on before I worry about the Rainbowduino specifically. With a short bit of poking around I found the BlinkM, which is a “smart” multi-colour LED that has enough brains to run Arduino programs as a stand-alone thing. I’m not about to do that but I think it’s reasonably analogous to the Rainbowduino.
And thankfully, the docs are EXCELLENT.
So – progress, it’s happening.
I went to Andy Gelme’s Arduino session at ACEC and learned something interesting today: my router is a web server.
Now when I remember how I configure it, that’s not a surprise. Fire up 192.168.1.something in the browser and there be router options.
So I didn’t really learn that, it was more of a realisation. But then I learned about the existence of OpenWrt, which is “a very powerful, highly customizable variant of Linux [for] your router”. So install OpenWrt over whatever the default thing on your router is, then you can SSH to it and install some packages, like maybe a LAMP stack.
Now that’s only really interesting if you have something to talk to it. Let’s say, an Arduino. Arduinos can have lots of different types of sensors that collect information, e.g. the temperature, or the amount of sunlight, or waterflow. Or maybe you build a time lapse camera.
So your Arduino can talk to your router. But all those numbers are stuck on your LAN. It’s not world-readable.
So at this point, you can use Pachube or WatchMyThing to publish your Arduino-captured data. And then, of course, it’s almost trivial to get Pachube to feed into Twitter.
And then if you want to reduce power consumption you put Zigbee things (chips?) on both your souped-up router and your Arduino.
But really, at this point, your plants are on Twitter, everything else is gravy. :)