By Nathan L. Walls

  • Stackable/Manhattan
  • Leaning Twist/Washington
  • Pamphlets + Reports/Lansford
  • Guide/Lansford

Tool Sharpening: Sept. 15, 2014

For some background on what’s going on here, see the first tool sharpening post

For this and following editions of my tool sharpening series, I’ve set-up five different sections below. I’ll explain them briefly:

  • Environment + Process tweaks will be for anything like my tweaks to BBEdit, vim, tmux profiles, helper scripts and similar changes
  • Project work will cover personal project work I do, since my primary motivation for that work is to learn
  • Skill improvements
    • Work with code kata, koans, exercism.io or similar
    • Typing practice
    • Other deliberate skill practice work
  • Articles read will be for links of interest I come across from Twitter or mailing lists
  • Screencasts, podcasts and presentations will enumerate audio and video media that I’ve reviewed. Expect this to be Ruby Rogues and Ruby Tapas heavy.

Environment + Process tweaks

I have a Getting Things Done-style Weekly Review that just hasn’t been working for me for a little while. Many weeks, I simply look at the weekly review in OmniFocus and mark it complete. It’s important to me, abstractly. But the way I’ve structured it clearly isn’t important to me in the concrete terms of actually doing it.

To that end, I’m hoping to move some of the big scary bits out of the Weekly Review and into a work day Daily Review I have been far more consistent with. Those pieces are to:

  • Process email from the last 48 hours for further action or file it
  • Review anything I added to OmniFocus in the last day
    • I have a perspective set-up for just this purpose
  • Review anything I added to the OmniFocus Inbox so it has a context, a project and a next action

Project work

I’ve been stuck recently on my Pomodori gem project. Namely, I was getting to the point where I felt like I was working too hard to make the command line interface work with Behavior Driven Development. So, I idled on the project for a few months.

Thankfully, the work project I’ve been working on has helped me identify where I could close some of the gaps between what I want to do and how to do it intelligently, so I’ve started back on that project, hoping to get the first version wrapped up before too much longer.

  • Worked on Issue 28 of my in-progress Pomodori gem
  • Put Issue 28 on hold and began work on Issue 30. Once Issue 30 is done, I can come back to Issue 28.
  • After review, opened up a new milestone and several smaller issues and closed Issue 30

Skill improvements

Avoiding module and class namespace collisions

So, the most interesting thing I learned this past week was about the purpose and use of the :: ahead of a namespace in Ruby. At work, my team and I are working on a automation our release preparation, which covers everything from triggering software packaging to building tasks and sending notification emails. For an audit trail piece, we want to log several of the steps to our team chat. And, instead of writing everything to target a third party object directly, I wanted to wrap it in an object that was part of our application’s domain.

So far, so good.

However, I soon saw an unexpected error, along the lines of ReleaseAutomation::Flowdock::Flow not defined when what I was trying to do was instantiate Flowdock::Flow within ReleaseAutomation::Flowdock. It took a little bit to find the right search terms, but I found a Ruby Best Practices post covering modules and namespaces. In that post, I found I needed to invoke Flowdock::Flow as ::Flowdock::Flow to tell Ruby to go to the top of the namespace tree vs. trying to match Flowdock as an abbreviated namespace in my project domain.

Articles read

Screencasts, podcasts and presentations

Looking back, I’m pretty happy with what I was able to learn this week.

Tool Sharpening: Sept. 7, 2014

For some background on what’s going on here, see the first tool sharpening post

The time since my last entry was primarily spent reading blog posts and watching screencasts vs. writing code at home. I’m totally OK with that.

Tool Sharpening: August 24, 2014

For some background on what’s going on here, see the first tool sharpening post

This week has been pretty light, so I’ll present this without much in the way of ceremony:

  • I read up on using pry as a debugger for Ruby
  • Started a small project to work on in order to refresh my Rails knowledge
    • Identified the project from a list of potential projects I’ve been keeping
    • Fleshed out the questions I want the product to answer
    • Instantiated a Git repository for the project
    • Sorted out dependencies
    • Built an initial schema diagram
  • Rebuilt smart mailboxes for Apple Mail
    • My previous mailboxes disappeared a little while ago and rather than chase down recovering them, I set-up new ones
      • All unread
      • Unread from the last two weeks
      • Unread from the past 2 days
      • Mailing Lists
      • Recent from the last two weeks
    • In the morning, checking email, I can check what’s new from the last two days and move on with my day
    • As I have other time, I can knock down more of the backlog

A tool to facilitate questions about Triangle tactical team usage

Yesterday, David Forbes of The Asheville Blade tweeted the results of a records request he made to the local law enforcement agencies in Asheville. He also published a story on The Asheville Blade resulting from the records request:

The unrest in Ferguson, Mo. has raised a multitude of important issues, including systemic racism in law enforcement and the level of violence directed at African-American citizens, like the disturbing shooting of unarmed teenager Michael Brown by a Ferguson police officer.

On Thursday, Aug. 14, I made records requests with the Asheville Police Department and Buncombe County Sheriff’s Office to disclose all the military equipment obtained under this program over the past decade. The Sheriff’s Office responded within 30 minutes and wrote that they are in the process of gathering the information.

A city spokesperson replied the next morning with a similar response. Later that day, they revealed that the only item the APD had obtained through the 1033 program since 2004 was an armored car in 2007. According to city officials, the vehicle is no longer in use.

Just seeing Forbes' tweets, I was wondering about local to the Triangle research on the same topic.

The New York Times has a worthwhile interactive map that Forbes referenced in his story. That’s a start. Going back to my brief story about having the (a?) Raleigh Police Department tactical team in our backyard, I can tell you it was incredibly stressful seeing multiple officers carrying rifles, bringing dogs and shining flashlights in the dark of the woods behind our house looking for one or more armed robbery suspects.

To me, this instance seemed an appropriate instance to have a tactical team present. However, I want to know other instances where this team would be deployed. So, I’m thinking through some questions I would like to have access to the answers to:

  • Which Triangle law enforcement agencies – local, state or federal – have tactical/S.W.A.T. teams?
  • How large is each agency’s tactical team?
  • What equipment have these agencies acquired from the federal government that a reasonable person consider “war gear”?
  • Are the tactical teams the only teams with access to this equipment?
  • What rules govern the use of this equipment?
  • Are agencies obligated to use the equipment or return it to the federal government?
  • Under what circumstances is a tactical team activated?
  • Who is responsible for activating a tactical team?
  • Are these teams and equipment preemptively deployed to public events? When and why?
  • How many times a month are these teams deployed?
  • How many times a month is military-grade equipment deployed?
  • Where are these deployments?
  • Would less forceful tactics have been more or less effective? Why?
  • What reports are available regarding these deployments?
  • Were any complaints against officers filed in the wake of the incident?
  • Can these deployments be correlated with news reports of the incident?
  • What are the trends of deployment? Are they going up or down?

A local news agency would do well to ask these questions and report the answers. They would do better to get an ongoing update of records from area law enforcement agencies and get at trending data or look at particular incidents in more detail. This is in the ballpark of something I could expect to see from EveryBlock, a local Code for America brigade – the Triangle has several – or again, any of the local news agencies as a public-facing, web accessible application.

I’m thinking through these questions because these are sorts of questions I would like answered in the wake of the police response to protests in Ferguson, Missouri after the death of Mike Brown. I want you to think through questions of your own along these lines. These questions don’t replace community involvement in policing through oversight or review commissions. They don’t replace community policing. They don’t replace beat reporting. Instead, these questions that a tool helps answer should inform us for deeper conversations about what law enforcement agencies are doing in claim of protecting and serving the public. The goal should be to increase transparency and build trust that communities and governments understand where police powers are used, why they’re used and citizens believe these powers, when used, are used judiciously, proportionately, appropriately, equally and fairly.

Tool Sharpening: August 17, 2014

For some background on what’s going on here, see the first tool sharpening post

It’s been a busy couple of weeks with a really sweet work project and a couple of interesting events in the neighborhood I won’t go into here. Suffice to say, my time and attention to get this posted went elsewhere earlier. But, here we are now. Here’s some of what I’ve learned or refined over the last couple of weeks:

  • Took two Ruby-based typing.io typing practice session and found that {, }, * and & are some of the hardest coding characters for me to type
  • I found a general purpose typing practice site, keybr.com
    • Practiced for about 20 minutes, discovering S and Q are two of my worst characters to type
    • Registered for an account the following day
  • Recalling again that BBEdit makes use of Emacs keystrokes, I researched how I might use some of those Emacs commands to navigate text better
  • Fixed a bug and issued a pull request on the Fleakr gem, which I use to update photos on this site from my Flickr stream
  • Updated a work environment script/BBEdit text filter I use to format a list of JIRA cases
  • Created a new tmuxinator profile for my current work project
  • Built a plan to reaquaint myself with Rails code by looking at Rails code I’ve written in the past with the accompanying tests
    • Further, I want to improve my understanding of browser-based integration testing by writing Cucumber or Turnip tests
    • With my team’s current project wrapped up, during our retrospective, we decided that during our next project, we are going to investigate front-end testing methods like JavaScript unit testing and Capybara tests
  • I evaluated how I could update my split repository dotfile setup to use thoughtbot’s rcm. My plan is this:
    • Take a diff between the last version of thoughtbot’s dotfiles repository I had and the upstream HEAD
    • Identify which files and diffs I need to undo and move those into a local dotfiles repository with the diffs
    • Compare the structure of my existing local dotfiles repo and determine how I’ll need to shuffle it around to conform to rcm expectations
  • One of my coworkers showed me a trick to remove untracked files in Git – git clean
  • I watched a number of RubyTapas episodes ($9/month)
  • I subscribed to System Administration Screencasts and watched Episode 1: Virtual Box and CentOS 6.3
  • Finally, on the aforementioned work project, I had an opportunity to put RSpec shared examples to work, and learn better how they worked

I’m expecting more consistency with learning and personal project work this week. I hope whomever reads this is working on their own learning projects as well.

← Previous