Tuesday, 30 December, 2014 —
development
improvement
For some background on what’s going on here, see the first tool sharpening post
This is a longer post, simply because of how much time has passed since the previous entry, largely due to end-of-year holiday preparation and celebrations. I hope you enjoyed your holidays with family and friends as I did.
I’m also splitting out what I read, watched and listened to from technical tool sharpening. These are different concerns on different schedules and just as I want to sustain and improve both sets of practices, I don’t want them unnecessarily coupled. So, here’s articles, podcasts and presentations with technical pieces to follow separately.
Articles read
- “The QA Mindset”, by Michael Lopp
- Rands goes long in a good piece about companies without dedicated QA teams and what might be missing as a result
- “How Chan-Style Anonymous Culture Shapes #gamergate”, by “A Man In Black”
- This pseudonymous take on GamerGate is a cogent and plausible explanation of the behavior and motivations of the GamerGate crowd
- “BBEdit Finding”, by Dr. Drang
- I’ll be using this as a reference into using BBEdit’s find and replace commands more effectively
- “Two little date commands”, by Dr. Drang
- You’re My Favorite Client, by Mike Monteiro
- “Zooming tmux panes”, by Tom Ryder
- “Traveling Ruby”, by Phusion
- “From Open (Unlimited) to Minimum Vacation Policy”, by Mathias Meyer
- “Margaret Hamilton, lead software engineer, Project Apollo”, by Three Fingered Fox
- “Inadvertent Algorithmic Cruelty”, by Eric Meyer
- As software engineers and designers, we have a high obligation to think through how what we build may fail, not just in terms of technical failure, but emotional failure.
- See also Meyer’s follow-up, “Well, That Escalated Quickly”
- See also Luke Wroblewski’s notes from Meyer’s “Designing for Crisis” talk
Screencasts, podcasts and presentations
- Listened to Let’s Make Mistakes Ep. 140: “Design Tests”
- Listened to Accidental Tech Podcast Ep. 90: “Speculative Abandonware”
- Listened to Ruby Rogues Ep. 181: “RubyInstaller with Luis Lavena”
- Watched segments of Matz’s RubyConf presentation, “Opening Keynote”
- Watched Justin Searl’s RubyConf presentation, “The Social Coding Contract”
- Watched Tom Stuart’s RubyConf presentation, “A Lever for the Mind”
- Listened to Giant Robots Smashing Into Other Giant Robots Ep. 122: “Ruby, the Weird Way (Britt Ballard, Caleb Thompson, Richard Schneeman, Terence Lee)”
- Listened to Back to Work Ep. 195: “Prima Facie Butter Coffee”
- Listened to Accidental Tech Podcast Ep. 91: “Click Agree to Drive”
- Listened to Giant Robots Smashing Into Other Giant Robots Ep. 123: “Don’t Call It a Codecation (Chris Hunt)”
- Listened to Back to Work Ep. 196: “The Circle of Lice”
- Listened to Accidental Tech Podcast Ep. 92: “You Don’t Know My Pants”
- Watched Ruby Tapas, Ep. 18: “Subclassing Array”
- Watched Ruby Tapas, Ep. 19: “Pluggable Selector”
- Listened to Giant Robots Smashing Into Other Giant Robots Ep. 124: “Maintaining Your Legacy (Scott Ford)”
- Listened to Back to Work Ep. 197: “Way of the Brown Lego”
- Listened to Accidental Tech Podcast Ep. 93: “I’m Not Running a Boarding House House Here”
- Listened to Ruby Rogues Ep. 183: “Consequences of Technology with Ben Hammersley”
- Listened to Back to Work Ep. 198: “Gardening Leave”
- Rewatched Erich Smiths’s lightning talk, “Compose with Confidence”
Sunday, 23 November, 2014 —
development
improvement
For some background on what’s going on here, see the first tool sharpening post
Environment + Process tweaks
I’ve used thoughtbot’s dotfiles repository for years, but I’ve maintained my own fork on GitHub. I’ve also maintained a private sidecar repository for more sensitive things. But, I’ve been out-of-sync with the head of development. Lately, thoughtbot has released rcm
which allows for just such a split-brain dotfile set-up. Rather than fight to update my existing set-up, I’ve opened a new repository and ported my existing dotfiles and customizations to a new sidecar repository that fits with rcm
‘s methodology.
This project took about two hours of focused time for the conversion and gave me an opportunity to rediscover some pieces of my dotfiles that I hadn’t quite fully grasped previously. When it came time, rcm
worked perfectly about updating symlinks from the configured repositories into my home directory. Neat tool.
I also:
- Fixed a Tmuxinator profile for a work project
- Created a BBEdit project for keeping project specific development notes in a more collected fashion
Project work
I picked up work on my Dayplan bin script/Gem, primarily organizing what has to get done in a step-wise fashion.
Skill improvements
- Reminding myself of new BBEdit 11 shortcuts and previously worked with Emacs shortcuts that are available in BBEdit
Articles read
Screencasts, podcasts and presentations
- Attended Brandon Mathis’ Triangle Ruby Brigade presentation, “Dive into Ruby”
- A nifty, REPL-driven question and answer presentation for folks new to Ruby
- Organized and attended Henry Petroski’s Triangle DevOps presentation, “Success and Failure in Engineering: A Paradoxical Relationship”
- I’ve been a huge fan of Dr. Petroski and I asked him back in January, via note I sent to his department at Duke University, if he would be willing to speak to the group. He was and the talk he delivered this past week was absolutely everything I hoped it would be
- The talk was recorded by our hosts at Bronto Software. Give it a look.
- Listened to Is TDD Dead: Ep. 3: “Feedback and QA”
- Listened to Is TDD Dead: Ep. 4 + 5: “Costs of Testing” and “Answering Questions”
- These two episodes finished out the series. It is evident that each of the participants has a great deal of respect for the other two
- I’m far closer to Martin Fowler and Kent Beck’s positions on the value of testing than I am David Heinemeier Hansson’s
- Despite being further from DHH’s position, I leave the series with a better understanding of his perspective
- Listened to Accidental Tech Podcast Ep. 88: “Standing on Opposite Sides of the Gym”
- Listened to Accidental Tech Podcast Ep. 89: “DeLorean + McLaren”
- Listened to Giant Robots Smashing Into Other Giant Robots Ep. 121: “Prolificness (Allison House)”
- Something House mentioned during the podcast was the notion of a second shift of personal projects, e.g. a 20-minute portrait painting where the painter has to focus on what’s critical
- The key, it sounds like of second shift personal work is making it consistent and sustainable
- This is something I aspire to, but still find myself struggling with
- Listened to Bikeshed: Ep. 1: “Sandi & Derek’s Rules”
- Listened to Back to Work Ep. 193: “Disappointment Delivery Mechanism”
- Listened to Back to Work Ep. 194: “The Company of a Clown”
Listened to Ruby Rogues Ep. 179: “Accountability and Diversity with Meagan Waller”
- Listened to Ruby Rogues Ep. 180: “Barriers to New Developers with Kinsey Ann Durham”
- I can’t think of a bad episode of Ruby Rogues, but these two are exceptionally good ones – windows into experiences I can’t have (being a female developer) or haven’t had in a long time (being a new developer). I highly recommend giving these both a thorough listen
Programming note
First, I can explicitly state the next entry will be in December, likely Dec. 7. Second, I’m entertaining the idea of breaking this larger post into smaller components. Once a week for all of this feels a little thin and two weeks starts to feel a little much. I’m thinking the articles and podcast/presentation sections are both getting a little long and may benefit from separate publication weekly with my project work, environment tweaks and skill improvements happening more on a biweekly basis. I’m not set on that, but I think I’m going to experiment with it.
Sunday, 9 November, 2014 —
development
improvement
For some background on what’s going on here, see the first tool sharpening post
This week, there’s not a lot with regard to more than podcasts or articles read. On one hand, I’m not happy in hindsight with not having written much code. But, I have to balance that against the fact that I did more reading and, honestly, that’s what the week felt like.
Environment + Process tweaks
- Added a few GMail filters for mailing lists to help improve inbox sanity
Project work
Somehow, the week was busier than expected and somehow, not code-focused, so the pieces I wanted to get to, I didn’t. I don’t like that outcome.
Skill improvements
Nothing particularly of note here, this week.
Articles read
Alright, here’s where most of my post-work tool-sharpening time went. There were several interesting pieces.
- “The Road to Ember 2.0” by Tom Dale
- A polite, but audible, shot across the bow of Angular JS and the notion of having to rewrite apps to keep up with framework changes as being an acceptable course of action
“AngularJS: The Bad Parts”, by Lars Eidnes, who throws down early against AngularJS
Popularity wise, Angular is beating the shit out of the other frameworks. I spent most of last year working on a large project built on AngularJS, and I’ve gotten to know the framework in some depth. Through this work I have learned that Angular is built around some really bad ideas that make it a pain to work with, and that we need to come up with something better. Whatever the reason is for Angulars popularity, it isn’t that it’s a great framework.
- The polemic against Angular is good. Stick around for the conclusion, too.
“Rebuilding the Shopify Admin: Improving Developer Productivity by Deleting 28,000 lines of JavaScript”
- A possible outrider indicating a move away from thick front-end web applications back to server-side focused applications
Altogether, these first three pieces point to a trend I won’t pretend is anyway new – this is where the women and men programming in the 70s and 80s shake their heads and mutter, “kids” – but one that I’ve noticed over the last couple of years is that as an industry, we are so eager to think of something new and shiny as a self-evidently worth replacement for whatever came before it. We pick frameworks or languages because of where everyone else is going, but not stopping to look at what’s there before ditching something we know.
There’s a lot more nuance and complexity to this than I can think through and write right now, but I liked these three pieces because each of them, to a degree calls out practices I’ve seen recently that have left a bad taste in my mouth.
- “Collaboration is Other People”, by Jon Yurek
- Yurek goes deep on coding style guides and why you’ll help your team to have one
- “The Value of a Name”, by Grant Blakeman
- “Why women leave tech: It’s the culture, not because ‘math is hard’”, by Keiran Snyder
- It’s (still) not a pipeline problem
“Rack Next” by Tom Wardrop
- I’ve seen references in the last year that Rack is at a technological dead-end. This project intends to provide Ruby a more concurrency-friendly web middleware. From the README:
The objective of Rack Next is to provide a common specification and framework for Ruby that supports modern web technologies, such as WebSockets, Server-sent events, and HTTP/2, with an emphasis on ascynhronous requests and bi-directional communication between client and server. Rack Next should be as lightweight, simple, and unassumining as it possibly can while obviously achieving its design objectives.
Signed-up for and read a nine-day course, “Charge What You’re Worth” Brennan Dunn put together on pricing freelance work
A friend from Triangle.rb, Jason Draper, is challenging himself to write a blog post every working day this month. Here’s what he has so far.
“Staying Sane with Small, Incremental Releases”
“Feature Flags on Rails”, by Leonard Garvey
“Living the Future of Technical Writing”, by Scott Chacon
- Chacon covers some of the back story behind the creation of the first edition of Pro Git and the toolchain behind writing the second edition
“A Favorite Interview Question: More than Meets the Eye”
- My former boss/coworker Alan Cox runs through what, on the surface, is a simple technical interview question but quickly gets deep
Screencasts, podcasts and presentations
- Listened to Giant Robots Smashing Into Other Giant Robots Ep. 119: “Create Value or Create Technology? (Pete Hunt)”
- Listened to Back to Work Ep. 192: “Party City Trophies”
- Dan and Merlin have a great episode about finding how to motivate their kids without backstopping their parenting with fear. Powerful and personal
- Listened to Is TDD Dead?: Ep. 2: “Test-induced design damage”
- David Heinemeier Hansson expands on why he thinks TDD leads to damaged repository. I thought Kent Beck did quite well in pointing out that TDD doesn’t make you do anything. My opinion is closer to Beck’s so far and I am very much enjoying hear him express a depth to his point of view that is worth listening to, whether or not you agree with him
Saturday, 1 November, 2014 —
development
improvement
For some background on what’s going on here, see the first tool sharpening post
Environment + Process tweaks
- Upgraded to BBEdit 11, which was released Oct. 22
- Improved my tmuxinator profile for my Pomodori project and created one for my Dayplan project (see below)
- Updated MsgFiler to work with OS X Yosemite
- Updated OmniFocus Clip-O-Tron to work with OS X Yosemite
Project work
- I started to update my Dayplan script to improve how the files for previous days archive and decided that I wanted to get it under testing, so I’ve started a Gem project around it
Skill improvements
Articles read
Screencasts, podcasts and presentations
- Listened to Accidental Tech Podcast Ep. 86: “Moving the Party to the Bar Down the Block”
- Listened to Accidental Tech Podcast Ep. 87: “Not an Accurate Representation of my Mousing Skills”
- Listened to Ruby Rogues Ep. 178: “Refactoring Ruby with Martin Fowler”
- There is a ton of great insight in this episode. Lots of great questions and discussion top-to-bottom I’m going to be giving this a relisten very, very soon.
- Listened to Planet Money Ep. 576: “When Women Stopped Coding”
- A worthwhile 17 minute 12 second trip into part of why the 1980s saw a significant dip in the number of women pursuing a computer science degree
- Listened to Is TDD Dead? Ep. 1: “TDD and Confidence”
- I let this sit for a while to get some distance from feeling immediately negative towards David Heinemeier Hansson’s bomb-throwing assertions that TDD is harmful in a series of blog posts and his RailsConf 2014 keynote and just came back to it after hearing Fowler on Ruby Rogues
- The entire series of five conversations between Martin Fowler, Kent Beck and David Heinemeier Hansson is available in audio or video and, at least in the first episode, offers good examples and nuance, particularly in unpacking the term “test driven development”. I’m looking forward to the remaining four episodes
- Listened to Giant Robots Smashing Into Other Giant Robots Ep. 118: “Scare Yourself” with Dan Martell
- In the interview, Martell used an interesting turn of phrase that I’m still turning over in my head; “compassionate detachment”
Tuesday, 21 October, 2014 —
development
improvement
For some background on what’s going on here, see the first tool sharpening post
Environment + Process tweaks
- Updated TextExpander shortcuts for phrases I typically drop into work chat
windows
- Added a number of TextExpander shortcuts for creating future Tool Sharpening posts, largely around standardizing snippets for podcasts for consistency
- Upgraded my Mac to Yosemite (Mac OS X 10.10)
- Upgraded home projects to Ruby 2.1.3
Project work
I made a little bit of head way with Issue #32 of my Pomodori project. Being honest, I’m not putting the kind of time or attention to this that I would like.
Skill improvements
Bash
This past week, I was preparing a software release. While we have a good deal of automation around this sort of work, there are some cases where the progression to release gets into a condition we haven’t automated for yet. In one of these cases, I needed to remove git tags we placed on the repositories for the release and further steps in our automated process.
Before, I’d likely just suffer through doing this three or four times, because it’s just at the edge of being worth writing a script. However, my coworker Steve Gambino reminded me that Bash is perfectly capable of solving this issue. It’s also a tool I could stand to get more familiar with for situations such as this.
1
| for i in $( ls -1 ); do cd $i; git tag -d R36.0.2-20141016; git push origin :refs/tags/R36.0.2-20141016; cd ..; done
|
I ended up using variations on this for
loop multiple times and I didn’t have any of the dollar auction costs of, “well, this will be the last time I do this, so it’s not worth writing a script.”
tmux
This past week, I had couple of tmux panes that I wanted to capture the buffer for and paste into BBEdit for separate examination. Rather than tediously scroll and copy and scroll and copy, I searched for a better way. As it happens, thoughtbot developer Chris Toomey had some additions to .tmux.conf
that are very helpful for this sort of situation. Perfect.
Screencasts, podcasts and presentations