Posts Tagged ‘OpenSource’

My latest DZone RefCard on the Google App Engine has been released

December 8th, 2009

I’m excited to announce that my latest RefCard for DZone has been released. In a Q&A session with Lyndsey Clevesy, I discuss the card’s focus on helping developers get started with the Google App Engine for Java.

The RefCard is intended to be a jumping off point and provides information about and links to the frameworks that now support GAE as well as external resources to help you dive deep if this new arena of cloud computing. Grab a copy and send me feedback.

BTrace in VisualVM on the Mac

July 21st, 2009

The BTrace plugin for VisualVM, a tool that I love to showcase at No Fluff Just Stuff and user group events, has been updated to version 0.2.2. This solves an issue that prevented it from working on a Mac. Be sure to uninstall any prior version from your VisualVM prior to installing 0.2.2 to get the full benefit of the fix.

Btrace2.png

BTrace1.png

Maven, OSS and iPhone: The Denver NFJS Audience Rocks

June 1st, 2009

Of all the cities I’ve presented in this year for both NFJS, private training, and user groups, two stand out so far as real gems: Minneapolis and Denver. The audiences are highly engaged and ask challenging questions. This is both scary and energizing as a presenter. You are being asked to call on not just your prepared slides, but your experience and catalog of knowledge to come up with a relevant answer. Sometimes, the audience will even help you with the answers, like on the defaults for Objective-C’s @property. It turns out, the answer is: atomic. Thanks Johnny Wey!

Sometimes things just don’t go perfectly in the open source world. There are times where it seems like a dot release cures many things, but then breaks/regresses several important ones as well. Like the XML parsing in the iPhone demo. Turns out, it was a Grails 1.1 issue (which I upgraded to from 1.0.3 to solve another bug) in which optional URL parameters are wrongly required. Grails 1.1.1 fixes it, which I validated at 11pm last night, but it would have been fun to live fix this with the audience. This reinforces the point in my talk though that you should always check your web services, possibly using curl, or SOAPui prior to connecting your iPhone application to them.

It’s amazing to see how many of the presenters and audience members are on Twitter and posting their experiences about the conference. That’s a real change from last year, where hardly anyone was live posting in that fashion. I hope to see you all again in the Fall at the next Denver NFJS, loaded with more difficult questions and an inquiring state of mind.

Using the Maven Command Line Interface Plugin

February 19th, 2009

Maven 1.0 users were spoiled with the console plugin, and now Maven 2.0 users can get a nearly equivalent experience with a high-performance bootstrapped prompt via the Command Line Interface plugin. Watch this quick screencast for a tour of using this plugin and start saving even more time with Maven.

iTerm Screencast

February 17th, 2009

I’m a big fan of iTerm as a replacement for Terminal.app for developers. It offers a host of productivity boosts. To name a few:

  1. Named tabs
  2. Favorite location bookmarks
  3. Window, font, and background colors per-bookmark
  4. Transparency levels and blur of the underlying windows
  5. Middle click copy and paste
  6. URL launching from any URL recognized text

I’ve put together a quick screencast to show off a number of these features and how to configure them.



iTerm Developer Tips from Matthew McCullough on Vimeo.

RESTful Java Web Services must not return void to iPhone HTTP Services

February 17th, 2009

After many sessions of debugging and even memory inspection not yielding fruit, I’ve finally discovered what caused my previous RESTful demo apps to have sporadic behavior, in addition to the memory leak of the synchronous call.

Today’s problem solving summary:

  1. XCode projects cannot have commas anywhere in the path up to the location where they are stored or else you’ll get an error message of:
    ld: -filelist file not found: <Project Path>
  2. All RESTful web services called via the NSURLConnection APIs must return a non-null payload.

    This bit me because my “Add Contestant” function was adding the contestant and returning void. I now return a string of “Success” to satisfy this requirement. The observable failure is very quiet, which made it so hard to debug; every other web service call appears valid, but never actually makes a call across the wire. This was proven via TCPDump. All the web service call callbacks are properly called in the Objective C side of the program. It just silently failed and passed back a null payload in the response data structure.

All the code for this project is available on GitHub and will be updated with the results of the adjustments based on the above findings by tomorrow.

Clean your Git up to Pull successfully

February 14th, 2009

Here’s a quick Git pulling & merging tip for those of you learning this awesome Distributed Version Control System.

Git Pull’s Double Duty

As you may be aware, the git pull command actually does two things under the covers. It does a git fetch to freshen your tracked remote branch and it does a git merge to merge it into the linked local branch. Sometimes this can go awry if you’ve been experimenting with files locally and forgot to return them to a checked-in state. Git errors out nicely, saying “I don’t know what you want me to do, but I’m going to be cautious here and just let you tell me exactly how to handle this.”

Error Message

One of the possible error messages you’ll see is:

error: Entry 'myapp/src/main/resources/scripts/launchapp.bat' not uptodate

Solutions

If your local changes are unimportant to you and you just want to get back in alignment with the remote branch, you have two options to apply depending on the state of your local files. First, you can reset any tracked files to their last committed state via the following command. This discards any local changes to any tracked files.

git reset --hard

Second, you can discard any untracked local files via the git clean command, in the case that they are colliding with files that the remote branch has actually added and is now tracking. You can purge your repository’s current branch of untracked local files by typing:

git clean -f

And in case you are paranoid about what this will remove, you can get a safe preview of what it would do by typing:

git clean -n

Which outputs a preview list like so:

[~/Documents/Code/myproj.git]: git clean -n
Would remove morecruft.java
Would remove unwatedfile.txt

Bespin, the Mozilla Web Based Editor

February 12th, 2009

200902122259.jpg Mozilla has just released a web based programmer’s editor that runs entirely in your browser. It is aptly named Bespin, because it runs entirely in the cloud. Skeptics beware, this has the potential to blow your mind. A quick review of the screencast shows of the power and possibilities that a web based editor is strategically poised to execute. Collaborative editing. Collaborative code review. Plugins. Borrowing someone else’s setup of plugins. A developer’s mind quickly pants with excitement for this to move from alpha to beta as soon as possible. Go Dion!

Open Source – 5 Big Reasons

January 15th, 2009

I was asked to write a few paragraphs for a client on why they should primarily chose open source software in the current state of our industry. In addition to a few articles supporting these positions, many have posited that we should even use government incentives to further boost OSS as a spark to re-ignite the industry. Leave your feedback on what your feelings are on OSS and I’ll look into using some of the responses in my next presentation…

Open source is gaining momentum like never before in the most respected of institutions and enterprises. Originally, the choice to use open source was made only by smaller companies for strictly financial reasons. Those reasons still hold, but are now joined by a chorus of other great points in the current intellectual property, commercial vendor, and economic state that the business world is currently in.

Interoperability is strongest in the Open Source realm. Open Source enjoys the absence of financial motivations to close data inputs, and the existence of desire to have adopters join in and migrate from other open and closed platforms. You’ll find that there are numerous import & migration tools for your existing data, and you’ll discover that your data is stored in highly interoperable formats for future migration to any platform your business needs dictate.

Cost continues to be a factor leading towards Open Source in today’s economic climate. Open Source wins every time on initial acquisition cost, but also on maintenance expenses over time. You can budget for well known project costs without yearly surprise increases in maintenance just because a commercial vendor raises renewal prices.

Quality is also a strong point of Open Source. This can be surprising to teams who think that well funded commercial products would have higher quality due to all the talent on such teams. But Open Source also sports excellent talent, as well as the hidden weapon of breadth of automated unit tests, constantly guarding the product’s quality at each and every release.

In this uncertain economic climate, it can actually make more sense to know you perpetually have the full source code to your product. This removes the dangerous dependency on the continued solvency of a particular vendor. Open Source allows you to control and know your software destiny beyond any outside economic influences.

In sum, Open Source presents an attractive package in terms of cost, sustainability, and quality that are a perfect fit for the current business conditions of 2009 and beyond.

Sean Kelly’s Web Application Framework Comparison Presentation Video

January 10th, 2009

Sean Kelly of NOAA and JPL does a head to head comparison of TurboGears, Zope, J2EE, Ruby On Rails and Django. It’s articular, fun, fast, and well presented. It’s worth your time to listen to expand your horizons.