PairProgrammingAndCodeReviewInTheCloud

Dev Week -- Pair Programming and Code Review in the Cloud! -- kirkland -- Thu, 3rd Feb, 2012

   1 [18:31] <kirkland> welcome all!
   2 [18:31] <kirkland> okay, this will be a totally live/interactive session
   3 [18:31] <kirkland> please ssh guest@classroom.gazzang.net
   4 [18:31] <kirkland> password is 'guest'
   5 [18:31] <kirkland> you'll have read only access there
   6 [18:31] <kirkland> where I'm going to demo some neat practices for pair programming and code review in the cloud!
   7 [18:32] <kirkland> for the best experience, you may want to maximize your window
   8 [18:32] <kirkland> or expand it to at least 180x45 characters
   9 [18:32] <kirkland> you may want to use ctrl - to decrease font size (in gnome-terminal anyway)
  10 [18:32] <kirkland> there's a clicker at the bottom, counting the number people in the session
  11 [18:32] <kirkland> i see "14#" at the bottom
  12 [18:33] <kirkland> I've used byobu many, many times for these sessions
  13 [18:33] <kirkland> but this is the *first* time I've used byobu + tmux ;-)
  14 [18:33] <kirkland> we'll see how it goes!
  15 [18:33] <kirkland> okay, now that we've got a good count of people in here, let's get started
  16 [18:34] <kirkland> in that shared screen session, I'm running IRSSI, a command line irc client
  17 [18:34] <kirkland> you can stay connected there (here?) and see what I'm typing
  18 [18:34] <kirkland> no need to go back and forth between the terminal session and your chat client
  19 [18:34] <kirkland> these are a handful of best practices me and my colleagues around Canonical, Ubuntu, and Gazzang have used over the last few years
  20 [18:34] <kirkland> that have really made working with people around the world a lot easier
  21 [18:34] <kirkland> chief among these (for me) has been shared GNU screen and now Tmux sessions, in EC2
  22 [18:35] <kirkland> we're able to avoid firewalls and networking/routing issues by "meeting in the middle"
  23 [18:35] <kirkland> one or more of us can easily ssh into an EC2 machine
  24 [18:35] <kirkland> and these instances can cost as little as $0.02/hour
  25 [18:35] <kirkland> now, this one, is a big one ;-)
  26 [18:35] <kirkland> 32 cpus and 60GB of memory
  27 [18:35] <kirkland> for a "whopping" $2.40/hour :-)
  28 [18:36] <kirkland> anyway, this system is running Ubuntu 11.10, plus an updated version of byobu and tmux from ppa:byobu/ppa
  29 [18:36] <kirkland> you all who are logged in as the 'guest' user
  30 [18:36] <kirkland> are attached to a readonly GNU screen session
  31 [18:36] <kirkland> which is wrapped around a tmux session
  32 [18:36] <kirkland> which is being driven by my 'ubuntu' user
  33 [18:37] <kirkland> for which I'm the only person with access
  34 [18:37] <kirkland> that's just for display here
  35 [18:37] <kirkland> but if you want to see how to set that up, see the Juju charm 'byobu-classroom'
  36 [18:37] <kirkland> in most cases, when I'm doing this with my trusted colleagues
  37 [18:37] <kirkland> we just share the same ubuntu account
  38 [18:37] <kirkland> and both of us have read/write access
  39 [18:38] <kirkland> I'm sure you can appreciate all the things that might go wrong if I gave 27 of you simultaneous read/write access ;-)
  40 [18:38] <kirkland> mayhem :-D
  41 [18:38] <kirkland> okay, so let's first feel our way around this session
  42 [18:38] <kirkland> first, I'll press shift-F1 to display the help/keybindings
  43 [18:38] <kirkland> here, i can see that byobu binds a bunch of actions to the F keys
  44 [18:39] <kirkland> I'll quickly work my way through a couple of them
  45 [18:39] <kirkland> F2 creates new windows, and F3/F4 will move right and left between them
  46 [18:39] <kirkland> you won't be able to do that here in our shared session
  47 [18:39] <kirkland> but you can do that on your local ubuntu computer by running 'byobu-tmux' on your command line
  48 [18:39] <kirkland> so now i hit F2 3 times
  49 [18:39] <kirkland> and have windows 0, 1, 2, 3
  50 [18:40] <kirkland> and i can press F3 and F4 to move right and left among them
  51 [18:40] <kirkland> i'm going to run the 'top' command in window 3
  52 [18:40] <kirkland> and now i'm going to rename window 3 to say "top" by pressing F8
  53 [18:40] <kirkland> and i'll rename window 0 to "irc" with F8 as well
  54 [18:41] <kirkland> okay, so windows are one way of multi tasking
  55 [18:41] <kirkland> but spliting the screen is far more interesting!
  56 [18:41] <kirkland> ctrl-F2 will split the screen vertically
  57 [18:41] <kirkland> and shift-F2 will split the screen horizontall
  58 [18:41] <kirkland> and I can keep doing that pretty much ad nauseum!
  59 [18:41] <kirkland> note that splits are per-window
  60 [18:41] <kirkland> so if I go over to window 3
  61 [18:42] <kirkland> i won't see any splits there, until I create them
  62 [18:42] <kirkland> so much space over on the left of window 3
  63 [18:42] <kirkland> i'll create another split there :-)
  64 [18:42] <kirkland> moving between windows is F3/F4
  65 [18:42] <kirkland> moving between splits is Shift-Up/Down/Left/Right
  66 [18:43] <kirkland> and you should see the split highlighted in purple
  67 [18:43] <kirkland> that's your active split
  68 [18:43] <kirkland> as well as some numbers that pop up and identify them
  69 [18:43] <kirkland> you can jump directly to a number split if you want
  70 [18:43] <kirkland> so let's start doing some work in one of these splits
  71 [18:43] <kirkland> i have downloaded the source code of libreoffice
  72 [18:43] <kirkland> as well as its build dependencies
  73 [18:43] <kirkland> let's see it build on a 32 processor system :-)
  74 [18:44] <kirkland> and we'll pretend that we're pair programmers working on some big build
  75 [18:44] <kirkland> i really like colorized logs
  76 [18:44] <kirkland> so I'm going to pipe the output of debuild through ccze
  77 [18:44] <kirkland> and that'll take a while :-)
  78 [18:45] <kirkland> lets say that I want to break that split out to a window of its own
  79 [18:45] <kirkland> as I really don't need to see that build right now
  80 [18:45] <kirkland> pressing Shift-F1, I'll get the menu again
  81 [18:45] <kirkland> and I can see that Alt-F11 will expand a split to a full window
  82 [18:46] <kirkland> so now we have the libreoffice build happening in window 4
  83 [18:46] <kirkland> now, let's look at some source code
  84 [18:46] <kirkland> i'm going to install a web application
  85 [18:46] <kirkland> we're going to debug a problem
  86 [18:46] <kirkland> tail some logs
  87 [18:46] <kirkland> and debug it in real time
  88 [18:47] <kirkland> I'm going to install pictor
  89 [18:47] <kirkland> a web application for browsing pictures over a web interface
  90 [18:47] <kirkland> something like picasa, I suppose
  91 [18:47] <kirkland> you can point a browser at http://classroom.gazzang.net/pictor
  92 [18:47] <kirkland> and you'll see that we need to seed it with some images
  93 [18:48] <kirkland> i'm going to grab some packages
  94 [18:48] <kirkland> from ubuntu that serve wall papers
  95 [18:48] <kirkland> now let's install some symlinks
  96 [18:48] <kirkland> to our pictures
  97 [18:49] <kirkland> and pretend that's what we want pictor to serve
  98 [18:49] <kirkland> now let's tail our apache logs
  99 [18:49] <kirkland> in another split
 100 [18:50] <kirkland> I can see a few of you browsing that site now :-)
 101 [18:50] <kirkland> let's tail the error log now
 102 [18:50] <kirkland> I'm going to resize my splits now
 103 [18:50] <kirkland> using Ctrl-Up/Down/Left/Right
 104 [18:51] <kirkland> busy busy busy :-)
 105 [18:51] <kirkland> now
 106 [18:51] <kirkland> perhaps you've noticed our bug
 107 [18:51] <kirkland> http://classroom.gazzang.net/pictor/?album=%2Fbackdrops&thumbs=1
 108 [18:51] <kirkland> the "backdrops" album is empty
 109 [18:51] <kirkland> I wonder why ....
 110 [18:52] <kirkland> hmm, so the files in the backdrops directory are png's
 111 [18:52] <kirkland> meanwhile, the "working" ones are .jpgs
 112 [18:53] <kirkland> let's hack it into the code, then
 113 [18:53] <kirkland> this is the point at which
 114 [18:53] <kirkland> you and your team
 115 [18:53] <kirkland> perhaps pair programming
 116 [18:53] <kirkland> might dig through the code and find the bug
 117 [18:54] <kirkland> i'm going to search this code for hardcoded "jpg" references
 118 [18:54] <kirkland> aha!
 119 [18:54] <kirkland> there's an is_image() function
 120 [18:54] <kirkland> that looks for files ending in "jpg" and "jpeg"
 121 [18:54] <kirkland> let's try adding ".png"
 122 [18:54] <kirkland> now refresh
 123 [18:54] <kirkland> lovely!
 124 [18:54] <kirkland> of course, I just made that change directly on the /usr/share source code
 125 [18:54] <kirkland> if we wanted to do this right, we should branch bzr and submit the change
 126 [18:54] <kirkland> let's do that very quickly
 127 [18:55] <kirkland> there's our 1-line change
 128 [18:55] <kirkland> in our bzr cdiff
 129 [18:56] <kirkland> and there we have it!
 130 [18:56] <kirkland> I'll make sure to credit all of #ubuntu-classroom when I commit this fix later today ;-)
 131 [18:56] <kirkland> let's go back and check our office build, out of curiosity
 132 [18:57] <kirkland> still chugging along
 133 [18:57] <kirkland> are you getting a feel for how this works?
 134 [18:57] <kirkland> we use it often for education (like this!)
 135 [18:57] <kirkland> where one person is trying to teach one or more how to do something
 136 [18:58] <kirkland> but it's also phenomenally useful for debugging complex problems
 137 [18:58] <kirkland> johnny-e> QUESTION: is your byobu is using tmux instead of screen?
 138 [18:58] <kirkland> johnny-e: well, it's a bit of both
 139 [18:58] <kirkland> what you're SEEING is byobu + tmux
 140 [18:58] <kirkland> the one line across the bottom
 141 [18:58] <kirkland> and the elegant splits
 142 [18:58] <kirkland> yes, that's tmux
 143 [18:59] <kirkland> but the thing that's keep all of you with readonly access is a wrapper of GNU screen
 144 [18:59] <kirkland> though that's entirely transparent to you
 145 [18:59] <kirkland> <ssweeny-lernid> QUESTION: ​ so the double layer of tmux + screen is only because of the need for read-only in this session?
 146 [18:59] <kirkland> ssweeny-lernid: yes, exactly
 147 [18:59] <kirkland> ssweeny-lernid: when you do this with your friends/colleagues, it'll be trivial to setup
 148 [18:59] <kirkland> (this configuration took me a few minutes)
 149 [18:59] <kirkland> here's what you'll do ...
 150 [18:59] <kirkland> get an Ubuntu system running somewhere
 151 [19:00] <kirkland> the "cloud" is nice, because it removes the need for VPNs or fancy routing
 152 [19:00] <kirkland> but you could certainly use a physical local system or a VM
 153 [19:00] <kirkland> next, you could very conveniently use the ssh-import-id command
 154 [19:00] <kirkland> this is also a very useful tool to have in your toolbelt when doing pair programming and code review in the cloud
 155 [19:01] <kirkland> you can 'ssh-import-id SOME_LAUNCHPAD_USERNAME'
 156 [19:01] <kirkland> and it will securely (over https) connect to Launchpad
 157 [19:01] <kirkland> and retrieve that user's public SSH keys and insert them into the local authorized_keys file
 158 [19:01] <kirkland> in this way, you can avoid needing to share passwords
 159 [19:01] <kirkland>  i would have done that today for this session
 160 [19:02] <kirkland> but I'm not sure how long it would have taken to import all 29 of you ;-)
 161 [19:02] <kirkland> actually, just before we sign off, I'll import your keys
 162 [19:02] <kirkland> and let you trash this system for a few seconds before I terminate it :-P
 163 [19:03] <kirkland> <jsnapp> QUESTION: do you have any problems nesting byobu? like running byobu on my desktop and on my server?
 164 [19:03] <kirkland> well, yeah, kinda sorta
 165 [19:03] <kirkland> nesting byobu can get complex
 166 [19:03] <kirkland> when doing so, you'll need to know the tmux and/or screen key bindings
 167 [19:03] <kirkland> and I'd recommend using two different escape sequences
 168 [19:03] <kirkland> i use ctrl-a for mour outter session
 169 [19:03] <kirkland> and ctrl-b for my inner session
 170 [19:04] <kirkland> otherwise, byobu doesn't know which session you're talking to :-)
 171 [19:04] <kirkland> <sinisterstuf> QUESTION: I was reading the gnu screen man pages, do you need to set up screen in a specific way to do this? I read something about giving the program root permission or something...
 172 [19:04] <kirkland> sinisterstuf: yeah, here's the magic ...
 173 [19:04] <kirkland> sinisterstuf: follow me over in the shared session
 174 [19:04] <kirkland> you can grab the bzr branch from http://bazaar.launchpad.net/~charmers/charms/oneiric/byobu-classroom/trunk/
 175 [19:05] <kirkland> see hooks/install
 176 [19:05] <kirkland> [ -f /usr/share/byobu/profiles/classroom ] || echo "
 177 [19:05] <kirkland> aclumask guest+r guest-w guest-x
 178 [19:05] <kirkland> aclchg guest +r-w-x '#?'
 179 [19:05] <kirkland> aclchg guest +x 'detach'
 180 [19:05] <kirkland> multiuser on
 181 [19:05] <kirkland> escape "^Bb"
 182 [19:05] <kirkland> " > /usr/share/byobu/profiles/classroom
 183 [19:05] <kirkland> chmod 644 /usr/share/byobu/profiles/classroom
 184 [19:05] <kirkland> that's most of it
 185 [19:05] <kirkland> that changes the acls of the guest user to read only
 186 [19:05] <kirkland> also, I tweaked the ssh config
 187 [19:06] <kirkland> so that the *only* command that the guest user can run on ssh in is to attach to the byobu session
 188 [19:06] <kirkland> echo "
 189 [19:06] <kirkland> PasswordAuthentication yes
 190 [19:06] <kirkland> AllowTcpForwarding no
 191 [19:06] <kirkland> Match User guest
 192 [19:06] <kirkland>   ForceCommand exec screen -x ubuntu/byobu-classroom
 193 [19:06] <kirkland> " >> /etc/ssh/sshd_config
 194 [19:06] <kirkland> <jsnapp> QUESTION: so do you typically nest byobu or just run it in the server?
 195 [19:06] <kirkland> jsnapp: I almost never nest byobu
 196 [19:06] <kirkland> but that's a good question
 197 [19:06] <kirkland> around what I find as best practices for this...
 198 [19:06] <kirkland> so I run gnome-terminal (or terminator)
 199 [19:06] <kirkland> at full screen
 200 [19:06] <kirkland> I use multiple tabs
 201 [19:07] <kirkland> but each tab is an ssh session to another server
 202 [19:07] <kirkland> in each tab, I run byobu
 203 [19:07] <kirkland> which is nice because I can always attach and detach
 204 [19:07] <kirkland> actually ...  that's a good exercise
 205 [19:07] <kirkland> I invite you to detach from the shared session
 206 [19:07] <kirkland> using F6
 207 [19:07] <kirkland> and then reattach
 208 [19:07] <kirkland> by ssh'ing back in
 209 [19:07] <kirkland> ssh guest@classroom.gazzang.net
 210 [19:08] <kirkland> you'll see that everything is *exactly* as you left it
 211 [19:08] <kirkland> I've just done the same thing
 212 [19:08] <kirkland> detached
 213 [19:08] <kirkland> and then reattached
 214 [19:08] <kirkland> this is your lifeline savior when you have a crappy uplink connection :-)
 215 [19:08] <kirkland> it would stink to have this office build die
 216 [19:08] <kirkland> just because your ssh session had a hiccup
 217 [19:09] <kirkland> now
 218 [19:09] <kirkland> each time I need a new shell
 219 [19:09] <kirkland> I can either create a new window (F2)
 220 [19:09] <kirkland> or a new split (Ctrl-F2/Shift-F2)
 221 [19:09] <kirkland> I tend to group similar shells with splits
 222 [19:09] <kirkland> so if I'm working on libreoffice in one window
 223 [19:09] <kirkland> i might have a handful of related splits
 224 [19:09] <kirkland> maybe one building
 225 [19:09] <kirkland> maybe one with code
 226 [19:09] <kirkland> maybe two with code, side by side
 227 [19:10] <kirkland> one for testing, etc.
 228 [19:10] <kirkland> one tailing log files
 229 [19:10] <kirkland> much like what we're looking at in window 0
 230 [19:10] <kirkland> with 2 logs
 231 [19:10] <kirkland> and one code
 232 [19:10] <kirkland> oh, let's rearrange the windows
 233 [19:10] <kirkland> let's say I want to move the access log left or right one split
 234 [19:10] <kirkland> I use Ctrl-F3/F4
 235 [19:11] <kirkland> I can do that with any of the splits
 236 [19:11] <kirkland> also, there's a handful of predefined, useful arrange ments
 237 [19:11] <kirkland> you can Shift-F8 will toggle through them
 238 [19:11] <kirkland> here's equal vertical windows
 239 [19:12] <kirkland> or equal horizontal windows
 240 [19:12] <kirkland> here's one big one across the top
 241 [19:12] <kirkland> and a bunch of verticals across the bottom
 242 [19:12] <kirkland> or (probably my favorite)
 243 [19:12] <kirkland> one vertical (where I look at my source code)
 244 [19:12] <kirkland> and 3 more, where I tail my logs
 245 [19:12] <kirkland> I'm going to move my source code over to the left split with Ctrl-F3
 246 [19:13] <kirkland> ah, that's nice
 247 [19:13] <kirkland> I can save a particular split arrangement
 248 [19:13] <kirkland>     Ctrl-Shift-F8               Save the current split-pane layout
 249 [19:13] <kirkland> and then restore it later
 250 [19:13] <kirkland>     Ctrl-F8                     Restore a split-pane layout
 251 [19:14] <kirkland> there's a menu of the predefined ones, and my saved one, 'favorite'
 252 [19:14] <kirkland> oh, let's see tiled as well
 253 [19:14] <kirkland> also nice
 254 [19:14] <kirkland> it's lovely that *all* of this is happening over ONE single ssh connection
 255 [19:14] <kirkland> we have over a dozen shells open
 256 [19:14] <kirkland> doing some very busy things
 257 [19:14] <kirkland> but just 1 ssh session to the server
 258 [19:15] <kirkland> and it's all preserved across attaches and detaches
 259 [19:15] <kirkland> <kermit666> QUESTION: ​ Is it possible to do something similar using "ssh -X" to share a desktop in readonly mode when you're working in an IDE?
 260 [19:15] <kirkland> kermit666: not that I know of, sorry :-(
 261 [19:15] <kirkland> <johnny-e> QUESTION: so you're runing byobu on each server you connect to
 262 [19:15] <kirkland> yes, always
 263 [19:15] <kirkland> johnny-e: you can set that easily on a per-user basis with 'byobu-enable'
 264 [19:16] <kirkland> johnny-e: or, you can set that on a system wide basis with 'dpkg-reconfigure byobu'
 265 [19:16] <kirkland> HOWEVER
 266 [19:16] <kirkland> the best way to do it, I believe
 267 [19:16] <kirkland> is by adding a one-liner to your LOCAL ~/.bashrc file
 268 [19:16] <kirkland> export LC_TERMTYPE=byobu
 269 [19:16] <kirkland> put that in your local ~/.bashrc
 270 [19:17] <kirkland> and any time you ssh to a system with a (recent) version of byobu
 271 [19:17] <kirkland> this script, /etc/profile.d/Z97-byobu.sh
 272 [19:17] <kirkland> will see that you've selected your TERMTYPE to byobu and it will try to launch it by default at startup!
 273 [19:17] <kirkland> <caotic> QUESTION: what if i had an extra view which i would like to toggle on or off ?
 274 [19:17] <kirkland> caotic: I don't understand your question, can you clarify please?
 275 [19:18] <kirkland> <jsnapp> QUESTION: how are you keeping other users screen size from affecting your byobu session? is it the read only access?
 276 [19:18] <kirkland> jsnapp: oh, that's a great question
 277 [19:18] <kirkland> a *very* hard one as well
 278 [19:18] <kirkland> jsnapp: I have overriden the default byobu setting
 279 [19:19] <kirkland> jsnapp: normally, byobu sets the tmux option aggressive-resize 'on'
 280 [19:19] <kirkland> jsnapp: however, what that means is that everyone is limited by the smallest attached screen
 281 [19:19] <kirkland> jsnapp: with 29 of you, one of you could have set your screen to 80x25 and limited all of us
 282 [19:19] <kirkland> jsnapp: in some case (most?) that might be the right answer
 283 [19:19] <kirkland> jsnapp: but for this demo, it wasn't, sorry
 284 [19:19] <kirkland> jsnapp: so I set that to 'off' for this session
 285 [19:19] <kirkland> <johnny-e> QUESTION: can you assign names to your custom split-pane layouts?
 286 [19:20] <kirkland> johnny-e: yes, absolutely, just press ctrl-shift-F8
 287 [19:20] <kirkland> johnny-e: and it'll prompt you to name it
 288 [19:20] <ClassBot> There are 10 minutes remaining in the current session.
 289 [19:20] <kirkland> johnny-e: in your ~/.byobu directory, you'll see a layouts dir
 290 [19:20] <kirkland> johnny-e: I named my "favorite"
 291 [19:20] <kirkland> johnny-e: and the contents of that file is a tmux split window layout:
 292 [19:20] <kirkland> b57b,180x44,0,0{80x44,0,0,99x44,81,0[99x14,81,0,99x14,81,15,99x14,81,30]}
 293 [19:21] <kirkland> (have fun interpreting that ;-)
 294 [19:21] <kirkland> johnny-e: sorry, I did it earlier;  I encourage you to try it on your own byobu system later
 295 [19:21] <kirkland> oh, one more important topic!
 296 [19:22] <kirkland> now, tmux and screen differ here significantly on a few major points
 297 [19:22] <kirkland> i want to cover one of them here
 298 [19:22] <kirkland> in tmux, all users will be connected to the same exact session by default
 299 [19:22] <kirkland> and all users will see the exact same thing
 300 [19:22] <kirkland> which is very much what "pair programming" is all about
 301 [19:22] <kirkland> but sometimes, you might want to split off from your colleague
 302 [19:22] <kirkland> and work on something else
 303 [19:22] <kirkland> on a different view
 304 [19:23] <kirkland> here, you would create a new "session"
 305 [19:23] <kirkland> which you can do using ctrl-shift-F2
 306 [19:23] <kirkland> so to review:
 307 [19:23] <kirkland>   F2                            Create a new window
 308 [19:23] <kirkland>     Shift-F2                    Create a horizontal split
 309 [19:23] <kirkland>     Ctrl-F2                     Create a vertical split
 310 [19:23] <kirkland>     Ctrl-Shift-F2               Create a new session
 311 [19:23] <kirkland> and then to move between sessions
 312 [19:23] <kirkland>     Alt-Up/Down                 Move focus among sessions
 313 [19:24] <kirkland> unfortunately, I won't be able to demo that here
 314 [19:24] <kirkland> as your screen is attached to my tmux session
 315 [19:24] <kirkland> and you won't follow me to the other one
 316 [19:24] <kirkland> but try it yourself!  it works
 317 [19:24] <kirkland> I think we covered all of these, but to review:
 318 [19:24] <kirkland>     Shift-F1                    Display this help
 319 [19:24] <kirkland> and creating new things ...
 320 [19:25] <kirkland>   F2                            Create a new window
 321 [19:25] <kirkland>     Shift-F2                    Create a horizontal split
 322 [19:25] <kirkland>     Ctrl-F2                     Create a vertical split
 323 [19:25] <kirkland>     Ctrl-Shift-F2               Create a new session
 324 [19:25] <kirkland> all movement is under F3 and F4
 325 [19:25] <ClassBot> There are 5 minutes remaining in the current session.
 326 [19:25] <kirkland>   F3/F4                         Move focus among windows
 327 [19:25] <kirkland>     Shift-F3/F4                 Move focus among splits
 328 [19:25] <kirkland>     Ctrl-F3/F4                  Move a split
 329 [19:25] <kirkland>     Ctrl-Shift-F3/F4            Move a window
 330 [19:25] <kirkland>     Alt-Up/Down                 Move focus among sessions
 331 [19:25] <kirkland>     Shift-Left/Right/Up/Down    Move focus among splits
 332 [19:25] <kirkland>     Ctrl-Shift-Left/Right       Move focus among windows
 333 [19:25] <kirkland>     Ctrl-Left/Right/Up/Down     Resize a split
 334 [19:25] <kirkland> so F2/F3/F4 sort of form your "home keys" for byobu
 335 [19:25] <kirkland> we can briefly look at the refresh commands
 336 [19:25] <kirkland>   F5                            Reload profile, refresh status
 337 [19:25] <kirkland>     Shift-F5                    Toggle through status lines
 338 [19:25] <kirkland>     Ctrl-F5                     Reconnect ssh/gpg/dbus sockets
 339 [19:25] <kirkland>     Ctrl-Shift-F5               Change status bar's color randomly
 340 [19:26] <kirkland> you should see a few status items in the bottom right, periodically refreshing
 341 [19:26] <kirkland> by default, those refresh every 1 second
 342 [19:26] <kirkland> i backed that off to 5 seconds, since there are so many of us here
 343 [19:26] <kirkland> I just presed Shift-F5
 344 [19:26] <kirkland> and now I can see a different set of status
 345 [19:27] <kirkland> including my cost, hostname, ip address
 346 [19:27] <kirkland> ctrl-shift-f5 can give your system some personality
 347 [19:27] <kirkland> if you have a lot of byobu sessions, seeing them under a different color helps some times
 348 [19:27] <kirkland>   F6                            Detach session and then logout
 349 [19:27] <kirkland>     Shift-F6                    Detach session and do not logout
 350 [19:27] <kirkland>     Ctrl-F6                     Kill split in focus
 351 [19:28] <kirkland> perhaps you tried the F6 detach
 352 [19:28] <kirkland> shift-F6 will detach from the session, but NOT log you out of the server
 353 [19:28] <kirkland> and ctrl-f6 will kill a split
 354 [19:28] <kirkland> (perhaps a runaway process)
 355 [19:28] <kirkland> OH
 356 [19:28] <kirkland> scrollback!
 357 [19:28] <kirkland> let's play with scrollback
 358 [19:28] <kirkland> which is under F7
 359 [19:28] <kirkland> and alt-pageup/pagedown
 360 [19:29] <kirkland> so now I'm scrolling back through one particular split
 361 [19:29] <kirkland> anyway, my time is up
 362 [19:29] <kirkland> I'll gladly answer questions over in #ubuntu-classroom-chat
 363 [19:30] <kirkland> hopefully you see how you can use shared screen and tmux sessions and byobu in the cloud to do code review and pair programming ;-)

MeetingLogs/devweek1201/PairProgrammingAndCodeReviewInTheCloud (last edited 2012-02-03 09:48:35 by dholbach)