SOA/Integration/EA Info sites
Since one of my main responsibilities is to keep up with goings on in the SOA/EAI/EA space, I try to read a ton of blogs and web sites.eBizQ
has been pretty handy with their free webinars. They are usually dull (as their archive
shows such gems as "Measuring the Value of BPM", "The ROI of SOA" and "Where Data Meets SOA: Data Services"), but are actually a pretty decent source of ammo for when the suits start asking the tech group about why we should spend money on SOA initiatives.
This isn't an astroturf post, just a useful site that I wanted to share with the SOA/EA crowd. Add it to your filter along with the other free IT magazines and sites (Infoworld, Baseline, CIOInsight, etc etc).
I'll eventually gather all these web sites, magazines and blogs into a google spreadsheet
or my del.icio.us
Defining Architect roles
A few weeks ago, I read a serverside post
that referenced marty andrews' post about defining software architecture roles
. These posts happened just in time, as in the past two weeks I've been asked this question over and over.
My employer has been trying to define what exactly an architect is so they can create a career path for other engineers and architects. Currently we have:
- Associate Architect - junior guy, works on components on a system. Journeyman architect for a better name.
- Architect - Able to design components of a system with supervision by senior architect. Knows at least one language or methodology.
- Senior Architect - Can design component systems and all technical aspects of a particular product or application. Usually was a master of a particular language and really knows DBs, XML, services, UML, networking. This position maps to Andrews' "System Architect".
- Lead Architect - Can design multiple products and systems, including how they interact with each other. Designs boundaries and interaction. These guys know all about database modeling, performance modeling, message queues, more than a senior architect. This position maps partially to Andrews' "Solution Architect".
- Principal Architect - Works with multiple systems, company technical direction, customer/ industry facing. Can communicate with business units what architecture is and how it benefits, etc etc. Some more soft skills, but really knows everything about designing systems, how they interact and what the technical reasons behind enterprise decisions are (i.e. "Why did we choose MySQL over Oracle?" "What did you use Ruby instead of Microsoft?") and knows current and upcoming industry trends. This position maps partially to Andrews' "Enterprise Architect".
This is what the titles are supposed to mean, but in my company (and perhaps yours) they really just mean how much you get paid. So they could just as well be "Architect 0" through "Architect 4".
But there does seem to be a large set of high paid consultants out there who practice "Enterprise Architecture". Sort of big picture guys who are able to go into non-tech huge companies and help with the 25k feet picture. This seems like the only real definition that really fits the term "architect" as far as technical systems are concerned.
Calling BouncyCastle provider explicitly
I started to reply to ginni's comment
to my last post
but ran out of room so I will expand on a separate post.
Since specifying the provider wasn't working properly, I had to skip the JCE API and call out to BouncyCastle directly. Following the 1.34 javadoc
, I wrote some code like this:
byte clearBytes = myString.getBytes("UTF8");
org.bouncycastle.crypto.digests.MD5Digest md5Digest = new MD5Digest();
byte hashedBytes = new byte;
That's pretty much it. You can then use something like Jakarta Commons Codec's Base64
to encode into a printable String.
byte base64Bytes = org.apache.commons.codec.binary.Base64.encodeBase64(hashedBytes);
String displayableHashValue = new String(base64Bytes, "UTF8");
Of course this method has its drawbacks: specifically that if you ever want to use a provider other than BouncyCastle, it involves code changes. But this was the fasted way to get the system running without error. And the likelihood of us ever replacing BouncyCastle is small enough that I can live with code changes.