Thursday, May 20, 2010

A little fun with The Preference Recorder

Here's a clever little trick you can use with the Preference Recorder in the Workspace Mechanic for Eclipse:

Let's say you built a Preference Task that you want to apply to your workspace. So you put the .epf file in one of the registered directories.

Turn on the Preference Recorder. Let the Workspace Mechanic scan for, and run tasks. It should find your new .epf and offer to apply it, and any other tasks that fail the evaluation phase. After the repair phase completes, turn off the Preference Recorder and see what changes were actually applied.

Kind of fun. If you find that kind of thing fun.

Monday, May 17, 2010

The Preference Recorder

Earlier in the week we announced the release of the Workspace Mechanic for Eclipse on the Google Open Source Blog. This is a tool we have used inside Google for a couple of years, and with a bit of rewriting, made most of it available via open source. (We'd like to get the last piece of it out there, if more than anything, as an idea of what you can do with the Workspace Mechanic for Eclipse.) But this blog post isn't really about what we haven't released, it's about what we wrote specifically for the public release: the Preference Recorder.

This is a nice feature, and I don't want to underscore its usefulness. It'll probably help to think of it like an office suite's macro recorder -- turn it on, it listens to what you do, turn it off, and it builds a nice macro that recreates your steps. Same thing with the Preference Re: turn it on, it listens to preference changes. Turn it off, and it builds a nice file that recreates your steps!

One of the most common uses of the Workspace Mechanic for Eclipse is to propagate preference changes among workspaces.  Do parts of this sequence of events sound familiar?
  1. File > Export > Preferences
  2. Save to /tmp/first
  3. Window > Preferences
  4. Change preferences
  5. File > Export > Preferences
  6. Save them to /tmp/second
  7. $ diff /tmp/first /tmp/second > /tmp/delta.epf
  8. Tweak /tmp/delta.epf until it looks like you want. This includes adding preference metadata to match the format required for preference tasks.
What a pain!

So we wrote the Preference Recorder. It's much simpler!
  1. Right-click the Workspace Mechanic trim widget
  2. Preference Recorder > Start Recording
  3. Window > Preferences
  4. Change preferences
  5. Preference Recorder > Stop Recording
  6. Use dialog to select which preferences you actually want to export.

It'll spit the file out in a way that is compatible with the Workspace Mechanic, but heck, even if you don't want to use it to write tasks, it's a nice way to track your changes.

Friday, May 14, 2010

Update: Workspace Mechanic now has an update site

Sorry for not getting this done earlier today, but now the Workspace Mechanic for Eclipse now has an update sitehttp://workspacemechanic.eclipselabs.org.codespot.com/hg.update/mechanic

Also I renamed the mailing list from workspace-mechanic@googlegroups.com to workspacemechanic@googlegroups.com -- yes the hyphen has been removed.

Thursday, May 13, 2010

Announcing the Workspace Mechanic for Eclipse

If you saw the slides from my talk at EclipseCon back in March you may recall that we discussed a tool we had built for propagating preference changes across workspaces. Today, I'm happy to announce that the tool, now dubbed the Workspace Mechanic for Eclipse, has been released as open source. And, yes, it's EPL 1.0!

The Workspace Mechanic can be used in both single-user and enterprise modes to take on automating maintenance of all your Eclipse environments. Check out the project overview for details.

One of the coolest things we've added specifically for the public release is a Preference Recorder which listens to changes to preferences, and then saves them as tasks you can apply to all the other workspaces on your machine. Or, the planet. Why not?

The Workspace Mechanic has been tested on Linux and has been sanity tested on OSX. I'd love some feedback on Windows-compatibility issues, because I don't have a Windows machine to test on anymore.

Anyway, I just spent about 13 hours getting the final touches on the repository: fixing wiki content, fighting Mercurial, and finding an unpleasant bug (!) related to different versions of the JDK. (Isn't that supposed to not happen?). Drafting this post is like the last thing on my list, and I'm just all out of skill and energy, and a DVD box set just arrived, so how about I point you to the Google Open Source blog post, and I’ll go watch TV.

Please enjoy.

Monday, May 03, 2010

Apprenticeship Patterns is now Creative Commons Licensed

Apprenticeship Patterns has been open-sourced under a Creative Commons license, according to Ade Oshineye, one of the book's two authors.

Apprenticeship Patterns cataloges dozens of behavior patterns to help you perfect essential aspects of your craft. Compiled from years of research, many interviews, and feedback from O'Reilly's online forum, these patterns address difficult situations that programmers, administrators, and DBAs face every day.  [ref]
As is typical with patterns books, much of the information will have an "I already knew that" feel about it, but it's pattern books aren't about learning new information, they're about unlocking information already in your mind. In this particular case, Apprenticeship Patterns is written as a useful text for new engineers. This comes from the Goals section:
We have written this book in order to share solutions to the dilemmas that are often faced by inexperienced software developers. We’re not referring to technical dilemmas; you’re not going to find any Java design patterns or Ruby on Rails recipes in this book. Rather, the dilemmas that we focus on are more personal, concerning your motivation and morale. This book should help you through the tough decisions that you face as a newcomer to the field of professional software development.
I had the honor of reviewing this book and providing feedback to the authors prior to its publication. So, I think their goals are a bit misleading. I'm a very experienced engineer, and I repeatedly found ideas and inspiration from it. It's not a very long book, it's easy to read, and I think it's ideal for professional reflection. I've recommended this book to several people, and those that have read it have had very positive experiences.

So, as I said, the book is now available in an open source format. As Ade wrote in his announcement:
Just like we were one of the first O'Reilly books to experiment with using a wiki to get early feedback during the writing process we're also one of the first O'Reilly books to experiment with publishing our material under a Creative Commons license. Starting from today the book is now available here: http://apprenticeship-patterns.labs.oreilly.com/
How exciting! Now this book will become the next one I review in a reading group.

Addendum: Speaking of reading groups, one reading group has been videorecording its Apprenticeship Patterns sessions. Here's Episode 1, and a Search for further episodes.

Attribution: I lazily stole the title of this post from Ade's announcement.

Sunday, April 25, 2010

My issues with Facebook privacy

"You are in a maze of twisty little passages, all alike"

Yep! I deactivated my Facebook account today.

This isn't the first time I've walked away from Facebook. Two things were different back then: back then I wasn't using Facebook correctly, and also I actively deleted the profile. This time, the profile is merely deactivated, which means logging in will restore the account. But more important, it's not me misusing Facebook: Facebook is misusing me.

Look, I actually like using Facebook. And I like being in touch with my friends who use it, too.

So why did you deactivate the account?
This afternoon my friend Sean said the following:
So, I headed over to CNN.com this morning, and I saw a little ticker in the top right corner of the page scrolling my Facebook connections' updates. This is after I opted out of Facebook's idiotic Instant Personalization bullshit.

When we're talking about handing over personal data like this, I don't know what else to call it other than evil. I've been opted out of that "feature" from the moment they launched it, but Facebook is still sharing my data with other sites.

For the time being, I've logged out of facebook in my primary browser, and I'm not ever staying signed in there again. If this sort of thing continues (Facebook taking me visiting some random site on the Internet as implicitly granting them permission to hand over my personal data), I may go all out and nuke my FB account from orbit.
I checked and sure enough, it did the same with mine, even though I spent fifteen minutes trying to minimize my settings. The only way, it seems, to deactivate this, was by changing a setting on cnn.com. So, does this mean that in order to control Facebook information I must change settings not just on facebook.com but also on any site that gets access to Facebook's data? That's just too much for me.

You might find this to be hypocritical since most of my Buzz content is public. The difference between Buzz/Blog and Facebook is in how I use them. Facebook is, for me, a place to connect with less technical-savvy personal friends. As I said upon my return:
Last month learned that many of my friends (the real ones, the ones I wanted to spend weekend time with) had joined The Facebook in the intervening time. All of a sudden there was this real value to returning to The Facebook, and so I have.
I discuss much more personal stuff with those friends than I would discuss on Buzz or a public blog. All of this is a long way of saying that you don't actually know what I share on Facebook, but more personal than this. If they're giving my personal life away to CNN, I can't use it.

What would make you return?
I have faith Facebook will address this, but I hope part of addressing this takes the form of consolidating their privacy controls. There are plenty of settings everywhere, but I do not have time to track them down.

And this is the crux of the problem: No matter how much time I spend tweaking Facebook's privacy settings, I can't help thinking I missed a setting someplace else.

While they're at it, they could address some other privacy issues:
  • Limit who can add me as a friend: Right now, friends-of-friends can ask to be my friend. I don't want that: I want to stop people from asking. Allowing people to ask to friend me is social pressure. I want to use Facebook without the social pressure of expanding my graph.
  • Put an end to the slogginess of setting privacy levels: By way of an example, there are some visibility settings that are listed as a choice between Everyone, Friends of Friends, Friends Only, and  Customize. Only when selecting "Customize", are you offered a second layer of settings, including "Only me." Why can't "Only me" be on top? Yet another way that Facebook cares about the social whole over the individual.
Why not just delete the account?
Because I like my friends, and Facebook is currently the easiest way to keep in touch with them. When Facebook puts me back in control of my data I'll happily return.

Aren't you some Google corporate shill?

I'm giving up an easy communications mechanism with my best friends, including the one who announced his baby's birth on Facebook, and nowhere else. And I'm walking away. My employer can't get me to do that. But careless treatment of my personal thoughts and opinions can.

What about staying on Facebook and educating your friends?

It's true. It's more effective to stay on Facebook and educate people than it is to run away. But this isn't about educating people, and it isn't about this bigger notion of The Wild Internet World And Peoples' Privacy. This is about The Wild Internet World And MY OWN PRIVACY.

Horse crap. You say plenty of public stuff on the web.
Don't define my comfort levels, asshole.

Update: Yes, it has been made clear to me that since CNN has the event stream via an iframe, they don't actually have access to my data. I considered redacting that portion of this post, but the important thing was still the confusion I have around the Facebook security settings. The crux of the problem, as commented, still stands: "No matter how much time I spend tweaking Facebook's privacy settings, I can't help thinking I missed a setting someplace else."