By Eric | November 26, 2008
I’ve created what I think is a nice little generic ANT script for my various blackberry projects. This script includes the ability to do the following things:
- Configure an application with multiple entry points (if you need to have an app that has a startup/background component and a GUI accessible from a ribbon icon).
- Sign the COD file
- Handle the funky “COD file that is actually a ZIP file with other COD files in it” situation gracefully (it unzips and extracts the separate CODs so the JAD can load properly)
- Upload the JAD/COD file(s) to server environments for deployment (by default it has dev, qa and prod servers configured)
- Email a list of recipients a notification of the deployed file with a link to the JAD to download
This ANT script makes use of the bb-ant-tools library, without that it’d be quite ugly to build. Requirements for running the tasks:
Instructions are in the ANT script, please follow them to set the properties you’ll need to setup for your project’s needs. There is no license associated with this, just use it however you wish, if you wish. I think it’d be useful for people as a starting point. If you liked it, let me know. If you hated it and have better ideas for it, let me know.
Download it here:
blackberry-build.xml
By Eric | November 9, 2008
This is an often repeated lesson and one that I’ve personally realized lately is extremely important. It’s like unit testing, until you either do it or suffer from not doing it, it’s hard to realize the importance of. Two recent projects I’ve been working on have suffered greatly from not having the sever environments and build scripts worked out initially and used daily. Here’s a quick list of reasons to make deployment/configuration your first task and to deploy on at least a daily basis…
- Client management doesn’t exist without the ability to show progress. Progress can’t be just checkmarks on a project plan, clients need to see the application. Only way for them to see it is to have it up.
- Environments are rarely the same across developer’s local workstations to dev/qa/production environments. Working out those issues initially and as they arise (i.e. as features are added that require libraries/setup) is much easier to deal with – sometimes you find out too late that a library isn’t even available outside of the developer’s sandbox.
- Cross developer integration issues are worked out earlier.
- All stakeholders always have a way to see system progress. Some developers are scared of this, and sometimes for good reason. Most concerns about that can be resolved by having multiple deployment environments, so what non-developers have access to is more stable.
I dropped the ball in this area on two current projects and it’s taken weeks to recover from it. Never again will I let a project get far into development without having the deployment worked out and exercised on a daily basis.
By Eric | October 11, 2008
I decided to give Versite’s main page a re-design. I just thought the old one was too verbose… too much of a "hey, read all this stuff, we can do tons of things, hire us!" kind of site. That’s really not my style and I’d been kind of embarrassed of that, so I decided to nix it. And it was a good enough time to get a re-design done. I hired Josh to design the site, pointing out a few things I liked and letting him run with it. At first I said "keep it simple as hell…. simple, simple, simple" and Josh hit that on the nose. But, I was wrong, I didn’t want simple (Josh said it perfectly himself – it looked like a color wireframe). So, back to the drawing board we went and I’m very happy with the outcome. It’s simple and clean, makes our message stand out, provides clear ways to contact us, and doesn’t make the viewer read a zillion things before figuring out what we do. Mission accomplished. Oh, and it’s got orange in it. Mmmm, orange (Jol, that is all your fault).
I spent a little bit of time tonight revamping the Word Press template to sorta match the new site. Fixing up the blog will be Josh’s next task for Versite.
By Eric | September 8, 2008
Josh mentioned my Freshbooks paid-in-full script wasn’t working when entering payments for multiple invoices at a time. I’ve never had the pleasure of entering multiple invoices at a time, so I didn’t consider that scenario! It’s updated to support that now, download below.
Here is the script (Firefox & Greasemonkey Required):
freshbooks_paid_in_full.user.js
By Eric | August 26, 2008
In the last year, I’ve decided I should do the right thing and support the free/shareware software that I use. For years, I’ve been one of those people to see the "purchase/continue evaluation" dialog in TextPad. Boo on me. Well, I’ve finally got responsible and changed that. Some of the applications that come to mind are Remember the Milk, Evernote, and the already mentioned TextPad. I’ve even donated a few bucks for the GMail Multiple Signatures plugin. I’m sure there are others that I’m forgetting.
I’m happy with the decision to purchase and support the applications that I get a lot out of. In the future, I’ll definitely think twice when I see a "donate" or "support this application" link. If I feel they are helpful for me, I’ll do it. I think they deserve it.
(Note: this is not a plug to get bucks for my little tiny greasemonkey scripts! They are not nearly helpful enough to warrant payment.)
As I wrote in my last post, I’ve been using Freshbooks for invoicing since I started Versite. Freshbooks is a truly awesome application, saving me tons of time, and with reasonable fees.
Yesterday, I created a greasemonkey script that creates a one-click way to mark an invoice paid in full. Today, I’ve created another script, this time to auto-select a project and/or a task, if they are the only ones assigned to the user. Based on how I organize projects and tasks, it’s common to only have a single task (“development”) in a project, and consultants assigned to only one project with a single task. Freshbooks adds two items to the project and tasks select lists: “select a task/project” and “new task/project”. “New task/project” is never used by me or my staff, and “select a task/project” just creates an extra step when there is a single project or task.
So, with this script, the following situations will be taken care of:
- If the user is assigned to only one project, that project will be chosen by default. This works in the Weekly, Monthly, and Daily views
- When a project is selected, if the cascaded list of Tasks has only one valid task, it will be auto-selected, and the Hours field will be given focus. This works in the Daily, Weekly and Monthly views, but only the Daily and Monthly views auto-focus the Hours field.
- The top two are combined when the user is assigned only one project that has only one task.
Here is the script (Firefox & Greasemonkey Required):
freshbooks_autoselect_projtasks.user.js
I’ve used an online invoicing application called Freshbooks for the last few year. It’s a great invoicing application, providing everything I need for my clients – easily creating professional looking invoices, providing reports and exports of staff timesheets, ability to configure different rates for clients by project/task, etc, etc.
However, recently, I’ve become annoyed with how the “enter payment” section works. I receive all of my payments via check and go to the “enter payment” section of the application where I enter the value paid, click save and move along. The annoyance was with having to enter the value manually. Pasting the value into the payment field doesn’t work, because there is JavaScript catching key presses and preventing it from working.
Enter greasemonkey, which in a nutshell is a Firefox plugin that allows developers to write scripts that run in specific pages. Using greasemonkey, I was able to quickly create a script that adds a “Paid in full” checkbox to provide one-click support for entering the full amount of the invoice. Yay, one click.
Here is a screen shot:

Here is the script (Firefox & Greasemonkey Required):
freshbooks_paid_in_full.user.js