us_soccerI’ve played soccer all my life (yes the sport is very popular in America!). The US national team beat the #1 team in the world tonight. A huge win over Spain in the Confederations Cup.I almost knocked over the dinner table jumping up  when the report came over the news.

Here’s the best link: http://soccernet.espn.go.com/report?id=270153&cc=5901

That’s just fantastic! Great job guys! Spain is a great side; they haven’t been scored on in like 17 games and has won 35 straight. I didn’t even watch the game – didn’t even record it.

I sure hope it gets re-broadcast. The final is this weekend in South Africa.

I’ve used VMWare on and off ever since it first came out. Both the server and workstations products revolutionized the data center and brought huge power to a developer. These days I’m back into more pure software development so a desktop virtualization product that I can use to have multiple OS configurations for running servers, databases, or experimental tool configurations is a must have. My base OS is Win XP Pro running on an IBM ThinkPad T61p.

I’ve had the latest version of VMWare’s free Server product running on my laptop, but I’ve had it. I use my laptop as a…well a laptop and it seems that VMWare Server is not capable of playing nicely and EMC seems rather uninterested in fixing it. What’s the issue? If you take a laptop in and out of standby every 10th time (an average estimate) you will get the glorious BSOD. I’ve poked around the internet and forums and stuff without coming up with a solution. Even a complete disable of the VMWare services did not stop this issue. Before you say “Hey Beren you idiot it must be something else.”; I uninstalled the product and not a single BSOD since in about 4 weeks.

No BSODs == good

No VMs == bad Read the rest of this entry »

My son Dior and I started Shotokan “hard-style”  karate last fall. If you are not familiar with the martial arts, Shotokan is the traditional form of Karate developed on the isalnd of Okinawa and popularized by Gichin Funakoshi. There are many places to read about what IMG_1459_smthis style of Karate is so I’m not going to go into it, but I will say is that it emphasizes strength, speed, and power. The idea is take the opponent down in a single blow. It also emphasizes a code of ethics of non-violence and respect.

I’m very proud of our advancement to the next belts; blue for me and yellow for Dior. I’ve been in sports at many levels all the way thru college and semi-pro stuff. Karate is hard stuff – physically demanding.

It is a very difficult test to pass and in the world of Shotokan I know our Sensei is one of the best and most respected in the Eastern USA. Having never done martial arts before, I’ve found this to be a very fun and challenging activity. Highly recommended, but it is a real commitment.

We are going for black belts! We’ll see how it goes. Right now I’m going to go soak my feet.

All of us that are in a global setting – or even a national setting here in the wide-open USA – are using some kind of near real time messaging stuff…like instant messaging or SMS.I’m going to generally call any near real time messaging tool “IM” so bear with me. I think they are all cool – but there’s a backwash effect too.

There’s no question that IM can be cool…it can be fast…and it can keep poeple together, but there’s a dark side to IM. You know what I’m talking about. You’ve been the protagonist and you’ve probably been the antagonist too. Have you been up late nights banging on the keyboard? Are you trying to code extra fast just to become a faster typer? Are you getting out of your chair and punching things in reaction to that rapid “bing….bing…bing”. Are you practicing those tight quips and short phrases? If so – then hey take a deep breath!

What I’ve noticed in my 5+ years using IM tools is that they can be very good when working with someone you know and trust, but with people that you do not know as well they can have an unexpected impact: anger…really deep anger. Why? Should this be a surprise? Not really.

If you walked into a room of people and pointed out someone you don’t know that well and stared barking out statements in short phrased statements with not a lot of context and not a lot of opportunity for the victim to think wouldn’t that piss you off? Of course! Add in the additional issue that the neophyte probably can’t type as fast and doesn’t know all the little graffiti tricks…and you’ll have one very irritated colleague. That’s what can happen with IM.

So overall is IM a good thing? Yeah I think so – but just remember who you are “bing-ing” at. Take a deep breath if you are getting upset.  Relax. Think about the person at the other end…especially if they are not a veteran IM’er.

Any comments? Thoughts?

PS: I write this mostly for myself…now I have a good place to go and remind myself about how to not behave :-)

All programmers have their set of tools that keep them happy and moving ahead. I work with a lot of technologies: PHP, Java SE, Java ME, Drupal, Oracle, J2EE, .NET, and a few others. I get lots of questions from friends and colleagues about what tools I’m using. Over time I’ve put together a decent toolbox of goto tools that I keep around. Here’s my Top 10 tools and what I’m doing with them:

  • Eclipse: Even if you are not a Java programmer, Eclipse is a must have. The plugin/RCP concept of Eclipse is a winner. Programming plugins for just about any language are available in Eclipse and usually are free. Besides Java I use Aptana for PHP and Python, and I also use the C++ plugins from time to time. Eclipse isn’t always good – for example you can get hassles with updating and there are better stand-alone programming tools (a great example is IntelliJ IDEA), but as a flexible and adaptable tool you have to give this project some real credit.
  • Virtual CloneDrive: It seems like I’m constantly downloading ISO files for various reasons. Virtual CloneDrive is a free and reliable tool for mounting ISO files on your Windows machine. This tool works great, is small and compact, and best of all is free.
  • Skype: you’re always either running a team or working with a team. I’ve used a lot of IM clients, but no client has all the features that Skype has: audio, video, chat, group versions of all of those things, saved history for chat, and free. Runs on all major OS’s as well. I guess gTalk is a close runner up here.
  • Altova UModel: UML has never really achieved its hype, but I like class diagrams and sequence diagrams. If you are looking for a tool that can work with both Java and .NET and can both create code and reverse engineer diagrams from code then this is a good basic tool. This tool easily reverse engineers Java code to UML class models. There are tools with more features, but it is hard to find a better price/feature ratio.
  • PuTTy: A must have package for copying files and securly logging into remote servers. no so much on Windows, but everywhere else this is a must have. Nearly every hosting provider for PHP and Python systems will require the use of this tool for something.
  • ImgBurn: I’m always downloading stuff and giving it to other people. It would be great to not have to burn up (ha ha no pun intended) plastic on disks, but the reality is that you have to. ImgBurn is a great (free!) program to quickly create CD’s and DVD’s. Hands down better than the crap that is probably installed on your machine by the manufacturer (in my case the “RecordNow package…which usually means “RecordEventually if the sun, moon, venus ,and saturn align.).
  • Tortoise/SVN: Subversion as a code management system is fantastic and tortiose add Windows desktop integration. A great fit, free, reliable, and supported. Both are a great combination.
  • Firefox+Plugins (Firebug, Fireshot, DOMInspector): Ok we all know Firefox is a browser, but with the right plugins it becomes an indispensable tool for a developer debugging issues in a web site. I listed a few of my favorite plugins, but there are probably a lot more that I use when the occasion requires. I didn’t hyperlink these – its pretty easy to figure out if you know Firefox…
  • Adobe Photoshop CS4: No doubt this is a big ticket item and there are some decent free/open source pacakges out there, but in my mind this is one tool to chuck some money at if you have the $$$ to spare. This is espeically true for the programmer. Most of us are graphically challenged so we need all the help we can get :-)
  • Notepad++: This is a new one for me, but this is really a gem. Notepad on steroids with a plugin model. That’s great. For me the ability to add in a hexadecimal editor that can display the hex, allow you to edit it, and also show you the ASCII equivalent. That’s priceless if you need to look at byte[] ’s coming off sensors and/or debug issues with binary files. Cool – and free.

I kept this pretty focused on utility programs. If I missed something leave a comment.

It has been a little over one year since I picked up my Turbo X. A pretty decent set of timing that Saab have all but announced the purchase of their company by Swedish super-car designer and producer Koenigsegg (say that one 5 times fast! I’m going with K-Saab). As a Saab fan this is pretty much the best case for what could happen to Saab. Getting picked up by a design focused Sewdish firm – wow. Imagine the cars that could be made.  All the Saab fans out there must really be happy. I know I am.

As I said this is 1 full year withbday1 my car. With 20,000 miles on her I’m a very happy owner. No mechanical issues, smooth riding, and decent mileage for a car of this type. Now if only PENN-DOT and the birds could be a bit nicer :-) To celebrate the occasion I decided to give my car the “Meguiar’s Treatment”, that is a full clay bar treatment. Washing with NXT (I’ve used NXT wash and wax throughout the first year), Meguiar’s clay bar kit with their quick detail as a lubricant, and then a full tap and max job with Meguiar’s Cleaner Wax. I’ll re-wax in a couple of weeks with NXT. Judge for yourself, here’s a few pics of the car. If you zoom in on the hood you can see this is a working car – no toy. The DOT in PA is really brutal – they do not use sand in the winter. They use crushed blue stone and this really is a much more aggressive abrasive than the normal sand. The wide plastic faring on the front of the car is particularly beat up.bday2

I plan to use a paint kit from Saab to re-paint the nicks in the hood, we’ll see how that goes.

I’m pretty impressed with the Meguiar’s clay kit. The car is glass smooth…maybe even smoother than that. It is hard to describe how smooth. More like a polished gem or piece of crystal. End to end the job was about 5 hours. Taping took the longest. There must be a better way, but the results are pretty good I think.

Has the web become so pervasive that thick client applications are obsolete? Of course we all use a few thick client applications – Office, Photoshop, Nero,  and CCleaner are good examples, but how many of us actually still have the tools at hand to efficiently code an app up from scratch. I need to write a thick client application that will serve as a utility tool for my programming work with mobile applications and sensor data streams. It has been a long time since I had to do this since I’m primarily in the internet space. Since I do most things in Java that is where I’ll start.

In the Java space there’s a pretty extensive list of tools out there, but in my mind I think there are three tools to check out:

  • Eclipse
  • JetBrains IntelliJ
  • NetBeans

Sure there are other tools – but these are really the most widely used and respected tools out there. Two of these are open source and one is a commercial tool. If you’ve read other posts of mine you will know that I am an Eclipse user, but I’ll try to be fair. I’m looking for some pretty basic requirements:

  • IDE Must run on Windows and Linux
  • Editor must have code lookup features, code highlighting, and all that kind of stuff
  • Strong set of examples, documentation, and/or tutorials
  • GUI designer and drag-drop widget layout

Eclipse 3.4

This is going to be quite short…sorry Eclipse you are out. It seems amazing to me, but Eclipse seems to have “lost” its Java client designer tools called “VPE”. They have been left behind with Eclipse 3.2 and the project seems dead. It is really quite amazing that this is the case since for quite a long time Eclipse and NetBeans were competing head to head with Swing vs. SWT.

NetBeans 6.7

I started using NetBeans because they have some nice J2ME tools. Similarly their tools for Java client creation are pretty nice. A complete IDE with a great set of examples and a sophisticated GUI toolset. NetBeans is simple to install and simple to get going…amazingly better probably (or maybe simpler is a better description) than Eclipse.

Once you are in NetbBeans there is a wizard approach to building an application that gets you going. What is really nice about NetBeans is that the GUI pallents include a lot of components for menus, dialogs, the typical screen gadgets, and layouts. Really nice. You’ll see this is the screen shot below:

netbeans1The interface is pretty nice and it is responsive. If you notice that hint bar just above the GUI screen here – this is pretty cool. It really helps the newbie (and probably annoys the crap out of the long time user). There’s a source and design button, if you switch to source you can edit the code directly, but…there’s always a but. You’ll notice regions of code that are “generated”. If you edit these and switch back and forth to deign and source views your changes will be obliterated.

Ok – I’ll admit that I’m a control freak. I hate that…I always have. Remember Tango…or NetObjects Fusion, or Dreamweaver 1.0…ugh. Alwasy messing up my code :-( . In this case I guess this might be ok since I really am just starting and building quick and dirty apps, but for the future this is something to watch out for.

Other things I like:

  • Building and managing configurations is pretty simple and powerful
  • There’s a decent library manager – this is critical to Java and maintaining your sanity
  • There’s decent support for refactoring, versioning with subversion, and debugging/profiling
  • Tons of plugins for different kinds of development.

Overall a decent tool with a lot of advanced features in the GUI designer. I think this not only is one of the best GUI designers in Java, but it really does move up into the big leagues and challenge Visual Studio tools from Microsoft.

IntelliJIDEA 8.1

The guys at JetBrains have been at it for quite a while. Prior to Eclipse I was using IntelliJ for Java and J2EE development. I have not looked at it in quite a while, but it was a no brainer to go back to this tool and take a look. This is a commercial tool and it will run you $299 to use it for commercial purposes.

IDEA is a full featured Java development environment with all the bells and whistles. The shot below you can see is very similar to NetBeans, but I think the UI is clearer and more efficient.

idea-1

There are also a lot of sliders and tabbing on the menus that really make getting around your project very easy. The GUI designer was pretty intuitive, after a quick on-line tutorial for about 5 minutes I was then able to get in and lay things out with a decent layout manager (jFormsGoodies) assign actions and action listeners, and then get into my real task of writing the logic.

Refactoring has always been a big part of why IntelliJ is cool and it still is. With a click you can change class names, packages, method signatures extract interfaces, and a bunch of other things. Another powerful tool for grinding out code is the ALT-INSERT key combination. Hitting that key combination will bring up a pop-up menu with a idea-3bunch of really nice insert options to generate common code snippets like getters/setters, the toString() method for the current class and more.

IntelliJ also includes functions to help the coder optimize code: import optimization, code analyzers, reformat functions, and more. These can really help turn a prototype into a polished piece of software.  Here’s a quick view of what that looks like:

idea-5

What’s the deal?

For general Java development with a GUI designer it seems there are two excellent choices that are pretty close. It will be interesting to see what happens with Eclipse and Java development. It seems that Eclipse has left the space to NetBeans and IntelliJ. For me I prefer IntelliJ. I think it is easier to use, has a cleaner interface, and has a lot of functions to help me improve my code. It is very close however and many people will find the $299 a barrier. Either choice is a good one. After I get done with this project I’ll take have to take a look at mobile development iwth both of these tools. NetBeans is the long-time player there so it will be interesting to see if IntelliJ can compete.

Pulled into the local YMCA tonight for my Shotokan class and my son (we do this crazy stuff together) said “hey Dad there’s another one of your cars!” Now its late dusk…we’re moving past cars in the parking lot quickly…and my 8 year old can correctly identify a Turbo-X! A budding Saab-o-phile. :-)

Sure enough he was right…that’s the first X I’ve seen on the road with me. Excellent!

J2ME development is fun stuff I think. For some reason it is cool to deploy your own apps to a cellphone or a smartphone. Add in a thrill factor based on the real potential of trashing your link to the world and once you get started you won’t want to stop. I recently wiped my laptop’s hard drive and am back to a clean OS. What better time could there be to look at NetBeans and Eclipse as J2ME platforms and figure out which way to go.

Disclaimer: So if you read my blog regularly you will know I’m an Eclipse guy. So can I be fair? Probably not, but I will try to be.

The Challenge: I’m running on win XP Pro on a T61p Lenovo laptop. I have some existing NetBeans apps and I have some J2ME based apps that are targeted at Nokia and RIM phones. I’ll compare easy of installation, configuration, project importing, project creation and the build/deploy process.

NetBeans 6.7 M2

NetBeans has been around for a while as one of the main competitors to Eclipse in the Java development world – IDEA’s IntelliJ being the other one (my personal favorite as well). Getting started with NetBeans is pretty easy. I’ve started myself off with a clean install of a few tools before attempting to install the product.

First off for any J2ME work it is a good idea to get your own JDK. I grabbed JDK 1.6.0 U12 from Sun’s site and installed that to c:\. I also grabbed JDK 1.5.0 U17 because many cellphone SDKs still use this one.  I also installed that to the C drive root. I do a lot of bluetooth work so having an install of the Java Wireless Toolkit is a must. Get it here and install it to your hard drive.  Bluetooth is fun stuff, although it can be a bit frustrating…check these two articles if you are interested in learning:

  • http://developers.sun.com/mobility/midp/articles/bluetooth1/
  • http://developers.sun.com/mobility/midp/articles/bluetooth2/

Great stuff…but I’m off on a tangent – back to NetBeans.

Grab the installer  – I grabbed the version wit J2ME integrated, although it is annoying that you also ahve to download all the glassfish crap. Why would I want that if I’m doing mobile development? Ah well – when the installer starts up you can unselect that crap by clicking the customize button and j2me-2unchecking what you do not want. That’s pretty good. An alternative method is to get a bare-bones installer and as with Eclipse you can add the correct plugins – I tried that but could not come up with the magic combination of plugins so I fell back to this method.

Once the install is complete I found it a bit difficult to get a project created. For some reason things did not seem to be installed. On the welcome screen there were some links to example projects. I picked one of those off and sure it enough I got a pop-up about “activating features”. My sample got loaded up properly and then everything seemed to be working.I would suggest that you do the same thing.

After that you will need to (or want to) get the SDKs installed and registered with NetBeans. This is pretty simple. I’m going to be working with Nokia Series 40 phones. I grabbed the SDK from their site and installed it. To add the SDK into NetBeans click on Tools and then Java Platforms. Click the Add Platform button. Then select Java ME MIDP Platform Emulator and hit the next button. NetBeans will scan around for SDKs. When I originally tried NetBeans I was using version 6.5, however when I j2me-3was trying this, hitting next did nothing. No clue why. I tried this whole routine on my main workstation and no problems, but no dice on my laptop. Version 6.7 M2 does work so on I go. Anyway pickoff the platforms that you want, you should see the wireless toolkit and any other SDKs that you have – in my case the Series 40 Nokia.

When you are done you should be dumped back out at the original platform screen , but now you will have some J2ME platforms listed. At this point you are ready to build or import projects.

The NetBeans interface is a decent one – although I don’t like the icons and how they are laid out in various little toolbars all over the place. Many of the icons just seem silly too – like the icon for shifting a line…isn’t that a “tab”? Do I really need an icon? I’d rather have an extra line of code on the j2me-6screen. Anyway – that’s probably my preference…the interface is snappy. Screen refreshes are fast and menus popup right away.

The project structure is obvious and the Navigator is also handy. The output window for builds is odd with many messages that seem strange to me with lots of pre-init, csc-init, etc. messages that I have no clue what they mean. I have not figured out how to get rid of these so that I can just focus on coding messages.

When you build cell phone apps managing configurations is really important. You need to manage different graphics, forms, widgets, etc. so that your UI and perhaps even your functionality is tuned to the capabilities of the phone. NetBeans supports this with Build Configurations . Its pretty simple to add configurations and they work well. You add a configuration and then you can pick off which one is the current active one for builds. Great stuff…but how do you edit them or create your own?

Hmm…well for that matter how do you build a platform? Hmm…this exposes a major issue with NetBeans; Where’s the documentation? There really isn’t any. There’s some tutorials and things on the NetBeans site and the internet, but formal docs are almost non-existent. To make things worse the size of the user base is an issue with getting help in on-line forums and community stuff.

Eclipse 3.4 and Mobile Tools for Java

Mobile development with Eclipse will be fairly straight forward if you are already familiar with using other development perspectives in Eclipse.  In fact this is really the main benefit of Eclipse. To start off you need to add the Eclipse ME update site to your config and install the plugin.

I like to keep my mobile projects separate from non-mobile projects. You can do this in two ways – I’m still on the fence about which is better:

  1. Create a new workspace specifically for mobile apps
  2. Create a new eclipse installation and use that for your mobile projects.

This time around I’m using the first approach. Once you have the base tools installed you’ll see new options for creating midlet projects and cldc projects, but really the next step is to get SDK from some phone vendors. As with NetBeans I grabbed a Nokia kit for series 60 phones and I’ve also grabbed the RIM eclipse plugin from http://www.blackberry.com/developer – my personal favorite phone development platform.

Once you get things installed you can create projects easily. First switch to the JavaME perspective or the perspective for your SDK. Once that is done you can eclipse_mtj2then do the regular “eclipse” thing with the “File->New->Project wizard. You’ll see the options for  MIDLet projects.

You’ll notice also here is where I can pick off a specific phones configuration or SDK for my project. Once a project is created there are differences in how you move forward. With Nokia SDKs you can add one of more midlets to the project and work with the project overview screen for how to package and deploy the applications to either an emulator or to an actual phone.

The RIM SDK is fairly similar to Nokia – just different enough to be annoying. For example each Nokia project has a nice overview screen that shows all the current properties, but rim uses the eclipse standard properties dialog available by right clikcing on the project in the Package Explorer.

In general tho it is a simple matter of reading the docs for the SDKs and you can quickly make headway. The same goes for general documentation on the MTJ tools themselves. For getting started this is a huge difference over NetBeans. The docs are good from both the MTJ project and all the documentation from the phone manufacturers themselves. Perhaps this is ananomaly with RIM and Nokia that they have great docs and other brands do not, but for me this is a big difference over NetBeans.

Once your projects are started you can get all the regular Eclipse style editors, configurators, and run/debug dialogs. Here’s a screen shot from a RIM project and you’ll see that things look pretty familiar. Launching an emulator to run your eclipse_mtj3project is fairly simple. With the Nokia SDK simply add one or more midlet’s and select the one you want to launch from the project’s Overview page. With the RIM SDK you need to activate the project by right clicking on it and then with teh same menu you can select “run as” and the emulator you want. You can get many different emulators from the RIM site.

Conclusion

So which to use? For me the ultimate decider might be to first look at what phones you want to use and see what the brand provides. If you’ve got a choice and are new to mobile development I think Eclipse Mobile Tools for Java is a better choice. More brands are focused on it, the documentation is dramatically better, the community is larger, and most Java developers will be familiar with the IDE straight off.  Pick a pun: “NetBeans is being eclipsed by MTJ” or “the Sun is setting on NetBeans”…ha ha…but I think its probably true.

Recently I got a fresh drive from my IT guys…and well of course its lots of fun to chcuk mud at them, but what’s the point? I asked for a bigger drive because I do a lot of stuff and they said of course. However when they installed my new OS image, I’m sure they used the standard image and guess what…well that created a puny 60GB partition. I never looked in My Computer – I just checked the drive and saw 160GB…drooled a bit…and shoved it into the machine. Needless to say today I got the dreaded “Hey your C drive is full” message from Windoze. Oops – crap. Read the rest of this entry »