Why Google Sorta Sucks
I was reading this article in Wired (http://www.wired.com/techbiz/it/magazine/17-07/ff_facebookwall?currentPage=all) about the Facebook vs Google rivalry and how Facebook is attempting to take over the world.
I do have several thoughts on the matter, particularly the fact that Facebook is too niche. It's a social network for personal data. I use it to keep in touch, and really rely on it for the infrequent communications. The truth is, I use it a lot more frequently than that... but when I am busy and drop off for a few days or weeks few people will do much more than comment to me when I return that they haven't heard from me in a while. The connections that are fostered on facebook are those that otherwise might not be, and that's great... but it's still not that personal.
I am not going to divulge my inner most secrets on Facebook. I don't mind sharing some personal information that matters little, like my thoughts on the weather or some boasting about how much fun I had doing X or Y. Much of that is acceptable information for the general public, which means it may as well be on Twitter or my blog. Everyone is different, but I find that few people are talking about their massive hangovers openly, even on Facebook on a Friday morning while you might find people at the office complaining over their morning coffee. A little venting amongst colleagues is acceptable. There is an unspoken understanding there that keeps the matter mostly private. That doesn't prevent someone from writing about others online, but usually names aren't provided so we're all pretty content with the level of gossip.
So for many topics like finding a doctor or planning a holiday destination, Facebook and Twitter are great tools. But there are some topics that people don't openly discuss. Some topics aren't discussed at all. If I am going to learn about coping with incontinence, I am not going to do that through a social network.
But what about other queries that aren't private but are too specific to a group of specialized people? If I am working on a programming problem, I can't rely on a social network to provide the answers. I need to go to many sources (articles, forums, etc etc) and especially don't want a record of it if it is for confidential projects at work. That's when we have to turn to a service like Google.
But Google sucks.
Google has too much out of date information. I run into the problem all the time when solving technological problems. I need the answer that works TODAY, not the answer that worked FIVE YEARS AGO.
Google has a lot of very old, out of date information in its database. I get by on using good queries, but expiring data in the index is such a challenge.
Facebook is a proprietary system that controls how data comes in. This allows them to do a lot of neat things to calculate the validity and usefulness of data.
Obviously I don't have a solution for this problem. Unless people start validating the usefulness of their results I am not sure we will have a solution (unless the google toolbar tracking our every move can deduce enough). Personally, I wont run toolbars and I'm just as lazy as everyone else in that if I need an answer in a hurry I am not going to spend my own time to rate the results. Maybe Google can give me a fraction of a cent every time I do it. Those that are dishonest will have all of their usefulness data expunged from the system... How 'bout it?
Why Must I Still Fill Out My City, State, and Zip Code?
A pet peeve of mine for a long time has been telling a form my city, state, and zip code. If I am providing a zip code for an address in the United States, why should I be made to enter my city and select a state? The drop down select list for the state is especially annoying when navigating through a form using the tab key doesn't work correctly.
Sure, JavaScript enabled forms are somewhat new... but even the "Web 2.0" sites out there fail at this.
The usability complaint I have becomes even more apparent when I am filling out a form that validates my input. The common validation is for a shipping address where the system corrects the address to include the formal USPS spelling and the ZIP+4 code. These systems commonly make this validation an additional step in the process, which is far less annoying than having to enter the city and state. But these systems still force me to enter my city and state!
Enough already! There are free zip code databases available in CSV format. And for businesses that want to go the extra mile, there are pay databases that provide extra goodies like demographics. For this, check out ZipCodeWorld. ZipCodeWorld also has sample code to do things like calculate distances between locations for use in many programming languages - check out their developers area. ZipCodeWorld also has some foreign databases so there is no excuse to provide this feature for just users in America.
So please, make my life (and everyone's) a little bit easier by making your forms a little bit more intelligent. I do ask that you don't throw in some GeoIP to guess the location or limit users to use only their zip code to enter the location.
My last request with regards to forms requesting my location: Don't ask the question unless you're going to mail/ship me something. It's likely that I'll lie anyway.
NetBeans Fail
It only happens on my windows workstation, but NetBeans will randomly fail to indicate in the left navigation that there are problem classes that won’t compile. So annoying.
Java 1.6 + NetBeans 6.5 + OSX
I hadn't actually had a real need to force use of Java 1.6 yet. I did have a Java platform definition in NetBeans for 1.6 and would use that. But recently, my project has become more 1.6 heavy and I've had to switch to a JDK 1.6 source and binary format.
I found a very useful blog post that explained the upgrade here: http://point2blog.wordpress.com/2009/02/17/defaulting-to-jdk-16-in-netbeans-65-on-osx/
This is the relevant excerpt from the blog post by Damien Gabrielson:
Locate the NetBeans config file, typically located at “/Applications/NetBeans/NetBeans 6.5.app/Contents/Resources/NetBeans/etc/netbeans.conf” and open the file in your favourite editor Set the “netbeans_jdkhome” parameter to the JDK 1.6 home directory (ie. netbeans_jdkhome=
/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home)
But that wasn't good enough for my use. I am developing a web application that runs on the Glassfish application server. That too needs to be running Java 1.6. The fix is easy:
- Open the "asenv.conf" file. In my case, it can be found at: /Applications/NetBeans/glassfish-v2ur2/config/asenv.conf
- Set the "AS_JAVA" parameter to the Java 1.6 directory. My entry reads:
- AS_JAVA="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"
Contract Programming… Fun?
I recently came across a blog post (http://www.antipode.ca/2009/the-california-guys/) that was unfortunately not news to me. In summary, the author, one Allen Pike (who I don't know) writes about some bad experiences doing contract programming.
When the Internet first got going, I was more than intrigued. I remember getting a magazine in 1994 or so that stated that Gopher was dead and this thing called HTML was the wave of the future. It was cool cuz it blinked a lot.
So I got involved, and quickly found a circle of people that was involved in some of the lower level Internet services (DNS for one) and by 1996 I was doing contract CGI programming. While in middle school and high school, being taken advantage of wasn't a problem (though should be really). I bought in though and offered my services as a devloper (self taught and young). During those times, the money earned could be very lucritive and no one knew what was possible yet.
By the time I graduated high school several years later, things had changed. It was much more commercial, and Yahoo was no longer updated by humans. The search engine vultures appeared before I realised that real money was available on the World Wide Web, and I sort of got in before the bubble burst. My custom programming services expanded to a level that included a large number of outsourced developers around the world.
Anyway, enough back story.
When folks see dollar signs, they stop thinking. They demand a lot and don't expect to pay for it. The hours spent go easily for a developer enjoying the project. It's all so wrong.
A doctor will attend many years of schooling for a mature science that no longer is changing rapidly. They will generate huge incomes because they have learned this large scope of knowlege and can put it to practice, despite the fact that most must specialize because general medicine is too broad to maintain anymore.
Software is not yet mature and requires a lot of energy to be spent on learning. Software doesn't build itself, and you end up burning the midnight oil. Yet at the end, you walk away with very little money or respect.
Some might say to hang in there. The value of the programmer will be seen down the road. I personally don't think so, but that's another conversation.
The bottom line is a simple suggestion that's hard to follow through on: Write up a contract and include requirements.
That's it.
A doctor can go into an operating theatre to "look around", and you'll wind up in the hospital missing an organ or worse. A $10k procedure will turn into $100k.
Developers screw themselves by agreeing to do a lot more work than initially agreed upon. This is pretty much 100% of the time too as pretty much 100% of clients don't know what they want.
Perhaps developers should get more psych training. Classes in mind reading would help.
My advice, just know that the majority (upwards of 80% sometimes) of what a client demands is not going to meet their mental requirements.
Passion helps.... a client that can make you believe in the product is both awesome and dangerous. Getting caught up in that passion, and still failing ultimately because the idea was flawed can be a great experience... no better way to learn than from mistakes, right?
The bitter cynic does not help.... that's why I stopped taking a lot of contract work. The pool of outsourced developers I had became sour and lazy.
My final thought: There aren't many great projects out there. I hope you get a great one, but if you don't be level headed about your approach and the expectations you set. Passing on jobs can work out well... the most lucritive jobs I had were fixing the messes created by other developers.
Java EE / JAAS Night Terrors
Working with JavaEE 5 brings up a lot of new challenges when developing an enterprise level web app. The first issue I noticed is the absolute lack of experience for those in the job market when it comes to EJB3 and JavaEE 5.
But lately, I too am struggling to figure out the right way to put these "standardised" Java technologies into play. So far it's like inviting the school bully and his cronies to your back yard 12th birthday party, as well as the lame/runt kids, and trying to get them all to play Pinochle and not fighting.
The past few weeks it's been the JAAS struggle. Open source frameworks like jGuard might be able to help me, but the end result is that my architecture is a bit too complicated.
The real problem is with regards to web services, specifically trusted services. The SOAP client takes on a JAAS role, but based on other session information will assume another user/role. It's a headache and there's very little on Google.
I'll follow up on this later.
