27 Apr
Posted by suresk as Economics, Business, Software Development
With the skyrocketing cost of fuel and the increasing impact of fuel costs on American workers, I have to ask - Why aren’t more people telecommuting? My comments are specifically for IT-related jobs, since that is where my experience is, but I believe a fairly large number of other jobs could be done via telecommuting as well.
To give you an idea of why I think telecommuting is feasible (and attractive), here is my typical day, which isn’t too terribly different from that of many other IT workers:
- Get ready for work, throw my laptop into my backpack, and head out the door.
- Drive the 15 or so miles to work. Usually I am lucky in the morning and it only takes 30 min or so to make the drive.
- Unpack and dock my laptop, and get to work.
- Throughout the day, much of my interaction with my co-workers is done via IM and email. People are too spread out (different floors, different buildings, etc) and often too busy for real-time human interaction all the time.
- Work ends, throw my laptop back into my bag, drive the 15 or so miles home (this trip takes me 45 - 60 minutes).
So, each day I drive 30 miles and spend roughly 1.5 hours commuting to and from work. Over a week, that is 150 miles and 7.5 hours - almost a full workday! Thankfully, the new train is starting to run next week, so some of this will be mitigated, but it is still a fair amount of time and money spent commuting. Add to this other problems that are common for many companies - lack of space, parking issues, and other facility issues.
So, why not have employees telecommute a handful of days per week? Think about the benefits:
Employees
- Less time in traffic
- Less spent on gas and maintenance
- Ability to focus on your tasks for a few days (I get far more done on the rare days I work from home)
Employers
- Happier employees
- Less need for parking space
- Less floor space needed for employees
Society, the economy, and the environment
- Less gas being used
- Less pollution being created
- Roads that are less congested
I understand as well as anyone the need for people to be at work in-person and to have face-to-face time with other employees. I don’t think this needs to be every day, though. In fact, I think many of us would benefit from less time available for meetings - people scheduling them would have to think hard about whether or not a full-blown meeting was necessary, or whether whatever they are trying to accomplish could be done with a few emails.
If a large percentage of IT workers worked from home just 2 or 3 days per week, the impact could be quite large - think of all the time and energy savings. There is no good technical reason for not encouraging such policies - technology exists to allow this (many companies already have it in place and use it to a small extent), the nature of our jobs is very conducive to working off-site, and several companies (ie, RedHat), already do it to a large extent with great success.
One argument against telecommuting is that it makes it hard to keep people accountable. I’d argue that it is pretty easy to see who is getting their stuff done and who isn’t, regardless of where they are working from. If you are paying someone $100k per year to write code for you and don’t feel like you can trust them enough to let them work out of your sight for a few days, you have far bigger problems. It also kills me when companies have no problem outsourcing projects halfway around the world to people they don’t know (and can’t communicate with very well), but balk at letting employees work from home a few days per week.
I don’t see why more companies aren’t pushing this, why government at various levels isn’t pushing it, and why more employees aren’t clamoring for it. Yeah, it takes a little extra work, requires some trust on the part of the employer, and may cost a bit in initial setup (VPN, security, bigger pipes to handle the traffic, etc), but to me, it seems like it pays of well in the long run.
It looks as though developers using the Apple iPhone 2.0 (Beta) OS (via the official development program) have been completely locked out of their phones within the last few hours, based on posts on Apple’s forums. To make matters worse, you apparently cannot restore the 1.1.4 firmware. Ouch.
21 Mar
Posted by suresk as Mobile Development, Apple, iPhone, Xcode
I was pretty excited when I saw that you can debug your iPhone apps on your actual phone with Apple’s SDK. Not being one to bother with instructions, I downloaded the new version of Xcode and started hacking away on a sample iPhone app. When I went to try it out, I got this error: “Codesign error: no certificate for identifier “iPhone Developer” was found in your keychain”.
Reading through the instructions, I found that I needed to be a registered iPhone developer - and pay $99 for the privilege. Not a big deal, but after I signed up (I wasn’t asked to pay), I was told I would be contacted when I could complete the registration and (presumably) get my certificate.
I don’t really mind paying $99, but having to wait around for them to let me in is kind of a let-down. Bummer.
18 Mar
Posted by suresk as Technology, Software Development, Java, OS X, Mobile Development
2008 is shaping up to be a great year for mobile development. Google released its Android platform late last year, and Apple has released an early version of its SDK for the iPhone just a few days ago. I’m not a full-time mobile developer, so I figure I’ll eventually have to settle on one or the other to target for my hobby apps. I’ve tried to take a look at some of the advantages and disadvantages to each platform.
Development Platform
One unfortunate aspect of the iPhone SDK is that it is limited to computers running OS X - no development on Windows or Linux. This isn’t a problem for me personally - I do most of my development on a Mac anyway - but I don’t really like vendor lock-in like that. Indeed, this is one of the biggest reasons I have stayed away from Microsoft’s .NET platform. Also, the iPhone SDK uses Objective-C and Android uses Java - so if you have experience with either language, you’ll have a leg up on the corresponding platform.
Openness of platform
I have to admit, the iPhone SDK is nowhere near as locked down as I expected it to be. I was expecting it to be locked down roughly on par with how AT&T locks down JavaME development on their network, but was pleasantly surprised by how much you have access to. Still, it is hard to beat Android’s openness, and Android clearly wins in this category.
Market
This is one area where the iPhone clearly wins - there are already millions of them currently being used, whereas Android currently has 0 devices even available for purchase at this point. Apple’s distribution model for iPhone apps is very compelling as well - they handle sales, processing, and hosting and you get to keep 70% of the price. It remains to be seen what Google will do in these area, but if there is one thing Apple does really well, it is marketing. I was about ready to ignore development for the iPhone, but this single factor alone is making it worth a second look to me.
The real issue is going to be - who does Google team up with as a carrier, and how many phones are they able to sell? All the cool features in the world won’t mean much if you don’t have a very large market.
Cost
A lot has been said of the $99 cost to get into Apple’s iPhone developer program. It would be nice if this were free (like Android), but in reality, $99 isn’t too bad compared to the cost of getting certificates for JavaME apps. Plus, if you are selling apps, the $99 is a pretty cheap way to take advantage of Apple’s marketing and distribution services.
Investment in the Platform
It is clear that both platforms are being heavily invested in. Google is giving out $10 million in prizes, whereas Apple has partnered with VC firm Kleiner Perkins to offer $100 million in funding for iPhone apps.
Features
I would expect both platforms to be fairly similar here. Both platforms will support touch screens. Android apparently will support 3G out of the box, whereas the iPhone doesn’t currently. There is speculation that Apple will release a 3G enabled phone sometime this year, however.
Features are one area where Google’s platform can beat Apple’s - since there will likely be a wide variety of models available. Need more accurate location services? Get an Android-based phone with a built-in GPS.
The last issue is the ability of applications to run in the background. iPhone applications cannot do this, which rules out any sort of IM client, for example.
Cool Factor
Nobody does cool like Apple - the device itself is sleek and attractive. The visual effects are nicely done, and you can tell the level of attention paid to detail.
In conclusion, it is an exciting year for mobile development. Just last year, I was lamenting the state of mobile development due to carriers locking down access to useful APIs. It now appears that the platform is being freed to a great degree, and we now have two excellent platforms to choose from.
It has been interesting to see the various reactions to Java 6 not being included with OS X Leopard. Several people on Javalobby advocated boycotting Apple over this. I don’t think a boycott is in order - in fact, I just bought a brand new iMac, even knowing Java 6 wasn’t on it :) Other people, such as notable Java expert (and Mac user) Ben Galbraith, have characterized the Java community’s reaction as “whining”. I think this is unfair, and rather unfortunate.
The important thing to understand is why people who are both Java and Mac enthusiasts are upset. It isn’t because Java 6 was not included in Leopard, rather it is due to the complete lack of information regarding Java 6 on OS X. Do I need Java 6 right now? No. But I will need it in the future, and it would be nice to know what Apple’s plans are with Java before plunking down $6,000 for hardware. Is that unreasonable? Is that “whining”?
A lot of people have claimed “that is just how Apple works”, as though it were some cute habit that was merely annoying, and that we are silly for even worrying about it. Why is it that people accept that? I guarantee you, if Microsoft did something similar, they wouldn’t get the free pass a lot of people are giving Apple. Here is what I don’t get - Apple does pre-announce a lot of features they intend to add, and there is no competitive reason to be so secretive about its Java plans - why can’t they say something like “Yeah, Java 6 didn’t make it into Leopard, too bad. We are working on it, and will have it out within the next X months.” How hard would this be? It would mollify most critics. Yet the response so far has been silence. Deafening silence.
As my good friend Mike Heath astutely reminded me the other day, IBM too is quite often behind supporting new versions of Java (indeed, it was nearly 2 years after Java 5 came out that we were able to get a version of WebSphere that supported it), and this is probably even more inexcusable than Apple being behind. So, I don’t think it is fair to be hard on Apple for not releasing Java 6 for OS X yet, especially given the improvements they’ve made to Java 5. I do, however, think it is totally fair to wonder why they are saying absolutely nothing about it. It doesn’t make a bit of sense.
Last week, I sold my iMac in preparation for buying a new 24″ Core 2 Duo model when Leopard came out. Now it is out, sans Java 6. I’ve spent the last few hours looking at what people are saying on places like Javalobby, the JavaPosse Google Group, Apple’s Java mailing lists, etc.. A lot of developers are pretty upset about the lack of Java 6 support, and I have to admit I’m more than a little disappointed. Apple’s lack of support for Java 6 is disheartening, and I have to agree with James Gosling’s observation that “…it really hasn’t been keeping up as a developer’s machine…”.
It is easy to assume that Apple is moving away from supporting Java, and a lot of people have commented that Steve Jobs is basically abandoning Java support on the Mac altogether. This doesn’t appear to be the case, however. One of the few positive notes to come out of Leopard for Java developers is that Java 1.5 support on Leopard appears to be significantly improved, both in terms of the LAF and performance.
I don’t think Apple has abandoned Java, at least not yet. The 1.6 previews that were available at one point (I couldn’t find them available for download anywhere today, however) appeared to be fairly solid. I imagine we’ll see Java 6 supported on Leopard in the near future. The question of supporting Java 7 and beyond on OS X, however, is still up in the air.
The real problem is that they are so tight-lipped about their plans, timelines, etc.. This is the real problem, and it is a kick in the gut for developers who have been championing OS X to their managers. The fact is, a lot of companies are pretty set on Dell boxes running Windows. Getting approval to purchase Apple products is often a difficult battle. Now that Leopard doesn’t have Java 6 and Apple has made no public statements about Java support, our managers have one more piece of ammunition to use against purchasing Apple products for developers. I know a lot of developers trying to “sell” Apple hardware to their managers (and doing Apple a favor) kind of feel like Apple has stabbed them in the back here. It is hard to blame them.
I’ll probably still end up buying my new iMac - it won’t be a machine for heavy development, mostly Ruby and Python. It probably will keep me from buying a MacBook Pro, however, and will make my efforts to get Apple hardware at work just that much harder. The sad thing is, a lot of the ill-will and difficulties it creates for developers would be mitigated if they would be more open about their plans and the timeframe for getting Java 6 support in Leopard.
16 Oct
Posted by suresk as Technology, JEE, Software Development, Eclipse, Java
Lately I’ve been seeing a lot of instability and memory issues in Eclipse (Europa) with WTP, both in my own use, from co-workers, and on IRC. Today, a friend sent me this link which appears to show the cause for at least some of these issues. It appears the latest release used:
–launcher.XXMaxPermSize256m
in the eclipse.ini to try to set the permgen size to 256 mb (which is what is usually needed for a wtp setup). This doesn’t work, and as a result, a lot of memory issues occur. It looks as though they’ll be releasing a fix soon, but until then, taking that line out and adding this:
-XX:MaxPermSize=256m
in the eclipse.ini file (after the -vmargs) should fix it.
09 Oct
Posted by suresk as Technology, JEE, Enterprise Development, Software Development, Eclipse
Having finally got Hibernate Tools working with a project I’m working on, I was pretty excited - the HQL console and auto-complete features are going to save us tons of time, specifically, time spent re-deploying the web application as we debug JPQL queries. Time spent redeploying an application is wasted time and can sometimes eat up 30 minutes to an hour per day, depending on what you are doing, so any time saved there is really helpful.
Today, I came across something to cut down redeployments even further - JavaRebel. JavaRebel lets you reload Java classes, making it so you don’t have to redeploy your app whenever you change a class. I was able to get it working in an Eclipse/WTP setup today - the big thing you have to do is disable class reloading on the WTP module. Overall, pretty easy to setup - it only took me a few minutes.
The one downside - it costs $99. The price may be small for a lot of teams though - it pays for itself after it saves a developer hour or so. Definitely worth checking out.