Video: Installing BambooInvoice 0.8.5

This weekend I took some time and built a quick "here's how to install and use BambooInvoice" video. It lasts about 7 minutes, and covers installing, settings, creating your first client, and creating an invoice. If you just want to see how Bamboo works, skip to about 3:10 of the video. I intend on doing a small series of these over time as a way of helping people get familiar with the software, and showing how I use it.

video showing use of BambooInvoice

BambooInvoice 0.85 preview

Still cleaning up a few things, but BambooInvoice 0.8.5 is looking pretty close to ready for release.  You a Bamboo user?  Nab it: BambooInvoice 0.8.5 for a look.

The biggest change is actually the installer, and several changes meant to make installing and deploying it easier.  There are a few features still to add, but I’m pretty happy.  Tomorrow I hope to write a bit about what I’ve learned recently in building a distributed app.

For update instructions, read on…

BambooInvoice 0.84 released

Just like the title says, BambooInvoice 0.8.4 is “out the door”.  I’ve upgraded all the application queries to take advantage of the new CodeIgniter Active Record improvements, and squashed a lot of bugs on the way.  The changelog is pretty small, but a lot of work went into it.

As I wrote a few days ago about the future of BambooInvoice I think this reduces any lingering bugs down to about none.  I’ve also introduced a few additional error catches, and I’ve tried to make a few error messages more helpful.  The next version of Bamboo will focus on finishing off features that I want to see, and will probably be a full point update (0.9) and then the real work starts, with what will amount to a code overhaul.  That stuff won’t happen until at least summer, but if you are an “end user” you probably wouldn’t ever notice it anyhow.  It’ll be “under the hood” type stuff that programmers obsess with ;)

If you have any specific features you want to see, by all means please comment!

The future of BambooInvoice

This weekend I gave some serious consideration to BambooInvoice.  I made a few hours to fix some known bugs (including I think the dreaded no demo_flag property on line 19 bug), and add a few features.  After working with the code, I know what I need to do.  This post lays out my plans for the future of BambooInvoice, including a “roadmap” (if you can call it that) and my thoughts towards keeping BambooInvoice free and opensource, coding standards, and library integration.  Read the full post for more details, but here’s a telling quote.

This also represents an opportunity to revisit code that is starting to show its age.  Many people are referring to Bamboo as a model for how to build an application in CodeIgniter.  This delights me, and is the entire reason I released Bamboo originally, but, Bamboo was released while CodeIgniter was still very immature.  There were no models; fewer helpers; limited Active Record; fewer libraries.  It was also a bit of a proving grounds for what could be done.  In short, Bamboo blazed the trail that all my CodeIgniter programming would be based on, but as CI has advanced, there are many (many) things in BambooInvoice that I would choose to do another way if I was building it today.  I want to take the opportunity to do them right.  I want Bamboo to be as finely coded as CodeIgniter itself.  This as you can imagine, will be a pretty big task.  In essence, I’ll be writing (re-writing) the entire application.  I’m tired just thinking about it, but its something I really want to do.

So if you’re a Bamboo user, get ready for a large bump in what you current can do, and take your invoicing to the next level.  Is there a feature that you really want to see make it into Bamboo?  Is there one little thing that bugs you?  Have your say, please feel free to leave a comment.

BambooInvoice 0.8.3 has been released

Get it while it’s hot!  (BambooInvoice).

This release represents a pretty major jump in functionality.  I already hit on most of the highlights in my preview post, so I won’t rehash them here.  Sufficed to say that there are many commonly requested features, a few important bug fixes, and major additions to functionality.

Thanks to everyone who helped beta test it!

While Bamboo is absolutely free and open source, if you wanted to buy me a beer, I certainly would not object ;)

We’re there! w00t!

Note: Please backup your data before you do an update.  Anything comes up, feel free to leave a note in the BambooInvoice forums.


BambooInvoice will remain GPL

With the next release of BambooInvoice nearly ready to go, and probably set for release within 24 hours, I’ve needed to finally decide which license I’ll be releasing it under.  If I were going to change it, this update would be a logical one since there are so many foundational changes to the underlying code. But for now, Bamboo will remain GPL.

That said, I’ve decided to continue to release BabooInvoice under the GPL, and I guess I can only ask that people not try to pass it off as their work.  Thanks to everyone who wrote me both on this blog and privately.  The general sentiment from people who identified themselves as Bamboo users was “hey, as long as I can keep using it, do whatever you want… its your software”, which was pretty cool I do have to admit.

I do though want to mention that any change in license would have been made on philosophical grounds, not an “enforcement” one.  The argument that people would continue to “steal*” it no matter what license I used is irrelevant to me - the license is about how I want my software to relate to its users, not about “protecting” myself.  Bamboo has always been about 2 things; scratching an itch, and serving as a proving and learning grounds for CodeIgniter.

So onto happier matters!  The license will remain unchanged, and the next version of Bamboo is (if I can say so myself) pretty kick-ass.

Watch this space for an update!  I have to get it that next version out shortly, so that I’m not too distracted and can keep up with my new duties at EllisLab. ;)

* I do not consider someone taking Bamboo and claiming it as their own “theft” per se, that’s just a convenient word here.

BambooInvoice 0.8.3 Preview

I’m happy to announce that I’ve almost finished work on the next version of BambooInvoice.  I have to say, I’m very happy with the new functionality and features.  Aside from the usual bug fixes and code modifications, there are some very substantial architectural changes - namely, the addition of itemized invoicing.

In order to make sure its running smoothly, I’d like to solicit some people willing to take part in beta tests.  In order to participate, you’ll need to be comfortable backing up and restoring your database.  I’d also love to get some non-English speakers into the mix.  If you’ve been wondering how you can help out with Bamboo, this is it.  Please contact me.

Itemized Invoices

itemized invoicesThis was far and away the most requested feature, and I’m happy to add it in.  If you don’t have a use for itemized bills (I’ll probably never need them), then I’m hopeful that the feature will get out of your way totally, but if you do need them it should be a seamless transition.  A bit of history here - if you’ve used a previous version of Bamboo, you may have noticed me slipping in a field into the invoices table called “itemized”.  This is because in the old system, all invoice information was in a single table (“invoices”) that included: id, invoice_number, work description, amount, and now “itemized”.  This works great for an invoicing system were every invoice corresponds to a single piece of work.  But with “itemized” invoices, it sucks.  So my intention was that I would serialize itemized things and store them here.  I spent about a week on and off getting this running.

It was awful.  I wasn’t happy with the way it worked… I found it too slow, very limiting.  So I decided to change gears, and worry about the front end for a while.  I started and stopped no fewer then 3 separate approaches before I finally got one I was happy with.  I spent a lot of time with javascript working through DOM node cloning and other things I wouldn’t wish on any of you.  When I finally got to a solution I was happy with I flipped back into backend work… oh yeah… that damn serialized array again.  So I started getting depressed.  I was trying to use arrays and bend my system to do something it was not built to do.  If I were building it again from scratch, the invoice items would be in a separate table, but I was concerned about all the legacy data and people using Bamboo who would need to migrate.  But since I wasn’t happy, I just bit the bullet and moved all that stuff into another table (“invoice_items”) and spent an afternoon writing a migration utility that runs automatically when you update Bamboo.

After it was done, I was “OMG Ponies!”, this is perfect!  Sure it required a major re-architecting of the invoice functions, but now that it works I’m pretty happy.  Itemized invoices are a breeze, and you can even control taxes on individual items.  I’m much happier with the flexibility.  All in all… its a big improvement.

Utilities and Advanced Settings

utilities menu in BambooInvoiceLet’s take a look at a few of the things to expect. There’s a new menu item in the “root panel”.  Under it, there are 2 new options; PHP Info, and Database backup.  The PHP Info is to help me with giving support (if you have read the BambooInvoice Forums, you’ve probably noticed the first thing I always ask people to do when troubleshooting it to upload a phpino() file.  This just makes it easier for all involved.  I shamelessly stole the code from ExpressionEngine on that one.  Hope I’m not violating any copyrights there (don’t sue me Rick!). There is also a database backup utility for… um… database backups.  The backup utility is currently MySQL only - and in fact, with some of the new query-acrobatics I needed to do, I suspect the whole application is nearing the point of me not being able to say it supports multiple databases any longer.  I’ll need to look more into that.

 the new settings panelNext up is the settings panel. The settings panel has undergone a major User Interface (UI) change.  advanced settingsThe result is (I hope) a more streamlined, and easy to follow panel.  It actually offers more choice then before, including an option to save your invoices to the server as you generate them, as PDF files. The image is actually a link to a quicktime movie.  If you’re interested in seeing what it looks like, take a quick watch - the whole thing is only about 15 seconds or so.  If you watch it, you’ll see an advanced settings tab

Bamboo now offers the ability to save copies of your invoices online in PDF format.  Personally, I’m not sure I’ll ever use this feature, but it was specially requested, and so I include it here.

date separationThere are a few other notable UI enhancements. Here you can see that invoices are now separated by month in an effort to make a quick visual scan of your accounts easier.  This turns out to really help when you’re trying to scan through the list.  I’ve had it in my local copy for weeks now, and when I flip back into the “old style” I wonder how I ever did without.

Community Input

Another thing that this release will mark is the first significant input from the community into the project.  BambooInvoice 0.8.2 is probably feature-rich enough for me, but the enthusiasm of the users has really kept me wanting to keep building. Itemized invoices, saving local PDFs, and many of the usability enhancements where user suggestions (thanks!).  Also, another language (Portuguese) has been added, proudly bringing it up to 7 languages.  Thanks Matt Finazzo and ELRafael! Some of the language translations may be inaccurate, so if you use Bamboo in a non-english language, please don’t hesitate to send me corrections or enhancements.  Or heck, other languages!

Private Beta

Yeah, same paragraph from above ;) In order to make sure its running smoothly, I’d like to solicit some people willing to take part in beta tests.  In order to participate, you’ll need to be comfortable backing up and restoring your database.  I’d also love to get some non-English speakers into the mix.  If you’ve been wondering how you can help out with Bamboo, this is it.  Please contact me.

BambooInvoice may be moving away from the GPL Open Source License

I’m finding this post difficult to write.  Not because I’m having internal conflicts, but rather because I know think that this will cause some tension among Bamboo users.  Please read to the end before you jump to any conclusions.  Here’s the “executive summary” if you’re just wanting to skip to it.

Punchline: I’m thinking of doing away with the GPL as the license I distribute BambooInvoice under.  By way of explanation, here’s a bit of history…

BambooInvoice forums

I just took some time to put up some forums dedicated to BambooInvoice support, feature requests and general chat.  Feel free to drop by and have your say!

BambooInvoice 0.8.2 released

BambooInvoice logo
There’s a new release of BambooInvoice available.  To update, do a full backup, then replace all files except your config directory, and then run the update script.

I really wanted to get 2 new features in there before I released this version, but as the changes started mounting, and my time started dwindling, I figured I should just get this out there.  Most notable is the reduced code (mostly due to the new CodeIgniter Session Library) and the final-I-swear-its-squashed-now-and-will-never-return fix of your company logo not appearing on the PDFs.

Under the hood, there was substantial restructuring of the database (do a backup both before and after you update), some speed enhancements, some file restructuring, and most importantly, I’ve laid some foundation for the some new features that I think will be a big hit.

The 2 new features planned for the next release:
1) Itemized invoices (you know… 1 “item” at “unit cost” type thing); and
2) Sexier PDF invoices.  Here’s a preview so far.
new BambooInvoice tempalte preview

I’m not totally sold on it… but anything beats the boring invoice I’ve been using so far. I’ve been also thinking about building in some type of invoice template system, so that people could submit their designs, and they could be offered as add ons, or installation time choices perhaps… not sure about that one yet.

With respects to the itemized invoices, this database changes this time around include a new field (“itemized”) for this, and I’ll probably just store things in a serialized array.  I’ve been playing with the javascript I want to use to add in the extra items, and this will be really the first feature that Bamboo will have that will only be accessible to javascript-enabled users.  I don’t feel this conflicts with accessibility though, as non-js users will still be able to use the traditional form.  It will simply be an enhanced experience for js users.

I’ve also been asked if I’d be willing to set up support forums for Bamboo.  I’d be an idiot to burn the goodwill of people who want to help (public thanks go to Marc Arbour for his role in this regard, and for his evangelising of BambooInvoice.  Thanks Marc… I appreciate it).

To that end, one of the things I’ve been thinking about lately is the installation and update procedures.  BambooInvoice is at the point now where it is not longer only attracting CodeIgniter/ExpressionEngine/PHP nerds; and as people with less technical experience start using it I want the experience to be as positive as possible for them.  I’d welcome (with open arms) and suggestions for improvements in this area.