Next-Gen iPhone Sighting!
May 3rd, 2008
Strangest place…this kid show on Nickelodeon called iCarly.
This episode
I tried searching for it…but, pretty sure it was it with a green pear on the backside. But, the thing was in a shiny black case, not metal.
Demand, Indeed...
April 24th, 2008
| rails, ESB, RTSJ, CBE, OSGi, IPv6 Job Trends | rails jobs - ESB jobs - RTSJ jobs - CBE jobs - OSGi jobs - IPv6 jobs |
rVooz Screencast...
April 24th, 2008
Captured a very simple screencast, attempting to show some of the functionality we’re building out.
Check it out here: rVooz Overview
Register Jabber User's from Rails...
April 22nd, 2008
On a recent project I needed the ability to register and unregister users from a Rails app, specifically a simple User model. At first I just added the necessary capabilities to the model itself…then realized the functionality really should exist as a library/helper. Well, if I’m going that far – might as well just drop it into a “plugin”.
You can find the plugin here: xmmp4rails.
xmmp4rails is a simple method-level layer around a “few” of the capabilities provided by the awesome xmpp4r library.
To get the plugin:
git clone git://github.com/kitplummer/xmpp4rails.git
Here’s how I’ve used it – in my model I’ve got this:
...
before_create :xmpp_register?
...
def xmpp_register?
begin
register_account(self.login + "@" + CONFIG['hostname'], self.password)
rescue StandardError
return false
else
simple_send('gateway@' + CONFIG['hostname'],
'CONFIG['jabberpw'],
'admin@' + CONFIG['hostname'],
"new account: #{identity_url}")
return true
end
end
So, if the registration fails, so the does the account creation. Obviously with the library called from the model you can do different things with it. Notice the simple_send method too. When an account gets created in the app – the model sends me a notification via Jabber.
I’ve also provide a simple stub so the models can still test out completely.
Hopefully this will be useful for someone else. I’d also love a reason to keep extending the functionality wrapped, as well as flesh out the tests with RSpec. Let me know.
Agile Practices and Software Maintenance...
April 21st, 2008
I recently wrote a non-traditional paper looking at how it might be possible to integrate Agile practices into a software maintenance activity. Academically I don’t expect the paper to go over so well – but, believe it might be of interest to some who’ve been asked the same questions as me.
The paper uses a very simple “helloworld” application written in Ruby and highlights a few really cool Ruby tools.
Anyway here’s the paper in PDF form – feedback always appreciated.
I’ve also written a very similar paper on the potential for IV&V integration into an Agile project. I’ll probably post this one as well in the near future.
Rails Vs. Merb...Footprint?
April 21st, 2008
So, I realize if you are reading this you actually care about Rails and Merb. Therefore I hope you are not absolutely perturbed at the lack of quality content here. :)
Out of strange curiosity I decided to see which framework was truly lighter in “default” form. I simply ran each’s command to create a blank projects then looked at the “size” of the created directory.
$ rails test
The resulting project weighed in at 400KB.
$ merb-gen app test
Merb’s project weighs in at 104KB.
Amazing? No, not really. But, now I’m wondering what the size of a Grails project is…
It’s not very often I read anything on the web and get excited. But, I just can’t help relay this nugget of pure rationalization:
12 Things You Should Know About REST and WOA
Enjoy getting smarter.
OpenID, ActiveRecord, Everything Not Rails...
April 7th, 2008
Wow. I started to get a “real” sense for the state of Rails and the surrounding Ruby-based frameworks on Friday morning. You know what they say about making promises…
Needless to say I don’t have a working geo-client. I did chase about every possible rabbit. There were some promising options including Merb with a generic session captured in DataMapper. Ironically the simplest solution is the Ramaze one. Way unfortunate that they aren’t pushing the OpenID capability. I think if I had the time, I’d debug their OpenID-mongrel problem. But, I still believe we should get the geo-client over to Rails for the sake of continuity across our code/project-base.
The real irony here is that everyone has seemed to go the custom OpenID solution based on the openid-ruby gem. Not necessarily surprised just wondering way the people that put effort into a plugin for Rail 1.x/OpenID 1.x are putting the same effort in to maintaining them for Rail and OpenID version 2s. Strange. This is one of the problems that I think the Java world with its more Darwinian approach to projects. But, due to the Rails defacto documentation being blog posts the old (weak) stuff seems to live off for ever…and not get maintained in the same way as Java-ish projects – it really is self-centered. I supposed this is somewhat due to RubyForge, and the general lack of a true “foundation” to house Ruby projects ala Apache or Eclipse. I wonder why that is. No, not really I know why. It is because of shops like 37Signals…not “getting” the greater good part of Open Source. Don’t get me wrong I’m not necessarily fault them – just saying that they are definitely partly responsible for the state of things Ruby and Ruby on Rails.
ActiveRecord is a terd. I appreciate most of what it brings to the table…but, I’m really struggling with it – and any intuitive understanding. I’ll take the blame for most of it – not all of it. For example, why does this work:
@openid = UserOpenids.find(:first, :conditions => ["user_id = ?", @user.id])
And not this:
@openid = UserOpenids.find_by_user_id(:first, @user.id)
It took me at least 4 hours to figure this effer out…and I still don’t understand.
Google in a Dog Fight with the U.S Air Force and Navy...
March 23rd, 2008
Recruiting is a growing problem for the branches of the Military. If the state of the “battle” continues on it’s current path – it will prove to be somewhat insurmountable.
The real problem lies with the “skillz” needed by our soldiers, airmen, seaman (and Marines), as well as coasties. Where the military has typically “trained” to reach the required performance – the cost to do so is growing beyond the ability to recover the investment within four years.
Obviously I’m really only addressing the problem as it relates to “technical” skillsets…like Math and Science. For example…I’m a high school student excelling in Mathematics and Science (possibly Computer Science). I have the choice of either attending a four year school, graduating, getting a job making 65K/year; attending a four year school, graduating, getting commissioned as an officer and making ~32K/year; or enlisting and earning ~17K/for the first year. Here’s the real problem. It would take almost 8 years from the military route’s pay to double…assuming “good” behavior. If I were an exceptional professional I could double my pay within 5 – easily.
Air Force’s Cyber Command recruiting commercial does an excruciatingly painful job at trying to be cool to this crowd. The first problem with this…is that it shows “operators” clicking on a touch screen. Operators are literally just that. What it doesn’t address is the intelligence that is really required…the engineering mindset (social or technical).
Also, operators don’t develop the systems (really no one serving does) – federal contractors do. The “touch screen” technology as well as the command and control applications are an example of such a case. The military branches are also competing with the folks that actually engineer the stuff. However, having served in the Air Force I know there is a lot more to operating and maintaining – thus the fairly lengthy technical schooling session plus constant on-the-job training. And, back to my original assertion that from an investment perspective this may be an insurmountable problem.
This Air Force commercial is a little better – but, notice that the guy is a captain. The majority of the people in the video are not. The reality is that our Air Force’s “network” war is being fought by high-school graduates.
Ok, seriously. Here’s the wiki entry on Air Force’s recently established Cyber Command:
http://en.wikipedia.org/wiki/Air_Force_Cyber_Command
This is serious stuff; seriously technical stuff, requiring massive innovation to stay in the lead. Basically, what is happening is that the Air Force and Navy are recruiting against the likes of Google, Microsoft, Cisco and Garmin. I’m sure that these guys aren’t even aware. But, I’m equally sure that the Air Force and Navy are.
Patriotism aside I can’t arrive at any logical solution that would lead me to the military – especially based on the pay potential. The “funding” for school doesn’t cover the difference in salary over the first four years either. My oldest son is already talking about going to the Air Force Academy. Fortunately, I am a patriot and so is my wife who is a Captain in the Air National Guard. But, we are the minority for sure.
I don’t think this is a winnable war for either the Air Force or the Navy unless they throw the right incentives. Pay is a good starting point…though I don’t see this as the ultimate solution. I’ll throw this last idea out there as a parting shot. What if the Air Force offered college grads with direct job placement into the top federal contractors (guaranteed) and possibly with commercial companies like those mentioned above – after their commission and duty time is served? This is a positive for all stakeholders. The Air Force ensures that there needs flow in to the contractors. The contractors ensure they get personnel that understands the problems. And, the individual gets a job that allows them to take advantage of all their knowledge, skills and abilities.
Modular, Open Source Hardware: Just What the DoD Needs...
March 21st, 2008
It seems to me that the there’s still a great void in the tech industry. FOSS is establishing itself with clout in all sectors including the Departement of Defense. So, why is Open Source hardware so far behind? The easy answer is that it isn’t so easy. ;) To play with and contribute to a hardware design is considerably more complex than with software. Plus, most organizations see hardware as the value added. It is a shame really…but, understood.
In my experience as a Defense contractor there is a huge amount of waste in the redevelopment of computing architectures because of form-factor or resource constraints. For operational environment reasons, devices and general electronics are constantly reproduced because access to design artifacts aren’t available. Granted, general purpose electronics and processors aren’t as pervasive as the same in the software world. But, they should be. At minimum the hardware should be designed with standard connectors and interfaces – so as to be made “modular”.
The guys at BUG Labs are doing just this. But, more importantly they’ve identified the relationship between the hardware and the software – and even at a higher level. The idea that hardware can be somewhat generic and integrated at the lowest level, then integrated at a middle-level via a software development kit to create any number of high-level applications that take advantage of the permutation of hardware is really incredible. Really, this is component-based engineering as it should be.
Here’s a very basic (abstract) use case for how the DoD, or more specifically, how contractors could take advantage of this BUG architecture:
Consider an unmanned air frame, and let’s assume that it could accommodate a modular hardware suite to include sensor A, B, or C; effector X or Y, and radio R or S. Consider a mission profile of “find, fix, kill, and verify”. Potentially this could be accommodated by the right combination of hardware. But, let’s not stop there. One more consideration…imagine that with the right payloads the mission tasking could be extended to a 10-hour operational window by distributing the payloads to multiple airframes (decreasing the payload weight allowing for the extended flight time).
Let’s walk thru a few steps:
1. Maintenance crew “installs” the hardware modules on to the vehicles. Sensor A and C on vehicle 1. Effector X on vehicle 2. Both vehicles are equipped with radio R. Status lights indicate the correct local operations and POST passes.
2. Crew chief connects (wifi or wired) the two vehicles to the OPS network.
3. Mission planner sees the vehicles as “available” and begin linking the assets to mission requirements. By drag-n-drop functions the planners use the MP suite to create the local software configurations for each vehicle, then combines the capabilities to meet the “find, fix, kill and verify” profile as a “cell” capability. Test suites, models and simulations are run to verify actual system characteristics.
4. Mission planner generates the appropriate interface control documentation (ICD) for the cell (as well as security profile) with the click of a button. The ICD is used to request data from the cell, or command the cell from remote systems.
5. Mission planner registers the cell capability via the ICD with up-chain systems such as C2.
[In my example, sensor A is used to “find and fix” the target. Effector X is used to “kill”. Sensor C is used to verify the kill. Radios are used to communicate air-to-air and air-to-ground.]
All of the software/operational integration is done automagically. Obviously hidden in the magic are loads of interface standards, definitions, and registration/discovery processes. The key is that they are all available…and mechanisms for completing my scenario all exist. The BUG Labs is doing is based on open standards and specifications such as OSGi, Java is already Open. It would seem to make sense to leverage this capability, expanding it to meet the more advanced needs of a Defense environment. 80% of the problem has already been solved. The same scenario could be applied to logistics problems, uniform issue and load-outs, etc. Net-centricity goes beyond the connectivity…automation and optimization are ripe for the taking.
My EclipseCon2008 Experience...
March 21st, 2008
First…I had a good time. The Bug Labs guys are a welcomed addition…not the typical ego-driven Open Source rockstars that seem to be taking over these kinds of events. I attended their BUG+SV which was fun (even without wifi – how strange is that, Palo Alto and no wifi?).
The event itself is a bit too robotic…maybe that is what happens when a company like IBM runs/orchestrates an event. I know IBM didn’t literally run it – but…
Speaking of rockstars there were some big ones. Erich Gamma is pushing Jazz. Ok, really there were only a few deserving of the dub. Quite a few who thought they were though. The guy that presented after me (have no clue who he is) walked around the whole week like people were asking for his autograph.
The best presentation I attended was Marcel Offerman and Karl Paul’s tutorial on Building Secure OSGi Applications. Fortunately, there is effort on that front – because it was a huge void just even a year ago.
My slides are up at Slideshare – with a few edits. I actually dropped in a pretty sketchy picture depicting the IRS – which I pulled out for the masses. I think it went fairly well. I’d actually overheard a few folks standing in the hallway considering coming in – but, were thinking that my presentation would be a sales pitch. I suppose part of that is due to the abstract. However, I think too many presentations came out that way…commercials.
So, I prefaced my talks with my objective of telling a story…with a few provocative facts thrown in. I think overall it was accepted well. Based on the green(+1)/red(-1) bucket distribution it was a bit more popular than not. I do believe there were a few who were hoping to hear how OSGi is being used across the DoD with spectacular success and when I stated the contrary just got in the groove of shaking their head – over nodding in approval. But, that’s how it goes. There were also a few folks with the DoD as the organization printed on their badge. I’m not exactly sure if that meant that worked for the DoD itself or a contractor. This is a good sign though…their attendance proves things are changing.
There was one question at the end that I struggled to answer. “How do you make the business case to Accenture to have people contribute to Open Source”. My answer was that it is not a “business” problem, but a cultural one. I know that might be hard to swallow – but, the reality is that most development organizations – let alone one’s in the DoD space – just aren’t filled with people who’d be comfortable with submitting a patch, or even posting to a mailing list. The current culture is one where everyone is used to having paid support and if it isn’t there then someone made a bad decision. Even though I made the case that consummation of Open Source is a “standard” practice these days – that doesn’t translate to the consuming at a developmental level. Using Linux doesn’t imply that the user is going to be willing to commit anything…quite the contrary. All that said, while working at Raytheon I did have to make the business case – and I did it successfully by buying a support contract with an Open Source parent. It took some time before other developers were comfortable with the notion of fixing the problems themselves then giving the fixes to the support company. It was even longer before anyone was comfortable with contributing back directly to the community. But, was that was done – we were able to make the case to the “software” organization that this should be recognized as an expected practice, based on the fact that it reduced the time for the fix to turn around in to the next release of the consumed Open Source project (dependency problems being a critical part of consuming OSS). The argument was made that the cost of supporting a community was far less that the license and maintenance costs for a proprietary solution. Once you are to numbers, it is really that simple – getting to the numbers is the hard part, and that was my point in response to the original question. BTW, from the other side of the fence the Open Source projects don’t appear to care either way…they keep moving and fix what they deem necessary.
Also, getting “psychological” support from a few key OSGi folks was really nice. It appears that the OSGi community in general (beyond Eclipse) seems to really care about the problem domains of their users. I hope to follow up on those fronts in the near future.
It was also pretty exciting to see what’s happening with ServiceMix, Apache’s leading ESB effort – which is now built out from OSGi (Felix). [Thanks Oisin for your time.] I was disappointed in the Swordfish effort – at least what was presented. I was hoping there’d be more momentum – we’ll have to wait and see if there ever will be a critical mass there. The Sopera guys were nice and I do believe that they have the right objective. Something that I’d not really considered until very recently was the decisions being made on which Foundation to jump in bed with: Eclipse or Apache. Sopera is obviously working within the Eclipse Foundation…because there is a hole in the offering. I’m just not sure there is really a market for an Eclipse-based ESB. I could be wrong though.
I ran in to a few folks that resulted in great conversations. I talked with the SourceForge guy – and it was interesting to get his take on things – versus what you hear from the guys at CollabNet. I’m not really sure SourceForge is healthy – but, they keep chugging (good for them).
That’s it for now. Ping me if you have any questions, or comments.
Oh yeh, there was one missing organization. Sun.
Microsoft at EclipseCon...
March 19th, 2008
I’m trying to figure out why there’s a couple of Microsoft guys sitting next to me at the hotel bar, here at EclipseCon. I would ask them…but, after hearing their completely lame discussion about dual-monitor workstations there’s no way I’m striking up a conversation.
Amazing. Even the smelly elephant gets invited to the party.
Why Would Anyone Get a CS Degree?
March 15th, 2008
Catchy title, eh?
I recently ran a booth at my son’s high school career day, covering Software Engineering and Computer Science. A couple of quick observations.
The military guys (recruiters) were by far the most trafficked booths. This is ironic in a couple of ways. First, out of all the career fields these guys will get the least amount of students (at least especially from my son’s school). Second, I believe the reason for the “interest” is that these students think the military is “cool” – at least from the “impress your friends” perspective. Even when I was in high school I wouldn’t have been caught dead having talked to a recruiter. The irony there is that I enlisted in the USAF halfway through my freshman year of college.
So, the deal was that each student had to stop at least 5 booths, and ask some generic questions like: what’s the average starting salary, what’s the college requirement, what’s the biggest advantage, and what’s the biggest disadvantage? The first two are pretty easy. A salary.com search will reveal the expected salary for a given locale. The majority of the career field options require a Bachelors degree (those that don’t have one are definitely the minority).
The biggest advantage and disadvantage are a little tougher to answer, at least with a straight face. I think the greatest advantage to a career in Computer Science or Software Engineering is that computing is pretty ubiquitous and still spreading like a California wildfire. Even with the outsourcing “issues” abound – there’s still a lot of work to be done – here or abroad by Americans. I’ll leave it at that…there are obviously a lot of advantages but the fact that, as a career field, software isn’t going away.
The greatest disadvantage that I dropped on the interested students was the difficulties in staying current. Unlike some professions where you actually learn the trade in the first two years after college and it never changes, technology is brutally difficult to track. I think this is a challenge that many can’t overcome.
Here’s a few more thoughts on the concept of CS or SE as a career.
If you are lazy and unmotivated, or even socially inept you can still make a great living in this career field. Just get hired by a large business, and you can coast the rest of your life in mediocrity (it sure would beat working hard a Taco Bell).
If you are the opposite, and highly motivated the challenges and problems that need solving are incredibility dynamic and interesting. The software world is rapidly evolving and the potential for making a lot of money are pretty good – assuming that you can pick up and master a technology.
Culturally, the software world has a much younger field to it. Probably due to the majority of old school developers/engineers getting sucked in to managerial roles. There are great communities full of individuals and organizations who are willing to help you solve those problems and enlighten you on becoming better, and better at whatever you are doing. There are definitely pockets of ego, but that is everywhere and is relatively easy to avoid.
More to come on this topic in the near future.
Groovy or Ruby? Hmmn...
March 14th, 2008
There’s a lot of excitement about Groovy in my circles. There should be. As has been said elsewhere Groovy could quite possibly replace the Java language as the predominant code-language for writing JVM-running apps. But.
To add a bit of fuel to the fire – and one of the reasons that I’m choosing to look harder at Ruby in particular – is … try running a Groovy script without Java or a JVM. Don’t get me wrong this isn’t so much a knock against Groovy as it is praise for Ruby. One of the things I really like about Ruby is how quickly I can not only code up a prototype of some functionality, but more importantly how quickly I can run it and get the results and try again. In a Test-Driven environment this is extremely important.
With JRuby I even get basically the same kinds of Java integration as Groovy. Indeed this is an exciting time in the development of virtual machines and their support for many languages. Sun is playing catchup with MS’s CLR. But, I just don’t want to be tied to any virtual machine…which makes Ruby just slightly more attractive to (right now).
Geo Data Idea...Rideshare.
March 13th, 2008
As part of my ongoing research under the rVooz project I keep coming back to the origin of the name: rendezvous. Given the hype around geo data – see Where2.0 for validation on the “hype” part – I think there’s some good to be taken away even with the “big brother” risk. What about an application the links individuals (who know nothing about eachother a priori) based on their current geo-location, relative to say a square block or something. The outcome could be something like a rideshare opportunity. The link could be made real via TXT/SMS, IM, or even VoIP, assuming the “user” has authorized the connection.
Granted this may not have any meat anywhere but really densely-populated areas…but, maybe it would serve as a survey to find out if ridesharing is even feasible.
Web services such as Motionbased.com are doing a very good job of collecting geo data related to training or sport activities…this same data could be used for more of a “social networking” concept too. As GPS devices slim and become a bit more ubiquitous via cellphones and navigation systems I feel the opportunities are ripe for more proactive use. What if you tracked your daily drive to work, including timing and found that there were 10 other people that matched your schedule within 10 minutes. Would you consider ridesharing? What if the link was made for you, by registering you and your data via a new web service?
What if this kind of capability was added to an already existing web service, or social networking website? Or, even as an Open Source desktop application?