These go to eleven

10 years ago today I came back to NC State University, 9 months after my college graduation. I had quit my job at CompuCom a month prior – even breaking a training contact – it was one of those things that I ethically felt at the time I had to do. That’s another story for another day though.

I came back for a whole host of reasons, personal and professional. I guess what I wanted most of all was to find a place that I could learn from those that I thought were the best at what they did. That I could find a place to cast down my bucket. That I could find a place where Information Technology and education were a strategic role, not a servant one (notice I didn’t say “service”, “service” and “servant” are two completely different things). That I could make a difference. That’s really what I’ve always wanted most.

At times I’ve found that. But most days I’m still seeking it. IT is a tough place to be. University IT doubly so. 10 is pretty old in Internet Years. But a lot younger than a lot of folks I know. The real question is, does the potential for those things I looked forward to 10 years still exist?

You see, most blokes, you know, will be playing at ten. You’re on ten here, all the way up, all the way up, all the way up, you’re on ten on your guitar. Where can you go from there? Where?

It will be interesting to see if these actually go to eleven.

Quote of the Week

My wife’s IM status message last week – which is completely applicable to my own job in so many ways.

It’s like trying to duct-tape Jell-O to the wall

There’s some controversy about whether that’s supposed to be “nailing Jell-O to the wall” – but duct tape is obviously far more appropriate.

I gave up my second life

So about 3 months ago, I got excited by the whole idea of Second Life. Part of the excitement was a group thing, we were (are?) planning an ongoing initiative with Second Life at work – and the idea of doing something leading edge and beyond the norm – even if you haven’t figured what that exactly is yet – was incredibly exciting. But I was even personally excited by it. I continue to be amazed by the sheer creativity of the world’s residents. I’m fascinated by the virtual economy. And I’m impressed by the public operations of Linden Labs. I even signed up for a paid account for 3 months.

Second Lifescreensnapz001

But two things happened:

1) To be someone that wants very much to be involved with projects that provide web and communication tools that allow people to connect (i.e. the “social networking”) – most of what I’m personally interested in is tools and technologies that let me get work done. I care about connections to my direct teammates – and my friends and family – and quality forums (and a whole lot of aggregated blogs) for questions and information. But beyond things like Flickr and connections through blogging – I’m really not personally interested in building virtual personal connections outside work, family, and photography. I actually bored pretty quickly in Second Life.

2) I get incredibly motion sick in just a short amount of time in the environment. I guess I am just a 2D interface kind of guy.

But I’ve stopped tracking the ongoing Second Life news in my aggregator. I’ve cancelled my paid account, sold my land and pop in only occasionally to see what we are doing. But there are other things that I find more interesting. I’m not sure what the future of these kinds of things is, it’ll be interesting to watch – but I’ll think I’ll be doing it from the outside in.

I’m still keeping the plaid shirt though.

Why Crazy Apple Rumors Clearly Is Well Researched Journalism

I mean irregardless of the fact that they have the inside scoop on details about the Apple-Cisco iPhone agreement that no one else has – clearly they go places where no other journalist goes.

namely:

Cisco must Photoshop back in the Apple logo on the laptop being used by the guy on the company’s home page.

Firefoxscreensnapz007

That might be the funniest thing I’ve read all week.

(now the fact that I captured a snapshot and upsized it clearly indicates that I need help)

Lightroom Direct Positive

I had the opportunity to go to lunch with Ben and James earlier this week and for the first time in recent memory, our lunch conversation was actually not about work. Instead we talked for a bit about Photography.

There was curiosity about what the “Direct Positive” settings did that I mentioned for this photo:

We talked for a little bit about post-processed manipulation and similar. I did more post-processing (which consisted of mainly playing with Lightroom’s develop settings) than I think I ever really have. I was basically just playing – but I liked how the “Direct Positive” effect looked on that particular photo.

I wasn’t exactly sure what all it did – here’s the original:

It’s underexposed because of the -1EV setting – and a bit washed out – so that’s probably why the saturation settings took so well. I’ve see shots that look like the “Direct Positive” shot before online and in a number of magazines. I’m not exactly how you’d ever pull that off in camera. So I assume there was also some manipulation of things.

Here’s a shot of the Before/After split in Lightroom:

And for the curious – you can actually see the EXACT settings that the preset does (this is so cool for the software geek in me). I’ve seen mention that Lightroom uses Lua for it’s interface – so I’m guessing this might be a Lua structure/hash.

From: ~/Library/Application Support/Adobe/Lightroom/Develop Presets/Direct Positive.lrtemplate

s = {       title = ZSTR "$$$/AgDevelopModule/Templates/DirectPositive=Direct Positive",       internalName = "DirectPositive",       type = "Develop",       value = {               settings = {                       AutoBrightness = false,                       AutoContrast = false,                       AutoExposure = false,                       AutoShadows = false,                       AutoTone = false,                       Brightness = 0,                       Contrast = 0,                       ConvertToGrayscale = false,                       Exposure = 1.15,                       FillLight = 0,                       HighlightRecovery = 25,                       HueAdjustmentBlues = 0,                       HueAdjustmentCyans = 0,                       HueAdjustmentGreens = 0,                       HueAdjustmentMagentas = 0,                       HueAdjustmentReds = 0,                       HueAdjustmentYellows = 0,                       LuminanceAdjustmentBlues = 0,                       LuminanceAdjustmentCyans = 0,                       LuminanceAdjustmentGreens = 0,                       LuminanceAdjustmentMagentas = 0,                       LuminanceAdjustmentReds = 0,                       LuminanceAdjustmentYellows = 0,                       Saturation = 0,                       SaturationAdjustmentBlues = 55,                       SaturationAdjustmentCyans = 75,                       SaturationAdjustmentGreens = 0,                       SaturationAdjustmentMagentas = 0,                       SaturationAdjustmentReds = 0,                       SaturationAdjustmentYellows = 25,                       Shadows = 14,                       SplitToningHighlightHue = 0,                       SplitToningHighlightSaturation = 0,                       SplitToningShadowHue = 0,                       SplitToningShadowSaturation = 0,                       ToneCurve = {                               0,                               0,                               255,                               255,                       },                       ParametricDarks = -20,                       ParametricHighlightSplit = 75,                       ParametricHighlights = 60,                       ParametricLights = 10,                       ParametricMidtoneSplit = 50,                       ParametricShadowSplit = 25,                       ParametricShadows = -60,                       Vibrance = 0,                       WhiteBalance = "As Shot",               },               uuid = "5410FFE9-3355-4A55-A1A5-582782F72BC5",       },       version = 3,}

Basically – a kick up of the exposure and highlight recovery – and a lot of saturation settings (plus a change in the tone curve). This is a really cool way to pass around and apply settings.

Upgrading your Rails 1.1 application to Rails 1.2

So, I’m in the process of getting our servers upgraded to Rails 1.2.

( We don’t freeze rails, because contrary to the cult of Rails, freezing is not the way to go in small, controlled shops with multiple applications. If say, you have to upgrade your Rails, NOW NOW NOW – it’s much better to upgrade the system, and not every copy of your application everywhere, but I digress)

That process, of course, involves making sure our applications work with Rails 1.2 and eating my own dog food – this is what a cursory run through of the application that I’m responsible for had me running into:

Deprecations

The biggest issue – which really isn’t an issue, which was cool – seems to be the deprecations coming in Rails 2.0. But for anyone playing along with the home game – deprecations are errors. (maybe I should start a “Cult of the Clean Log”).

The deprecations I had:

  • multiple references to @request, @params, @session…
  • references to @flash, including a really odd error that resulted from the fact that I had a partial named “_flash.rhtml”. Thankfully I wasn’t the only person that ran into that
  • a lot of start_form_tag and end_form_tag references. And while I to this day get a little squicked out by phrases like “syntactic sugar/vinegar” – I do very, very much like the block form for <% form_tag(:action => :blah) do %> ... <% end %>

Aggressive Unloading

In the famous words of Keith Jackson:

“Whoa, Nellie!”

So we are probably doing something incredibly stupid and against every known convention of Ruby and Rails – but, hey, it works. We have an class for application configuration that we use a class variable to store persistent configuration information (with a default set of values, merged with values loaded from a configuration file where appropriate). Prior to now, we’ve happily loaded this up on application startup in environment.rb to load the configuration – and even in development mode, the class stayed loaded throughout the lifetime of the mongrel process.

Well, apparently in development mode in Rails 1.2 – the automagic dependency management has significantly changed (ob. ref. Jonathan Weiss and the RoR weblog. That’s cool, it’s probably what it should be, and what I’m doing in this application probably isn’t “the right thing.” But the AppConfig class would unload, and be reloaded and because the load_config method was only called in environment.rb, it was Oops’ing all over the place. My hack was to load the config within the body of the class, so it would do it when the class was loaded (loaded might not be the right word here). If I continue with this AppConfig thing – what it probably should be doing on accessing the configtable is to have checks that when it’s nil – reload the config. I’ll solve that one later, thankfully for now, it works again.

If any Rails person that actually reads this has any kind of visceral – “why the heck do you guys do that?!?” – reaction – and know a better way of doing this (the whole persistent configuration-defined-at-run-time-not-in-code-or-the-db problem) please do share.

A HUGE “thanks!” to the Rails team for including Dependencies.log_activity = true as part of dependencies.rb. That helped a lot – and helped provide a glimpse into the automagic dependency management of Rails too.