Operation Purple...Where in a Weird State.

Posted on June 28, 2008

My youngest son spent this past week at a regional “Operation Purple” (link1, link2, link3) camp. My wife is deploying to the “desert” in the fall for 6 months – so we thought it would go for him to spend some time with kids in similar situations. Being that she is in the Air National Guard he doesn’t get the same exposure to military life as my oldest son did. In general I think Operation Purple is a much needed service, and is good way for kids to, sans parents, open up.

When dropping him off you wouldn’t have noticed that it was a “special” camp – I thought this a bit strange. Almost all of the camp counselors were from Europe. Realizing budgets are what they are, and that fact the camp ultimately is run by the YMCA…totally acceptable, but still a bit weird.

During the week it began to dawn on me a bit…who’s going to be doing the actual “military kid, your mom or dad is going to the middle east to fight a debatable war, risking their life for your – not my – country” counseling. Turns out that there was A representative from the National Military Family Association to coordinate the real objective behind the camp. There are also were representatives from the nearby Air Force base arriving in helos and F-16 cockpit trainers – the typical “recruiting” tools.

So, it gets more weird. The kids were directed to discuss, in groups, their feelings about being in a military family AND the differences for them as compared to civilian families. Keep in mind that there are kids at this camp staring in the 7-8 range – and going to mid-teens. These kids are vulnerable…not only in the sense of dealing with a family situation, but in their social, and cultural learning. As part of the discussion/therapy session there were tasked to capture the ideas in brainstorming style on a stand-up marker board. The results of this session was available for parents to see. I’m not sure if I was more concerned about the content in general, or the parents that belly-laughed (from most likely dependent wives) at an “idea” that said “military families make more money”. I quickly noticed a few common themes amongst the older groups: cheaper gas, less racism, on-base shopping is cheaper, school friends think we’re strange, move alot, deployments cause divorces, and base housing is safer. The younger kids definitely see things differently. Here’s some of their thoughts: mom relies on me more, i have to do more chores, we travel (probably can read this as move too) more, and my friends parents are divorced.

During the closing ceremonies there was a brief presentation with pictures and a discussion about the program. The NMHA representative reiterated the lesson that was given to the kids. It goes like this: “say what I see, say what I think, and say what I feel”. Based on what was being said by the kids…what is really needed is more honest military parents that give the kids opportunity to “say” what they see, think and feel. Kids are smart…and they learn from what parents say, everything parents say. But, I think it is clear that kids learn just as much from what parents don’t say, that only gets reinforced by their opinions (they do have them) and their friend environment.

I’m definitely not the lead candidate for the best parent ever…but, their are some things that just strike me as awkward or weird in other kids, which I know is a result of parenting (or lack thereof). To my point now. Yes, I know I’ve rambled quite a long time already. Our country is fragile, and getting more so with ridiculously bad politics at all levels, questionable education systems, mismanaged resources, blah, blah, blah. Our future is in our youths’ hands. If we, parents, can’t remove the fog of ignorance which is being poured on to our kids we’re doomed. Do we really think camps run by slightly-older kids with funny accents are going to help reduce some of burden we’re forced to put on our kids, let alone the unnecessary burden of ignorance, uncertainty, and lies? I just can’t help but think it is weird that military families are just as at risk as civilian families, to succumbing to the weirdness of our State. Even when my wife was Active Duty some 7 years ago and we were stationed overseas it was not like this.

I only hope that the impending changes offer an opportunity for us to get back on track.

[Please don’t take away from this that I don’t appreciate the effort of NMFA. I do, and I appreciate all of the exchange counselors. If this camp were not Operation Purple, I’d have nothing to write about. So, in hindsight I’m glad he went, and we’ll give him the opportunity to go again if he chooses to.]

Ruby - Primed for the Enterprise...

Posted on June 23, 2008

Warbler is an enabler. True, Warbler is a Rails-specific tool, and not really Ruby. But, if Rails/JRuby isn’t, at a minimum, a blip on you enterprise developer’s radar you’re missing something important.

Anyone who has ever spent a significant amount of development time with Java knows the dev cycle (code, build, test, deploy, test, code) is painful…especially with tools like Maven driving the bus. For this reason alone I believe Ruby has an inroad to Enterprise development. Keep in mind that SOA and web-based services are the general target. Ruby (Rails) combined with a TDD/BDD attitude can promote a more pleasant cycle (test, code, test, code).

Here’s a short list of the relevant stumbling blocks. And no, XML processing isn’t on the list (it is rather good, with multiple options – try Googling for more info)

  • This is the SOAP support in Ruby. Where the hell is the documentation. What’s the point of having rdoc if you aren’t going to document the usage. Lame.
  • Enterprise integration with Ruby is a book put out in 2006, covering generic integration topics. That’s it, that’s all there is as far as the formal discussion goes. A book.

Ok, see I said it was short.

With JRuby rolling, there’s no reason not to enjoy the “fun” that comes with Ruby development. Shoot, there’s even Swing-focused tools like “Monkeybars”http://monkeybars.rubyforge.org/ that help make Java GUI development fun (ok, maybe just interesting – fun could be a stretch).

However unfortunate, I do think it will take JRuby to get some mainstream corporate use. But, whatever it take right? There’s no excuse now, not to start looking at, talking about, and enjoying Ruby development.

Google Reader Circle-Jerk...

Posted on June 16, 2008

I’m posting this blog article. Which will then show up in my Google Reader because it is going to automatically get piped their from somebodies Yahoo! Pipe. Once it shows up in Reader, I’m going to share it…which will cause it to show up in my Google Reader Share ( http://www.google.com/reader/shared/03419463208734067981 )...causing it to cycle around again. I’m kind of curious what other ill-effects happen (browser melt-down, pink-slip action, etc.)

Here’s the tinyurl (for my shares): http://tinyurl.com/6s5kop

Sorry, just me bein’ a dork.

Community-Based Development...

Posted on June 16, 2008

Introduction

It is widely known that the Open Source community uses a different approach (Bazaar) to software engineering – over traditional, proprietary environments (Cathedral)[1]. However, there are many opportunities to apply Open Source practices to internal software engineering efforts, where the software product is consumed by another internal organization. Integrating these practices is not trivial…though in most cases it is just a matter of utilizing a few new, or different tools. In some cases, there may need to be a cultural shift, or simply a new awareness.

In order to avoid any confusion in the distinction between true Open Source development, where there is a “public” interface and intra-organizational development I’d like to call the generic practices found in the Open Source world Community-Based Development (CBD).

CBD serves the environment where one team is developing software that has consumption potential. Notice I didn’t say reuse, which is a chokepoint for many engineers. Consumption, in this case, means library, API, or interface implementation – not source code copy n’ paste. The “customer” is another developer, or engineering project. CBD is about optimizing this kind of relationship, especially where the customer is proactive in the development of the source product.

Background

There are a few key functions, or tools used in this provider-customer relationship – many of which are clearly defined in Producing Open Source Software [2].

Here’s the quick (not all inclusive) breakdown:
  • Mailing lists - Dev, Announcements, Users, Builds, etc.
  • RSS feeds - Tie into mailing lists, issue tracking
  • Issue Tracking
  • SCM
  • Wiki
  • Search (projects and code)
  • Admin Management (Users, Roles, Project setup, etc.)
  • Web Site
On the Open Source side of the fence these tools are usually consolidated, and provided from a single user-interface (website). In many cases, projects are homed into a parent structure, provided by a “hosting” service. There are a few examples such as SourceForge.net[3], or Java.net[4] which front-end many projects. The software platforms that provide these infrastructures are available for commercial application in both proprietary and Open Source form. In addition, there project infrastructure suites such as Redmine.org[5] that are designed specifically for internal/team-centric software engineering collaboration.

Integration

There are a few “tough” questions that arise when considering CBD, especially as applied to internal relationships. The first, and probably most obvious, is how to integrate CBD with existing processes and methodologies. Existing processes can usually accommodate CBD with little pain. CBD is a complimentary environment, and can integrate seamlessly in to any methodology (waterfall, spiral, agile). Where things get really complicated is in the tooling. Most development environments are already using individual tools to perform specific functions (e.g. issue tracking, project management). How CBD is applied where existing tools are entrenched – should not be a replacement effort. Although, there may be some duplication – the idea is to expose the integrated collaboration tool suite to both the product developer(s) and the customer, or product consumer/integrator. Continuous integration environments shouldn’t be affected – as the source code repository is independent from the project suite.

Discovery

Keep in mind that the developer-developer relationship requires that the consumer have the ability to search/discovery the internal software product. Just having code in a repository with an associated issue tracking system doesn’t lend itself as available for consummation. This is why the SourceForge (centralized collection of projects) is prevalent in the Open Source community. Having a centralized source of CBD projects leads to the potential for consummation because they can be discovered.

Governance

In order to maintain a “community” project there is a requisite membership ideal. Usually, the project owner plays the leadership role, whereas the consumer plays member (active or passive). CBD requires members be given roles to control access to data, ability to commit changes, as well as general project management activities. Again, having the consolidated project environment ensures that user administration is consistent across all projects, as well as providing a potential for parent-sub project relationships. The consolidated suite of tools also ensures that the project owner can control the roles and privileges without implicating administrative personnel.

Community

The idea of a community-based approach to software engineering is based on the principle that the consumer is integral in the development, much in the same way as Agile Methodologies manage the customer relationship. The consumer’s activity may be as simple as reviewing/editing documentation or providing input via issues and bug reports. Or, it can be as proactive as the consumer writing code and submitting it to the project. Regardless, the objective is to maintain the codebase for the continued and growing consumption without duplicating anything across the organization. Internal to an organization, there may be boundaries specified by contract, external customers, or functional hierarchies that make it difficult for software to be reused. The notion of CBD can help overcome this by removing the demarcations and continuously improving the “wheel” without starting over.

References

Hellotxt Dumb. Twitter Dumber.

Posted on June 13, 2008

At least 80% of the times when I attempt to update Twitter I get the “overloaded” bullshit. Amazing, in today’s “everything-scales” technotopia cloud we can’t get me guaranteed access to a free service. Geez.

I’ve been on and off the Twitterino bandwagon a few times already, and am about to drop off forever. The only thread hanging is that a few peers use twitter as their pseudo-blog. I really wish they wouldn’t – but, unfortunately they are (even with no social network intent).

I recently found Hellotxt via another fairly new playa BrightKite. I’m sure I’m at least a couple of months behind…because Hellotxt already has all the majors lined up and a load of the “what the hell is thats”. About the only one of these cats that is remotely interesting is Facebook. I realize I should prolly care a bit more about LinkedIn – but, I have a job (at least I think I do).

So, if Twitter wins the “dumber” award for not being able to scale (and I don’t want to hear the dumbass Rails argument either), then Hellotxt picks up the dumb one. I actually think Hellotxt is interesting simply because it is stupid that I can’t just blog my own updates…from my site, and load the feed to all these sites. At least Hellotxt is a step towards unification of the belt.

Anyway…kind of a mindless Friday lunch – looking at some of these new fangled things that are supposed to improve my social life.

Phidgets and Ruby...

Posted on June 09, 2008

Well, I’ve been looking for a reason to play with JRuby for some time now. It finally came time, in the shape of a Phidgets servo. Ok, so maybe it isn’t “Phidgets and Ruby” exactly. I can’t say what I’m using the Phidgets for but being able to access them from Ruby is a huge bonus (if for no other reason than I prefer looking at Ruby). Problem is…no Ruby API to access them directly. Python yes, Ruby no. Although I really have nothing against Python this particular project already implicates Java. So, what’s one more library like JRuby?

I will admit that I had quite a few problems getting through outdated documentation for JRuby. Just getting setup with the initial ‘include Java’ instead of ‘require java’ was almost torture. Ruby community’s documentation is already suspect – therefore JRuby must just want to follow suit [Ruby itself, is fairly well documented – thanks to James and the Happy Camper guys]. Then I had to figure out how to work the Java interfaces for the servo’s “attach” listener. The documentation for how to do this is a bit of a struggle too. Just need to remember that JRuby is early 1.x version.

I was actually able to get Phidget servo to respond and set it to a given position. Cool. And, I will admit the code is much cleaner, simpler and a lot less of it.


include Java

require 'phidget21.jar'

include_class Java::com.phidgets.ServoPhidget
include_class Java::com.phidgets.event.AttachListener
include_class Java::com.phidgets.event.AttachEvent
include_class Java::com.phidgets.PhidgetException

class ServoAttachListener

  servo = ServoPhidget.new()

  def attached(ae)
    begin
      puts "Getting Device Name..." 
      servo = ae.getSource()
      puts "Device Name: " + servo.getDeviceName()

      puts "Getting Servo Count..." 
      puts "Servo Count: " + servo.getMotorCount().to_s

      puts "Getting Servo Max Position..." 
      puts "Position: " + servo.getPositionMax(0).to_s

      puts "Getting Servo Min Position..." 
      puts "Position: " + servo.getPositionMin(0).to_s

      puts "Setting Servo to Max Position..." 
      servo.setPosition(0, 232.0)

    rescue PhidgetException => e
      puts "Java or Ruby exception: #{e}" 
      raise
    end
  end

end

puts "Hello Phidget Servo" 

servo = ServoPhidget.new()
attach_listener = ServoAttachListener.new()

servo.addAttachListener(attach_listener)
servo.openAny()

while true

end
puts "Goodbye Phidget Servo" 

Irrelevant Update...Schizo in Effect.

Posted on June 09, 2008

So, I’ve been “offline” for a bit. Had a short break in the academic dimension, money issues in the corporate dimension, and general techno-depression (where I just don’t give a shnizzle about any of it) – all of which removed any desire to be at the ole puter.

Not much has changed accept I’m back at it – for my last graduate class evar.

There’s been some interesting things happening in my techie-world. I just can’t seem to get any motivation going to care. Lot’s of good discussions around Groovy, JRuby and virtual machines in general. Functional Programming seems to be the snowball that is sucking people up for no good reason. Open source hardware, smaller and smaller processors, and almost the dead quiet before the tornado in the networking world. Apple still is going nuts though I am already tired of the continued iPhone hype. Maybe I’m just jealous because I am stuck with a 1st-gen’er. I really wish there would be some big news from today’s MacWorld Keynote about OS X or their other platforms (non-iPhone). Still waiting for that.

I still subscribe to Linux Journal magazine – but, am not really sure why. The content is lame…and is second rate to most of the blogs I read anyway. There’s nothing new in that space…especially from the OS perspective. Reading it this morning kind of took me back to somewhere around ‘93 when I first saw Linux running on a friends Packard Bell PC. It was kind of funny … I was supposed to be getting a demo of this awesome Windows alternative called OS/2 (which is now completely dead). I got so hooked on the story of Linux that I could’ve cared less about OS/2. I’d seen some UNIX before this – and pretty much favored DOS over Win3.X at the time. Slackware (the Linux distro) was cool, not because of the software itself, but rather the culture. I’m not sure what happened, but it really feels like that culture is gone, replaced by ego-driven twerps with zero appreciation. Kind of like yoga’s americanized incarnation (downward facing dog instead of Adho Mukha Svanasana). I kind of get the same old-skool Linux feel from the Ruby (not Rails) community, which is cool. The difference for me between then and now, is that I really could care less if anyone jumps on the Ruby bandwagon. Back then, I was a religious zealot about Linux – preaching to anyone who’d listen (and even those who didn’t want to hear it). Maybe it is just a funk…but, I’m kind of just tired. In the early 2000 I was beating the IPv6 drum only to have my head constantly bashed against a wall by corporate idiots. At some point I think I’ve just subconsciously realized that it will all unfold however it damn well pleases and there’s no point in me caring one way or the other (I’m really just along for the ride). I suppose the sooner I consciously accept this the better off I will be.

Then, there is the whole “human” angle…like I should be trying to save the race or something. Like where ever I put my energy should be for the greater good (or something). All this green crap, the election politics, fuel prices, my rapidly thinning scalp coverage, blah, blah, blah. It really is rather depressing. Oh wait, I’m not supposed to care about the number of hairs listing from the top o’ my head…green, green is good. Damn, green is bad. Green means we’ve already screwed up and attempting to care. Then I read O’Reilly’s latest blog post and return to proud American mode. Sorry…can’t…help…myself…ahhhhhhhh…the…madness. It’s The Happening.

I watched Discovery’s deal on NASA (leaving Earth…) last night. Really frickin’ cool. We pretty much suck as a country these days. I wish we could have a Kennedy lead us to the Moon right about now. Just looking forward would be nice. These tiddly little mission to Mars with a robot just aren’t doing it either. Don’t get me wrong on understand the relevance of the Phoenix missions – but without human life on the line it isn’t the same. Those guys working Mercury, Gemini and Apollo (my Dad included) were the bomb. No computers to solve the problems…just smart people working it out. That’s effin’ amazing. Anyway…that was then, this is now. Tomorrow we’ll still be worrying about $5/gallon gas.

So. What was I saying? Techno-depression…that overwhelming feeling that it is simply impossible to feel like you are doing anything relevant, let alone worthy. I can’t seem to latch on to any one thing long enough to feel like I’ve made my mark. The ‘master of nothing’ syndrome in full effect. I’m basically in information overload…damn you Google Reader! Add in a mix of ‘mobile me’ and it is all over. I just spent a week at the ocean (in and out of the water). It was all I could do to not open Google Reader from my iPhone. Fear of the 600 new feeds I’d have to wade through was killing me. I’m an addict for sure. Is there an Informatics Anonymous?

Actually, I’m doing pretty good now. High of 104 degrees today. Back at work, the routine is definitely soothing. Performance evaluation this morning. Kids are doing well, one is visiting Zion the other I have no clue what he’s up to. All I know is that every time I get near him he closes his computer, phone, etc. as fast as possible. Is that a sign? Went and saw the Indy Jones movie last night. I’m definitely getting old…but somehow guys like Harrison Ford and Clint Eastwood don’t – and not in the Barry Bonds sort of way (not older, and not bigger at the same time). The movie was OK. Definitely in line with the others. Weird that Lucas et al. progress from religious relics to alien encounters…or maybe progress is the wrong verb.

Well, lunch is over. Back to work. Peace in.