I’m a convert. This conference was incredible, with passionate presenters, excellent content with an amazing inclusive and friendly community vibe. Most sessions are available on YouTube.
Things I am inspired to do post LCA 2018:
- Setup ctags with Vim. Think ‘go to definition’ for Vim, with support for 40+ langs. Specifically Exuberant Ctags and unite-tag.
- Play with more kernel syscalls (like ptrace).
- Signal processing and logic analyser lab and kit. More notes.
- Resume the nand2tetris journey, part 2.
- Use IRC more. Some CLI options Irssi BitchX WeeChat.
- And keybase. Imagine a Slack for the whole world, except end-to-end encrypted across all your devices. Or a Team Dropbox where the server can’t leak your files or be hacked.
- Always support and subscribe to lwn.net.
- Look into supporting the Software Conservancy Foundation (SCF)
- Pick up some new langs; go and rust seem to be current shiny.
- I met a number of kernel developers. Find out a bit more about what they do through the offical MAINTAINERS file.
- Yubikey or Nitrokey, start using. Open source physical USB device to enable secure encryption and signing of data. The secret keys are always stored inside the Nitrokey which protects against malware (such as computer viruses) and attackers. A user-chosen PIN and a tamper-proof smart card protect the Nitrokey in case of loss and theft.
- Linux Device Drivers book now maintained by Jonathan Corbet (executive editor at lwn.net), start reading, and create drivers, the gateway drug to the kernel.
- Time to refresh handle, bio, and CV.
- Checkout TaskWarrior, a CLI for managing tasks.
- Consider using more compact unique IDs such as Twitters snowflake e.g.
- Use more state machines.
- Study The Architecture of Open Source Applications.
Some of the sessions I got to attend.
How to run Kubernetes on your spare hardware at home, and save the world by Angus Lees - highlighted the divergence in the community betweeen focusing on software that targets a single machine (i.e. a PC or server) versus a clustered machine (a fabric of compute, memory, storage and network). Many sysadmins spend their days keeping (e.g. kubernetes) clusters healthy. Gus proposed drawing this “gap” closer by applying the same technology in the home. Some random things I got: k8s is short for Kubernetes, helm is very handy for templating and managing an end-to-end k8s application, kops a CLI for managing k8s clusters.
More crazy flying machines - CanberraUAV and ArduPilot by [Andrew Tridgell][https://en.wikipedia.org/wiki/Andrew_Tridgell] - nice discussion of CanberraUAV’s 2016 approach to the 2016 Outback Challenge, and ArduPilot by Tridge. Random cool gems: OzLabs was established in 1999 by Tridge in Canberra, one of the first commerical labs to work on Linux, and housed a talent pool of Australian kernel hackers including Anton Blanchard, Hugh Blemings, David Gibson, Greg Lehey, Paul Mackerras, Alan Modra, Stephen Rothwell, Rusty Russell, Martin Schwenke, and Chris Yeoh. ChibiOS is a really nice platform for embedded applications includes a RTOS, HAL, device drivers and support tools. The SkyViper v2450 is a great, mass produced, and very hackable drone to learn with.
Keynote: Wandering through the Commons by Hugh Blemmings - studied in Canberra. Valerie Aurora’s Howto negotiate your salary and benefits. Always look at what other people do - look over your colleagues shoulder (with permission); learn about different ways to tackle problems, leverage tools that can help, etc. Beware of imposter syndrome (self doubt). Hugh talked a little about the OpenPOWER Foundation, a collaboration around Power Architecture products initiated by IBM and announced as the “OpenPOWER Consortium” in 2013. Hugh passed around a couple of POWER9 chips, which are now being manufactured using a 14nm FinFET process. The cool part about this chip is its versatility: It has a range of connectors to attach FPGAs (field-programmable gate arrays), GPUs, and ASICs (application-specific integrated circuits). Those co-processors could accelerate computing to help run tasks related to databases, cognitive computing, visual computing, and hyperscale web serving. Power chips were exclusive to IBM servers until 2013but are now available to partners of the OpenPower Foundation, which was formed by IBM to help proliferate Power chips. IBM will license the Power9 architecture to companies that want to build custom chips. So it’s possible you’ll see non-IBM Power9 chips available in the future. But for now, most server makers are taking IBM’s Power9 chips and putting them in servers. It seems Google are heavily invested in Power architecture, which is now supported across much of their toolchain.
Aaron Sullivan, a distinguished engineer at Rackspace, said cloud providers are attracted to Power for two reasons: One is that it’s a good, high-performance CPU, and the other is that Moore’s Law alone can no longer deliver sufficient gains from one generation of processor to the next. To get the performance they need, companies like Rackspace and Google need the flexibility to rethink how their servers are designed, he said, including finding new ways to combine memory, I/O, and accelerator chips like GPUs. That’s easier with Power than with x86, he said, because IBM has opened the platform and removed licensing restrictions that otherwise make it hard for a community of customers and vendors to design new systems together.
You Can’t Unit Test C, Right? by Benno Rice - YouTube - some ways to go about C unit testing. Frameworks mentioned included Check ATF & Kyua . Dynamic linking poses a problem when the unit of concern employs functionality that is linked in (e.g. libc). A stubbed test friendly version of
malloc that can return error codes on demand is presented, but will fall through to the real
malloc, allowing unit tests to fake low memory conditions for example. Coverage in C is possible, disable compiler optimisations
-O0 and include the
--coverage switch when compiling, results in
*.gcno metadata files being output. After running the tests
*.gcda files that contain the coverage data are produced. Tools called lcov and genhtml can produce human readable coverage reports.
Next Generation Config Mgmt: Reactive Systems by James Shubin - fascinating talk about a reactive configuration management tool called mgmt that James hacked up. Its an ambitious project, that even has its own language (nice to see a different take on just using YAML). My simplified take; a language we dependencies on event sources can be neatly articulated, and notified when those event sources change, allowing reactive decisions to be made. Gems I took away; use the
watch command more, James ran heaps of demos with it and it worked a treat. Hysteresis is the dependence of the state of a system on its history (e.g. thermostat threshold example to avoid flapping).
extd runs on port 2380. mgmt clusters itself using the Raft Consensus Algorithm, which seems to be the new ZK on the block.
Future Technological Directions in Bitcoin by Rusty Russell - this session went deep into the technical bowels of Bitcoin (to be expected from Rusty), and some of the proposals to improve the technology in the future. We quickly swept through some of the cool data structures and algorithms involved such as Merkle trees, Segregated Witness or SegWit, Taproot, Schnorr signatures, and Merkle mountain range. Some papers thrown in the mix included the MimbleWimble simplification and the Bulletproofs paper (fast proofs for confidential transactions). Also, Rusty’s retirement as a kernel maintainer commit message, which includes some cool history:
My Linux kernel retirement commit made it to page 2 of Hacker News! And people said nice things: thankyou, Internet! https://t.co/wgLu8YRbK4— TheRustyTwit (@rusty_twit) February 14, 2018
Intro to Kernel Hacking by Tobin Harding - this talk is aimed at developers wishing to get started working on the kernel but unable to find things to work on. You will hopefully walk away with increased enthusiasm and confidence that you can find something interesting and tractable to work on within the kernel.
XFS: Teaching an Old Dog Old Tricks by Dave Chinner - Dave digs into XFS, created by Silicon Graphics back in 1993, has many design roots from the 80’s when btrees, extents and journalling were shiny new concepts. Dave walk through his ideas and plans on how to bring subvolumes, snapshots, writeable clones, send/receive remote snapshot replication, page cache sharing and more to XFS without needing to change it’s underlying 1980s architecture.
Should you rewrite in Rust? by Emily Dunham - various techniques you can use to integrate Rust with existing code in other languages, their pros and cons, and who’s using them in the industry. Even if you haven’t tried Rust yet, you’ll get a crash course in its strengths, its weaknesses, and the many ways you can make it do cool stuff.
Spectre and Meltdown Panel focused heavily on the community and how incidents like this are managed, and potential improvements to the process. Moderated by Jonathan Corbet, the panel members included Andrew ‘bunnie’ Huang Jess Frazelle Kees Cook Benno Rice and Katie McLaughlin.
Signal Analysis with Open Source Logic Analysers by Alastair D’Silva - Alastair from the IBM OzLabs provided attendees with a hardware kit (ARM developer board, SWD programmer, 1wire device and logic analyser). The workshop presents the world of hardware debugging through signal analysis. This is useful in situations where a device driver perhaps doesn’t implement a particular feature you require, or debugging a faulty driver. The lab walked through programming an ARM micro, reading serial output of the micro, basics of the 1wire protocol, and using sigrok to analyse the signal between the micro and the device. To drive this home we debuggeed a deliberately flawed driver.
Self-Documenting Coders: Writing Workshop for Devs by Heidi Waterhouse awesome and practical workshop on using language more effectively, covering things like documentation structure, theories of technical documentation, task based topics, reusable content, style guides (linters for English covering aspects such as diversity, accessability), writing for an audience. Techniques for writing bug reports, error messages, and onboarding instructions in a tool-agnostic, repeatable way.
Keynote: Containers aka crazy user space fun by Jess Frazelle - lots of technical details about containers (where did they come from, how do they work under the covers) and general nerd gems e.g. the Solaris Zones design paper, the ‘Plan 9 from Outer Space’ movie and its tie to ‘Plan 9 from Bell Labs’.