After you've got PHP5 and Apache running on your Ubuntu development server, the next thing you'll want is Eclipse PDT. Shortly after that you'll need a debugger.
On Ubuntu 8.10, I set up Eclipse 3.4 (Ganymede) with the latest Release Candidate of PDT 2, it took forever because of some slow mirrors, but I'd recommend just buckling down and getting through it. Here's the step-by-step guide I found most useful. If Ubuntu someday gets PDT and Eclipse 3.4 in the repositories then just use that.
I want to build an application targeting the Android platform. I'm a little rusty with Java but I really like developing with Eclipse (I've been using it for some other stuff like PHP development). The ADT plugin got me started with the sample applications pretty quickly but now that it's time to deviate and build something of my own I have to set a nice low goal that I can knock out with a high chance of success. Then I can iterate and go a little deeper on the next pass. To start with I think I'll play with drawing primitive graphics. There's an API example called DrawPoints with some code that just spouts out random points on the screen. I took a fair chunk of that and stuffed it in to the "Hello, Android" application I built earlier.
All in all the activity's pretty straightforward and Eclipse makes it even easier. I'd post the code for drawing but it's almost identical to DrawPoints at this stage. The next step is to get some new code in there. I decided to go for my old standby, the Hilbert curve. I modified the code to suit the drawing environment but didn't get results right away. I learned a few things about debugging with the Android emulator and ADT in the process.
As I've been getting started with Android I decided to take some notes. What follows is something I wrote down as I was working on getting a first sample to build and download from Eclipse using ADT. I followed the instructions from Google and tried the troubleshooting directions. My platform is OpenSuse 10.3 Linux. This note might be helpful if you're trying to develop for Android.
I've got a little project I'm working on where I've got an XSLT file that produces an SVG image that I subsequently want to rasterize with Batik. There's also a couple other resources that get built along with that. I've used Batik before for this task and I was impressed. The thing is, I had some long command line I'd set up to use it. While I like the fact that I can just type in what I want to do in the case of a one-off project, it bothers me when I have to go back and re-learn how to use a tool because I don't remember all the parameters that I used.
A build tool is a great way to parameterize what you're doing and keep track of the steps you followed. A build tool can be part of your IDE, it can be a traditional tool like the venerable make, or it can just be a batch file. I've tried all these routes in the past and each has pros and cons. Make is a great tool because it can do so much and is well-suited to the kinds of work that it automates. The makefile also serves as an artifact that details how a build happens for a given target in a given project. Of course the syntax of a makefile can be cryptic for advanced cases and the whitespace issues can be tricky even in simple cases. I was told by an old Unix hack once that there was only ever one makefile - every other one was copied off of that one.
So some clever wag came up with the Ant build tool. It's cross-platform and doesn't have some of the quirks that make does. I'm sure it has it's own, but I haven't seen them yet so I can be optimistic.
Since I'm developing this particular project in Eclipse and Eclipse comes with Apache Ant, I thought this would be a great opportunity to try it out. I want to see how hard it will be to have Ant handle my simple project needs and
Cool, cool and cool.
I'm suddenly excited but I'll try to break this down as it happened (and no, you probably won't be nearly as excited).
I just saw that Joel Spolsky's going to be in Santa Clara in March 2006 for EclipseCon. So of course I have to check when the GDC will be next year. I know it's going back to San Jose next year and I've been looking forward to that. Now I see they've just updated the GDC web site with the promise of more info coming soon. To top it off, the EclipseCon runs March 20-23 at the Santa Clara Convention Center and the Game Developers Conference will run March 20-24 in San Jose - I'm guessing it's on Almaden again. So they're about eight miles apart.
I got to meet Joel for lunch with a crowd of other devotes in Toronto early this year. That was a great experience. I didn't have much to say, but I've been following Joel's commentary for a few years now and it's good to get a little face time. Meeting someone who has been successful in my field and has well-founded opinions that he can clearly express is a valuable experience and was well-worth the trip to Toronto. I got to take a break the rest of the weekend and visit with friends and family too. Joel is a prime example of the celebrity of the geek crowd and he's earned his status. I enjoy that he shares his experiences in a way that's very accessible to his readers. I also saw it as a chance to get my feet wet networking with other entrepreneurial-minded developers. It's great to spend some time with people who think like you, and that made for a great time. With any luck, maybe he'll arrange the same kind of get-together in Santa Clara.
Then there's the news happening with GDC.
I'd forgotten how much I like Java. I've been playing with Eclipse lately, so this inevitably leads down the path to Java development. Really Eclipse is the Swiss Army Knife of Integrated Development Environments. It's built with the same philosophy as Java. It's built with that same mindset that permeates the Java community. I'd sum it up with a simple maxim: Why should I create an object of type X then do all that work of customizing that one object when I can customize a subclass of X? If you don't know what I mean, I'm talking about the practice (and I think this is great) of subclassing, for example, JButton to make your own XyzButton. Then XyzButton has all the features you need in it. The other approach is to create a single instance of a JButton and do the specific work inside that object's code.
Humour me if you're an Eclipse expert already, but I've been taking my time about getting familiar with it. I tried the compound XML document editor a little while back and was less than impressed with it's SVG editing ability. As far as I could tell it didn't even respect the encoding I specified (I couldn't change from the default to UTF-8). Maybe I missed the point of that plugin, though.
So tinkering a bit with a new project in Eclipse recently, I noticed that there's CVS support built in. I like Subversion and have a couple projects stored in Jeff's subversion repository. I love the almost seemless integration of the Tortoise SVN client into Windows Explorer. So seeing the CVS support in Eclipse got me wondering about SVN support. Sure enough, the good people at Tigris.org have an Eclipse plugin called Subclipse.