The Real Python 3000

I didn’t think someone would take the time, but the not-so-lazy web has proven me wrong again. Someone actually wrote an LOLCode dialect and an accompanying translator that converts to valid Python code. Of course, it’s called LOLPython, and it’s truly fascinating. I’m looking forward to playing with it once I get some extra time.

I figured the lolcat meme had died out by now, but it seems to be experiencing a resurgence. Maybe my personal favorite knock off, lolpaul, had something to do with it? :)

LOLPython FTW! LOL!!

LOLCODE Book from O'Rly

[via Daily Python-URL]

Where do software developers get paid the most?

According to data from the Department of Labor, it’s Houston. The blog at delatores.com crunched the numbers from the DoL for us and adjusted them for cost of living. This wasn’t even a close race, folks. Here are some highlights from the post:

Top 10Bottom 10
RankCityAdjusted SalaryRankCityAdjusted Salary
1Houston$102,9081Honolulu$38,766
2Austin$93,8442San Francisco$44,937
3Fort Worth$91,6143San Diego$48,181
4Arlington$91,6144New York$50,492
5El Paso$85,7415Oakland$51,428

Who knew that a developer in Houston had more than twice the buying power of developers in San Francisco.

Well, I didn’t know, but I’m far from surprised. Houston is a serious bargain for anyone who wants all the amenities of a major US city for around half of the cost. The city boasts top notch cuisine, opera, regional theatre, symphony, sports, rodeo, and parks, and that’s just the stuff that I care about :).

Houston also has a large, thriving developer community supported heavily by the financial, biomedical, and energy industries. The Python, Ruby, Java, .NET, and Agile Development user groups each consistently draw at least 20 members to almost every meeting. That’s not bad for a city that spans more than 600 square miles.

Houston also has a burgeoning tech start up community powered by its favorable business climate. It’s not a stretch to say that a $100,000 investment in a company in the Valley will probably burn out in about half of the time as the same investment in a startup headquartered in Houston.

There is no scarcity of programming talent in Houston, either. With Rice University and the University of Houston in the city limits and Texas A&M University a mere 90 miles away, the market gets pumped full of eager developers at the end of every semester. As for experienced developers, who do you think has been powering the space program and the energy industry all of these years?

It’s no secret that I love Houston, and, yeah, I’m a bit of a cheerleader, but I hear a lot of negative things about Houston from people around the country. Most of that negativity is baseless, and it comes from people who have visited Houston only briefly or not at all. Try spending a couple of weeks here, and I’m sure you can find something about the city that you love. So, if you’re a developer, and you want to live and work in a big city, hop a flight to Houston (you can get here non-stop from pretty much anywhere in the US). There are a lot of software companies here, and I’m sure one of them would love to have you.

Steve Jobs Hates Java

I finally read past the first few paragraphs in David Pogue’s second iPhone FAQ, and I was a little surprised to see this:

Jobs: It’s not worth building in. Nobody uses Java anymore. It’s this big heavyweight ball and chain.

As you can probably tell from my last post, I rather like Java, and I also rather like Apple. If that’s how Steve really feels about Java, it’s no wonder that Apple stopped supporting the Cocoa/Java bridge in OSX. I always assumed it was because of the wonderful open-source Objective-C bridge in Python (my personal favorite language) that Apple just couldn’t keep up with. Regardless of the reasons, it’s probably better that Apple chose to focus on Objective-C because the improvements coming in Leopard are very exciting.

The Cocoa/Java bridge aside, I am disappointed that Steve still harbors the ancient misconception of Java being big and slow. This has not been the case since Java 1.4 was released, and Sun has made great strides in performance in its subsequent releases. From my personal experience working with Java both on the web and on the desktop, the platform is more than capable of performing at a high level.

This reminds me of a product I meant to tout in my previous post: ThinkFree. It’s a Java applet based online office suite. ThinkFree is a great example of how powerful applets and Java are. Sure it takes a minute to download the applet the first time, but then it’s cached for future uses. It really is Word/Excel/PowerPoint in a web browser, and it it beats the pants off of Google’s office suite feature and performance wise.

Well, I haven’t written a lick of Java code in 4 months, and I probably won’t for quite a while (at least until the iPhone comes out ;)). So, this is probably my last post about Java as my knowledge of the language and the platform will become stale pretty quickly. I hope to write more about Python and Django in the coming year, though. My current project makes extensive use of them, and I’m having a blast working with them.

Third Party iPhone Applications

Disclaimer:

I wrote this before I read David Pouge’s iPhone FAQ which mentions that the iPhone’s Safari will not run Flash or Java Applets. D’oh! Since I spent some of my morning on Friday writing this post, i figured I’d publish it anyway. The benefits of Java Applets apply to web apps whether or not they target the iPhone. So, hopefully, there’s some value in here.

Update:

It looks like Pouge has recanted the comment about the iPhone’s Safari not supporting Flash and Java. It’s the first item in his second FAQ. This post might be relevant after all!

Todd wrote a post Thursday on his blog that piqued my interest.

The only way to write software for the iPhone that I can imagine is via web applications.

Are Java applets once again an attractive option? Or will devs and users prefer HTML/CSS/JS/Ajax?

I’m of the belief that Java applets have been given a bad rap because of their early history as slow-performing, memory-hogging toys in the 90’s. The truth is that Java is now a very powerful desktop platform, and applets allow developers to use the full power of that platform in a “web app.” I don’t believe that applets will experience a renaissance in the average data driven Web 2.0 app, especially with the advances being made in the DHTML/Ajax/etc. world, but I think Todd has an interesting point with the iPhone.

If the iPhone runs a full Java VM, “desktop class” applications are only an applet away. Deployment is simple. Pushing updates is trivial. Applets are also extremely simple to package and deploy. What seals the deal for me is event handling, drawing API, networking, and filesystem access for offline and advanced usage.

I’ll admit that I don’t have a bunch of experience with DHTML, but I wonder how DHTML compares to Java when it comes to handling events, especially the multi-touch gestures? 2D drawing is also very easy with Java, but this might be a toss up due to Safari’s support of the <canvas> tag. My gut tells me that Java2D is more full featured and easier to use, but I have no evidence or experience to back that up. If the iPhone really runs OSX, then Java also has jogl to do 3D OpenGL drawing. I’m drooling just thinking of multi-touch and 3D. I’m sure you couldn’t do a whole lot with the limited processing power of a small device, but there are still some possibilities there.

Filesystem and network access is a completely different story. Provided that the applet is signed, and the certificate accepted by the user, the applet has the same rights as any other desktop app when it comes to reading and writing files to the filesystem. I don’t know of any equivalent in the DHTML world. The only thing close that I know of is the great work done by the dojo toolkit team. The dojo.storage API only allows you to store data in the client in a specific location, though. It is just for offline storage, and it’s not a real filesystem API. It also requires Flash to be installed and enabled on the client. A Java applet would have access to all of the preferences, pictures, video, contacts, music, etc. stored on the phone. This is a big difference, and opens up many other possibilities.

Applets also have all of Java’s networking libraries at their disposal. You can emulate some of this functionality with XMLHttpRequest, but not all. One example that comes to mind and ssh client, or maybe a VNC server over Bonjour (although I don’t know why you’d want to do that). Obviously, there is a lot more at the developer’s disposal here.

At this point, this is all speculation. I don’t know what kind of tools will be available for the iPhone. If Apple is not going to provide the tools and rights for developers to write real “desktop class” applications for the iPhone, the developer community will find a way to do it on their own. It’s a moral imperative. I’m really interested to see how this all comes out.

Why I Left TextDrive

From the TextDrive helpdesk site:

Please be aware that due to some temporary hardware and network problems we need to work out, backups are not currently being made on any of the shared servers. This situation may take some time to resolve.

So… let me take this opportunity to remind people how important it is to own your data and keep local copies of anything that is important.

This was posted on July 13, and it has not been updated since. In other words, none of my data has been backed up in a month and a half. Even though my blog has been on my VPS at the wonderful Rimuhosting for about 6 months now, I still host my email on my “legacy” TextDrive account (which is down right now…again!). The email server has been down way too often the past few months, most often at peak business times, and I can’t take it anymore. I will be moving the remainder of my Internet presence away from TextDrive this weekend.

I know that some occasional down time is a fact of life on a shared hosting account, but what bothers me most about my entire TextDrive experience is the attitude toward the customer that pervades the company. In most of my communication with the company (whether it be direct customer requests or just trolling forums), the attitude has been similar to this: “There’s something wrong with your server. Another dumbass user like you did something he shouldn’t have. It must suck to be you. Deal with it.” The company is rarely apologetic and frequently blames its customers rather than take responsibilty for its poor service. One thing I learned at Rackspace is that hosting is easy. It’s service and the customer experience that is important. Unfortunately, service and customer experience are the most difficult things to get right, and very few hosting companies are able to pull it off. That is why Rackspace has been so successful while charging more than most of its competitors.

I joined TextDrive because of the hype in the open source community, and I love the idea that a chunk of my bill every month goes to an open source project. I would have been an easy customer to keep. I don’t want to worry about my web and email host, and I definitely hate switching, but I have been driven away. I stuck around too long, and I feel bad that the chunk of money that didn’t go to an open source project went into the pockets of the jokers at TextDrive. I rarely care enough to publicly slam a bad company, but the attitude at TextDrive is deplorable, and I would advise all my friends to steer in another direction.

Whew! Glad I got that off of my chest. I promise my next post will be much more positive.

BarCampTexasTime

I’m heading off to BarCampTexas in Austin tomorrow after work. It should be a great time. I missed BarCampHouston because of a family engagement, so this will be my first camp. I hope to blog a little while I’m there, and I’ll definitely post a wrap-up some time next week. So, if you’re going, I’ll see you there!

Google Analytics for Everyone!

For people like me who were late to the Google Analytics beta party, the service is finally available for general consumption. I love statistics, and I’ve been looking forward to seeing just how few people actually read my blog. So, now you know. You’re being watched.

Selenium has an IDE!

I almost needed some Oops! I Crapped My Pants after I saw this Firefox extention. It makes writing Selenium tests dead easy. Check out the screencast. You can save the tests as local HTML files to be run in the Selenium IDE again, or you can just drop them into your Selenium installation. Sweet! I’ve only given it a try on some simple stuff so far, but it’s preformed beautifully. Too bad I won’t be working on web apps much anymore after this week. ;)

What do developers and Russian dolls have in common?

It’s always nice to be reminded that you’re not the only one, and this post on the Atlassian developer blog does just that. Since I’m too lazy to write any commentary, I’ll just let you read it for yourself.

Paul Graham explains my working life to me

In a recent essay about how to come about ideas for start-ups, Paul Graham was able to explain to me why I feel the way I do about my life in the “Enterprise.”

In an essay I wrote for high school students, I said a good rule of thumb was to stay upwind– to work on things that maximize your future options. The principle applies for adults too, though perhaps it has to be modified to: stay upwind for as long as you can, then cash in the potential energy you’ve accumulated when you need to pay for kids. I don’t think people consciously realize this, but one reason downwind jobs like churning out Java for a bank pay so well is precisely that they are downwind. The market price for that kind of work is higher because it gives you fewer options for the future. A job that lets you work on exciting new stuff will tend to pay less, because part of the compensation is in the form of the new skills you’ll learn.

So, there’s little future in unexciting jobs, and the least exciting ones pay the best? I don’t know if he’s right on, but I think he’s close. One thing’s for sure, being downwind of most things definitely sucks.

Next Page →