23 January 2012
Not quite do-it-yourself surgery, but an open source surgical robot nonetheless. Ensuring that corporations don't own, limit and control the technologies used to save lives is extremely important. I'd love to see more of these open, transparent and shareable approaches to medicine: "A multidisciplinary team of engineers from the University of Washington and the University of California, Santa Cruz, have developed a surgical robot, called Raven 2, for use as an open-source surgical robotics research platform. Seven units of the Raven 2 will be made available to researchers at Harvard; Johns Hopkins; University of Nebraska-Lincoln; University of California, Berkeley; and the University of California, Los Angeles, while the remaining two systems will remain at the University of California, Santa Cruz, and the University of Washington.
22 January 2012
Great video on a large solar installation that charges 500 XO laptops at a time. The installation was completed by a team from Illinois Institute of Technology (IIT) in Chicago, Green WiFi, and Haiti's National OLPC Coordinator and took place at EFACAP school in Lascahobas, Haiti. "With the system having been designed and built to power 500 XO laptops it was - and very likely still is - the world's largest single-school solar laptop charging deployment."
20 January 2012
Codec 2 – David Rowe
- Open speech Codec. Low bitrate 2400 b/s down to 1400 b/s
- Applcations for digital radio
- Fills <5000 b/s gap
- http://rowetel.com/codec2.html
- Not a DSP talk
- Can send 45 calls inside 64 kb/s chanel
- Not useful for VOIP due to IP/UDP overhead of 8kb/s on 1400b/s data
- Main use radio spectrum. Less data = less power required since your power gets concentrate on less bits
- doesn’t matter too much if odd packet dropped
- proprietary codecs slowing digital voice over radio
- Proprietary codes: hardware or licensed software form, difficult to distribute, can’t modify
- Example g729 license $40k. Doesn’t believe closed source codecs benefit society
- Authors of propriety/patented codecs borrowed heavily from public domain. perhaps 5% is original. Good news is only 5% needs to be replaced
- Speech coding: eg 16bit samples at 8kHz, comprss to 1400-2400 b/s . What can we thrown away, retain intelligible speech, retain natural speech. Use a model of speech, send model parameters, for effecient than coding waveform
- Model: example is pitch, humans 50-500 Hz , can be represented with 7 bits, updated every 20ms 7/0.02 = 350b/s to represent pitch
- Codec 2 uses Sinusoidal speech coding. Multiple Sine waves added togeather
- Bit allocation: 56bits every 40ms. Of these: Amplitude 32 , Frame energy 10 , voicing 4, pitch 10
- Developing Codecs: complex DSP algorithms, run codecs in non-realtime, dump values from codecs every “frame” ( 80 samples, 10 ms of speech) . Gnu Octave
- Banned exports list includes ” Speech codecs below 2400 b/s ” . Have been advised by DECO that Codec 2 has “assessed as not controlled” but waiting for certificate
UEFI and Linux – Matthew Garrett
- Replacement for PC BIOS
- BSD licensed core
- Adds standardized support for new hardware features
- Platform init
- EFI image load – loaded drivers
- EFI OS loader load – oot from ordered list of EFIOS loaders
- Boot services terminate -> OS handover
- Boot services – memory allocation, timers, image loading, GUIDs.
- Runtime services – non-volatile variable store, boot data, system information, crash dumps (already in Linux 3.2)
- Able to update firmware by reset and grab new firmware out of variables on bootup
- GPT – GUID partition table – no practical restrictions on size and number – more metadata about partition type and service
- That all sounds good …. but ….
- TianoCore – Open Intel reference UEFI reference implementation, 7061 files, >100MB of code, 10% of size of Linux kernel. Bigger than Linux core kernel
- Large codebase, some bugs
- UEFI is poorly tested in the real world. UEFI contains a lot of code. UEFI contains a lot of bugs
- Some problems with secure boot
Bloat: How and Why UNIX Grew Up (and Out) – Matt Evans and Rusty Russell
- Cool projects: spark, plover, Homebrew Cray-1A
- Compare PDP-11 Unix vs Modern Ubuntu 11.10
- Binary sizes: cat 152 bytes vs 531k KB
- grep command: 2176 bytes vs 687 KB
- ls command: 4904 bytes vs 628 KB
- V6 cat command just 12 lines of assembler, 2 * 512bytes buffers, a.out 16 bytes overhead
- Binaries 30% because we chose speed over size. ~9% speed gain
- V6 Runtime coverage: cat 99% , grep 78%, ls 85%
- V7 has reduced coverage. some commands converted from assembler to C
- x86 runtime with dietlibc coverage: cat 11% , grep 23% , ls 39%
- x86 static cat has 700k of libc dependencies, 17% of libc, 313 objects it depends on
- libc 1.7M but widely shared among hundreds of processes
- dynamic ls accesses 90k of libc but 476kB paged in.
- For sample system. libwebkit 8.5MB , 5MB wasted, 33MB wasted real RAM
- What about a 64Bit version of a PDP-11 – a PDP-11 . Various assumptions on how binary size would increase
- PDP-44 – binaries around 50% larger
- 32 bit ubuntu binaries are 9% smaller than 64 bit ubuntu
- Forward port V6 binaries to x86 . V6 cat almost same size as dietlibc version
- More work to forward port V6 ls, lots of assumptions not longer true. Code tricks no longer work. 20% larger cause of ELF and nmap. 120% penalty due to modern infrastructure (eg malloc realloc)
- Backport x86 “ls” and “cat” to V6. Only backport some options
- cat: remove old options and error reporting. Kept some features.
- ls: remove lots of options.
- Binaries 60% larger due to flexibility
- 440% bloat due to new features
- Asmutls – reimplementation of current Linux utils in x86 assembler.
- The talk is online, hard to do notes since it jumped around a lot and graphs hard to read
Open vSwitch – Simon Horman
- Switch contains ports, ports has one of more interface, packets are forwarded by flow
- Flows may be identified by lots of combos, address, vlan, ports, TOS
- 1st packet in flow gets sent to userspace controller, controller makes decision, tells datapath what to do with future packets, resends first packet back to datapath. Later packets the datapath knows what to do (from hashtable lookup) and handles itself
- Configured by JSON database, persists across restarts
- database controlled via Unix socket or via TCP. Change action won’t return until database update performed
- cute ” –may-exist ” options when creating stuff that does nothing if what you are requested already exists
- He did some demos of standard sort of stuff, truck interfaces, port mirroring, fairly simple commands to do
- Does VXLAN and GRE tunnels
- Oracle looking to put in Oracle Linux soon to replace current bridging code
- Can do millions of packets per second. Some bottlenecks in tunneling code
19 January 2012
A different angle on the charter schools coming to New Zealand. Ali Carr-Chellman looks at cyber charter schools in the US. 4 million students took part in cyber charter schools in the US in 2010, 250,000 of whom were full-time. She links cyber charter schools to the wild west and the goldrush, saying that, like in goldrushes in the past, people are making a lot of money out of cyber charter schools at the moment. Huge amounts of money are being diverted from public schools: US$1 billion in 2010. That includes paying private company CEOs annual salaries of up to US$2.6 million. That's public money, remember.
I came across this from Stephen Downes. WARNING: images may make educators extremely envious: The principles of the Vittra School revolve around the breakdown of physical and metaphorical class divisions as a fundamental step to promoting intellectual curiosity, self-confidence, and communally responsible behavior. Therefore, in Vittra’s custom-built Stockholm location, spaces are only loosely defined by permeable borders and large, abstract landmarks. As the architects explained, “instead of classical divisions with chairs and tables, a giant iceberg for example serves as cinema, platform, and room for relaxation, and sets the frame for many different types of learning,” while “flexible laboratories make it possible to work hands-on with themes and projects.”
Challenges for the Linux plumbing community – Jonathan Corbet
- Good news is boring, so how about some “high quality problems”
- Security
- Stuxnet , kernel.org , RSA hack , DigiNotar
- Scary ones are there must be others we haven’t heard about
- The bad guys are: motivated, capable, well funded. Not just script kiddies
- Not just about money anymore, with governments hacking lives are at stake
- We are on the front line. Not just security software, all code security critical
- Is your code secure? Who reviews it? What sort of testing? Plans for dealing with vulnerabilities?
- Is your infrastructure secure? – Who has access, who can change files? Are security updates applied? What are your plans in case of a breach?
- Are your processes secure? Who can commit? What can sign releases? Can you detect tampering? What do they know about the codes provenance?
- Tools
- Lockdep, valgrind, fault injection, sparse, smatch
- GCC python plugin, MELT, LLVM static analyzer
- and need to actually use the tools that exist
- Hardware
- hardware complexity leads to software complexity
- Complex interfaces: example V4L3 media controller interface.
- Control over our hardware
- Life is okay (could be better, could be worse)
- What is our influence over manufacturer?
- Example: Chasing tablet manufactures , no influence on design, have to port after device launched
- Example: By the time “Rock Box” runs on a device device is obsolete and not in shops
- How can we be more involved in conception and design of hardware in the first place?
- Linux Only
- Once upon a time we depended heavily on portability
- The DRM tree deemphasized BSD support, This hurt BSD but… would we rather do without kernel mode settings
- Might be inevitable but try not to be too arrogant
- The platform problem
- Code you control vs Black box
- The kernel’s ARM subtree (re-implements stuff from elsewhere in kernel)
- XFree86 (tried to keep everything in user space)
- Opportunistic suspend (Andriod decided “too hard” to fix rest of kernel)
- Async I/O (implemented multiple times, no comprehensive implementation)
- Example: wireless devices had own 80211 implementation. replaced with max80211
- Example: PowerTop used to find wide range a random things causing high power usage in laptops
- Ongoing examples: Bufferbloat, marvell-cam drivers, User-Space TCP, Control groups, Andriod
What is in a tiny Linux installation? by Malcolm Tredinnick
- Skipping bootloader portion
- Kernel is big – 9.6M lines of C, 250k lines of assembler
- Booting the kernel
- “make allnoconfig” , smallish, 222 “y” ‘s. 842KB bzimage, build time under 15s, no file systems, no fancy hardware, ISA, no PCI
- “make allyesconfig” , 5177 y options. 39MB bzimage, over 1h to build, includes drivers/staging
- booting allnoconfig via qemu-kvm . Gets to “unable to mount root file system”
- Kernel components – hardware arch, drivers, subsystems, others
- need roto filesystem in memory, initrd / initramfs . init process just in cpio archive, can just be hello world
- need initrd, initramfs , RAM disk block device, ELF binary support. 889KB bzimage (up 50kb)
- Now boots, use “rdinit=/hello” option in qemu , just prints out hello world
- Transition to userspace
- initrd loads some modules etc, runs pivot_root , run startup scripts
- Userspace
- Why are you doing this? Single purpose system, usb stick (rescue, puppy linix, Damn Small Linux) , tiny memory, tiny storage usage, fast power on. Trade-off of options
- We have to run something, need some binaries, shared libraries, large binaries with multiple purposes (busybox)
- Busybox – one binary – acts differently depending on calling name, installed as symlinks
- Busybox: fairly small, default utilities, 2MB without networking, easy to test
- C libraries – glibc (probably not a good idea), eglibc (easier to build, binary compatible with glibc, can take things out), uClibc (alternative, very small, some overlap with busybox, source code compatible with glibc)
- Device and Proc mngt will need: procfs, sysfs, tmpfs, udev, cgroups
- Build environments: you are cross compiling (build root), binutils, C libraries & cross compiling, Test, x86 instead x86 is harder
- See links in slides for some help
- mdebian is something to look at
BlakJak.net has been dark yesterday and most of today in protest of the U.S. Stop Online Piracy Act (SOPA) and PROTECT-IP Act (PIPA). The U.S. Congress is about to censor the Internet, even though the vast majority of Americans are opposed, and a significant amount of the Internet sits outside of US Jurisdiction. I've darkened my website in support of those attempting to kill off attempts to pass laws that breach our our global rights to free speech, privacy, and prosperity. Learn more at AmericanCensorship.org (for the American Viewpoint) or for a New Zealand take on things, check out Vikram Kumar's Blog and recent guest post to the National Business Review (Similar content, but with some very interesting responses). Vikram is Chief Executive of InternetNZ, the non-profit organisation dedicated to protecting and promoting the Internet in New Zealand. Among other things he notes that domain names within .com/net/org - like my one - would also be forfeit.
There's plenty of good media out there explaining why SOPA and it's ilk are BAD.
I'll link you these:
(November 2011)
and
(Yesterday).
One hopes that the amount of mainstream attention this is getting, will cause lawmakers to wake up.
In a wider sense it's disturbing how often 'blackout' responses are becoming relevant. Almost like lawmakers don't like to listen to their electorate, or to experts, when suggesting law changes. Sigh.
Women in Open Technology & Culture – Valerie Aurora and Mary Gardiner
- Very umbrella term including fan fiction, open data, wikipedia, open access
- Why – important areas – women’s participation (especially in charge) very low
- Important for women to be in charge, creating, designing, building, not just as users
- 5 kinds of groups – project specific (debian women), feminist activism, teaching technical skill, networking, majority women projects.
- Community / project specific
- Linuxchix, owoot, pyladies, wikichix, etc ( linuxchix spawned several)
- low participation, poor replacement rate of leaders (often after they get FT jobs), low communication between, sometimes tension between.
- Feminist advocacy
- geek feminism, ada initiative, mind the gap
- growing and active – the new hotness, sharing best practices, paid work more common, some conferences
- Teaching women technical skills
- usually one day or evening courses.
- Growing hugely, vary widely in topics and skills, sharing best practises
- In person networking socialization
- Women in code, girl geek coffees, girl geek dinner
- try not to be dominated by marketing women ( use of “geek” term helps)
- Growing, easy to start local chapters
- Majority Women Groups
- Dreamwidth, Organisation for transformative works
- Often fan-fiction support, protect against takedown, let author control commercialisation
- Survey
- In person vs Online
- Activist vs non-activist
- Community vs technical
- Focussed vs broad topics
- Projects with broad focus within a narrow group seem not to work
- Projects with very technical focus but accoess different technologies seem not to work either (lack common language)
- Why Start – recruit and retain, networking, role models, safe space, feel normal
- Lessons on starting
- Don’t – join an existing one
- If you are a man, don’t do on behalf – “Nothing about us without us”
- Don’t expect women to start a group
- Find 3 or more women to start a group
- Don’t use girl/chix/ladies – use women
- Go broad instead of narrow on topic
- have clear defined goals and scope
- Start small, be realistic about work
- Consider one-off event rather than group
- Avoid NIH , reuse best practices
- be prepared to moderate any public forums you create
- Failure modes
- Become “the nice place” that everybody goes to
- Loses focus on women
- Safe Space moderation too many hours
- Ran low on time, slides will be online
Hacking Everything – Matt Evans
- Reuse things , not just hacking things like audrino that are supposed to be hacked
- reuse, need, art & design
- Gambiarra – brazilian art of an improvised fix
- 1940s radios and TV owners could fix their gear. today people are more passive
- wants people to tinker with things.
- Save resources
- Save money
- take apart things, learn by example
- Low cost manufacturing makes hacking hard ( solid state everything )
- Cheap development makes hacking easier ( reuses common technology, extra bits on devices unused )
- Some products are open hardware designs
- Things to look for – similar to ref design, debug code left in, unused features, factory test points/ports
- Ports that are wired up but unused often serial ports
- “My CD player has a serial port” , common on many devices
- Acquire a “logic level”USB-serial cable
- Other ports – JTAB , In-System programming
- Example: Picture frame, derived from sample board for camera, serial interface, built in CLI
- Old Wifi, ADSL boxes good with OpenWRT
- Don’t just consume – re-consume
- Teach others and tell the world
- Collaborate at a local hackerspace
- support companies that make things hackable
Desktop Home hacks – Allison Randal
- Just a hobby product, must be fun, open,
- Wanted computer to be available when away from desktop, but not be disruptive and uncomfortable
- Affordable, approachable to hobbyist, there are more expensive alternatives
- nodes – jeenode, audrino clone, tiny, easy to hid, cheap ( $20 including wireless RFM12B vs $20-30 + 30 for wifi for more conventional audrino )
- RFM12B – 66 bytes
- Server – pandaboard ~$200 . ARM processor with full Ubuntu install
- Server – aggregates data from all notes and sends commands to all it’s nodes. Contains services for system, json data feeds from nodes, web client interface, interface for sending commands to system
- Client(s) – several machines in house used from
- client – jquery mobile , small applet , on desktop , chromium app mode
- Inputs: Temperature , Humidity , motion sensor (lights on/off)
- Input: RFID reader (disappointed at short range, <1m , one was in doorways to trace path of wallet)
- Input: touch sensor ( simple controls, in pillow ) , small keyboard (bluetooth, usb)
- Output: Glowing egg ( multi colour, hand sized ) , Power Tail (power extension, turns on/off)
- Output: Hollowed out candle with LEDs inside , Instamorph & super Sculpey to create “solid” objects
- Tools: Soldering iron, misc tools, wax carving kits
- Lesson: Need better camera with macro lens and better light to document
- software not currently release, not really in releasable format, thinking of making some as audrino shields
- Resources: adafruit.com , sparkfun , parallax.com , digikey.com (bad interface) , optopart.com , makershed.com , freetronics.com (Australia) ,
- Tools: Talk in inkscape/sozi , Also use: vala (webserver) , jquery mobile
Cheap Tabloid tricks – Angus Kidman
- Journalists have secret lawyer fantasies, they have wrung the information out of the sources
- Is the IT media biased?
- no coverage of lca2012 in main Aus IT press
- more coverage in 2nd tier
- Only 3% pageviews on lifehacker use Linux
- Not many IT journalists these days, One on FT on lifehacker, more to do (websites, blogs, video, podcasts)
- Freelancers – can be an option. Freelance rates not good, getting worse, competition from bloggers, etc. Hard to convince editor that story is worthwhile.
- IT news driven by fashion. In early 2000s belief among publications that Linux stories would drive traffic from slashdot etc
- Current fashion is facebook and Apple. Stories about them in demand
- Eg Lifehacker did apple angle on LCA keynote
- Open source Projects lack definitive spokesperson
- Media obsessed with cult of Trivia, Celebrity . eg Linus
- Media not influenced by advertisers
- Does Linux need media? Yes if want to reach more than the 3%
- Identify the Audience. right publication
- Be Fashionable. eg mention facebook or apple
- Be Concise.
- Be contactable. email, phone if in a hurry
18 January 2012
The Samba tour of scripting languages – Amitay Isaacs and Andrew Bartlett
- Samba is C based
- But seems to have a lot of scripting
- Has to be portable no non-gnu systems like solaris, reply on POSIX sh, make (not gun make), awk, m4 and a c compiler
- shell scripts for first testing. Over 10,000 lines if shell in building
- Python , TCL and Lua bindings all added but unpopular and eventually removed
- Perl over 20,00 lines
- IDL build initially in awk. Switched to perl based PIDL
- javascript before it was cool – embedded javascript engine
- But the cool kids were using python so switched from Javascript to python
- Exception based languages things cleaner
- waf is python based build system
- python bindings for most things, or via C hook
- Lots of other stuff being written into python, called directly by samba for small tasks
- 90,000 lines of python
- Example: Samba3 upgrade - python based tool in 3 weeks. Business login in python, exceptions test for bad input
- At build time python checks to see if ABI has changed from previously and alert developer if it has.
- Test frameworks – unit tests on standalone components. Environmental tests with everything running, different types on server setups, fake ips and tests made. All runnable as non-root
- 9000 test in 1300 test suites. Mosts test in C, some in python or shell
Running Python in Grub – Josh Triplett
- ” I ported python to grub “
- perception that Linux doesn’t need BIOS
- Involves programming hardware in functional/safe/optismise configuration
- Lots of stuff to support, a few decades of compatibility, very bare-metal programming, small number of people working on it
- What can go wrong: Broken or disabled CPU features, missing or broken memory, sub-optimal power mngt, delays & latency, USB bios handoff. Undocumented customer interfaces
- Why not test under Linux? Linux gets in the way, no direct BIOS access for tests
- Grub2 – 32 bit addresses, written in C, can read files, menus, single thread, no OS to disturb, only uses a bit of BIOS itself
- ORigin: Replacing DOS test programs, test for power mngt, new grub commands for command-line.
- Grub script language – bashish, no expressions, can just glue things together in menus, have to write lots of C
- Ported CPython 2.7 to GRUB
- Wrote a C/Posix compatibility layer for GRUB, floating point functionality via fdlibm , ported much of python standard library
- Build C extension modules, added “bits” module to access platform functionality
- ACPICA already in Linux for parsing ACPI. ported as a grub module with python module to access it.
- bits passes grub command line to python for python to parse
- FUSE for Python and GRUB. added a python device reading python/foo invokes a python callback.
- logging to in-memory buffer and sends to log in FUSE via system. Save to ACPI table and then OS can grab it later
- SMP support in grub, pyton scripting in ring0, python modules for platform interfaces CPU, PCI, PCI-e, ACPI including decoding and method evaluation, logging, test suite evaluation
- BITS test: power mngt configuration, perf optimisation, CPU config registers, SMI frequency/latency , USB handoff from BIOS to OS including effects on SMI and C states.
- Used by BIOS vendors before shipping boards, BIOS problems actually get fixed!
- http://biosbits.org/
- Freakiest stuff I’ve seen so far this week
ALISE: Day 1, Part 1
The first thing I learned today was that the conference proper starts tomorrow, and today’s sessions were considered pre-conference workshops (but included in the conference registration). That’s what comes of being a “first-timer”—I didn’t realise this from the conference information that was available when I booked my travel. However, I found both of the sessions I attended interesting, and I’m glad I went.
The first session was “Teaching beyond the course management system”, a WISE Pedagogy Pre-conference Workshop.
Three speakers presented ideas for using social media to support distance teaching/learning.
Rae-Ann Montague, from the University of Illinois at Urbana-Champaign, was the moderator, who began by saying that online delivery of course material is “a good opportunity to model for students”. She referred to Jane Hart’s list of the top 100 tools for learning, compiled from the top 10 tools lists of 531 educators. It will probably came as no surprise that the top tool is Twitter, followed by You Tube and Google Docs. Rae then outlined seven competencies staff who teach blended courses need (based on Lawrence Ragan’s work):
- active learning
- course administration
- active teaching
- multimedia
- classroom decorum
- technology
- policy enforcement
The first speaker was Linda Braun from Simmons College in Boston. Linda started by saying that she was now using Google Hangouts (a form of group chat) for her synchronous classes sessions. She made her presentation come to life by demonstrating it with three Simmons students who answered questions about the tools she used in her teaching, and how they responded to them. Their conversation was structured around:
- conversation;
- collaboration;
- keeping up; and
- learning the tools.
Opinions varied about which tool was most effective for which objective, though all three students thought Google Docs “was the way to go” for collaboration. Linda used podcasts to introduce the week’s topic and activities, a wiki to develop shared pages (which she said was more flexible than other platforms), and screencasts. Other interesting points: most, but not all students had a smartphone, which could be an issue when courses had a required Twitter component. Email was used to supplement these, and she had course Twitter accounts to keep tweets separated. Some of Linda’s classes are large, and she manages these by having more than one Google hangout per week, with a subset of the students.
The second speaker was Vanessa Irvin Morris from Drexel. Vanessa started by saying that Drexel is developing a digital technologies track, and that they want students in this track to go beyond Blackboard in using online interactive tools. She talked about the importance of online identity management, and catering for different learning styles by providing the same content in multiple formats, such as audio for aural learners and screencasts for visual ones. Her overall approach to teaching is best described as “learn by doing”, followed by reflection on the activity. Students in the Web design course create a hand-coded electronic portfolio, and design a website to meet a specified user’s requirements. Students in the social media course “do social media to learn social media”; their term project is a social media design project that gets them to use Wordpress, install modules, etc. They also need to write a personal social media policy statement that spells out which social media tools they use, in what contexts.
The final speaker was Michelle Kazmer from Florida State University. Her topic was “Why have participation in classes?”, and she structured the session in the best possible way, by having the audience discuss a series of questions. Her final questions was ‘What do you expect students to do as a result of fulfilling participation requirements?”, which generated some interesting comments. The one I liked best was “foster an environment of positive helpfulness”.
This post is already long, so I’ll write a separate post about the afternoon session, which was part of the ALISE Academy on Leading From Where You Are.
Ubuntu ARM – David Mandala
- Targeted ARM v7 – first release April 2009
- 7 different kernels in 10.10 . Improving with Linaro
- OMAP 3 100% in main Linux kernel so easy to support.
- Someday unified kernel onto ARM
- Toshiba AC-100 netbook
- 11.10 preview release of ARM server
- Lots of work to get SMP and now 64 bit to work. Some code assumed they would never exists
- Virtualisation support soon for server space
- Main sense of ARM in server space is 10x saving in power eg ~50W vs ~5W
- Lots of other stuff this guy was going too fast for me to keep up
Helping your Audience learn – Jacinta Richardson
- Conferences let you vary your level of intensity according to your energy
- Conferences – no assessment
- Training is different, all day, 6-8 hours, several days in row, builds on previous days
- can’t afford to get lost.
- Cognitive load – how much effort somebody has to apply to learn a new thing.
- Intrinsic – how hard actually thing is.
- Extraneous – how harder trainer makes it than it needs to be
- Germaine – how well concepts build on what we already understand
- Building framework takes time. Scaffolding has to be well designed. Lots of simply examples
- Mind map of material -> what you are teaching to build foundation
- Be realistic what you can fit into day (including breaks, people late)
- 6 – 6.5 hours optimistic. Seems to be max most people can handle
- 90 minutes then break ( eg 90min on, 30min off repeat 4 times )
- Documents – short prose sections, short examples, short chapters (work though in 90 minutes)
- Key info at start of the day. Dont do lots of extra stuff like class rules
- Easy stuff, unimportant stuff at the end of the day.
- Essentials at the start of the course
- First 90 minutes or first day is most important
- Options extras at end of course or end of each day
- If you have lots of stuff -> create another course, make more money
- Use diagrams, code, pictures, comics
- reduce germane cognitive load:
- Order carefully
- group similar concepts
- Put import stuff in bold
- 10:10 – 10 minutes instructions, 10 minutes of student exercise. Sometimes 10:20 . Occasionally 10:30
- 1-3 concepts in that 10 minutes. But try to balnce
- Spare time = more examples
- 90 minutes = 3 x 10:20 + 4.5 x 10:10
- Target exercises at each key point. Doesn’t have to be real-world
- 1 point = 1 exercise
- Easy to advanced exercises. Additional exercises to really advanced people
- NO answer files. Cause everybody will cheat
- Minimise cross-chapter reliance
- Sometimes you have to rely on previous stuff (should have been at start on day one). Try and avoid since people will have missed or not picked up previous concepts
- New topic = clean slate
- Good, through course notes
- Not slides, write a book, should be readable later, good advertising
- A few other ideas:
- Keep room cold, keep it fresh. 21-23 degrees
- Bell curse applies to student ability. Students not slow, but have less foundation or experience in topics
- Target average student. Offer extra help for ones behind. Don’t slow down for slowest student.
I recently obtained a 120GB Intel 320 SSD for upgrading my Lenovo Thinkpad X201i from it’s sluggish hard disk to something with a bit sharper performance.
Whilst not the latest and highest performance SSD from Intel, it’s certainly still very quick compared to the hard disk, and it made more sense than buying a more expensive newer model that would be restricted by the SATA 2 bus on my laptop.
The performance increase is impressive, my sequential reads went from 40,300 KB/s to 132,673 KB/s, showing dramatically faster boot performance and snappy application load times. And the seek times jumped massively from 151.4/per second to at least 10,524/per second.
Infact, the SSD is so fast, it can be difficult to get stats of it’s true seek performance. With the seeks completing in only a few microseconds, the bonnie++ tests often finished a bit early and the results would vary, it’s possible the seeks might be even larger than 10k+ per second.
The next major question for me, was what would the performance be if running disk encryption ontop of the SSD. Due to the private nature of my data, I fully encrypt my laptop using dm-crypt/Linux disk encryption with AES 256bit, so that if the machine is ever stolen, the data is unreadable.
Of course, this security imposes an overhead – data needs to be decrypted before it can be read, adding additional overheads, particularly with CPU performance. It’s also worth noting, that the Linux disk encryption implementation is single threaded, meaning that the maximum encryption/decryption performance is limited by the maximum performance of a single core of your processor.
After installing the OS using an encrypted disk, there was a noticeable performance drop. In particular, the sequential reads dropped from 132,673 KB/s to a much less exciting 69,805 KB/s. Whilst still significantly faster than the conventional hard drive’s 40,300 KB/s, it’s a big drop from the true capability of the SSD.
Fortunately the write performance was impacted far less, I suspect because the OS and the CPU core doing the encryption was able to keep up with the slower performance of writing to the SSD, in comparison to the reads. Based on the stats I obtained, it looks like my laptop tops out around 70,000 KB/s, so any additional performance of the SSD above that is wasted.
I’ve uploaded the actual performance statistics generated to a separate page, which you can view if interested.
From a usability point-of-view, even with encryption, the boot time performance is impressive, the laptop starts in about half the time of what it did previously, along with massive improvements in the start time of applications.
The improvements are particularly noticeable when loading a number of applications concurrently – with a conventional hard drive, the need to load data across different physical parts of the disk platters causes a lot of delays when multitasking application loads. On the SSD, I can click a number of applications and have them *all* load within a second or two.
Overall I’m pleased with the upgrade, even with the reduced performance from encryption, the SSD still offers some major performance upgrades and was well worth doing.
The only outstanding downside now is the issue of fitting all my data that I actually want to regularly access on my laptop onto the small size of the SSD…. I’m currently looking into filesystems that provide offline access or caching of networked filesystems from my servers, so that I can have regularly accessed files stored locally, but the full selection just a network transfer away.
17 January 2012
The NZ Open Source Society is taking part in a global protest (Wikipedia is blacking out its entire site today) against proposed US legislation, called SOPA ("Stop Online Piracy Act") and PIPA ("Protect IP Act") ostensibly intended to stop so-called online "Piracy."
Like all laws devised by embarrassingly naïve legislative bodies (the US Congress), the Acts, if passed, will have almost no impact on Internet copyright infringement, but will have broad implications for the freedom of Internet users worldwide if it is passed. These acts represent the corrupting influence of corporate entities on the US legislative process: SOPA and PIPA are wildly unpopular with the US people, but are being pushed through Congress nonetheless.
As of yesterday, the Whitehouse has offered the world a brief reprieve from SOPA, recognising how unpopular the legislation is, and requesting a rethink, but this is definitely not over.
We encourage you to read the excellent blog post by InternetNZ's Vikram Kumar on SOPA's implications for New Zealand and his guest piece in the National Business Review.
So far my journey has gone well. My first stop was Vancouver, for a recovery day after the long flight over the Pacific. Since it’s the middle of winter, I wasn’t expecting the weather to be balmy, and it could have been a lot worse. The temperature was around 2 C, with light snow overnight; most of this had melted by Saturday morning, leaving only a small amount on the beach:
![]() 
I had an early start on Sunday morning, since I needed to be checked in by about 5:00 am for a 7:00 am flight to Denver. Overnight there was more snow, but fortunately the roads were clear, and I made it to the airport in plenty of time.
Once we boarded the plane, however, it was clear that the snow had started again, and while we waited to push back from the gate, I could see snow building up on the plane’s windows. This meant that the plane needed to be “de-iced” before it was safe to take off, so we taxied to a “de-icing pad” to be sprayed with a de-icing solution from de-icing trucks. It was a bit like being in a giant car wash. Once this was completed, we took off for an uneventful flight to Denver.
I’ve been in transit at Denver several times before, and it always seems to be a bit bumpy on take-off and landing—not quite like Wellington on a windy day, but close. One feature available on some United flights is the ability to listen to conversations between the flight deck and air traffic control on one of the audio channels. Since I was curious to find out what they said to each other, I decided to try it. The conversation wasn’t particularly exciting, with long periods of silence, but I did discover that the very slight bumpiness we could feel during the flight was called ‘light chop’. I also heard our pilot ask for a short cut, which was granted, and meant that we landed on time despite the delayed take-off.
I arrived in Dallas on late Sunday afternoon. I think DFW is the largest airport I’ve been at, though Atlanta is possibly a close second. It took us at least 15 minutes to taxi to the gate after the plane touched down.
My first impression of Dallas was that it has a very big sky—the land is very flat, and the city is expansive. The best word to describe it is sprawling. It’s also a city built for cars, not pedestrians, at least near the ALISE (Association for Library and Information Science Education) conference hotel. The view from my room includes a 10-lane freeway, another 6-lane freeway, several other hotels, and a number of large car parks, which are mostly empty. There’s also a driving range (where golfers practice their swing), which seems a bit incongruous. It’s located in a light industrial area about 6.5 kilometers (or 4 miles, since I’m in the U.S. now) from the downtown area. When I asked the hotel reception staff yesterday if there was anywhere I could go for a walk, they looked at me blankly. I did manage to find one street that had a footpath and pedestrian crossings, so I walked up and down it to get some fresh air.
The hotel is a fairly typical large American hotel, with Texas-themed furniture in the lobby. One set of chairs appears to be made from the horns of Texas long-horns:
![]() 
The conference starts today, and from the look of the programme I’ll be busy most of the day. I’ll be spending the morning at a session on online teaching, and the afternoon at a discussion of leadership. When I have time I’ll post my notes/comments on the sessions.
For my trip to linux.conf.au in Melbourne/Ballarat I had rescheduled my flights from Wellington to Auckland due to the fact that I had booked my flights before my lovely lady dragged me up to Auckland to live with her.
It’s the first time I’ve ever flown out of Auckland International Airport and to my delight, I was booked on an Air New Zealand 747. This is the very first time I’ve even flown on one, and with AirNZ phasing out the 747s in favor of 777s, I’m glad to have been able to flown on one before they got phased out entirely.
 OMG PLANE! WITH AN UPSTAIRS!
I’d also like to add just for @thatjohn, that I got some awesome perks on the flight over, including a smile from a cute attendant and a FREE PEN! \m/
A Tour of btrfs – Avi Miller
- Now
- All data and metadata is copy-on-write
- CRC all metadata and data
- Writable snapshots
- multi-device support ( raid0 , raid1 , raid 10 )
- online resize and defrag, online device replace
- transparent compressions, efficient storage for small files
- Soon
- Fixes for perf and stability
- background scrubbing, LZO compression, batched discard, file defrag options, per-inode flags
- Larger block sizes for ( especially for metadata, to provide perf improvements in some cases)
- Scrubbing uses CRC to varify data on disk, fixes bad ones with good copy on another disk which has okay CRC
- “df ” gives completely wrong values on how full the disk is or it’s size
- discard/trim supported both real time and batched
- Drive Swapping – current raid rebuilds via balance code, can also restripe between RAID levels
- btrs send/receive in development
- Embedded – friendly to small machines, not as friendly to small disks (being worked on) Works well with low-end flash drives
- RAID 5/6 – MErge pending completion of fsck work. will also add triple mirroring
- beta read-only filesystem recovery tool – copies data out of corrupt FS
- tree root-history log lets us recovery from many hardware errors. “mount -recover”
- New fsck release on the way. May be announced very soon
- yum-plugin-fs-snapshot . yum plug to trigger a snapshot on package install/upgrades
The Web as an application development platform – Shane Stephens and Mike Lawther
- When and how to move from native to web/cloud apps
- Examples
- Text based like email (pine, mutt, outlook). 15 years ago web-based email started. access anywhere, no install required, easy to start using, use anywhere
- Desktop publishing. Hard to collaborate with other people using desktop based software by emailing docs around to other people. On the web it’s often native multi-user. Send Links rather than emailing whole doc.
- On web everybody always running latest version
- Github gives you one-stop shop for projects. wiki, forums etc. Native in app rather than bolt on to desktop version
- Graphics
- Flickr – has native sharing, backups etc
- Online editing of images etc now possible
- Games
- Farmville – no install, easy to share links
- Angry Birds – has web version, html5 , flash for sound, 60fps
- Not at stage where First person shooters going to happen yet. Users have high end hardware
- Overall Benefits – No install, universal access to data, always using latest version, collaboration and sharing built in. Simple text layout, Web as IDE, open and modular enviroment
- Drawbacks – Layout more involved than desktops apps, distributed code makes debugging hard, cross browser compatibility, security limits flexibility.
- Useful web technologies (see also HTML5Rocks website) :
- Display / Rendering
- HTML , SVG , Canvas – All fairly easy to combine
- WebGL , flexbox and grid <- future
- Communications
- Standard http requests, AJAX / XHR , Websockets / Browser Channel , libraries like Faye etc
- Storage
- Traditionally just cookies, Session Storage, Local Storage, indexDb, AppCache
- Environment Enhancements
- jQuery , CoffeeScript , NaCl
Mistakes were made by Selena Deckelmann
- Misc management
- Prepare for failure, Failure is an option (it will happen)
- Book: “Everything is Obvious”
- 2 examples (NZ and Scotland) of rats gnawing through cables and taking out country
- Document -> Test -> Verify
- Failure to Document
- Write Docs, Update Documentation, Make documentation a step with your written processes, assign some time to that step.
- Doc Tools: Graphic Designers, wikis, sphinx, diagrams – timelines – bug tracking – ordered todo lists
- Failure to test
- Verify success criteria – Write tests – test with buddy – have a plan
- testing frameworks, staging environment, repeatable shell scripts
- Failure to verify
- Have a plan for things going wrong – have staging environment – test rollback plan, not just implementation plan
- Tools – People, staging environment
- Failure to imagine
- share stories of failure – talk to people are different from yourself – act out implementation scenario
- Failure to Implement
- reflection ( post-mortem )
- Plan to do post-mortem, document the plan with numbered steps and a timeline – test plan & rollback plan – Identify point of no return
- During – screen sharing – chatroom – Voice – Headsets – Designated time-keeper
Scaling Openstack by James Blair and Monty Taylor
- 6 projects in openstack.
- collection of related repositories
- Most contributors paid to work on it by their companies
- number , quality and area or contributors varies
- 6 monthly releases – design summits – continuously open truck – dev on master – Monthly milestones – stable branches post release
- Vision – consistent tooling and process on all projects -> Consistent Product -> Multiplier effect.
- Minimize meta-development, Standard tools
- Gerrit – code review
- Jenkins – Testing (pre and post merge)
- Orchestra (bare metal deployment)
- Lanchpad, documentation servers, planet, repos
- Environment: Ubuntu, Everything in Python (pep8 standard, openstack.common ). virtualenv/pip
- Gated truck – ensure quality – auto tests – means devs always start from working code – keeps bad code out of tree – process same for everybody, transparent, automated.
- Gerrit – stand-alone patch review system – lots of integration hooks – lots of review categories
- SSI using openid for all of project sites
- Git review is implemented as git sub-command to submit things to gerrit. zero-config <- looks cute
- Vendors can have labs and tests and code can be automatically submitted and tested on it
I’ll be posting some updates from Linux.conf.au in Ballarat in the next few days. I arrived on Sunday but this is my first post. I’ll see if I do an out-of-order blog post on that later.
The keynote from Bruce Perens was really good. He talked a lot about the failure of open source to engage the public and policy makers. He also covered a bunch of cool hardware projects and cheap (and often open) small boards and other electronic products.
Smashing a square peg into a round hole – David Basden and Chris Collins
- Automation your automation.
- Anchor – Hosting provider, doing built solutions, non-standard requirements
- Puppet is one step, PXE & dbootstrap just another, hundreds of others
- A “simple” build used to take a day, down to 10 minutes
- instead of defining all steps define dependencies to get a “partial ordering”
- figure out what has to be done, in what steps, keep track of what has been done
- Lack of security in many queuing systems, bad agents can grab tasks they aren’t supposed to etc
- Outline of “Audience” job control system. Design goals and decisions
- Code on github.net/anchor
Extracting metrics from logs for realtime trending and alerting by Jamie Wilkinson
- passive system, query application about it’s metrics. However sometimes hard to parse
- However most apps log to system or other logs
- emtail – exporting modular tail
- plugins – on event X do Y – usually regex
- Metrics are values, times ( name, value, when, type (counter, gauge) , string, tag
- metrics are exported over a common protocol ( google protocol in G version, json in open source version )
- exported over http using json or CSV, sent to something slse to save and do something with
- Written in Go. Old version in python but too google specific
- 20 minutes talking about the source code (I browsed the web during this bit)
- I and a few others in the audience seemed to think this duplicated a lot of other tools with no obvious huge advantage over them. Bit of google NIH.
14 January 2012
Trying to debug problems with consumer-grade routers is notoriously difficult due to a lack of decent debugging information. It's quite hard to know what's going on without at least a few good error messages. Here is how I made my OpenWRT-based Gargoyle router send its log messages to a network server running rsyslog. Server ConfigurationGiven that the router ( 192.168.1.1) will be sending its log messages on UDP port 514, I started by opening that port in my firewall: iptables -A INPUT -s 192.168.1.1 -p udp --dport 514 -j ACCEPT
Then I enabled the UDP module for rsyslog and redirected messages to a separate log file (so that it doesn't fill up /var/log/syslog) by putting the following (a modified version of these instructions) in /etc/rsyslog.d/10-gargoyle-router.conf: $ModLoad imudp $UDPServerRun 514 :fromhost-ip, isequal, "192.168.1.1" /var/log/gargoyle-router.log & ~
The name of the file is important because this configuration snipet needs to be loaded before the directive which writes to /var/log/syslog for the discard statement (the "& ~" line) to work correctly. Router ConfigurationFinally, I followed the instructions on the Gargoyle wiki to get the router to forward its log messages to my server ( 192.168.1.2). After logging into the router via ssh, I ran the following commands: uci set system.@system[0].log_ip=192.168.1.2 uci set system.@system[0].conloglevel=7 uci commit
before rebooting the router. Now whenever I have to troubleshoot network problems, I can keep a terminal open on my server and get some visibility on what the router is doing: tail -f /var/log/gargoyle-router.log
|