Zoe is still waking up on the early side, thanks to the jet lag. I think she woke up around 5am and jumped into bed with me. At least it's nice and dark.
The drop off at Kindergarten went well. Zoe was happy to see Megan again, and wasn't particularly clingy or anything. I was able to get away relatively quickly.
I spent the day getting stuck into some Debian work, and it was good to be able to use the day for its intended purpose for a change.
Megan's Dad, Jason, has a job this week that makes picking her up from Kindergarten impossible, and her parents asked me if I could pick her up on Monday and Wednesday. Zoe was very excited to have Megan come back for a play date, so I picked up both girls and brought them back home.
It was a pretty easy afternoon really. I let the girls just self-direct themselves, and they did a good job of playing on their own with minimal supervision from me. Megan had made a "portable zoo" at Kindergarten for her stuffed panda. It basically involved a shoe box and a couple of pieces of foam for bars. Her and Zoe spent a chunk of time blinging it up with Zoe's craft supplies.
Megan's Mum, Laura, picked up Megan not too long before Sarah did to pick up Zoe. Anshu arrived in the middle as well.
The jet lag is still seriously kicking my butt in the evenings. I'm hoping it will pass by tomorrow.
The Call For Papers is now closed. The last 6 weeks has been very exciting as we’ve watched all of those paper submissions flow in.
To those of you who have submitted a presentation to us - good luck, and thank you! You should hear from us in September whether you have succeeded.There are more and more wonderful things happening each day.
The LCA 2015 Auckland Team
Modern desktop environments like GNOME and KDE involving a lot of mousing around and I much prefer using the keyboard where I can. This is why I switched to the Ion tiling window manager back when I interned at Net Integration Technologies and kept using it until I noticed it had been removed from Debian.
After experimenting with awesome for 2 years and briefly considering xmonad , I finally found a replacement I like in i3. Here is how I customized it and made it play nice with the GNOME and KDE applications I use every day.Startup script
As soon as I log into my desktop, my startup script starts a few programs, including:
- gnome-settings-daemon: makes GTK applications look nice by applying my preferred theme amongst other things
- gnome-keyring-daemon: remembers ssh public keys for the duration of my session
- gnome-screensaver: locks the screen when I'm not around
- nm-applet: handles wifi and VPN connections
- git-annex: keeps my folders synchronized between machines
Because of a bug in gnome-settings-daemon which makes the mouse cursor disappear as soon as gnome-settings-daemon is started, I had to run the following to disable the offending gnome-settings-daemon plugin:dconf write /org/gnome/settings-daemon/plugins/cursor/active false Screensaver
In addition, gnome-screensaver didn't automatically lock my screen, so I installed xautolock and added it to my startup script:xautolock -time 30 -locker "gnome-screensaver-command --lock" &
to lock the screen using gnome-screensaver after 30 minutes of inactivity.
I can also trigger it manually using the following shortcut defined in my ~/.i3/config:bindsym Ctrl+Mod1+l exec xautolock -locknow Keyboard shortcuts
While keyboard shortcuts can be configured in GNOME, they don't work within i3, so I added a few more bindings to my ~/.i3/config:# volume control bindsym XF86AudioLowerVolume exec /usr/bin/pactl set-sink-volume @DEFAULT_SINK@ -- '-5%' bindsym XF86AudioRaiseVolume exec /usr/bin/pactl set-sink-volume @DEFAULT_SINK@ -- '+5%' # brightness control bindsym XF86MonBrightnessDown exec xbacklight -steps 1 -time 0 -dec 5 bindsym XF86MonBrightnessUp exec xbacklight -steps 1 -time 0 -inc 5 # show battery stats bindsym XF86Battery exec gnome-power-statistics
to make volume control, screen brightness and battery status buttons work as expected on my laptop.
These bindings require the following packages:
Another thing that used to work with GNOME and had to re-create in i3 is the ability to quickly toggle between two keyboard layouts using the keyboard.
To make it work, I wrote a simple shell script and assigned a keyboard shortcut to it in ~/.i3/config:bindsym $mod+u exec /home/francois/bin/toggle-xkbmap Suspend script
Since I run lots of things in the background, I have set my laptop to avoid suspending when the lid is closed by putting the following in /etc/systemd/login.conf:HandleLidSwitch=lock
Instead, when I want to suspend to ram, I use the following keyboard shortcut:bindsym Ctrl+Mod1+s exec /home/francois/bin/s2ram
To avoid having to type my sudo password every time pm-suspend is invoked, I added the following line to /etc/sudoers:francois ALL=(ALL) NOPASSWD: /usr/sbin/pm-suspend Window and workspace placement hacks
While tiling window managers promise to manage windows for you so that you can focus on more important things, you will most likely want to customize window placement to fit your needs better.Working around misbehaving applications
A few applications make too many assumptions about window placement and are just plain broken in tiling mode. Here's how to automatically switch them to floating mode:for_window [class="VidyoDesktop"] floating enable
You can get the Xorg class of the offending application by running this command:xprop | grep WM_CLASS
before clicking on the window.Keeping IM windows on the first workspace
I run Pidgin on my first workspace and I have the following rule to keep any new window that pops up (e.g. in response to a new incoming message) on the same workspace:assign [class="Pidgin"] 1 Automatically moving workspaces when docking
Here's a neat configuration blurb which automatically moves my workspaces (and their contents) from the laptop screen (eDP1) to the external monitor (DP2) when I dock my laptop:# bind workspaces to the right monitors workspace 1 output DP2 workspace 2 output DP2 workspace 3 output DP2 workspace 4 output DP2 workspace 5 output DP2 workspace 6 output eDP1
You can get these output names by running:xrandr --display :0 | grep " connected"
TL; DR: [spam]Please vote for my DrupalCon Denver proposal on Drupal workflows in the enterprise.[/spam]
The basics of the build are relatively straight forward, around 1000 nodes, a bunch of views and a bit of glue to hold it all together. Where things get complicated is the workflow. The Financial services sector in Australia is subject to strict control of representations being made about products. The workflow system needs to ensure IAG complies with these requirements.
During the evaluation we found that generally Drupal workflows are based around publishing a single piece of content on the production site. In the IAG case a collection of nodes need to be published as a piece of work, along with a new block. These changes need to be reviewed by stakeholders and then deployed. This led us to build a job based workflow system.
We are using the Features module to handle all configuration, deploy for entities and some additional tools, including Symfony, Jenkins and drush to hold it all together.
I've proposed the session for Drupal Downunder in January and will refine the session based on feedback from there in preparation for Denver. If you want to learn more about Drupal Workflows in the Enterprise, please vote for my session.
The Acquia Cloud API makes it easy to manage sites on the platform. The API allows you to perform many administrative tasks including creating, destroying and copying databases, deploying code, managing domains and copying files.
Acquia offers 2 official clients. The primary client is a drush plugin which can only be downloaded from Acquia Insight. The other is a PHP library which states in the README that it is "[n]ot ready for production usage".
On a recent project using WF Tools we needed some pretty advanced deployment scripts for sites hosted on Acquia Cloud. We had tried using a mix of bash and PHP, but that created a maintenance nightmare, so we switched to Python.
I was unable to find a high quality Python library, so I wrote a python client for the Acquia Cloud API. The library implements all of the features that we needed, so there is a few things missing.
Chaining complex commands together is easy because the library implements a fluent interface. An extreme example of what is possible is below:import acapi # Instantiate the client c = acapi.Client('firstname.lastname@example.org', 'acquia-token') # Copy the prod db to dev, make a backup of the dev db and download it to /tmp c.site('mysite').environment('prod').db('mysite').copy('dev').backups().create().download('/tmp/backup.sql.gz')
Some of the code is library is "borrowed" from the Python client for Twilio. The library is licensed under the terms of the MIT license.
I am continuing to develop the library. Consider this a working alpha. Improving error handling, creating a comprehensive test suite and implementing the missing API calls are all on the roadmap. Pull requests are welcome.
I have no idea if I'm getting my day numbers right any more with all the crossings of the international date line, but we'll call Friday day 170 and be done with it.
The flight back went pretty well. Zoe had a good time watching some movies, and also slept for a reasonable chunk of the flight. Zoe's cold had progressed into her typical runny nose/nasty cough combination, but neither was particularly bad. She did cough a bit in her sleep, but it didn't seem to stop her sleeping, and she was pretty happy for the duration of the flight. She was definitely impatient to land, because she knew she'd be seeing her mother.
We must have been the first flight into Brisbane on Friday morning, so we breezed through passport control quickly, and the car seat helpfully came out on the same carousel as the suitcases, so we were able to collect everything and exit quarantine relatively quickly.
Sarah met us outside, and dropped me home, and took the day off to spend with Zoe. I used the day to unpack and run a few errands.
I was super impressed with how well Zoe traveled overall. She's such a good little traveler. She's the perfect age/height for her Trunki now, and that made traversing airports at close to normal walking pace very doable. I'm also happy with how I handled solo-parent international travel. I've done a flight to Townsville with Zoe before, and a flight to Melbourne with Zoe and Anshu, but long-haul international for nearly 3 weeks is a totally different ball game, and aside from me needing to learn to pack a bit better when leaving a location (checklists, checklists, checklists!) everything went really well. The only thing I forgot to pack was my own swimwear, and that was easily fixed.
- This is why you shouldn’t take people’s Facebook lives seriously http://t.co/COCxArZuUY 20:32:00, 2014-07-20
- How much does IKEA *really* overcharge Australians? Here’s the data http://t.co/FCJrBWpkqp http://t.co/axa77kkoI4 16:33:05, 2014-07-20
- It will take 75 years for women to achieve equal pay with men: study http://t.co/023QKZ7xlA http://t.co/wdzUV5umbZ 14:19:02, 2014-07-18
- Tony Abbott says that boat people are “un-Christian” for coming to Australia http://t.co/4LjuQKr1ht #auspol 14:19:04, 2014-07-16
Presentation to the La Trobe Valley Linux Miniconference, Saturday July 19, 2014
- An update from the OpenStack Foundation (presented by me, with slides provided by the Foundation).
- A talk about the NeCTAR cloud and using the command line tools to work with images, by Scott Bragg.
- A talk on spinning up instances with Nova and Heat, by Stewart Wilde.
- A talk by me on Ceph, and how it can be used as the storage backend for an OpenStack cloud.
We also had some posters, stickers and fridge magnets made up. The fridge magnets were remarkably popular. If you weren’t at TasLUG last night, and you want a fridge magnet, first download this image (the full-res one linked to, not the inline one):
Then, go to Vistaprint and place an order for Magnetic Business Cards, using this image. You can get 25 done for about $10, plus shipping.
Finally, I would like to publicly thank the OpenStack Foundation for supporting this event.
It's all a bit hazy now, but I think Zoe slept all night and woke up a bit early and came down to my room. Graydon appeared not long after. I made us all breakfast and then got stuck into packing.
After we were all packed up, and Zoe and Graydon had played a bit, Neal took us to REI and Best Buy to do a spot of shopping, and then dropped us at Hertz to pick up the rental car.
After lunch, we packed up the car and headed on our way to Dallas.
The drive went really well. I'd rented some sort of Chevy SUV, and it had a nice interior, and the car radio supported Pandora and had a big display. I stuck Zoe's car seat in the middle, and she was happy being able to see out the front and also see the cover art for what Pandora was dishing up. As I hoped, she napped for a couple of hours on the way up.
The drive took about three and a half hours, and I'd wanted to stop for a break along the way, but missed the exit for the only decent looking rest stop, so pressed on.
We made it to the airport with a comfortable margin of time, and had enough time for dinner. The highlight of the evening was hearing Kim Kardashian get paged twice. Everyone looked at each other and wondered if it was that Kim Kardashian and considered going to the gate she was paged to to find out.
Our flight ended up leaving a little bit late, due to needing to unload some of the cargo to make the distance and also to ensure we didn't arrive before the 5am curfew in Brisbane airport.
“I don’t like it”—The most dreaded of all design feedback from your client/boss/co-worker. This isn’t so much a matter of your ego being damaged, it’s just not useful or constructive criticism.
In order to do better we need feedback grounded in understanding of user needs. And we need to be sure it’s not coming from solely the client’s aesthetic preferences, which may be impeccable but may not be effective for the product.
Aesthetics are a matter of taste. Design is not just aesthetics. I’m always saying it, but it’s worth repeating: there are aesthetic decisions in design, but they are meant to contribute to the design as a whole. The design as a whole is created for an audience, and with goals in mind, so objectivity is required and should be encouraged.
Is the client offering an opinion based on her own taste, trying to reflect the taste of the intended audience, or trying to solve a perceived problem for the user? Don’t take “I don’t like it” at face value and try to respond to it without more communication.How do we elicit better feedback?
To elicit the type of feedback we want from clients, we should encourage open-ended critiques that explain the reasons behind the negative feedback, critiques that make good use of conjunctions like “because.” “I don’t like it because…” is already becoming more valuable feedback.
Designer: Why don’t you like the new contact form design?
Client: I don’t like it because the text is too big.
Whether that audience can achieve their goals with our product is the primary factor in its success. We need clients to understand that they may not be the target audience. Sometimes this can be hard for anyone close to a product to understand. We may be one of the users of the products we’re designing, but the product is probably not being designed solely for users like us. The product has a specific audience, with specific goals. Once we’ve re-established the importance of the end user, we can then reframe the feedback by asking the question, “how might the users respond?”
Designer: Do you think the users will find the text too big?
Client: Yes. They’d rather see everything without having to scroll.
Designer: The text will have to be very small if we try to fit it all into the top of the page. It might be hard to read.
Client: That’s fine. All of our users are young people, so their eyesight is good.
Throughout the design process, we need to check our hidden assumptions about our users. We should also ensure any feedback we get isn’t based upon an unfounded assumption. If the client says the users won’t like it, ask why. Uncover the assumption—maybe it’s worth testing with real users?
Designer: Can we be certain that all your users are young people? And that all young people have good eyesight? We might risk losing potential customers unless the site is easy for everyone to read.
How do we best separate out assumptions from actual knowledge? Any sweeping generalizations about users, particularly those that assume users all share common traits, are likely to need testing. A thorough base of user research, with evidence to fall back on, will give you a much better chance at spotting these assumptions.The design conversation
As designers, we can’t expect other people to know the right language to describe exactly why they think something doesn’t work. We need to know the right questions that prompt a client to give constructive criticism and valuable feedback. I’ve written before on how we can pre-empt problems by explaining our design decisions when we share our work, but it’s impossible to cover every minute detail and the relationships between them. If a client can’t articulate why they don’t like the design as a whole, break the design into components and try to narrow down which part isn’t working for them.
Designer: Which bit of text looks particularly big to you?
Client: The form labels.
When you’ve zeroed in on a component, elicit some possible reasons that it might not be effective.
Designer: Is it because the size of the form labels leaves less space for the other elements, forcing the users to scroll more?
Client: Yes. We need to make the text smaller.Reining it in
Aesthetics are very much subject to taste. You know what colors you like to wear, and the people you find attractive, and you don’t expect everyone else to share those same tastes. Nishant wrote a fantastic column about how Good Taste Doesn’t Matter and summarized it best when he said:good and virtuous taste, by its very nature, is exclusionary; it only exists relative to shallow, dull…tastes. And if good design is about finding the most appropriate solution to the problem at hand, you don’t want to start out with a solution set that has already excluded a majority of the possibilities compliments of the unicorn that is good taste. Taste’s great
Designer: But if we make the text smaller, we’ll make it harder to read. Most web pages require scrolling, so that shouldn’t be a problem for the user. Do you think the form is too long, and that it might put users off from filling it in?
Client: Yes, I want people to find it easy to contact us.
Designer: How about we take out all the form fields, except the email address and the message fields, as that’s all the information we really need?
Client: Yes, that’ll make the form much shorter.
If you’re making suggestions, don’t let a client say yes to your first one. These suggestions aren’t meant as an easy-out, allowing them to quickly get something changed to fit their taste. This is an opportunity to brainstorm potential alternatives on the spot. Working collaboratively is the important part here, so don’t just go away to work out the first alternative by yourself.
If you can work out between you which solution is most likely to be successful, the client will be more committed to the iteration. You’ll both have ownership, and you’ll both understand why you’ve decided to make it that way.
NOTE: the links referred to in this post may contain triggers. Make sure you have appropriate support available.
There are 10 types of childhood trauma measured in the ACE Study, personal as well as ones related to other family members. Once you have your score, there are many useful insights later in the article.
The origin of this study was actually in an obesity clinic.
With the whole OpenPower thing, a lot of low level firmware is being open sourced, which is really exciting for the platform – the less proprietary code sitting in memory the better in my books.
If you go to https://github.com/open-power you’ll see code for a bunch of the low level firmware for OpenPower and POWER8.
Hostboot is the bit of code that brings up the CPU and skiboot both sets up hardware and provides runtime services to Linux (such as talking to the service processor, if one is present).
Patches to https://github.com/open-power/skiboot/blob/master/doc/overview.txt are (of course) really quite welcome. It shouldn’t be too hard to get your head around the basics.
To see the Linux side of the OPAL interface, go check out linux/arch/powerpc/platforms/powernv -there you can see how we ask OPAL to do things for us.
If you buy a POWER8 system from IBM running PowerKVM you’re running this code.