Skip to content.

Manageability

Sections
Personal tools
You are here: Home » news

You Did What? Buy a Blue Bluetooth Bimmer (BMW) on eBay?!

  • Posted by ceperez
  • Published: 2008-02-29

So it was high time that I replaced my aging 1997 Honda Accord Sedan. The Honda Accord was unfortunately a car that just would not die and get replaced. I bought the Sedan to replace my BMW 318i Coupe when my first child was born. Although I loved that car, I couldn't keep it considering the expensive cost of parking in Manhattan. So, I had to settle for something that was just plain, simple and reliable. Unfortunately, the car had so little personality. I tried to enhance it by augmenting it with a set of wide alloy rims. It made for a much sportier look, but the same reliable conservative drive remained. So, when it came time for its replacement, I was determined to get back that exhilaration of driving a Bavarian Motor Werks car.

I was looking for a mid-sized car (for 3 kids), late model styling, conservative fuel economy and something that wouldn't break the bank. That car would be the Chris Bangle's (Watch "Great Cars are Art")BMW 525i or 530i (I also thrilled with the fact that its iDrive is based on Java and OSGI ;-) ) These cars have a wide enough back seat section to accomodate my kids, the styling albeit controversial is one that many car makers have begun to mimic and 28mpg is the same as my old Accord. The open question then was, can I acquire it without breaking the bank? A new BMW 525i has a MSRP list price of over $45,000. The Certified Pre-Owned BMWs were priced at the mid to high 30's.

The depreciation rate on a new car is just ridiculous. In the first four years that one holds any new car, its value would have decreased to 50% of its value. My own experience tells me that a 4 year old car with less than 50,000 miles on it, is for all intents and purposes practically new. It's not going to have a mint exterior, but that lack of exterior perfection prevents you from worrying about the first inevitable shopping cart scratch. The older car also has that benefit of having some of the little kinks worked out, it's like getting a system that's 'burned in'. So with this thought in mind, I set out to acquire a Bimmer. I've heard of fantastic tales of folks buying a used car at such a bargain and sell it a couple years later at almost the same price they got it. The question now is, where can I find such a bargain. The obvious answer, on the Internet of course!

The three sources I used were Cars.com, Craigslist and eBay. I limited my search to within 50 miles of my area. I definitely would need to see and test drive a car prior to any purchase (who wouldn't?). Although in hindsight, if I wanted the best possible deal, I should have considered paying for a ticket to fly to see a car. Cars.com had the largest listing of BMWs. A lot of traditional dealers and private postings can be found there. I found a private posting that was at a ridiculous low price of $20,500 for a 2004 BMW 525i. I didn't follow up on it because my wife perceived 66,000 miles of mileage to be too high. I also found a 2005 BMW 525i from a Virginia dealer for $21,500. Unfortunately, when I came to inspect it, it appeared that the car was literally pulled out from a flood. The exterior and engine was in pristine condition, however there was something not right with the interior. It felt like the car was 20 years old inside. I hastily walked away from that deal! It's going to be tough for me to place one's trust on just the photos (and the possibility of photoshopping) on a website.

Fortunately for me, an eBay listing by a dealer in my area posted a 525i BMW with 41K miles and in my price target. I offered (on condition of course that I inspect the car prior to the commitment) about a thousand below the 'buy-it-now' price and got it accepted by the seller . I found it reassuring that the dealer's posting detailed every little problem with the car, from tiny dents to worn out tires. The Carfax report also showed no suspicious gaps (read a Carfax like a resume, take notice of any gaps with the mileage of the report and what's sold). To top it all, the car was still under BMW's manufacturer's warranty of 50K miles/4 years. The only item I was unsure about was the color, the photos in the internet seem to show it as being a bright light blue.

I had a flight the day I bid for the car, coincidentally the dealer had his lot near the airport. I could inspect the car prior to my departure, interestingly convenient. I met the dealer, Bob Adams in a hotel near the airport. He came with the car for my inspection. Bob is a dealer who has a 'hole in the wall' for a store that gives him requisite requirements to become a dealer. That is, a lot to hold cars and a store that's open in the daytime. Bob's real store is actually virtual, it's on eBay open 24 hours and most of his lot is virtual (i.e. 'borrowing' other people's lots). His dealership is just him and his nephew. In short, he runs a low overhead business. In a former life he was a stock broker, I would gather he's employing a similar arbitrage strategy for his car business. He takes high end cars that require absolutely no maintenance from dealer auctions or trade-ins, quickly turns them around on eBay for surprisingly minimal margins. Kind of like 'day trading' cars.

I was certainly surprised to find how appealing the blue Bimmer turned out. Yes, it did have the little problems as advertised, but prior to seeing the car in person, I had my expectations properly managed. There were no surprises. The deal was consummated with me clicking on the eBay 'buy it now' button. There was of course some real world stuff like providing a check as deposit and recording the dealer's license information.

On the day I was to take possession of the car, Bob made sure that the tank was full and that the car was detailed. All had provided all the necessary papers to complete a car purchase (i.e. 'Bill of Sale', Registration and Warranty). I had a cashier check for the balance of payment. It's unavoidably tricky on a transaction like this when one doesn't really get the title. Yes, I have the car and the dealer has my money, but I don't really *own* the car until I have the title. That Limbo-like state in the transaction kept me uneasy. The transaction was complete, when I did get the title fedexed to me a week later. I had acquired a like-new BMW for half its original MSRP list price. I'm told that I got it at 'wholesale' price, whatever that means.

It boggles my mind why so many people would pay full price! It's even more surprising that I meet people who can't imagine buying such a big ticket item on eBay. It's really disruptive to the traditional car dealers, and there appear to be a bunch of folks making a living on the on-line car arbitrage business.

There's one last thing I must mention. What upset me most about the my new Bimmer was that BMW's bluetooth didn't pair up with my Nokia e70. To add insult to injury, it paired up my wife's iPhone without a hitch!

Top Five Java Technologies that Didn't Make the List and Why

  • Posted by ceperez
  • Published: 2008-01-31

I'm delighted that Joseph Ottinger has so graciously posted my previous post "Top Five Java Technologies to Learn in 2008" on the Serverside. A list limited to a select five entires surely will bring out some controversy. There will always be those who would feel left out. Of course, the list could have been expanded to 10 entries, but that defeats the entire point. As the Attention Economy has revealed, an individual's attention is a scarce commodity.

Its been suggested that Polyglot programming be in the list. Even though I do subscribe to the notion that learning other languages are beneficial to one's craft, it simply is not pragmatic advice. It is not practical to recommend that someone study Ruby, Groovy, Scala and who knows what other language is vying for your attention. Stick to a couple of languages and do it well. Some languages are better than others for certain tasks. However the biggest fallacy of all is that, a dynamic language is not considerably better than a static one. It's no magic bullet.

Finally, of the Five technologies I selected, there's an underlying recipe to it. That is, all are about infrastructure. See, it isn't about the language. If anything is going to make you successful in creating the next killer it app, then the platform that it runs on would influence your success more than your selection of language. As anecdotal evidence, look at the Chandler project, they had to re-invent the wheel several and in fact did that several times. Life would have been simpler if they used what ever was out there. Unfortunately, NIH reared its ugly head before it was too late to notice.

Let me go down the list to explain my point about infrastructure. OSGi is about managing the complexity of deployment. The default Java classloading mechanisms are clearly inadequate for a system where multiple versions of the same jar file are used. A higher level structuring mechanism is required and that is what OSGi precisely provides. Bill Kayser has a very good read on this matter:

In most cases, the JVM still loads classes from the big vat of class soup indicated by the class path. What is needed is something more fundamental, something that would completely “invert” the control of the whole application, executing everything as services, not the chosen few components.

Java Content Repository (JCR) is about managing unstructured content. In my development travels I find it disappointing to find that most projects consider a RDBMS as the only choice of data storage. It is clearly unfortunate since almost all systems require some kind of unstructured content storage. Even though you could shoehorn your data in blobs in a RDBMS, there still remains the additional task of building infrastructure around it. For example, how would you search through those blobs? SQL's text search mechanisms are going to be a massive disappointment for those who are all too familiar with Google. But going beyond just usability, there will always be the need for users to annotate the data they work with.

GWT is about managing the complexity of Javascript. The two main problems with Javascript are (1) the extreme flexibility of the language and (2) the lack of consistency of browser implementations. GWT tackles the first problem by employing Java and treating Javascript as an assembly language. For most developers, it should not be necessary to have to delve deeply into assembly language to get your tasks done. The second problem is handled by the maintainers of GWT, they have painstakingly crafted variants of the Javascript that is generated to handle the different nuisances of the browsers. As browsers continue to evolve, GWT developers will continue to tweak their compiler. We should all be thankful that someone else is doing this arduous work.

Then there's the controversial selection of Groovy. Groovy allows you easy access to meta-programming features in a dynamic manner. Java infrastructure has continually improved its meta-programming features. It has progressed initially form JavaBeans then to BCEL/ASM (runtime bytecode management)to finally Annotations and Aspect Oriented Programming. Groovy's meta-programming features is one additional method in the tool chest. Of course, the scripting language shortcuts are indeed helpful.

Finally there is that notion of cloud computing. Cloud computing has been around for some time now, however I think Amazon's entry into the space with a pay as you go model is truly disruptive. It is the convenience of it all that makes it all different. The amount of time saved, by not having to do it yourself or even not having to require a conversation with a human to get it done, is tremendous. The ability to scale up without a massive up front investment is changing the playing field as we speak.

In summary, the list is about technologies that add a base infrastructure to build you next killer app. Surely you can use whatever framework is out there, but ultimately your success will be influenced based on how much work you didn't have to do by leveraging what was already out there.

Now going to the top five technologies that did not (or just barely) make the list:

  • #5 Android - Google's attempt to turn the telco space on its head. This is expected to be not only game changing but disruptive. I of course will like to wait for (a) an actual hardware device to play with (b) Google winning the 700Mhz spectrum and (c) the deployment of 700Mhz cell towers across the states. The problem I have with Android is the problem the plagues J2ME devices. How do I keep my sanity as the variety of mobile devices increases exponentially? I have yet to have heard a compelling story (OSGi perhaps?) in this area. That's plain unfortunate because it's the biggest pain point for mobile developers.
  • #4 JRuby - Rails is certainly getting a lot of attention; JRuby channels that attention towards the JVM. The Ruby job market has grown to a stunning 3.3% of the size of the Java market. If you need something new (don't ever try this with legacy code) then possibly the quickest route to a working application is via Rails (use Streamlined while your at it). However, not all applications consist only of CRUD screens, you'll need to add more mojo into it. That's when you have to question Rails viability. Convention over configuration only works well if you're building something conventional.
  • #3 Scala - Scala is a brilliant well thought out language. It's a language that is not only extremely expressive but one that doesn't have the performance baggage of a dynamically typed language. In short, you could use it to build bleeding edge infrastructure stuff. The kind of stuff you would never dream of building using slow as molasses languages like Ruby. Sure, you have to subscribe to the static typing religion, it's an unfortunate trade-off you have to make if you want to build really tight systems. It however didn't make the list because I would only recommend it to 'rocket scientists' building serious heavy lifting infrastructure. Web front end developers need not apply.
  • #2 Seam - Gavin King (Hibernate's creator) is an accomplished developer. So when he builds another framework, it behooves you to take notice. Seam is his latest creation and it merges JSF and EJB3 into a seamless workable framework that's all hangs together with Annotations. Unfortunately, its strength is also its weak spot. All that annotation work is going to be a nightmare to debug. Personally, I think Spring is good enough, however if you must have an overarching framework then Seam would be it.
  • #1 Flex - If anything should have been on the list, this would be it. If you want to build rich applications on a browser then plain DHTML and Javascript isn't going to cut it. The most innovative desktop like applications on the web are unfortunately built on Flash. GWT isn't going to help you build applications like YouTube, Mindomo, Buzzword, Sketchcast or Pandora but Flex will. The bad news is that Flex isn't Java, however the good news is that Adobe's soon to be open sourced server (BlazeDS) is thankfully in Java.

So if you do have that extra bandwidth, I would recommend learning about these additional five technologies. Who just never know, these just might be the top five for 2009 ;-).

Top Five Java Technologies to Learn in 2008

  • Posted by ceperez
  • Published: 2008-01-30

Software Technology will always been in constant flux. Change will always be inevitable. So as a Java developer you need to continue to groom your career by learning new techniques and technologies. It's both a curse and a blessing. It's a blessing because Java, without a doubt, is where a lot of innovation happens. The question though is, out of the multitude of Java projects out there, which ones should we invest our limited bandwidth on? This is my attempt at answering this question.

Here is what I humbly believe to be the top 5 Java based technologies to learn in 2008:

  • #5 OSGI - Reality check, monolithic containers carry too much baggage and Java libraries are so richly cross dependent. The trend is there, a lot of frameworks are moving towards OSGI to bring some sanity in their deployment. Projects that have employed OSGI in anger are Eclipse via Equinox, Nuxeo and BEA Event Server,
  • #4 JCR - Reality check, not all data fits well within a relational database. In most cases, users want to store their own documents and have those properly managed (i.e. versioned). JCR with it's Jackrabbit implementation is becoming the de-facto standard for maintaining data other than the structured kind. Some examples of projects that have used this in unexpected and innovative ways are Drools BRMS for managing business rules, Apache Sling for universal resource storage and Mule Galaxy for SOA governance management.
  • #3 GWT - Reality check, AJAX is here to stay and Javascript is still a pain to work with. GWT is gaining traction like wildfire at the expense of other Java web technologies like JSF. A lot of projects have begun creating extremely cool products with it. Some impressive examples are Queplix a CRM, Compiere an ERP and GPokr a multiplayer Texas hold-em poker game.
  • #2 Groovy - Reality check, sometimes you have to write quick and dirty scripts to get your tasks done quickly. There's a lot of traction these days for dynamic scripting languages like Ruby. However if you want to truly leverage your existing skill set, then it's more efficient to take a evolutionary step. Groovy has come a long way since it's rocky beginnings. I believe Groovy is finally mature enough (it finally has a debugger) that it's safe to dip your toes in it. Furthermore, there's are a of books, books about frameworks (i.e. Grails) and tools (i.e. IntelliJ) that help you from getting lost.
  • #1 Cloud Computing - Reality check, sometimes it just isn't worth it to setup your own physical servers. Amazon's services are going to be an extreme boon to development productivity. One of the most time consuming efforts, and one that is too often taken for granted, is the deployment of a load and performance testing harness. In a lot of rigid organization, it is sometime problematic to acquire so much hardware for use only for short time periods. There aren't many tools out there yet for the Java developer (see: "Grid Gain Distributed JUnit"), however it's ramping up pretty quickly. So just as we create our builds from the cloud via Maven repositories, one shouldn't be surprised to find cloud based testing resources to be part of every developer's tool chain in the future.

With all these nice new shiny objects to play with, I'm constantly surprised why people keep claiming that Java is dying!

I'm certain you are all agreement with me on what belongs to this list. However if you've got some violent objections, I certainly would like to hear your view.

UPDATE Here are the "Top Five Java Technologies that Did Not Make the List".

visitors
reading
 
 

Powered by Plone

This site conforms to the following standards: