5 posts tagged “jboss”
My heroes Redhat (owner of JBoss) have a market cap of $4B, which is under Bea's (owner of Weblogic) $6.5B.
I'm a little confused by this, since Weblogic is really hard to write good JEE applications for. Again, it excels in textbook-based web development but not at all friendly from a management, component integration, configuration, or extension point of view.
Bea/Weblogic has eventually woken up, and now provides integration for the Spring Framework. Spring is this (messy) component integration framework which provides about 10 ways to do one thing. From a management standpoint, what's provided?
Well, there's this hard-to-integrate MBean you have to create which tells Weblogic that these other MBeans you created belong to the application. The development kit has the .jar file you need to use, but it's not really documented and you have to obtain it from their sample applications. No source code either.
Then as for the console itself: Clicking on an MBean takes you to the attributes panel which has multiple links that all link to irrelevant help pages. Then, for the operations you have to go to yet another panel.
One problem with hierarchical UIs like Weblogic is it's easy to go down the wrong path for quite some time. Although JBoss's JMX console provides in some respects Everything At Once, it's comprehensive and you can easily use CTRL+F (find) to jump to links you want to navigate through. Finding what you want every time is a matter of recalling what things are called, not what 2-3 links you need to click in order to find what you know is there, someplace.
And in other ways, Weblogic 9 actually has worse management than 8. There's this notion of transactional change sets, which is great for times you need to combine multiple management procedures, but often times you do things incrementally anyway. For instance, to start an application requires locking and beginning a change session. Then, you click through and select the application to deploy. Then, click some button to initiate deployment. Basically, 3-4 times more clicking than in Weblogic 8.
JBoss hired some new guy who's off adding new methods to a Java interface in a point release of their product. This is because they had no generic expansion point to add information ("meta-data" as it's called) to the existing implementation. Pretty much every coder knows that in an incremental release of a product, you don't change your Java interfaces because any change can break existing customer code.
I pointed out some months ago that adding a generic meta-data interface is a good idea, but maybe I just confused all of them by pointing out that you could also more efficiently internally represent and consolidate the flags in a bit fields. For example, many desktop computers are 32 bit, and you could have 32 attributes represented in a single byte, which turns out to be 32 more space efficient than using a byte per attribute, though a bit harder to code for. So, in my mind my suggestion was a "two-for-one deal", as my friend Kevin Steffa likes to say.
Good design is like this: You have to know what to put in, but most importantly know what to leave out. And this brings me into my talk about cycling.
I was at Perfect Wheels a few months back and a friend (customer?) of Larry's was in and I was in my bicycle. He was intrigued by the Ritchey Break-Away on the wall, and I helpfully offered to let him ride mine. The one on the wall was geared as a fixed gear and mine as a 10x2 speed. He said, I assume jokingly, that gears "confused his mind" and implied that my (in my view) minimal road bicycle was somehow overly elaborate.
I didn't have a strong rebuttal. I got his point.
My old friend Mike Bloch once talked about, on some hike so many years ago, how certain members of Swiss army rode bicycles that didn't have gears. I was rather incredulous and couldn't imagine why the country of the "Swiss Army Knife" wouldn't have a military that would issue bicycles with gearing to climb up mountain passes. Having ridden a fixed gear myself up some fairly steep hills, I understand now that it's quite possible, and not as arduous as it sounds, and additionally for those in the army would be a fair bit more dependable, with less moving parts and a stronger chain. People on the front lines don't want their chain to break or fall of. (I still don't know if his story was entirely true or an urban legend.)
As to computer parts: Most keyboards have dozens of keys even a hacker like me don't need or use: Hackers now can have their own minimalist 60-key keyboard, one with no letter markings. I would get one, except I use a laptop not a desktop computer. The cheapest keyboards, ironically, have the most buttons. For $3 online you get 109 keys with web browser navigation buttons or "media" keys, though I imagine most people with them don't ever use them. The aforementioned blank keyboard retails for $267.53.
And to bring this discussion back to the JBoss coder: He didn't intuitively understand that the existing meta-data functions and new ones were related, so he didn't see any purpose in generalizing. His approach was along the lines of extending a 109-key keyboard by adding new keys. My suggest approach was trying to design features under the 60-key paradigm, by suggesting along the lines of "Leave the existing keyboard alone and add new features with a specialized device." The analogy doesn't fit perfectly but maybe many non-coders who design things can see the difference.
I was introduced to JBoss at m-Qube, when several developers selected it to build the applications that made up the m-Qube initial offerings. Once I got over the initial discomfort of understanding this new system (from Tomcat I had used almost exclusively at Openwave), I fell in love with the elegant JMX microkernel and the powerful built-in features which I had previously had to write myself or bring in with third-party software. I later started building additional components and -- most importantly -- identified or fixed many bugs in the product. Soon after a few patches, I was able to get access to the source code and make modifications myself. Although I didn't find Adrian Brock or other JBoss developers to be very welcoming of my contributions, my code got to get in.
The system built on top of JBoss at m-Qube eventually attracted several buyers. Last year, the company was bought for $250 million in cash. Without JBoss, and the fact it was open source (free software) and open for me to add critical features, I'm not sure we could have easily built the software that we had. Perhaps if we were on top of a proprietary system our market valuation would have been less? It's hard to say. Sometimes the features, such as the messaging system, were buggy causing outages. There were problems in upgrades to newer versions that caused random start-up class-loading hell, some bugs that got me up in the middle of the night on the phone with our operations team. But proprietary software is not necessarily less buggy, and if it is, you rely on your vendor for help and cannot often fix the problem yourself. That puts you in a powerless situation many times.
Last year, I quit m-Qube after acquisition by Verisign. I was ready to move on from my four years. I was actually looking at JBoss as a potential employer and had interviewed with them, to join with the JBoss Messaging team. I turned them down, because they offered less salary than m-Qube was paying. It also seemed likely I would be working hard or harder than I was at m-Qube, which was pretty hard and tiring, and Autodesk was attractive for being (likely) less stressful.
One of the downsides with Autodesk was I would be "forced" to work with BEA WebLogic. This is not entirely bad, as Weblogic is arguably the best proprietary application server. However, it was immediately evident that Weblogic was missing many useful (perhaps key) features that JBoss provided back in 2002. And as part of the next release of a system, I'm considering JBoss Microkernel integrated with Weblogic as a way to gain some of the features I miss.
Autodesk has been very kind in allowing me to go to JavaOne. Typically, when a largish company is doing well, they allow their developers to go to trade conferences. I don't know to what end, though I'm learning a bit of this and that. It's unlikely that many things will be adopted by the fairly conservative division. If anything, I understand my position as a Java "expert" a bit better.
I'm also here to have a good -- though educational -- time. From the JBoss.org website, there was a party scheduled for tonight, which simply required a registration form to be completed. I was generally curious as to the content (Who goes to these events? What sort of food or music do they have?) as well as I wanted to meet some of the developers I usually interact with only on-line. Now, I don't really have "friends" I continually interact, mostly people who from time to time send me messages. But I wanted to put a face to these people.
I met a few non-JBoss developers from Holland. Some JBoss people were kind enough to approach us. I met some old guard JBoss developers. I also met a developer from Singapore working on some distributed processing software built on top of JBoss. I ran into the JBoss recruiter who was interested in finding "top level" Java developers. I talked about my reasons for turning down JBoss (stated above). And despite any body's outward interest, I rambled on about some of the software I worked on, on top of JBoss. I ate some food and drank free beer. The party started winding down around 8:30PM.
I wish the JBoss team a lot of luck. I hope that, if for some reason, I get fired from Autodesk or can't find work elsewhere, I can work with the JBoss team. And I'm sure if I moved to Fiji they'd let me work there, and that sure would be convenient.
I was first introduced to IOC (inversion of control) programming when I joined m-Qube (then Proteus Mobile) back in May 2002. Of course, at that time I didn't know what IOC was, or dependency injection, etc. The JBoss JMX Microkernel provided a very simple way to write MBean services and deploy them without having to write XML files. In addition, there is a notion of service lifecycle.
By creating a few classes and creating an .xml file, then copying classes and .xml file to the server, you can adapt and deploy your services in about an hour. These services can easily be introspected, stopped, started, modified, etc. and service dependencies are correctly handled.
What does Spring provide? Well, there are ways to deploy MBeans easily and hooks for your beans to implement to add lifecycle operations. However, there is no standard way to expose these lifecycle methods and no service controller equivalent. Services seem to only be undeployed when the application context is destroyed, which includes the entire application. There is no JBoss ServiceController equivalent which allows fine-grained control over bean lifecycle when the beans are already deployed.
It sure would be nice if Spring would be as easy as this 5+ year old system.
The new JBoss Microcontainer doesn't really have the same base classes such as ServiceMBeanSupport. I'm looking at how this might work. It may be complicated enough that I simply work with the SARDeployer instead.
After a few rescheduling events, I was finally contacted by Google for a phone screening.
A phone screen interview is where you answer a bunch of involved technical questions, usually related to computer science algorithms or general thought problems.
I got to bed quite late last night and was woken up early (I was talked into some sort of Nintendo Wii testing) and was busily working up until the call. And Rei (the cat) was running around screaming his head off. So, perhaps due to my poor preparation I might get passed up. I didn't really understand what sort of CPU scheduling issues would result in starvation, if there wasn't a resource lock of some sort. Jessica sort of through out a bunch of CS questions which you wouldn't really parse unless you were recently out of CS or a domain expert. (That's my excuse if I fail.)
One question on code reviewing I sort of blandly answered: As long as I understand what is being fixed (bug number or requirement), and there is a test, I don't really give them too much thought. Here's basically why: (some I mentioned) If the purpose of a code review is to catch stupid errors or logic errors, then the tests should catch those. If the purpose is to cover style issues, the next person to edit the code can more easily fix them. Humans might provide some help if something is sub-optimal (a better algorithm exists), but premature optimization being the source of evil, I don't really care. I guess they get into the way of getting things done and don't really add too much value compared to the ceremony level they have. I've found "developer focused" companies such as JBoss don't have code reviews, though the code changes are sent out to the list.
At the end, I asked about "why no shuttle service for Kirkland" and if their company culture was anything like Microsoft's. (Microsoft being some sort of lord-of-the flies haven for immature nerd boys who spend all their life at work. Steve "chair throwing" Ballmer being their leader.) The answer to the first question was that only a few people took the shuttle, so they dropped it. Jessica said that crossing the bridge was no problem, I pointed out that it wasn't the crossing, it was the exiting and entering and there was no bus solution from North Seattle. The second answer for me was "of course we aren't like that" -- which is what you would expect to hear.
Assuming they continue talking to me, I actually don't think I will pursue them. First of all, I don't want to drive and I don't see myself taking a bus regularly to Kirkland downtown (two buses, or a bike to Montlake and bus trip) every single day. Secondly, for some reason I don't think they have the salary or other incentives (bonus, stock options, gourmet food, etc.) at my level. Lastly, I don't know how I would fit in there. It feels very lonely being a grunt in a large company; perhaps as a technical manager or something I might not feel as oppressed. We'll see.
I walked away from an Amazon offer in 2002 and had their VP call me. I wonder what happens to people who turn down Google's offers? Do they follow you in a black van and eventually haul you away?